diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9c38c55..54a4a03 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,13 +10,13 @@ repos: entry: typos -c .typos.toml language: system pass_filenames: true - exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md) + exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md|.*/generated/.*) - id: editorconfig-check name: Editorconfig Check entry: editorconfig-checker language: system pass_filenames: true - exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md) + exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md|.*/generated/.*) - id: actionlint name: Actionlint entry: actionlint @@ -29,14 +29,14 @@ repos: language: system pass_filenames: true files: '[^/]*\.md$' - exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md) + exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md|.*/generated/.*) - id: markdown-prettier name: Markdown Prettier entry: pnpm exec -- prettier --check language: system pass_filenames: true files: '[^/]*\.md$' - exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md) + exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md|.*/generated/.*) - id: pkl-eval name: Pkl Eval entry: pkl eval @@ -55,14 +55,14 @@ repos: language: system pass_filenames: true files: '[^/]*\.json$|[^/]*\.jsonc$' - exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md) + exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md|.*/generated/.*) - id: yaml-prettier name: Yaml Prettier entry: pnpm exec -- prettier --check language: system pass_filenames: true files: '[^/]*\.yml$|[^/]*\.yaml$' - exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md) + exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md|.*/generated/.*) - id: toml-taplo-check name: Toml Taplo Check entry: pnpm exec -- taplo lint @@ -87,28 +87,28 @@ repos: language: system pass_filenames: true files: (?:.*/)*[^/]*\.sh$|(?:.*/)*[^/]*\.bash$ - exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md) + exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md|.*/generated/.*) - id: shfmt name: Shfmt entry: shfmt language: system pass_filenames: true files: (?:.*/)*[^/]*\.sh$|(?:.*/)*[^/]*\.bash$|(?:.*/)*[^/]*\.mksh$|(?:.*/)*[^/]*\.bats$|(?:.*/)*[^/]*\.zsh$ - exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md) + exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md|.*/generated/.*) - id: pwsh-formatter name: Pwsh Formatter entry: pwsh -NoLogo -NoProfile -NonInteractive -File eng/pre-commit/Invoke-FormatterWrapper.ps1 -Mode Check -Path language: system pass_filenames: true files: '[^/]*\.ps1$|[^/]*\.psm1$|[^/]*\.psd1$' - exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md) + exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md|.*/generated/.*) - id: pwsh-script-analyzer name: Pwsh Script Analyzer entry: pwsh -NoLogo -NoProfile -NonInteractive -File eng/pre-commit/Invoke-ScriptAnalyzerWrapper.ps1 -Mode Check -Path language: system pass_filenames: true files: '[^/]*\.ps1$|[^/]*\.psm1$|[^/]*\.psd1$' - exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md) + exclude: (\.pre-commit-config\.yaml|.*/packages\.lock\.json|global\.json|project\.assets\.json|package-lock\.json|PklProject\.deps\.json|pnpm-lock\.yaml|uv\.lock|\.mise\.lock|.*/\.github/.*|.*/\.specify/.*|.*/specs/.*/[^/]*\.md|.*/generated/.*) - id: biome name: Biome entry: pnpm exec -- biome check --no-errors-on-unmatched diff --git a/.typos.toml b/.typos.toml index 759c365..de1eb75 100644 --- a/.typos.toml +++ b/.typos.toml @@ -3,6 +3,7 @@ extend-exclude = [ 'packages.lock.json', "OneDotNet/srcs/private/app/OxfordWordlistExtractor/*.html", "OneDotNet/tests/OxfordDictExtractor.Tests/**/*.html", + "**/generated/**/*", ] [default] diff --git a/.vscode/settings.json b/.vscode/settings.json index 8b3f3d0..c7a9af3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,7 @@ { "biome.lsp.bin": "${workspaceFolder}/node_modules/@biomejs/biome/bin/biome", + "python.analysis.typeCheckingMode": "basic", + "python.analysis.exclude": ["**/generated/**"], "[json]": { "editor.defaultFormatter": "biomejs.biome" diff --git a/hk.pkl b/hk.pkl index a83d864..95bfa9d 100644 --- a/hk.pkl +++ b/hk.pkl @@ -30,6 +30,7 @@ local general_exclude_list = "**/.github/**", "**/.specify/**", "**/specs/**/*.md", + "**/generated/**", ) local general_linters = new Mapping { diff --git a/src/private/app/factorio-cycle-calculator/app.py b/src/private/app/factorio-cycle-calculator/app.py index b1dbe0c..678fc2b 100644 --- a/src/private/app/factorio-cycle-calculator/app.py +++ b/src/private/app/factorio-cycle-calculator/app.py @@ -2,22 +2,88 @@ from __future__ import annotations +import importlib import io import json import os import re -from dataclasses import dataclass +import sys +from collections.abc import Mapping, Sequence +from dataclasses import MISSING, dataclass, fields, is_dataclass from pathlib import Path -from typing import TYPE_CHECKING, Protocol, Self +from typing import TYPE_CHECKING, Any, Protocol, cast import streamlit as st from ortools.linear_solver import pywraplp from PIL import Image + +class GeneratedModelsImportError(ImportError): + """Raised when generated data model imports fail.""" + + def __init__(self, path: Path, *, reason: str) -> None: + """Create a formatted import error for generated models.""" + message = f"{reason} at {path}. Regenerate with datamodel-codegen." + super().__init__(message) + + if TYPE_CHECKING: - from collections.abc import Mapping from types import TracebackType + class _GeneratedModel: + """Type-checking stub for generated dataclasses.""" + + def __init__(self, **kwargs: object) -> None: ... + + def __getattr__(self, name: str) -> object: ... + + class AssemblingMachinePrototype(_GeneratedModel): + """Type-checking stub for assembling machines.""" + + class BeaconPrototype(_GeneratedModel): + """Type-checking stub for beacons.""" + + class FactorioDataRaw(_GeneratedModel): + """Type-checking stub for data-raw container.""" + + class FluidPrototype(_GeneratedModel): + """Type-checking stub for fluids.""" + + class ItemPrototype(_GeneratedModel): + """Type-checking stub for items.""" + + class ModulePrototype(_GeneratedModel): + """Type-checking stub for modules.""" + + class RecipePrototype(_GeneratedModel): + """Type-checking stub for recipes.""" +else: + _generated_path = ( + Path(__file__).resolve().parent / "generated" / "data_raw_models.py" + ) + if not _generated_path.exists(): + raise GeneratedModelsImportError( + _generated_path, + reason="Generated models not found", + ) + _generated_root = _generated_path.parent.parent + if str(_generated_root) not in sys.path: + sys.path.insert(0, str(_generated_root)) + try: + _module = importlib.import_module("generated.data_raw_models") + except Exception as exc: + raise GeneratedModelsImportError( + _generated_path, + reason="Failed to import generated models", + ) from exc + AssemblingMachinePrototype = _module.AssemblingMachinePrototype + BeaconPrototype = _module.BeaconPrototype + FactorioDataRaw = _module.FactorioDataRaw + FluidPrototype = _module.FluidPrototype + ItemPrototype = _module.ItemPrototype + ModulePrototype = _module.ModulePrototype + RecipePrototype = _module.RecipePrototype + DEFAULT_DATA_DIR = "" DEFAULT_DATA_RAW = "" @@ -30,6 +96,146 @@ MIN_LIST_ENTRY_LEN = 2 +def normalize_proto_type(proto_type: str) -> str: + """Normalize data-raw prototype type keys for dataclass access.""" + return proto_type.replace("-", "_") + + +def get_payload_value(payload: object, key: str) -> object: + """Retrieve a value from a dict or dataclass payload.""" + if isinstance(payload, Mapping): + return payload.get(key) + if is_dataclass(payload): + if hasattr(payload, key): + return getattr(payload, key) + extra = getattr(payload, "extra", None) + if isinstance(extra, Mapping): + return extra.get(key) + return None + + +def coerce_float(value: object, default: float = 0.0) -> float: + """Coerce a value into a float, returning a default on failure.""" + if isinstance(value, (int, float)): + return float(value) + if isinstance(value, str): + try: + return float(value) + except ValueError: + return default + return default + + +def coerce_int(value: object, default: int = 0) -> int: + """Coerce a value into an int, returning a default on failure.""" + if isinstance(value, bool): + return int(value) + if isinstance(value, int): + return value + if isinstance(value, float): + return int(value) + if isinstance(value, str): + parsed = parse_int_string(value) + if parsed is not None: + return parsed + return default + + +def parse_int_string(value: str) -> int | None: + """Parse an int from a string, handling float-like values.""" + try: + return int(value) + except ValueError: + try: + return int(float(value)) + except ValueError: + return None + + +_DATACLASS_FIELD_CACHE: dict[ + type[Any], + tuple[frozenset[str], frozenset[str]], +] = {} + + +def get_dataclass_field_info( + cls: type[Any], +) -> tuple[frozenset[str], frozenset[str]]: + """Cache dataclass field names and required fields per class.""" + cached = _DATACLASS_FIELD_CACHE.get(cls) + if cached is not None: + return cached + dataclass_fields = fields(cast("Any", cls)) + field_names = frozenset(field.name for field in dataclass_fields) + required_fields = frozenset( + field.name + for field in dataclass_fields + if field.default is MISSING and field.default_factory is MISSING + ) + _DATACLASS_FIELD_CACHE[cls] = (field_names, required_fields) + return field_names, required_fields + + +def coerce_dataclass[T]( + cls: type[T], + payload: Mapping[str, object], +) -> T | None: + """Coerce a payload mapping into a generated dataclass.""" + field_names, required_fields = get_dataclass_field_info(cls) + values = {name: payload[name] for name in field_names if name in payload} + if any(name not in payload for name in required_fields): + return None + try: + instance = cls(**values) + except TypeError: + return None + extras = { + key: value for key, value in payload.items() if key not in field_names + } + if extras: + cast("Any", instance).extra = extras + return instance + + +def parse_prototype_map[T]( + section: Mapping[str, object] | None, + cls: type[T], +) -> dict[str, T]: + """Parse a data-raw section into a mapping of dataclass prototypes.""" + if not isinstance(section, Mapping): + return {} + parsed: dict[str, T] = {} + for name, payload in section.items(): + if not isinstance(payload, Mapping): + continue + proto = coerce_dataclass(cls, payload) + if proto is None: + continue + parsed[name] = proto + return parsed + + +def build_data_raw(raw: Mapping[str, Mapping[str, object]]) -> FactorioDataRaw: + """Build a typed data-raw container from the raw JSON payload.""" + assembling_machine = parse_prototype_map( + raw.get("assembling-machine"), + AssemblingMachinePrototype, + ) + module = parse_prototype_map(raw.get("module"), ModulePrototype) + beacon = parse_prototype_map(raw.get("beacon"), BeaconPrototype) + recipe = parse_prototype_map(raw.get("recipe"), RecipePrototype) + item = parse_prototype_map(raw.get("item"), ItemPrototype) + fluid = parse_prototype_map(raw.get("fluid"), FluidPrototype) + return FactorioDataRaw( + assembling_machine=assembling_machine or None, + module=module or None, + beacon=beacon or None, + recipe=recipe or None, + item=item or None, + fluid=fluid or None, + ) + + @dataclass(frozen=True) class Machine: """Describe a crafting machine and its capabilities.""" @@ -82,6 +288,28 @@ class FlowRates: consumption: dict[tuple[str, str], float] +@dataclass(frozen=True) +class ChainRates: + """Store key flow rates for the oil-processing chain.""" + + heavy_prod: float + heavy_cons: float + light_prod_advanced: float + light_prod_from_heavy: float + light_cons: float + pg_prod_advanced: float + pg_prod_from_light: float + + +@dataclass(frozen=True) +class ChainConstraintSettings: + """Settings needed to add solver constraints.""" + + recipe_order: tuple[str, str, str] + force_integer: bool + demand_pg_per_s: float + + @dataclass(frozen=True) class SolveResult: """Capture the solver output for display.""" @@ -130,13 +358,13 @@ def container(self) -> ContainerSlot: """Return a context manager for nested rendering.""" ... - def __enter__(self) -> Self: + def __enter__(self) -> object: """Enter the container context.""" ... def __exit__( self, - exc_type: type[BaseException] | None, + typ: type[BaseException] | None, exc: BaseException | None, tb: TracebackType | None, ) -> bool | None: @@ -147,7 +375,7 @@ def __exit__( class CaptionSlot(Protocol): """Define the caption API used by the UI.""" - def caption(self, body: str) -> None: + def caption(self, body: str) -> object: """Render a caption string.""" ... @@ -155,7 +383,7 @@ def caption(self, body: str) -> None: class MarkdownSlot(Protocol): """Define the markdown API used by the UI.""" - def markdown(self, body: str) -> None: + def markdown(self, body: str) -> object: """Render a markdown string.""" ... @@ -188,60 +416,73 @@ def resolve_icon_path(icon_path: str, data_dir: Path) -> Path: return data_dir / icon_path.lstrip("/") -def extract_icon_from_payload(payload: dict) -> tuple[str | None, int | None]: +def extract_icon_from_payload(payload: object) -> tuple[str | None, int | None]: """Extract a single icon path and size from a prototype payload.""" - icon_path = payload.get("icon") - icon_size = payload.get("icon_size") + icon_path = get_payload_value(payload, "icon") + icon_size = get_payload_value(payload, "icon_size") if isinstance(icon_size, float): icon_size = int(icon_size) if not isinstance(icon_size, int): icon_size = None if isinstance(icon_path, str): return icon_path, icon_size - icons = payload.get("icons") + icons = get_payload_value(payload, "icons") if isinstance(icons, list): for entry in icons: - if isinstance(entry, dict) and entry.get("icon"): - entry_size = entry.get("icon_size") - if isinstance(entry_size, float): - entry_size = int(entry_size) - if not isinstance(entry_size, int): - entry_size = icon_size - return str(entry["icon"]), entry_size + entry_icon = get_payload_value(entry, "icon") + if not entry_icon: + continue + entry_size = get_payload_value(entry, "icon_size") + if isinstance(entry_size, float): + entry_size = int(entry_size) + if not isinstance(entry_size, int): + entry_size = icon_size + return str(entry_icon), entry_size return None, icon_size @st.cache_data(show_spinner=False) -def load_data_raw(data_raw_path: str) -> dict: - """Load data-raw-dump.json into memory.""" +def load_data_raw(data_raw_path: str) -> FactorioDataRaw | None: + """Load data-raw-dump.json into a typed container.""" try: with Path(data_raw_path).open("r", encoding="utf-8") as handle: - return json.load(handle) + raw = json.load(handle) except (OSError, json.JSONDecodeError, ValueError): - return {} + return None + if not isinstance(raw, Mapping): + return None + return build_data_raw(raw) def get_prototype( - data_raw: Mapping[str, Mapping[str, dict]], + data_raw: FactorioDataRaw | Mapping[str, Mapping[str, object]], proto_type: str, name: str, -) -> dict | None: +) -> object | None: """Fetch a prototype from data-raw by type and name.""" - return data_raw.get(proto_type, {}).get(name) + if is_dataclass(data_raw): + section = getattr(data_raw, normalize_proto_type(proto_type), None) + if isinstance(section, Mapping): + return section.get(name) + return None + if isinstance(data_raw, Mapping): + return data_raw.get(proto_type, {}).get(name) + return None -def parse_amount(entry: dict) -> float: +def parse_amount(entry: object) -> float: """Parse an amount from a recipe ingredient/result entry.""" - if "amount" in entry: - return float(entry["amount"]) - amount_min = entry.get("amount_min") - amount_max = entry.get("amount_max") + amount = get_payload_value(entry, "amount") + if amount is not None: + return coerce_float(amount) + amount_min = get_payload_value(entry, "amount_min") + amount_max = get_payload_value(entry, "amount_max") if amount_min is not None and amount_max is not None: - return (float(amount_min) + float(amount_max)) / 2.0 + return (coerce_float(amount_min) + coerce_float(amount_max)) / 2.0 if amount_min is not None: - return float(amount_min) + return coerce_float(amount_min) if amount_max is not None: - return float(amount_max) + return coerce_float(amount_max) return 0.0 @@ -255,10 +496,12 @@ def parse_ingredient_list( name = entry[0] amount = float(entry[1]) proto_type = "item" - elif isinstance(entry, dict): - name = entry.get("name") + elif isinstance(entry, Mapping) or is_dataclass(entry): + name = get_payload_value(entry, "name") amount = parse_amount(entry) - proto_type = entry.get("type", "item") + proto_type = get_payload_value(entry, "type") or "item" + if not isinstance(proto_type, str): + proto_type = "item" else: continue if not isinstance(name, str): @@ -269,49 +512,58 @@ def parse_ingredient_list( def parse_results( - proto: dict, + proto: object, ) -> tuple[dict[tuple[str, str], float], frozenset[tuple[str, str]]]: """Parse recipe results into a typed map and ignored-by-productivity set.""" results: dict[tuple[str, str], float] = {} ignored: set[tuple[str, str]] = set() - if "results" in proto and isinstance(proto["results"], list): - for entry in proto["results"]: - if not isinstance(entry, dict): - continue - name = entry.get("name") + results_entries = get_payload_value(proto, "results") + if isinstance(results_entries, list): + for entry in results_entries: + name = get_payload_value(entry, "name") if not isinstance(name, str): continue amount = parse_amount(entry) - probability = entry.get("probability", 1.0) - amount *= float(probability) - proto_type = entry.get("type", "item") + probability = get_payload_value(entry, "probability") + if probability is None: + probability = 1.0 + amount *= coerce_float(probability, default=1.0) + proto_type = get_payload_value(entry, "type") or "item" + if not isinstance(proto_type, str): + proto_type = "item" key = (proto_type, name) results[key] = results.get(key, 0.0) + amount - if entry.get("ignored_by_productivity"): + if get_payload_value(entry, "ignored_by_productivity"): ignored.add(key) return results, frozenset(ignored) - result_name = proto.get("result") + result_name = get_payload_value(proto, "result") if isinstance(result_name, str): - amount = float(proto.get("result_count", 1.0)) + amount = coerce_float( + get_payload_value(proto, "result_count") or 1.0, + default=1.0, + ) results[("item", result_name)] = amount return results, frozenset(ignored) -def build_recipe_from_proto(name: str, proto: dict) -> Recipe: +def build_recipe_from_proto(name: str, proto: RecipePrototype) -> Recipe: """Build a Recipe instance from a data-raw recipe prototype.""" - energy_required = proto.get("energy_required") - if energy_required is None: - energy_required = 0.5 - category = proto.get("category", "crafting") - ingredients = parse_ingredient_list(proto.get("ingredients", [])) + energy_required = ( + proto.energy_required if proto.energy_required is not None else 0.5 + ) + category = proto.category or "crafting" + ingredients_list = ( + proto.ingredients if isinstance(proto.ingredients, list) else [] + ) + ingredients = parse_ingredient_list(ingredients_list) results, ignored_by_productivity = parse_results(proto) - allow_productivity = bool(proto.get("allow_productivity", False)) + allow_productivity = bool(proto.allow_productivity or False) return Recipe( key=name, label=name.replace("-", " ").title(), category=str(category), - energy_required=float(energy_required), + energy_required=coerce_float(energy_required), ingredients=ingredients, results=results, allow_productivity=allow_productivity, @@ -321,7 +573,7 @@ def build_recipe_from_proto(name: str, proto: dict) -> Recipe: def normalize_allowed_effects(raw: object) -> frozenset[str]: """Normalize allowed effects lists to a usable set.""" - if isinstance(raw, list): + if isinstance(raw, (list, tuple, set)): allowed = {str(value) for value in raw if isinstance(value, str)} else: allowed = set() @@ -333,38 +585,46 @@ def normalize_allowed_effects(raw: object) -> frozenset[str]: def parse_effect_bonus(effect: object) -> float: """Parse a module effect bonus payload.""" bonus: object - if isinstance(effect, dict): - bonus = effect.get("bonus", 0.0) + if isinstance(effect, Mapping) or is_dataclass(effect): + bonus = get_payload_value(effect, "bonus") or 0.0 elif isinstance(effect, (float, int)): bonus = effect else: bonus = 0.0 - try: - return float(bonus) - except (TypeError, ValueError): - return 0.0 + return coerce_float(bonus) def build_machine_catalog( - data_raw: Mapping[str, Mapping[str, dict]], + data_raw: FactorioDataRaw, ) -> dict[str, Machine]: """Build a machine catalog from data-raw assembling machines.""" catalog: dict[str, Machine] = {} - for name, proto in data_raw.get("assembling-machine", {}).items(): - crafting_speed = float(proto.get("crafting_speed", 1.0)) - crafting_categories = tuple(proto.get("crafting_categories", [])) - allowed_effects_raw = proto.get("allowed_effects", []) + machine_map = cast( + "Mapping[str, object]", + data_raw.assembling_machine or {}, + ) + for name, proto in machine_map.items(): + proto = cast("AssemblingMachinePrototype", proto) + crafting_speed = coerce_float(proto.crafting_speed, default=1.0) + if isinstance(proto.crafting_categories, list): + crafting_categories = tuple( + str(category) + for category in proto.crafting_categories + if isinstance(category, str) + ) + else: + crafting_categories = () + allowed_effects_raw = proto.allowed_effects allowed_effects = normalize_allowed_effects(allowed_effects_raw) - base_effect = (proto.get("effect_receiver") or {}).get( - "base_effect", {} - ) + effect_receiver = proto.effect_receiver + base_effect = get_payload_value(effect_receiver, "base_effect") base_productivity = parse_effect_bonus( - base_effect.get("productivity", 0.0) or 0.0 + get_payload_value(base_effect, "productivity") or 0.0 ) allow_productivity = ( "productivity" in allowed_effects or base_productivity > 0.0 ) - module_slots = int(proto.get("module_slots", 0)) + module_slots = coerce_int(proto.module_slots, default=0) catalog[name] = Machine( key=name, label=name.replace("-", " ").title(), @@ -379,20 +639,31 @@ def build_machine_catalog( def build_module_catalog( - data_raw: Mapping[str, Mapping[str, dict]], + data_raw: FactorioDataRaw, ) -> dict[str, ModuleSpec]: """Build a module catalog from data-raw module items.""" catalog: dict[str, ModuleSpec] = {} - for name, proto in data_raw.get("module", {}).items(): - effects = proto.get("effect", {}) - if not isinstance(effects, dict): - effects = {} - speed_bonus = parse_effect_bonus(effects.get("speed")) - productivity_bonus = parse_effect_bonus(effects.get("productivity")) - limitation = frozenset(proto.get("limitation", []) or []) - limitation_blacklist = frozenset( - proto.get("limitation_blacklist", []) or [] + module_map = cast( + "Mapping[str, object]", + data_raw.module or {}, + ) + for name, proto in module_map.items(): + proto = cast("ModulePrototype", proto) + effects = proto.effect + speed_bonus = parse_effect_bonus(get_payload_value(effects, "speed")) + productivity_bonus = parse_effect_bonus( + get_payload_value(effects, "productivity") + ) + limitation_raw = get_payload_value(proto, "limitation") or [] + if not isinstance(limitation_raw, list): + limitation_raw = [] + limitation = frozenset(limitation_raw) + limitation_blacklist_raw = ( + get_payload_value(proto, "limitation_blacklist") or [] ) + if not isinstance(limitation_blacklist_raw, list): + limitation_blacklist_raw = [] + limitation_blacklist = frozenset(limitation_blacklist_raw) catalog[name] = ModuleSpec( key=name, label=name.replace("-", " ").title(), @@ -405,16 +676,22 @@ def build_module_catalog( def build_beacon_catalog( - data_raw: Mapping[str, Mapping[str, dict]], + data_raw: FactorioDataRaw, ) -> dict[str, BeaconSpec]: """Build a beacon catalog from data-raw beacon entities.""" catalog: dict[str, BeaconSpec] = {} - for name, proto in data_raw.get("beacon", {}).items(): - module_slots = int(proto.get("module_slots", 0)) - effectivity = float(proto.get("distribution_effectivity", 1.0)) - allowed_effects = normalize_allowed_effects( - proto.get("allowed_effects", []) + beacon_map = cast( + "Mapping[str, object]", + data_raw.beacon or {}, + ) + for name, proto in beacon_map.items(): + proto = cast("BeaconPrototype", proto) + module_slots = coerce_int(proto.module_slots, default=0) + effectivity = coerce_float( + proto.distribution_effectivity, + default=1.0, ) + allowed_effects = normalize_allowed_effects(proto.allowed_effects) catalog[name] = BeaconSpec( key=name, label=name.replace("-", " ").title(), @@ -437,27 +714,32 @@ def select_default_beacon( def build_recipe_catalog( - data_raw: Mapping[str, Mapping[str, dict]], + data_raw: FactorioDataRaw, recipe_keys: tuple[str, str, str], ) -> dict[str, Recipe]: """Build recipe definitions for the selected chain.""" catalog: dict[str, Recipe] = {} for recipe_key in recipe_keys: proto = get_prototype(data_raw, "recipe", recipe_key) - if not proto: + if not isinstance(proto, RecipePrototype): continue catalog[recipe_key] = build_recipe_from_proto(recipe_key, proto) return catalog def list_recipe_names_by_category( - data_raw: Mapping[str, Mapping[str, dict]], + data_raw: FactorioDataRaw, category: str, ) -> list[str]: """List recipe names matching a category.""" matches = [] - for name, proto in data_raw.get("recipe", {}).items(): - if proto.get("category", "crafting") == category: + recipe_map = cast( + "Mapping[str, object]", + data_raw.recipe or {}, + ) + for name, proto in recipe_map.items(): + proto_category = get_payload_value(proto, "category") or "crafting" + if proto_category == category: matches.append(name) return sorted(matches) @@ -477,7 +759,7 @@ def select_recipe_option( def build_icon_catalog( - data_raw: Mapping[str, Mapping[str, dict]], + data_raw: FactorioDataRaw, data_dir_path: str, recipes: Mapping[str, Recipe], machines: Mapping[str, Machine], @@ -501,7 +783,7 @@ def build_icon_catalog( catalog: dict[tuple[str, str], IconSpec] = {} for proto_type, name in icon_keys: proto = get_prototype(data_raw, proto_type, name) - if not proto: + if proto is None: continue icon_path, icon_size = extract_icon_from_payload(proto) if not icon_path: @@ -619,8 +901,8 @@ def find_icon( def load_icon_image(path: str, size: int | None) -> bytes | None: """Load and crop an icon image to a single square.""" try: - with Image.open(path) as image: - image = image.convert("RGBA") + with Image.open(path) as image_file: + image = image_file.convert("RGBA") width, height = image.size target_size = size if target_size is None and width != height: @@ -842,8 +1124,16 @@ def render_sidebar_controls() -> tuple[str, str, float, bool, float, str]: ) +def warn_missing_data_dir(data_dir_path: str) -> None: + """Warn when no data directory is provided.""" + if not data_dir_path: + st.sidebar.warning( + "Set FACTORIO_DATA_DIR or enter a data directory to load icons." + ) + + def render_recipe_selection( - data_raw: Mapping[str, Mapping[str, dict]], + data_raw: FactorioDataRaw, ) -> tuple[str, str, str] | None: """Render recipe selectors for the oil chain.""" st.sidebar.header("Recipes") @@ -1106,53 +1396,57 @@ def build_solver(*, force_integer: bool) -> pywraplp.Solver | None: return pywraplp.Solver.CreateSolver(solver_name) -def solve_chain( - demand_pg_per_s: float, +def validate_recipe_configs( recipes: Mapping[str, Recipe], configs: Mapping[str, RecipeConfig], - *, - force_integer: bool, - recipe_order: tuple[str, str, str], -) -> SolveResult | None: - """Solve the oil-processing chain to meet petroleum gas demand.""" - solver = build_solver(force_integer=force_integer) - if solver is None: - st.error("OR-Tools solver is not available in this environment.") - return None - +) -> str | None: + """Validate recipe configs before building the solver.""" for recipe_key, recipe in recipes.items(): config = configs[recipe_key] effective_speed = compute_effective_speed( - config.machine, config.effects + config.machine, + config.effects, ) if effective_speed <= 0.0: - st.error( + return ( "Effective crafting speed must be positive. " "Check module and beacon bonuses." ) - return None if recipe.energy_required <= 0.0: - st.error("Recipe energy_required must be positive.") - return None + return "Recipe energy_required must be positive." + return None - rates = { - recipe_key: per_machine_rates(recipe, configs[recipe_key]) - for recipe_key, recipe in recipes.items() - } +def build_solver_variables( + solver: pywraplp.Solver, + recipes: Mapping[str, Recipe], + *, + force_integer: bool, +) -> dict[str, pywraplp.Variable]: + """Create solver variables for each recipe.""" variables: dict[str, pywraplp.Variable] = {} for recipe_key in recipes: if force_integer: variables[recipe_key] = solver.IntVar( - 0.0, solver.infinity(), recipe_key + 0.0, + solver.infinity(), + recipe_key, ) else: variables[recipe_key] = solver.NumVar( - 0.0, solver.infinity(), recipe_key + 0.0, + solver.infinity(), + recipe_key, ) + return variables - advanced_key, heavy_key, light_key = recipe_order +def extract_chain_rates( + rates: Mapping[str, FlowRates], + recipe_order: tuple[str, str, str], +) -> ChainRates: + """Extract oil-chain flow rates from per-machine rates.""" + advanced_key, heavy_key, light_key = recipe_order heavy_prod = rates[advanced_key].production.get( ("fluid", "heavy-oil"), 0.0, @@ -1161,24 +1455,6 @@ def solve_chain( ("fluid", "heavy-oil"), 0.0, ) - if heavy_prod <= 0.0 or heavy_cons <= 0.0: - st.error( - "Selected recipes must produce/consume heavy-oil. " - "Please choose an oil-processing recipe that outputs heavy-oil " - "and a cracking recipe that consumes heavy-oil." - ) - return None - if force_integer: - solver.Add( - heavy_prod * variables[advanced_key] # type: ignore[operator] - >= heavy_cons * variables[heavy_key] # type: ignore[operator] - ) - else: - solver.Add( - heavy_prod * variables[advanced_key] # type: ignore[operator] - == heavy_cons * variables[heavy_key] # type: ignore[operator] - ) - light_prod_advanced = rates[advanced_key].production.get( ("fluid", "light-oil"), 0.0, @@ -1191,27 +1467,6 @@ def solve_chain( ("fluid", "light-oil"), 0.0, ) - total_light_prod = light_prod_advanced + light_prod_from_heavy - if total_light_prod <= 0.0 or light_cons <= 0.0: - st.error( - "Selected recipes must produce/consume light-oil. " - "Please choose recipes that produce light-oil and a cracking " - "recipe that consumes light-oil." - ) - return None - if force_integer: - solver.Add( - light_prod_advanced * variables[advanced_key] # type: ignore[operator] - + light_prod_from_heavy * variables[heavy_key] # type: ignore[operator] - >= light_cons * variables[light_key] # type: ignore[operator] - ) - else: - solver.Add( - light_prod_advanced * variables[advanced_key] # type: ignore[operator] - + light_prod_from_heavy * variables[heavy_key] # type: ignore[operator] - == light_cons * variables[light_key] # type: ignore[operator] - ) - pg_prod_advanced = rates[advanced_key].production.get( ("fluid", "petroleum-gas"), 0.0, @@ -1220,16 +1475,140 @@ def solve_chain( ("fluid", "petroleum-gas"), 0.0, ) - if pg_prod_advanced + pg_prod_from_light <= 0.0: - st.error( + return ChainRates( + heavy_prod=heavy_prod, + heavy_cons=heavy_cons, + light_prod_advanced=light_prod_advanced, + light_prod_from_heavy=light_prod_from_heavy, + light_cons=light_cons, + pg_prod_advanced=pg_prod_advanced, + pg_prod_from_light=pg_prod_from_light, + ) + + +def validate_chain_rates(rates: ChainRates) -> str | None: + """Validate that chain rates include required flows.""" + if rates.heavy_prod <= 0.0 or rates.heavy_cons <= 0.0: + return ( + "Selected recipes must produce/consume heavy-oil. " + "Please choose an oil-processing recipe that outputs heavy-oil " + "and a cracking recipe that consumes heavy-oil." + ) + total_light_prod = rates.light_prod_advanced + rates.light_prod_from_heavy + if total_light_prod <= 0.0 or rates.light_cons <= 0.0: + return ( + "Selected recipes must produce/consume light-oil. " + "Please choose recipes that produce light-oil and a cracking " + "recipe that consumes light-oil." + ) + if rates.pg_prod_advanced + rates.pg_prod_from_light <= 0.0: + return ( "Selected recipes must produce petroleum gas. " "Please choose an oil-processing/cracking chain that outputs it." ) - return None + return None + + +def add_balance_constraint( + solver: pywraplp.Solver, + *, + left_terms: Sequence[tuple[float, pywraplp.Variable]], + right_terms: Sequence[tuple[float, pywraplp.Variable]], + force_integer: bool, +) -> None: + """Add a balance constraint using >= for integers or == for floats.""" + left_expr = solver.Sum( + coeff * variable # type: ignore[operator] + for coeff, variable in left_terms + ) + right_expr = solver.Sum( + coeff * variable # type: ignore[operator] + for coeff, variable in right_terms + ) + if force_integer: + solver.Add(left_expr >= right_expr) + else: + solver.Add(left_expr == right_expr) + + +def add_chain_constraints( + solver: pywraplp.Solver, + variables: Mapping[str, pywraplp.Variable], + rates: ChainRates, + *, + settings: ChainConstraintSettings, +) -> None: + """Add oil-chain balance constraints to the solver.""" + advanced_key, heavy_key, light_key = settings.recipe_order + add_balance_constraint( + solver, + left_terms=[(rates.heavy_prod, variables[advanced_key])], + right_terms=[(rates.heavy_cons, variables[heavy_key])], + force_integer=settings.force_integer, + ) + add_balance_constraint( + solver, + left_terms=[ + (rates.light_prod_advanced, variables[advanced_key]), + (rates.light_prod_from_heavy, variables[heavy_key]), + ], + right_terms=[(rates.light_cons, variables[light_key])], + force_integer=settings.force_integer, + ) solver.Add( - pg_prod_advanced * variables[advanced_key] # type: ignore[operator] - + pg_prod_from_light * variables[light_key] # type: ignore[operator] - >= demand_pg_per_s + rates.pg_prod_advanced * variables[advanced_key] # type: ignore[operator] + + rates.pg_prod_from_light * variables[light_key] # type: ignore[operator] + >= settings.demand_pg_per_s + ) + + +def solve_chain( + demand_pg_per_s: float, + recipes: Mapping[str, Recipe], + configs: Mapping[str, RecipeConfig], + *, + force_integer: bool, + recipe_order: tuple[str, str, str], +) -> SolveResult | None: + """Solve the oil-processing chain to meet petroleum gas demand.""" + solver = build_solver(force_integer=force_integer) + if solver is None: + st.error("OR-Tools solver is not available in this environment.") + return None + + validation_error = validate_recipe_configs(recipes, configs) + if validation_error: + st.error(validation_error) + return None + + rates = { + recipe_key: per_machine_rates(recipe, configs[recipe_key]) + for recipe_key, recipe in recipes.items() + } + + variables = build_solver_variables( + solver, + recipes, + force_integer=force_integer, + ) + + advanced_key, heavy_key, light_key = recipe_order + + chain_rates = extract_chain_rates(rates, recipe_order) + chain_error = validate_chain_rates(chain_rates) + if chain_error: + st.error(chain_error) + return None + + add_chain_constraints( + solver, + variables, + chain_rates, + settings=ChainConstraintSettings( + recipe_order=recipe_order, + force_integer=force_integer, + demand_pg_per_s=demand_pg_per_s, + ), ) objective_terms = [] @@ -1260,15 +1639,16 @@ def solve_chain( for recipe_key in recipes } net_flows = { - ("fluid", "heavy-oil"): heavy_prod * machine_counts[advanced_key] - - heavy_cons * machine_counts[heavy_key], - ("fluid", "light-oil"): light_prod_advanced + ("fluid", "heavy-oil"): chain_rates.heavy_prod * machine_counts[advanced_key] - + light_prod_from_heavy * machine_counts[heavy_key] - - light_cons * machine_counts[light_key], - ("fluid", "petroleum-gas"): pg_prod_advanced + - chain_rates.heavy_cons * machine_counts[heavy_key], + ("fluid", "light-oil"): chain_rates.light_prod_advanced * machine_counts[advanced_key] - + pg_prod_from_light * machine_counts[light_key], + + chain_rates.light_prod_from_heavy * machine_counts[heavy_key] + - chain_rates.light_cons * machine_counts[light_key], + ("fluid", "petroleum-gas"): chain_rates.pg_prod_advanced + * machine_counts[advanced_key] + + chain_rates.pg_prod_from_light * machine_counts[light_key], } objective_value: float | None @@ -1428,13 +1808,10 @@ def main() -> None: ) return - if not data_dir_path: - st.sidebar.warning( - "Set FACTORIO_DATA_DIR or enter a data directory to load icons." - ) + warn_missing_data_dir(data_dir_path) data_raw = load_data_raw(data_raw_path) - if not data_raw: + if data_raw is None: st.error("Failed to load data-raw-dump.json.") return diff --git a/src/private/app/factorio-cycle-calculator/generated/__init__.py b/src/private/app/factorio-cycle-calculator/generated/__init__.py new file mode 100644 index 0000000..86e8298 --- /dev/null +++ b/src/private/app/factorio-cycle-calculator/generated/__init__.py @@ -0,0 +1 @@ +"""Generated dataclass models for the Factorio data-raw schema.""" diff --git a/src/private/app/factorio-cycle-calculator/generated/data_raw_models.py b/src/private/app/factorio-cycle-calculator/generated/data_raw_models.py new file mode 100644 index 0000000..fd4ac55 --- /dev/null +++ b/src/private/app/factorio-cycle-calculator/generated/data_raw_models.py @@ -0,0 +1,32784 @@ +# generated by datamodel-codegen: +# filename: factorio-data-raw-json-schema.full.json +# timestamp: 2026-02-13T23:23:05+00:00 + +from __future__ import annotations + +from dataclasses import dataclass +from enum import Enum +from typing import Any, Literal, TypeAlias, Union + + +class Effect(Enum): + compilatron_hologram = "compilatron-hologram" + + +class Priority(Enum): + closest = "closest" + farthest = "farthest" + newest = "newest" + oldest = "oldest" + + +class Alignment(Enum): + top_left = "top-left" + middle_left = "middle-left" + left = "left" + bottom_left = "bottom-left" + top_center = "top-center" + middle_center = "middle-center" + center_ = "center" + bottom_center = "bottom-center" + top_right = "top-right" + middle_right = "middle-right" + right = "right" + bottom_right = "bottom-right" + + +class AmbientSoundType(Enum): + menu_track = "menu-track" + main_track = "main-track" + hero_track = "hero-track" + interlude = "interlude" + + +class AmmoSourceType(Enum): + default = "default" + player = "player" + turret = "turret" + vehicle = "vehicle" + + +class TargetType(Enum): + entity = "entity" + position = "position" + direction = "direction" + + +class AnimationRunMode(Enum): + forward = "forward" + backward = "backward" + forward_then_backward = "forward-then-backward" + + +class CollisionMode(Enum): + distance_from_collision_box = "distance-from-collision-box" + distance_from_center = "distance-from-center" + + +class AttenuationType(Enum): + none = "none" + linear = "linear" + logarithmic = "logarithmic" + exponential = "exponential" + cosine = "cosine" + S_curve = "S-curve" + + +class ModuleTintMode(Enum): + single_module = "single-module" + mix = "mix" + + +class ActivationType(Enum): + shoot = "shoot" + throw = "throw" + consume = "consume" + activate = "activate" + + +class BlendMode(Enum): + normal = "normal" + additive = "additive" + additive_soft = "additive-soft" + multiplicative = "multiplicative" + multiplicative_with_alpha = "multiplicative-with-alpha" + overwrite = "overwrite" + + +class BuildMode(Enum): + normal = "normal" + forced = "forced" + superforced = "superforced" + + +class CloudEffectStyle(Enum): + none = "none" + euclidean = "euclidean" + manhattan = "manhattan" + euclidean_outside = "euclidean-outside" + manhattan_outside = "manhattan-outside" + horizontal_stripe = "horizontal-stripe" + texture = "texture" + texture_outside = "texture-outside" + + +class ComparatorString(Enum): + field_ = "=" + field__1 = ">" + field__2 = "<" + field__3 = "≥" + field__ = ">=" + field__4 = "≤" + field___1 = "<=" + field__5 = "≠" + field___2 = "!=" + + +class ConsumingType(Enum): + none = "none" + game_only = "game-only" + + +class EventType(Enum): + crafting_of_single_item_ordered = "crafting-of-single-item-ordered" + crafting_of_multiple_items_ordered = "crafting-of-multiple-items-ordered" + crafting_finished = "crafting-finished" + + +class ApplyTileTint(Enum): + primary = "primary" + secondary = "secondary" + + +@dataclass +class CreateSpacePlatformTechnologyTrigger: + type: Literal["create-space-platform"] + + +class CursorBoxType(Enum): + entity = "entity" + multiplayer_entity = "multiplayer-entity" + electricity = "electricity" + copy = "copy" + not_allowed = "not-allowed" + pair = "pair" + logistics = "logistics" + train_visualization = "train-visualization" + blueprint_snap_rectangle = "blueprint-snap-rectangle" + spidertron_remote_selected = "spidertron-remote-selected" + spidertron_remote_to_be_selected = "spidertron-remote-to-be-selected" + + +@dataclass +class DependenciesMetTipTrigger: + type: Literal["dependencies-met"] + + +class DirectionString(Enum): + north = "north" + north_north_east = "north_north_east" + north_east = "north_east" + east_north_east = "east_north_east" + east = "east" + east_south_east = "east_south_east" + south_east = "south_east" + south_south_east = "south_south_east" + south = "south" + south_south_west = "south_south_west" + south_west = "south_west" + west_south_west = "west_south_west" + west = "west" + west_north_west = "west_north_west" + north_west = "north_west" + north_north_west = "north_north_west" + + +class EffectRelativeTo(Enum): + ground_origin = "ground-origin" + pod = "pod" + spawn_origin = "spawn-origin" + + +class EffectTypeLimitationEnum(Enum): + speed = "speed" + productivity = "productivity" + consumption = "consumption" + pollution = "pollution" + quality = "quality" + + +EffectTypeLimitation: TypeAlias = ( + Literal["speed", "productivity", "consumption", "pollution", "quality"] + | list[EffectTypeLimitationEnum] + | dict[str, Any] +) + + +class EffectVariation(Enum): + lava = "lava" + wetland_water = "wetland-water" + oil = "oil" + water = "water" + + +class ElectricUsagePriority(Enum): + primary_input = "primary-input" + primary_output = "primary-output" + secondary_input = "secondary-input" + secondary_output = "secondary-output" + tertiary = "tertiary" + solar = "solar" + lamp = "lamp" + + +class DrawType(Enum): + inner = "inner" + outer = "outer" + + +class Type(Enum): + none = "none" + composition = "composition" + + +class EntityPrototypeFlag(Enum): + not_rotatable = "not-rotatable" + placeable_neutral = "placeable-neutral" + placeable_player = "placeable-player" + placeable_enemy = "placeable-enemy" + placeable_off_grid = "placeable-off-grid" + player_creation = "player-creation" + building_direction_8_way = "building-direction-8-way" + filter_directions = "filter-directions" + get_by_unit_number = "get-by-unit-number" + breaths_air = "breaths-air" + not_repairable = "not-repairable" + not_on_map = "not-on-map" + not_deconstructable = "not-deconstructable" + not_blueprintable = "not-blueprintable" + hide_alt_info = "hide-alt-info" + not_flammable = "not-flammable" + no_automated_item_removal = "no-automated-item-removal" + no_automated_item_insertion = "no-automated-item-insertion" + no_copy_paste = "no-copy-paste" + not_selectable_in_game = "not-selectable-in-game" + not_upgradable = "not-upgradable" + not_in_kill_statistics = "not-in-kill-statistics" + building_direction_16_way = "building-direction-16-way" + snap_to_rail_support_spot = "snap-to-rail-support-spot" + not_in_made_in = "not-in-made-in" + + +EntityPrototypeFlags: TypeAlias = list[EntityPrototypeFlag] | dict[str, Any] + + +class EntityStatus(Enum): + working = "working" + normal = "normal" + ghost = "ghost" + not_plugged_in_electric_network = "not-plugged-in-electric-network" + networks_connected = "networks-connected" + networks_disconnected = "networks-disconnected" + no_ammo = "no-ammo" + waiting_for_target_to_be_built = "waiting-for-target-to-be-built" + waiting_for_train = "waiting-for-train" + no_power = "no-power" + low_temperature = "low-temperature" + charging = "charging" + discharging = "discharging" + fully_charged = "fully-charged" + no_fuel = "no-fuel" + no_food = "no-food" + out_of_logistic_network = "out-of-logistic-network" + no_recipe = "no-recipe" + no_ingredients = "no-ingredients" + no_input_fluid = "no-input-fluid" + no_research_in_progress = "no-research-in-progress" + no_minable_resources = "no-minable-resources" + low_input_fluid = "low-input-fluid" + low_power = "low-power" + not_connected_to_rail = "not-connected-to-rail" + cant_divide_segments = "cant-divide-segments" + recharging_after_power_outage = "recharging-after-power-outage" + no_modules_to_transmit = "no-modules-to-transmit" + disabled_by_control_behavior = "disabled-by-control-behavior" + opened_by_circuit_network = "opened-by-circuit-network" + closed_by_circuit_network = "closed-by-circuit-network" + disabled_by_script = "disabled-by-script" + disabled = "disabled" + turned_off_during_daytime = "turned-off-during-daytime" + fluid_ingredient_shortage = "fluid-ingredient-shortage" + item_ingredient_shortage = "item-ingredient-shortage" + full_output = "full-output" + not_enough_space_in_output = "not-enough-space-in-output" + full_burnt_result_output = "full-burnt-result-output" + marked_for_deconstruction = "marked-for-deconstruction" + missing_required_fluid = "missing-required-fluid" + missing_science_packs = "missing-science-packs" + waiting_for_source_items = "waiting-for-source-items" + waiting_for_space_in_destination = "waiting-for-space-in-destination" + preparing_rocket_for_launch = "preparing-rocket-for-launch" + waiting_to_launch_rocket = "waiting-to-launch-rocket" + waiting_for_space_in_platform_hub = "waiting-for-space-in-platform-hub" + launching_rocket = "launching-rocket" + thrust_not_required = "thrust-not-required" + not_enough_thrust = "not-enough-thrust" + on_the_way = "on-the-way" + waiting_in_orbit = "waiting-in-orbit" + waiting_for_rocket_to_arrive = "waiting-for-rocket-to-arrive" + no_path = "no-path" + broken = "broken" + none = "none" + frozen = "frozen" + paused = "paused" + not_connected_to_hub_or_pad = "not-connected-to-hub-or-pad" + computing_navigation = "computing-navigation" + no_filter = "no-filter" + waiting_at_stop = "waiting-at-stop" + destination_stop_full = "destination-stop-full" + pipeline_overextended = "pipeline-overextended" + no_spot_seedable_by_inputs = "no-spot-seedable-by-inputs" + waiting_for_plants_to_grow = "waiting-for-plants-to-grow" + recipe_not_researched = "recipe-not-researched" + + +class Transfer(Enum): + in_ = "in" + out = "out" + + +class Type1(Enum): + full = "full" + manual = "manual" + + +class ProductionType(Enum): + none = "none" + input = "input" + input_output = "input-output" + output = "output" + + +class FluidFlowDirection(Enum): + input_output = "input-output" + input = "input" + output = "output" + + +class FogType(Enum): + vulcanus = "vulcanus" + gleba = "gleba" + + +class ForceCondition(Enum): + all = "all" + enemy = "enemy" + ally = "ally" + friend = "friend" + not_friend = "not-friend" + same = "same" + not_same = "not-same" + + +class PlayFor(Enum): + character_actions = "character_actions" + everything = "everything" + + +class HorizontalAlign(Enum): + left = "left" + center_ = "center" + right = "right" + + +class RenderLayer1(Enum): + entity_info_icon = "entity-info-icon" + entity_info_icon_above = "entity-info-icon-above" + air_entity_info_icon = "air-entity-info-icon" + + +class ItemPrototypeFlag(Enum): + draw_logistic_overlay = "draw-logistic-overlay" + excluded_from_trash_unrequested = "excluded-from-trash-unrequested" + always_show = "always-show" + hide_from_bonus_gui = "hide-from-bonus-gui" + hide_from_fuel_tooltip = "hide-from-fuel-tooltip" + not_stackable = "not-stackable" + primary_place_result = "primary-place-result" + mod_openable = "mod-openable" + only_in_cursor = "only-in-cursor" + spawnable = "spawnable" + spoil_result = "spoil-result" + ignore_spoil_time_modifier = "ignore-spoil-time-modifier" + + +ItemPrototypeFlags: TypeAlias = list[ItemPrototypeFlag] | dict[str, Any] + + +class Type2(Enum): + basic = "basic" + oriented = "oriented" + + +class Type4(Enum): + impact_soundset = "impact-soundset" + prototype = "prototype" + id = "id" + countAsRockForFilteredDeconstruction = ( + "countAsRockForFilteredDeconstruction" + ) + + +class LinkedGameControl(Enum): + move_up = "move-up" + move_down = "move-down" + move_left = "move-left" + move_right = "move-right" + alternative_gui_move_up = "alternative-gui-move-up" + alternative_gui_move_down = "alternative-gui-move-down" + alternative_gui_move_left = "alternative-gui-move-left" + alternative_gui_move_right = "alternative-gui-move-right" + open_character_gui = "open-character-gui" + open_gui = "open-gui" + confirm_gui = "confirm-gui" + toggle_free_cursor = "toggle-free-cursor" + mine = "mine" + build = "build" + build_ghost = "build-ghost" + super_forced_build = "super-forced-build" + clear_cursor = "clear-cursor" + pipette = "pipette" + rotate = "rotate" + reverse_rotate = "reverse-rotate" + flip_horizontal = "flip-horizontal" + flip_vertical = "flip-vertical" + pick_items = "pick-items" + drop_cursor = "drop-cursor" + show_info = "show-info" + shoot_enemy = "shoot-enemy" + shoot_selected = "shoot-selected" + next_weapon = "next-weapon" + toggle_driving = "toggle-driving" + zoom_in = "zoom-in" + zoom_out = "zoom-out" + use_item = "use-item" + alternative_use_item = "alternative-use-item" + toggle_console = "toggle-console" + copy_entity_settings = "copy-entity-settings" + paste_entity_settings = "paste-entity-settings" + controller_gui_logistics_tab = "controller-gui-logistics-tab" + controller_gui_character_tab = "controller-gui-character-tab" + controller_gui_crafting_tab = "controller-gui-crafting-tab" + toggle_rail_layer = "toggle-rail-layer" + select_for_blueprint = "select-for-blueprint" + select_for_cancel_deconstruct = "select-for-cancel-deconstruct" + select_for_super_forced_deconstruct = "select-for-super-forced-deconstruct" + reverse_select = "reverse-select" + alt_reverse_select = "alt-reverse-select" + deselect = "deselect" + cycle_blueprint_forwards = "cycle-blueprint-forwards" + cycle_blueprint_backwards = "cycle-blueprint-backwards" + focus_search = "focus-search" + larger_terrain_building_area = "larger-terrain-building-area" + smaller_terrain_building_area = "smaller-terrain-building-area" + remove_pole_cables = "remove-pole-cables" + build_with_obstacle_avoidance = "build-with-obstacle-avoidance" + add_station = "add-station" + add_temporary_station = "add-temporary-station" + rename_all = "rename-all" + fast_wait_condition = "fast-wait-condition" + drag_map = "drag-map" + move_tag = "move-tag" + place_in_chat = "place-in-chat" + place_ping = "place-ping" + pin = "pin" + activate_tooltip = "activate-tooltip" + next_surface = "next-surface" + previous_surface = "previous-surface" + cycle_quality_up = "cycle-quality-up" + cycle_quality_down = "cycle-quality-down" + scroll_tooltip_up = "scroll-tooltip-up" + scroll_tooltip_down = "scroll-tooltip-down" + craft = "craft" + craft_5 = "craft-5" + craft_all = "craft-all" + cancel_craft = "cancel-craft" + cancel_craft_5 = "cancel-craft-5" + cancel_craft_all = "cancel-craft-all" + pick_item = "pick-item" + stack_transfer = "stack-transfer" + inventory_transfer = "inventory-transfer" + fast_entity_transfer = "fast-entity-transfer" + cursor_split = "cursor-split" + stack_split = "stack-split" + inventory_split = "inventory-split" + fast_entity_split = "fast-entity-split" + toggle_filter = "toggle-filter" + open_item = "open-item" + copy_inventory_filter = "copy-inventory-filter" + paste_inventory_filter = "paste-inventory-filter" + show_quick_panel = "show-quick-panel" + next_quick_panel_page = "next-quick-panel-page" + previous_quick_panel_page = "previous-quick-panel-page" + next_quick_panel_tab = "next-quick-panel-tab" + previous_quick_panel_tab = "previous-quick-panel-tab" + rotate_active_quick_bars = "rotate-active-quick-bars" + next_active_quick_bar = "next-active-quick-bar" + previous_active_quick_bar = "previous-active-quick-bar" + quick_bar_button_1 = "quick-bar-button-1" + quick_bar_button_2 = "quick-bar-button-2" + quick_bar_button_3 = "quick-bar-button-3" + quick_bar_button_4 = "quick-bar-button-4" + quick_bar_button_5 = "quick-bar-button-5" + quick_bar_button_6 = "quick-bar-button-6" + quick_bar_button_7 = "quick-bar-button-7" + quick_bar_button_8 = "quick-bar-button-8" + quick_bar_button_9 = "quick-bar-button-9" + quick_bar_button_10 = "quick-bar-button-10" + quick_bar_button_1_secondary = "quick-bar-button-1-secondary" + quick_bar_button_2_secondary = "quick-bar-button-2-secondary" + quick_bar_button_3_secondary = "quick-bar-button-3-secondary" + quick_bar_button_4_secondary = "quick-bar-button-4-secondary" + quick_bar_button_5_secondary = "quick-bar-button-5-secondary" + quick_bar_button_6_secondary = "quick-bar-button-6-secondary" + quick_bar_button_7_secondary = "quick-bar-button-7-secondary" + quick_bar_button_8_secondary = "quick-bar-button-8-secondary" + quick_bar_button_9_secondary = "quick-bar-button-9-secondary" + quick_bar_button_10_secondary = "quick-bar-button-10-secondary" + action_bar_select_page_1 = "action-bar-select-page-1" + action_bar_select_page_2 = "action-bar-select-page-2" + action_bar_select_page_3 = "action-bar-select-page-3" + action_bar_select_page_4 = "action-bar-select-page-4" + action_bar_select_page_5 = "action-bar-select-page-5" + action_bar_select_page_6 = "action-bar-select-page-6" + action_bar_select_page_7 = "action-bar-select-page-7" + action_bar_select_page_8 = "action-bar-select-page-8" + action_bar_select_page_9 = "action-bar-select-page-9" + action_bar_select_page_10 = "action-bar-select-page-10" + copy = "copy" + cut = "cut" + paste = "paste" + cycle_clipboard_forwards = "cycle-clipboard-forwards" + cycle_clipboard_backwards = "cycle-clipboard-backwards" + undo = "undo" + redo = "redo" + toggle_menu = "toggle-menu" + toggle_map = "toggle-map" + close_menu = "close-menu" + open_technology_gui = "open-technology-gui" + production_statistics = "production-statistics" + logistic_networks = "logistic-networks" + toggle_blueprint_library = "toggle-blueprint-library" + open_trains_gui = "open-trains-gui" + open_factoriopedia = "open-factoriopedia" + back = "back" + forward = "forward" + pause_game = "pause-game" + confirm_message = "confirm-message" + previous_mod = "previous-mod" + connect_train = "connect-train" + disconnect_train = "disconnect-train" + submit_feedback = "submit-feedback" + editor_next_variation = "editor-next-variation" + editor_previous_variation = "editor-previous-variation" + editor_clone_item = "editor-clone-item" + editor_delete_item = "editor-delete-item" + editor_toggle_pause = "editor-toggle-pause" + editor_tick_once = "editor-tick-once" + editor_speed_up = "editor-speed-up" + editor_speed_down = "editor-speed-down" + editor_reset_speed = "editor-reset-speed" + editor_set_clone_brush_source = "editor-set-clone-brush-source" + editor_set_clone_brush_destination = "editor-set-clone-brush-destination" + editor_switch_to_surface = "editor-switch-to-surface" + editor_remove_scripting_object = "editor-remove-scripting-object" + debug_toggle_atlas_gui = "debug-toggle-atlas-gui" + debug_toggle_gui_visibility = "debug-toggle-gui-visibility" + debug_toggle_debug_settings = "debug-toggle-debug-settings" + debug_toggle_basic = "debug-toggle-basic" + debug_reset_zoom = "debug-reset-zoom" + debug_reset_zoom_2x = "debug-reset-zoom-2x" + toggle_gui_debug = "toggle-gui-debug" + toggle_gui_style_view = "toggle-gui-style-view" + toggle_gui_shadows = "toggle-gui-shadows" + toggle_gui_glows = "toggle-gui-glows" + open_prototypes_gui = "open-prototypes-gui" + open_prototype_explorer_gui = "open-prototype-explorer-gui" + increase_ui_scale = "increase-ui-scale" + decrease_ui_scale = "decrease-ui-scale" + reset_ui_scale = "reset-ui-scale" + slash_editor = "slash-editor" + toggle_entity = "toggle-entity" + next_player_in_replay = "next-player-in-replay" + move_blueprint_absolute_grid_up = "move-blueprint-absolute-grid-up" + move_blueprint_absolute_grid_down = "move-blueprint-absolute-grid-down" + move_blueprint_absolute_grid_left = "move-blueprint-absolute-grid-left" + move_blueprint_absolute_grid_right = "move-blueprint-absolute-grid-right" + move_blueprint_entities_up = "move-blueprint-entities-up" + move_blueprint_entities_down = "move-blueprint-entities-down" + move_blueprint_entities_left = "move-blueprint-entities-left" + move_blueprint_entities_right = "move-blueprint-entities-right" + play_next_track = "play-next-track" + play_previous_track = "play-previous-track" + pause_resume_music = "pause-resume-music" + field_ = "" + + +class WireType(Enum): + red = "red" + green = "green" + copper = "copper" + + +class AutoplaceSettings1(Enum): + entity = "entity" + tile = "tile" + decorative = "decorative" + + +class Mirroring(Enum): + horizontal = "horizontal" + vertical = "vertical" + diagonal_pos = "diagonal-pos" + diagonal_neg = "diagonal-neg" + + +class ModuleTint(Enum): + primary = "primary" + secondary = "secondary" + tertiary = "tertiary" + quaternary = "quaternary" + none = "none" + + +class OrderEnum(Enum): + wind = "wind" + base_ambience = "base_ambience" + + +class ConnectionType(Enum): + normal = "normal" + underground = "underground" + linked = "linked" + + +class PlayerInputMethodFilter(Enum): + all = "all" + keyboard_and_mouse = "keyboard_and_mouse" + game_controller = "game_controller" + + +class ProcessionAudioEventType(Enum): + play_sound = "play-sound" + start_looped_sound = "start-looped-sound" + stop_looped_sound = "stop-looped-sound" + + +class ProcessionAudioType(Enum): + none = "none" + sound = "sound" + looped_sound = "looped-sound" + pod_catalogue = "pod-catalogue" + location_catalogue = "location-catalogue" + + +class ProcessionAudioUsage(Enum): + both = "both" + passenger = "passenger" + outside = "outside" + + +class ProcessionGraphicType(Enum): + none = "none" + sprite = "sprite" + animation = "animation" + pod_catalogue = "pod-catalogue" + location_catalogue = "location-catalogue" + hatch_location_catalogue_index = "hatch-location-catalogue-index" + + +class RangeMode(Enum): + center_to_center = "center-to-center" + bounding_box_to_bounding_box = "bounding-box-to-bounding-box" + center_to_bounding_box = "center-to-bounding-box" + + +class RenderLayer(Enum): + zero = "zero" + background_transitions = "background-transitions" + under_tiles = "under-tiles" + decals = "decals" + above_tiles = "above-tiles" + ground_layer_1 = "ground-layer-1" + ground_layer_2 = "ground-layer-2" + ground_layer_3 = "ground-layer-3" + ground_layer_4 = "ground-layer-4" + ground_layer_5 = "ground-layer-5" + lower_radius_visualization = "lower-radius-visualization" + radius_visualization = "radius-visualization" + transport_belt_integration = "transport-belt-integration" + resource = "resource" + building_smoke = "building-smoke" + rail_stone_path_lower = "rail-stone-path-lower" + rail_stone_path = "rail-stone-path" + rail_tie = "rail-tie" + decorative = "decorative" + ground_patch = "ground-patch" + ground_patch_higher = "ground-patch-higher" + ground_patch_higher2 = "ground-patch-higher2" + rail_chain_signal_metal = "rail-chain-signal-metal" + rail_screw = "rail-screw" + rail_metal = "rail-metal" + remnants = "remnants" + floor = "floor" + transport_belt = "transport-belt" + transport_belt_endings = "transport-belt-endings" + floor_mechanics_under_corpse = "floor-mechanics-under-corpse" + corpse = "corpse" + floor_mechanics = "floor-mechanics" + item = "item" + transport_belt_reader = "transport-belt-reader" + lower_object = "lower-object" + transport_belt_circuit_connector = "transport-belt-circuit-connector" + lower_object_above_shadow = "lower-object-above-shadow" + lower_object_overlay = "lower-object-overlay" + object_under = "object-under" + object = "object" + cargo_hatch = "cargo-hatch" + higher_object_under = "higher-object-under" + higher_object_above = "higher-object-above" + train_stop_top = "train-stop-top" + item_in_inserter_hand = "item-in-inserter-hand" + above_inserters = "above-inserters" + wires = "wires" + under_elevated = "under-elevated" + elevated_rail_stone_path_lower = "elevated-rail-stone-path-lower" + elevated_rail_stone_path = "elevated-rail-stone-path" + elevated_rail_tie = "elevated-rail-tie" + elevated_rail_screw = "elevated-rail-screw" + elevated_rail_metal = "elevated-rail-metal" + elevated_lower_object = "elevated-lower-object" + elevated_object = "elevated-object" + elevated_higher_object = "elevated-higher-object" + fluid_visualization = "fluid-visualization" + wires_above = "wires-above" + entity_info_icon = "entity-info-icon" + entity_info_icon_above = "entity-info-icon-above" + explosion = "explosion" + projectile = "projectile" + smoke = "smoke" + air_object = "air-object" + air_entity_info_icon = "air-entity-info-icon" + light_effect = "light-effect" + selection_box = "selection-box" + higher_selection_box = "higher-selection-box" + collision_selection_box = "collision-selection-box" + arrow = "arrow" + cursor = "cursor" + + +class RichTextSetting(Enum): + enabled = "enabled" + disabled = "disabled" + highlight = "highlight" + + +class EntityFilterMode(Enum): + whitelist = "whitelist" + blacklist = "blacklist" + + +class TileFilterMode(Enum): + whitelist = "whitelist" + blacklist = "blacklist" + + +class SelectionModeFlag(Enum): + blueprint = "blueprint" + deconstruct = "deconstruct" + cancel_deconstruct = "cancel-deconstruct" + items = "items" + trees = "trees" + buildable_type = "buildable-type" + nothing = "nothing" + items_to_place = "items-to-place" + any_entity = "any-entity" + any_tile = "any-tile" + same_force = "same-force" + not_same_force = "not-same-force" + friend = "friend" + enemy = "enemy" + upgrade = "upgrade" + cancel_upgrade = "cancel-upgrade" + downgrade = "downgrade" + entity_with_health = "entity-with-health" + is_military_target = "is-military-target" + entity_with_owner = "entity-with-owner" + avoid_rolling_stock = "avoid-rolling-stock" + avoid_vehicle = "avoid-vehicle" + controllable = "controllable" + controllable_add = "controllable-add" + controllable_remove = "controllable-remove" + entity_ghost = "entity-ghost" + tile_ghost = "tile-ghost" + + +SelectionModeFlags: TypeAlias = ( + Literal[ + "blueprint", + "deconstruct", + "cancel-deconstruct", + "items", + "trees", + "buildable-type", + "nothing", + "items-to-place", + "any-entity", + "any-tile", + "same-force", + "not-same-force", + "friend", + "enemy", + "upgrade", + "cancel-upgrade", + "downgrade", + "entity-with-health", + "is-military-target", + "entity-with-owner", + "avoid-rolling-stock", + "avoid-vehicle", + "controllable", + "controllable-add", + "controllable-remove", + "entity-ghost", + "tile-ghost", + ] + | list[SelectionModeFlag] + | dict[str, Any] +) + + +class SendToOrbitMode(Enum): + not_sendable = "not-sendable" + manual = "manual" + automated = "automated" + + +class Target(Enum): + enemy = "enemy" + entity = "entity" + + +class Type6(Enum): + virtual = "virtual" + item = "item" + fluid = "fluid" + recipe = "recipe" + entity = "entity" + space_location = "space-location" + asteroid_chunk = "asteroid-chunk" + quality = "quality" + + +class SoundModifierType(Enum): + game = "game" + main_menu = "main-menu" + tips_and_tricks = "tips-and-tricks" + driving = "driving" + elevation = "elevation" + space_platform = "space-platform" + + +class SoundType(Enum): + game_effect = "game-effect" + gui_effect = "gui-effect" + ambient = "ambient" + environment = "environment" + walking = "walking" + alert = "alert" + wind = "wind" + world_ambient = "world-ambient" + weapon = "weapon" + explosion = "explosion" + enemy = "enemy" + + +class Type8(Enum): + entity = "entity" + asteroid_chunk = "asteroid-chunk" + + +class SpriteFlag(Enum): + no_crop = "no-crop" + not_compressed = "not-compressed" + always_compressed = "always-compressed" + mipmap = "mipmap" + linear_minification = "linear-minification" + linear_magnification = "linear-magnification" + linear_mip_level = "linear-mip-level" + alpha_mask = "alpha-mask" + no_scale = "no-scale" + mask = "mask" + icon = "icon" + gui = "gui" + gui_icon = "gui-icon" + light = "light" + terrain = "terrain" + terrain_effect_map = "terrain-effect-map" + reflection_effect_map = "reflection-effect-map" + shadow = "shadow" + smoke = "smoke" + decal = "decal" + low_object = "low-object" + corpse_decay = "corpse-decay" + trilinear_filtering = "trilinear-filtering" + group_none = "group=none" + group_terrain = "group=terrain" + group_shadow = "group=shadow" + group_smoke = "group=smoke" + group_decal = "group=decal" + group_low_object = "group=low-object" + group_gui = "group=gui" + group_icon = "group=icon" + group_icon_background = "group=icon-background" + group_effect_texture = "group=effect-texture" + + +SpriteFlags: TypeAlias = list[SpriteFlag] | dict[str, Any] + + +class SpritePriority(Enum): + extra_high_no_scale = "extra-high-no-scale" + extra_high = "extra-high" + high = "high" + medium = "medium" + low = "low" + very_low = "very-low" + no_atlas = "no-atlas" + + +class SpriteUsageHint(Enum): + any = "any" + mining = "mining" + tile_artifical = "tile-artifical" + corpse_decay = "corpse-decay" + enemy = "enemy" + player = "player" + train = "train" + vehicle = "vehicle" + explosion = "explosion" + rail = "rail" + elevated_rail = "elevated-rail" + air = "air" + remnant = "remnant" + decorative = "decorative" + + +class SpriteUsageSurfaceHint(Enum): + any = "any" + nauvis = "nauvis" + vulcanus = "vulcanus" + gleba = "gleba" + fulgora = "fulgora" + aquilo = "aquilo" + space = "space" + + +class Transfer1(Enum): + stack = "stack" + inventory = "inventory" + whole_inventory = "whole-inventory" + + +class StretchRule(Enum): + on = "on" + off = "off" + auto = "auto" + stretch_and_expand = "stretch_and_expand" + + +class TileRenderLayer(Enum): + zero = "zero" + water = "water" + water_overlay = "water-overlay" + ground_natural = "ground-natural" + ground_artificial = "ground-artificial" + top = "top" + + +class TipStatus(Enum): + locked = "locked" + optional = "optional" + dependencies_not_met = "dependencies-not-met" + unlocked = "unlocked" + suggested = "suggested" + not_to_be_suggested = "not-to-be-suggested" + completed_without_tutorial = "completed-without-tutorial" + completed = "completed" + + +class TurretState(Enum): + folded = "folded" + preparing = "preparing" + prepared = "prepared" + starting_attack = "starting-attack" + attacking = "attacking" + ending_attack = "ending-attack" + rotate_for_folding = "rotate-for-folding" + folding = "folding" + + +class ValveMode(Enum): + one_way = "one-way" + overflow = "overflow" + top_up = "top-up" + + +class VariableAmbientSoundCompositionMode(Enum): + randomized = "randomized" + semi_randomized = "semi-randomized" + shuffled = "shuffled" + layer_controlled = "layer-controlled" + + +class VariableAmbientSoundNextStateTrigger(Enum): + layers_finished = "layers-finished" + duration = "duration" + + +class VariableAmbientSoundStateType(Enum): + regular = "regular" + intermezzo = "intermezzo" + final = "final" + stop = "stop" + + +class VerticalAlign(Enum): + top = "top" + center_ = "center" + bottom = "bottom" + + +class Effect32(Enum): + flicker = "flicker" + uranium_glow = "uranium-glow" + none = "none" + + +class ApplyRecipeTint(Enum): + primary = "primary" + secondary = "secondary" + tertiary = "tertiary" + quaternary = "quaternary" + none = "none" + + +class ApplyTint(Enum): + resource_color = "resource-color" + input_fluid_base_color = "input-fluid-base-color" + input_fluid_flow_color = "input-fluid-flow-color" + status = "status" + none = "none" + visual_state_color = "visual-state-color" + + +Boolean: TypeAlias = bool + + +Double: TypeAlias = float + + +Float: TypeAlias = float + + +Int16: TypeAlias = float + + +Int32: TypeAlias = float + + +Int8: TypeAlias = float + + +Number: TypeAlias = float + + +String: TypeAlias = str + + +Table: TypeAlias = Any + + +Uint16: TypeAlias = float + + +Uint32: TypeAlias = float + + +Uint64: TypeAlias = float + + +Uint8: TypeAlias = float + + +class RemoveDecoratives(Enum): + automatic = "automatic" + true = "true" + false = "false" + + +class Category(Enum): + resource = "resource" + terrain = "terrain" + cliff = "cliff" + enemy = "enemy" + + +class BeaconCounter(Enum): + total = "total" + same_type = "same_type" + + +class FilterMode(Enum): + blacklist = "blacklist" + whitelist = "whitelist" + + +class Mode(Enum): + heat_fluid_inside = "heat-fluid-inside" + output_to_separate_pipe = "output-to-separate-pipe" + + +class ObjectiveCondition(Enum): + game_finished = "game-finished" + rocket_launched = "rocket-launched" + late_research = "late-research" + late_research_1 = "late-research" + + +class InventoryType(Enum): + normal = "normal" + with_bar = "with_bar" + with_filters_and_bar = "with_filters_and_bar" + with_custom_stack_size = "with_custom_stack_size" + with_weight_limit = "with_weight_limit" + + +class Action(Enum): + lua = "lua" + spawn_item = "spawn-item" + toggle_personal_roboport = "toggle-personal-roboport" + toggle_personal_logistic_requests = "toggle-personal-logistic-requests" + toggle_equipment_movement_bonus = "toggle-equipment-movement-bonus" + + +@dataclass +class DeliverCategory: + type: Literal["deliver-category"] + name: String + + +class GuiMode(Enum): + all = "all" + none = "none" + admins = "admins" + + +class AttackType(Enum): + autonomous = "autonomous" + distraction = "distraction" + scripted = "scripted" + + +@dataclass +class ImpactCategory: + type: Literal["impact-category"] + name: String + + +class LogisticMode(Enum): + active_provider = "active-provider" + passive_provider = "passive-provider" + requester = "requester" + storage = "storage" + buffer = "buffer" + + +class GlowRenderMode(Enum): + additive = "additive" + multiplicative = "multiplicative" + + +@dataclass +class MapGenPresets: + type: Literal["map-gen-presets"] + name: String + + +class SystemCursor(Enum): + arrow = "arrow" + i_beam = "i-beam" + crosshair = "crosshair" + wait_arrow = "wait-arrow" + size_all = "size-all" + no = "no" + hand = "hand" + + +class Usage(Enum): + departure = "departure" + arrival = "arrival" + intermezzo = "intermezzo" + + +@dataclass +class RemoteControllerPrototype: + type: Literal["remote-controller"] + name: String + movement_speed: Double + + +class Action1(Enum): + toggle_alt_mode = "toggle-alt-mode" + undo = "undo" + redo = "redo" + paste = "paste" + import_string = "import-string" + toggle_personal_roboport = "toggle-personal-roboport" + toggle_personal_logistic_requests = "toggle-personal-logistic-requests" + toggle_equipment_movement_bonus = "toggle-equipment-movement-bonus" + spawn_item = "spawn-item" + lua = "lua" + redo_1 = "redo" + + +class Style(Enum): + default = "default" + blue = "blue" + red = "red" + green = "green" + + +@dataclass +class SpectatorControllerPrototype: + type: Literal["spectator-controller"] + name: String + movement_speed: Double + + +class Shader(Enum): + water = "water" + space = "space" + puddle = "puddle" + + +@dataclass +class TriggerTargetType: + type: Literal["trigger-target-type"] + name: String + + +@dataclass +class EntityRendererSearchBoxLimits: + left: Uint8 + top: Uint8 + right: Uint8 + bottom: Uint8 + + +@dataclass +class TrainPathFinding: + train_stop_penalty: Uint32 + stopped_manually_controlled_train_penalty: Uint32 + stopped_manually_controlled_train_without_passenger_penalty: Uint32 + signal_reserved_by_circuit_network_penalty: Uint32 + train_in_station_penalty: Uint32 + train_in_station_with_no_other_valid_stops_in_schedule: Uint32 + train_arriving_to_station_penalty: Uint32 + train_arriving_to_signal_penalty: Uint32 + train_waiting_at_signal_penalty: Uint32 + train_waiting_at_signal_tick_multiplier_penalty: Float + train_with_no_path_penalty: Uint32 + train_auto_without_schedule_penalty: Uint32 + + +@dataclass +class ActivatePasteTipTrigger: + type: Literal["activate-paste"] + count: Uint32 | None = None + + +ActiveTriggerID: TypeAlias = String + + +@dataclass +class ActivityMatchingModifiers: + multiplier: Float | None = None + minimum: Float | None = None + maximum: Float | None = None + offset: Float | None = None + inverted: Boolean | None = None + + +@dataclass +class AggregationSpecification: + max_count: Uint32 + remove: Boolean + progress_threshold: Float | None = None + volume_reduction_rate: Float | None = None + count_already_playing: Boolean | None = None + priority: Priority | None = None + + +@dataclass +class AgriculturalCraneSpeedArm: + turn_rate: Double | None = None + extension_speed: Double | None = None + + +@dataclass +class AgriculturalCraneSpeedGrappler: + vertical_turn_rate: Double | None = None + horizontal_turn_rate: Double | None = None + extension_speed: Double | None = None + allow_transpolar_movement: Boolean | None = None + + +AirbornePollutantID: TypeAlias = String + + +@dataclass +class AlternativeBuildTipTrigger: + type: Literal["alternative-build"] + count: Uint32 | None = None + + +AmmoCategoryID: TypeAlias = String + + +AnimationFrameSequence: TypeAlias = list[Uint16] | dict[str, Any] + + +AnyBasic: TypeAlias = String | Boolean | Number | Table + + +@dataclass +class ApplyStarterPackTipTrigger: + type: Literal["apply-starter-pack"] + count: Uint32 | None = None + + +AsteroidChunkID: TypeAlias = String + + +@dataclass +class AsteroidSettings: + spawning_rate: Double + max_ray_portals_expanded_per_tick: Uint32 + + +AutoplaceControlID: TypeAlias = String + + +@dataclass +class BeltTraverseTipTrigger: + type: Literal["belt-traverse"] + count: Uint32 | None = None + + +@dataclass +class BuildEntityByRobotTipTrigger: + type: Literal["build-entity-by-robot"] + count: Uint32 | None = None + + +BurnerUsageID: TypeAlias = String + + +@dataclass +class ChangeSurfaceTipTrigger: + type: Literal["change-surface"] + surface: String + count: Uint32 | None = None + + +@dataclass +class CircuitConnectorLayer: + north: RenderLayer | None = None + east: RenderLayer | None = None + south: RenderLayer | None = None + west: RenderLayer | None = None + + +@dataclass +class CircuitConnectorSecondaryDrawOrder: + north: Int8 | None = None + east: Int8 | None = None + south: Int8 | None = None + west: Int8 | None = None + + +@dataclass +class ClearCursorTipTrigger: + type: Literal["clear-cursor"] + count: Uint32 | None = None + + +@dataclass +class CloudsTextureCoordinateTransformation: + scale: Float + wind_speed_factor: Float | None = None + + +CollisionLayerID: TypeAlias = String + + +@dataclass +class CollisionMaskConnector: + layers: dict[CollisionLayerID, Literal[True]] + not_colliding_with_itself: Boolean | None = None + consider_tile_transitions: Boolean | None = None + colliding_with_tiles_only: Boolean | None = None + + +@dataclass +class Color1: + r: Float | None = None + g: Float | None = None + b: Float | None = None + a: Float | None = None + + +Color: TypeAlias = Color1 | list[Float] + + +@dataclass +class ColorHintSpecification: + text: String | None = None + text_color: Color | None = None + + +@dataclass +class ColumnAlignment: + column: Uint32 + alignment: Alignment + + +@dataclass +class ColumnWidth: + column: Uint32 + minimal_width: Int32 | None = None + maximal_width: Int32 | None = None + width: Int32 | None = None + + +@dataclass +class ColumnWidthItem: + minimal_width: Int32 | None = None + maximal_width: Int32 | None = None + width: Int32 | None = None + + +@dataclass +class ControlPoint1: + control: Float + volume_percentage: Float + + +ControlPoint: TypeAlias = ControlPoint1 | list[Float] + + +DamageTypeID: TypeAlias = String + + +DecorativeID: TypeAlias = String + + +@dataclass +class DifficultySettings: + technology_price_multiplier: Double | None = None + spoil_time_modifier: Double | None = None + + +@dataclass +class DropItemTipTrigger: + type: Literal["drop-item"] + count: Uint32 | None = None + drop_into_entity: Boolean | None = None + + +EffectValue: TypeAlias = Float + + +@dataclass +class EnemyEvolutionSettings: + enabled: Boolean + time_factor: Double + destroy_factor: Double + pollution_factor: Double + + +@dataclass +class EnemyExpansionSettings: + enabled: Boolean + max_expansion_distance: Uint32 + friendly_base_influence_radius: Uint32 + enemy_building_influence_radius: Uint32 + building_coefficient: Double + other_base_coefficient: Double + neighbouring_chunk_coefficient: Double + neighbouring_base_chunk_coefficient: Double + max_colliding_tiles_coefficient: Double + settler_group_min_size: Uint32 + settler_group_max_size: Uint32 + min_expansion_cooldown: Uint32 + max_expansion_cooldown: Uint32 + + +@dataclass +class EnemySpawnerAbsorption: + absolute: Double + proportional: Double + + +Energy: TypeAlias = String + + +EntityID: TypeAlias = String + + +@dataclass +class EntityTransferTipTrigger: + type: Literal["entity-transfer"] + count: Uint32 | None = None + transfer: Transfer | None = None + + +EquipmentCategoryID: TypeAlias = String + + +EquipmentGridID: TypeAlias = String + + +EquipmentID: TypeAlias = String + + +@dataclass +class EquipmentShape: + width: Uint32 + height: Uint32 + type: Type1 + points: list[list[Uint32] | dict[str, Any]] | dict[str, Any] | None = None + + +@dataclass +class Fade1: + curve_type: AttenuationType + tuning_parameter: Float | None = None + from_: ControlPoint | None = None + to: ControlPoint | None = None + + +Fade: TypeAlias = Fade1 | AttenuationType + + +@dataclass +class Fades: + fade_in: Fade | None = None + fade_out: Fade | None = None + + +@dataclass +class FastBeltBendTipTrigger: + type: Literal["fast-belt-bend"] + count: Uint32 | None = None + + +@dataclass +class FastReplaceTipTrigger: + type: Literal["fast-replace"] + count: Uint32 | None = None + source: EntityID | None = None + target: EntityID | None = None + match_type_only: Boolean | None = None + + +FileName: TypeAlias = String + + +@dataclass +class FlipEntityTipTrigger: + type: Literal["flip-entity"] + count: Uint32 | None = None + + +FluidAmount: TypeAlias = Double + + +@dataclass +class SecondaryDrawOrders: + north: Int8 | None = None + east: Int8 | None = None + south: Int8 | None = None + west: Int8 | None = None + + +FluidBoxLinkedConnectionID: TypeAlias = Uint32 + + +FluidID: TypeAlias = String + + +@dataclass +class FluidIngredientPrototype: + type: Literal["fluid"] + name: FluidID + amount: FluidAmount + temperature: Float | None = None + minimum_temperature: Float | None = None + maximum_temperature: Float | None = None + ignored_by_stats: FluidAmount | None = None + fluidbox_index: Uint32 | None = None + fluidbox_multiplier: Uint8 | None = None + + +@dataclass +class FluidProductPrototype: + type: Literal["fluid"] + name: FluidID + amount: FluidAmount | None = None + amount_min: FluidAmount | None = None + amount_max: FluidAmount | None = None + probability: Double | None = None + ignored_by_stats: FluidAmount | None = None + ignored_by_productivity: FluidAmount | None = None + temperature: Float | None = None + fluidbox_index: Uint32 | None = None + show_details_in_recipe_tooltip: Boolean | None = None + + +FuelCategoryID: TypeAlias = String + + +@dataclass +class GameControllerVibrationData: + low_frequency_vibration_intensity: Float | None = None + high_frequency_vibration_intensity: Float | None = None + duration: Uint32 | None = None + play_for: PlayFor | None = None + + +@dataclass +class GameViewSettings: + default_show_value: Boolean | None = None + show_controller_gui: Boolean | None = None + show_minimap: Boolean | None = None + show_research_info: Boolean | None = None + show_entity_info: Boolean | None = None + show_alert_gui: Boolean | None = None + update_entity_selection: Boolean | None = None + show_rail_block_visualisation: Boolean | None = None + show_side_menu: Boolean | None = None + show_map_view_options: Boolean | None = None + show_entity_tooltip: Boolean | None = None + show_quickbar: Boolean | None = None + show_shortcut_bar: Boolean | None = None + show_crafting_queue: Boolean | None = None + show_tool_bar: Boolean | None = None + show_hotkey_suggestions: Boolean | None = None + show_surface_list: Boolean | None = None + + +@dataclass +class GateOverRailBuildTipTrigger: + type: Literal["gate-over-rail-build"] + count: Uint32 | None = None + + +@dataclass +class GeneratingPowerTipTrigger: + type: Literal["generating-power"] + count: Uint32 | None = None + + +@dataclass +class GhostShimmerDistortionData: + shape: Int32 + intensity: Float + x: Float + y: Float + + +@dataclass +class GhostShimmerOverlayData: + blend_mode: Int32 + shape: Int32 + x: Float + y: Float + tint: Color + cutoff: Float + + +@dataclass +class GhostTintSet: + ghost_tint: Color + ghost_delivery_tint: Color + tile_ghost_tint: Color + tile_ghost_delivery_tint: Color + wire_tint: Color + + +@dataclass +class GlobalRecipeTints: + primary: Color | None = None + secondary: Color | None = None + tertiary: Color | None = None + quaternary: Color | None = None + + +@dataclass +class GroupAttackTipTrigger: + type: Literal["group-attack"] + count: Uint32 | None = None + + +ItemCountType: TypeAlias = Uint32 + + +ItemGroupID: TypeAlias = String + + +ItemID: TypeAlias = String + + +@dataclass +class ItemIngredientPrototype: + type: Literal["item"] + name: ItemID + amount: Uint16 + ignored_by_stats: Uint16 | None = None + + +@dataclass +class ItemProductPrototype: + type: Literal["item"] + name: ItemID + amount: Uint16 | None = None + amount_min: Uint16 | None = None + amount_max: Uint16 | None = None + probability: Double | None = None + ignored_by_stats: Uint16 | None = None + ignored_by_productivity: Uint16 | None = None + show_details_in_recipe_tooltip: Boolean | None = None + extra_count_fraction: Float | None = None + percent_spoiled: Float | None = None + + +ItemStackIndex: TypeAlias = Uint16 + + +ItemSubGroupID: TypeAlias = String + + +@dataclass +class ItemToPlace: + item: ItemID + count: ItemCountType + + +@dataclass +class KillTipTrigger: + type: Literal["kill"] + count: Uint32 | None = None + entity: EntityID | None = None + match_type_only: Boolean | None = None + damage_type: DamageTypeID | None = None + + +@dataclass +class LightFlickeringDefinition: + minimum_intensity: Float | None = None + maximum_intensity: Float | None = None + derivation_change_frequency: Float | None = None + derivation_change_deviation: Float | None = None + border_fix_speed: Float | None = None + minimum_light_size: Float | None = None + light_intensity_to_size_coefficient: Float | None = None + color: Color | None = None + + +@dataclass +class ShaderConfigurationItem: + color: Color + distortion: Float + thickness: Float + power: Float + + +@dataclass +class LightningPriorityRule: + type: Type4 + string: String + priority_bonus: Int32 + + +@dataclass +class LightningRuleBase: + type: Type4 + string: String + + +@dataclass +class LimitChestTipTrigger: + type: Literal["limit-chest"] + count: Uint32 | None = None + + +LocalisedString: TypeAlias = String | (list["LocalisedString"] | dict[str, Any]) + + +LogisticFilterIndex: TypeAlias = Uint16 + + +@dataclass +class LootItem: + item: ItemID + probability: Double | None = None + count_min: Double | None = None + count_max: Double | None = None + + +@dataclass +class LowPowerTipTrigger: + type: Literal["low-power"] + count: Uint32 | None = None + + +@dataclass +class ManualTransferTipTrigger: + type: Literal["manual-transfer"] + count: Uint32 | None = None + + +@dataclass +class ManualWireDragTipTrigger: + type: Literal["manual-wire-drag"] + count: Uint32 | None = None + source: EntityID | None = None + target: EntityID | None = None + match_type_only: Boolean | None = None + wire_type: WireType | None = None + + +@dataclass +class MapGenPresetAsteroidSettings: + spawning_rate: Double | None = None + max_ray_portals_expanded_per_tick: Uint32 | None = None + + +@dataclass +class MapGenPresetDifficultySettings: + technology_price_multiplier: Double | None = None + + +@dataclass +class MapGenPresetEnemyEvolutionSettings: + enabled: Boolean | None = None + time_factor: Double | None = None + destroy_factor: Double | None = None + pollution_factor: Double | None = None + + +@dataclass +class MapGenPresetEnemyExpansionSettings: + enabled: Boolean | None = None + max_expansion_distance: Uint32 | None = None + settler_group_min_size: Uint32 | None = None + settler_group_max_size: Uint32 | None = None + min_expansion_cooldown: Uint32 | None = None + max_expansion_cooldown: Uint32 | None = None + + +@dataclass +class MapGenPresetPollutionSettings: + enabled: Boolean | None = None + diffusion_ratio: Double | None = None + ageing: Double | None = None + min_pollution_to_damage_trees: Double | None = None + enemy_attack_pollution_consumption_modifier: Double | None = None + pollution_restored_per_tree_damage: Double | None = None + + +MapGenSize: TypeAlias = ( + Literal[ + "none", + "very-low", + "very-small", + "very-poor", + "low", + "small", + "poor", + "normal", + "medium", + "regular", + "high", + "big", + "good", + "very-high", + "very-big", + "very-good", + ] + | Float +) + + +@dataclass +class MapPosition1: + x: Double + y: Double + + +MapPosition: TypeAlias = MapPosition1 | list[Double] + + +MapTick: TypeAlias = Uint64 + + +MaterialAmountType: TypeAlias = Double + + +MathExpression: TypeAlias = String + + +@dataclass +class MineEntityTechnologyTrigger: + type: Literal["mine-entity"] + entity: EntityID + + +@dataclass +class MineItemByRobotTipTrigger: + type: Literal["mine-item-by-robot"] + count: Uint32 | None = None + + +ModuleCategoryID: TypeAlias = String + + +@dataclass +class ModuleTransferTipTrigger: + type: Literal["module-transfer"] + module: ItemID + count: Uint32 | None = None + + +MouseCursorID: TypeAlias = String + + +NeighbourConnectableConnectionCategory: TypeAlias = String + + +@dataclass +class Location: + position: MapPosition + direction: Uint8 + + +@dataclass +class NeighbourConnectableConnectionDefinition: + location: Location + category: NeighbourConnectableConnectionCategory + neighbour_category: ( + list[NeighbourConnectableConnectionCategory] | dict[str, Any] | None + ) = None + + +NoiseExpression: TypeAlias = String | Boolean | Double + + +@dataclass +class NoiseFunction: + parameters: list[String] | dict[str, Any] + expression: NoiseExpression + local_expressions: dict[String, NoiseExpression] | None = None + local_functions: dict[String, NoiseFunction] | None = None + + +Order: TypeAlias = String + + +ParticleID: TypeAlias = String + + +@dataclass +class PasteEntitySettingsTipTrigger: + type: Literal["paste-entity-settings"] + count: Uint32 | None = None + source: EntityID | None = None + target: EntityID | None = None + match_type_only: Boolean | None = None + + +@dataclass +class PathFinderSettings: + fwd2bwd_ratio: Uint32 + goal_pressure_ratio: Double + use_path_cache: Boolean + max_steps_worked_per_tick: Double + max_work_done_per_tick: Uint32 + short_cache_size: Uint32 + long_cache_size: Uint32 + short_cache_min_cacheable_distance: Double + short_cache_min_algo_steps_to_cache: Uint32 + long_cache_min_cacheable_distance: Double + cache_max_connect_to_cache_steps_multiplier: Uint32 + cache_accept_path_start_distance_ratio: Double + cache_accept_path_end_distance_ratio: Double + negative_cache_accept_path_start_distance_ratio: Double + negative_cache_accept_path_end_distance_ratio: Double + cache_path_start_distance_rating_multiplier: Double + cache_path_end_distance_rating_multiplier: Double + stale_enemy_with_same_destination_collision_penalty: Double + ignore_moving_enemy_collision_distance: Double + enemy_with_different_destination_collision_penalty: Double + general_entity_collision_penalty: Double + general_entity_subsequent_collision_penalty: Double + extended_collision_penalty: Double + max_clients_to_accept_any_new_request: Uint32 + max_clients_to_accept_short_new_request: Uint32 + direct_distance_to_consider_short_request: Uint32 + short_request_max_steps: Uint32 + short_request_ratio: Double + min_steps_to_check_path_find_termination: Uint32 + start_to_goal_cost_multiplier_to_terminate_path_find: Double + overload_levels: list[Uint32] | dict[str, Any] + overload_multipliers: list[Double] | dict[str, Any] + negative_path_cache_delay_interval: Uint32 + + +@dataclass +class PerceivedPerformance: + minimum: Double | None = None + maximum: Double | None = None + performance_to_activity_rate: Double | None = None + + +@dataclass +class PersistentWorldAmbientSoundsDefinitionCrossfade: + curve_type: AttenuationType + order: list[OrderEnum] + tuning_parameter: Float | None = None + from_: ControlPoint | None = None + to: ControlPoint | None = None + + +@dataclass +class PipeConnectionDefinition: + flow_direction: FluidFlowDirection | None = None + connection_type: ConnectionType | None = None + enable_working_visualisations: list[String] | dict[str, Any] | None = None + direction: float | None = None + position: MapPosition | None = None + positions: list[MapPosition] | None = None + connection_category: String | list[String] | dict[str, Any] | None = None + max_underground_distance: Uint8 | None = None + max_distance_tint: Color | None = None + underground_collision_mask: CollisionMaskConnector | None = None + linked_connection_id: FluidBoxLinkedConnectionID | None = None + + +@dataclass +class PlaceEquipmentTipTrigger: + type: Literal["place-equipment"] + count: Uint32 | None = None + equipment: EquipmentID | None = None + + +@dataclass +class PlanTrainPathTipTrigger: + type: Literal["plan-train-path"] + distance: Double + + +@dataclass +class Frame1: + timestamp: MapTick + frame: Float + + +@dataclass +class Frame2: + timestamp: MapTick | None = None + distance: Double | None = None + distance_t: Double | None = None + + +@dataclass +class Frame4: + timestamp: MapTick | None = None + cutscene_opacity: Double | None = None + cutscene_opacity_t: Double | None = None + outside_opacity: Double | None = None + outside_opacity_t: Double | None = None + lut_blend: Double | None = None + lut_blend_t: Double | None = None + + +@dataclass +class PollutionSettings: + enabled: Boolean + diffusion_ratio: Double + min_to_diffuse: Double + ageing: Double + expected_max_per_chunk: Double + min_to_show_per_chunk: Double + min_pollution_to_damage_trees: Double + pollution_with_max_forest_damage: Double + pollution_restored_per_tree_damage: Double + pollution_per_tree_damage: Double + max_pollution_to_restore_trees: Double + enemy_attack_pollution_consumption_modifier: Double + + +ProbabilityTableItem: TypeAlias = list[Uint8] + + +ProcessionID: TypeAlias = String + + +ProcessionLayerInheritanceGroupID: TypeAlias = String + + +@dataclass +class ProcessionSet: + arrival: list[ProcessionID] | dict[str, Any] + departure: list[ProcessionID] | dict[str, Any] + + +ProductPrototype: TypeAlias = ItemProductPrototype | FluidProductPrototype + + +@dataclass +class ProductionHealthEffect: + producing: Float | None = None + not_producing: Float | None = None + + +@dataclass +class PrototypeStrafeSettings: + max_distance: Double | None = None + ideal_distance: Double | None = None + ideal_distance_tolerance: Double | None = None + ideal_distance_variance: Double | None = None + ideal_distance_importance: Float | None = None + ideal_distance_importance_variance: Float | None = None + clockwise_chance: Float | None = None + face_target: Boolean | None = None + + +QualityID: TypeAlias = String + + +@dataclass +class RailRenderLayers: + stone_path_lower: RenderLayer | None = None + stone_path: RenderLayer | None = None + tie: RenderLayer | None = None + screw: RenderLayer | None = None + metal: RenderLayer | None = None + front_end: RenderLayer | None = None + back_end: RenderLayer | None = None + underwater_layer_offset: Int8 | None = None + + +@dataclass +class RailSignalColorToFrameIndex: + none: Uint8 | None = None + red: Uint8 | None = None + green: Uint8 | None = None + blue: Uint8 | None = None + yellow: Uint8 | None = None + + +RandomRange: TypeAlias = list[Uint8] | Uint8 + + +RangedValue: TypeAlias = list[Float] | Float + + +RealOrientation: TypeAlias = Float + + +RecipeCategoryID: TypeAlias = String + + +RecipeID: TypeAlias = String + + +@dataclass +class RecipeTints: + primary: Color | None = None + secondary: Color | None = None + tertiary: Color | None = None + quaternary: Color | None = None + + +ResearchIngredient: TypeAlias = list[ItemID | Uint16] + + +@dataclass +class ResearchWithSciencePackTipTrigger: + type: Literal["research-with-science-pack"] + science_pack: ItemID + + +@dataclass +class Resistance: + type: DamageTypeID + decrease: Float | None = None + percent: Float | None = None + + +ResourceCategoryID: TypeAlias = String + + +@dataclass +class RotateEntityTipTrigger: + type: Literal["rotate-entity"] + count: Uint32 | None = None + + +@dataclass +class SegmentSpecification: + segment: EntityID + + +@dataclass +class SendSpidertronTipTrigger: + type: Literal["send-spidertron"] + count: Uint32 | None = None + append: Boolean | None = None + + +@dataclass +class SetFilterTipTrigger: + type: Literal["set-filter"] + count: Uint32 | None = None + entity: EntityID | None = None + match_type_only: Boolean | None = None + consecutive: Boolean | None = None + + +@dataclass +class SetLogisticRequestTipTrigger: + type: Literal["set-logistic-request"] + count: Uint32 | None = None + logistic_chest_only: Boolean | None = None + entity: EntityID | None = None + + +@dataclass +class SetRecipeTipTrigger: + type: Literal["set-recipe"] + count: Uint32 | None = None + recipe: RecipeID | None = None + machine: EntityID | None = None + consecutive: Boolean | None = None + any_quality: Boolean | None = None + uses_fluid: Boolean | None = None + + +@dataclass +class ShootTipTrigger: + type: Literal["shoot"] + count: Uint32 | None = None + target: Target | None = None + + +@dataclass +class SimpleBoundingBox1: + left_top: MapPosition + right_bottom: MapPosition + + +SimpleBoundingBox: TypeAlias = SimpleBoundingBox1 | list[MapPosition] + + +@dataclass +class SoundModifier: + type: SoundModifierType + volume_multiplier: Float + + +@dataclass +class SpaceConnectionAsteroidSpawnPoint: + probability: Double + speed: Double + distance: Double + angle_when_stopped: Float | None = None + + +SpaceConnectionID: TypeAlias = String + + +@dataclass +class SpaceLocationAsteroidSpawnDefinition: + probability: Double + speed: Double + asteroid: EntityID | AsteroidChunkID + angle_when_stopped: Float | None = None + type: Type8 | None = None + + +SpaceLocationID: TypeAlias = String + + +@dataclass +class SpaceTileEffectParameters: + scroll_factor: Float | None = None + zoom_base_factor: Float | None = None + zoom_base_offset: Float | None = None + zoom_exponent: Float | None = None + zoom_factor: Float | None = None + zoom_offset: Float | None = None + nebula_scale: Float | None = None + nebula_brightness: Float | None = None + nebula_saturation: Float | None = None + star_density: Float | None = None + star_scale: Float | None = None + star_parallax: Float | None = None + star_shape: Float | None = None + star_brightness: Float | None = None + star_saturations: Float | None = None + + +@dataclass +class SpacingItem: + index: Uint32 + spacing: Int32 + + +@dataclass +class SpawnPoint1: + evolution_factor: Double + spawn_weight: Double + + +SpawnPoint: TypeAlias = SpawnPoint1 | list[Double] + + +SpriteSizeType: TypeAlias = Int16 + + +@dataclass +class StackTransferTipTrigger: + type: Literal["stack-transfer"] + count: Uint32 | None = None + transfer: Transfer1 | None = None + + +@dataclass +class StateSteeringSettings: + radius: Double + separation_factor: Double + separation_force: Double + force_unit_fuzzy_goto_behavior: Boolean + + +@dataclass +class StatusColors: + idle: Color | None = None + no_minable_resources: Color | None = None + full_output: Color | None = None + insufficient_input: Color | None = None + disabled: Color | None = None + no_power: Color | None = None + working: Color | None = None + low_power: Color | None = None + + +@dataclass +class Fluid: + type: FluidID + damage_modifier: Double | None = None + + +@dataclass +class Stripe: + width_in_frames: Uint32 + height_in_frames: Uint32 + filename: FileName + x: Uint32 | None = None + y: Uint32 | None = None + + +SurfaceID: TypeAlias = String + + +SurfacePropertyID: TypeAlias = String + + +TechnologyID: TypeAlias = String + + +@dataclass +class TechnologyUnit: + time: Double + ingredients: list[ResearchIngredient] | dict[str, Any] + count: Uint64 | None = None + count_formula: MathExpression | None = None + + +@dataclass +class TerritorySettings: + units: list[EntityID] | dict[str, Any] | None = None + territory_index_expression: String | None = None + territory_variation_expression: String | None = None + minimum_territory_size: Uint32 | None = None + + +@dataclass +class ThrusterPerformancePoint1: + fluid_volume: Double + fluid_usage: FluidAmount + effectivity: Double + + +ThrusterPerformancePoint: TypeAlias = ThrusterPerformancePoint1 | list[Double] + + +@dataclass +class TileBasedParticleTints: + primary: Color | None = None + secondary: Color | None = None + + +@dataclass +class TileBuildabilityRule: + area: SimpleBoundingBox + required_tiles: CollisionMaskConnector | None = None + colliding_tiles: CollisionMaskConnector | None = None + remove_on_collision: Boolean | None = None + + +TileEffectDefinitionID: TypeAlias = String + + +TileID: TypeAlias = String + + +@dataclass +class TileLightPictures: + picture: FileName + size: Uint32 + scale: Float | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + line_length: Uint8 | None = None + count: Uint8 | None = None + + +@dataclass +class TileMainPictures: + picture: FileName + size: Uint32 + scale: Float | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + line_length: Uint8 | None = None + count: Uint8 | None = None + probability: Double | None = None + weights: list[Double] | dict[str, Any] | None = None + + +@dataclass +class TilePosition1: + x: Int32 + y: Int32 + + +TilePosition: TypeAlias = TilePosition1 | list[Int32] + + +@dataclass +class TileSpriteLayoutVariant: + spritesheet: FileName | None = None + scale: Float | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + tile_height: Uint8 | None = None + line_length: Uint8 | None = None + count: Uint8 | None = None + + +@dataclass +class TileTransitionVariantLayout: + spritesheet: FileName | None = None + scale: Float | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + tile_height: Uint8 | None = None + line_length: Uint8 | None = None + count: Uint8 | None = None + x_offset: SpriteSizeType | None = None + y_offset: SpriteSizeType | None = None + inner_corner: TileSpriteLayoutVariant | None = None + outer_corner: TileSpriteLayoutVariant | None = None + side: TileSpriteLayoutVariant | None = None + double_side: TileSpriteLayoutVariant | None = None + u_transition: TileSpriteLayoutVariant | None = None + o_transition: TileSpriteLayoutVariant | None = None + inner_corner_scale: Float | None = None + inner_corner_x: SpriteSizeType | None = None + inner_corner_y: SpriteSizeType | None = None + inner_corner_tile_height: Uint8 | None = None + inner_corner_line_length: Uint8 | None = None + inner_corner_count: Uint8 | None = None + outer_corner_scale: Float | None = None + outer_corner_x: SpriteSizeType | None = None + outer_corner_y: SpriteSizeType | None = None + outer_corner_tile_height: Uint8 | None = None + outer_corner_line_length: Uint8 | None = None + outer_corner_count: Uint8 | None = None + side_scale: Float | None = None + side_x: SpriteSizeType | None = None + side_y: SpriteSizeType | None = None + side_tile_height: Uint8 | None = None + side_line_length: Uint8 | None = None + side_count: Uint8 | None = None + double_side_scale: Float | None = None + double_side_x: SpriteSizeType | None = None + double_side_y: SpriteSizeType | None = None + double_side_tile_height: Uint8 | None = None + double_side_line_length: Uint8 | None = None + double_side_count: Uint8 | None = None + u_transition_scale: Float | None = None + u_transition_x: SpriteSizeType | None = None + u_transition_y: SpriteSizeType | None = None + u_transition_tile_height: Uint8 | None = None + u_transition_line_length: Uint8 | None = None + u_transition_count: Uint8 | None = None + o_transition_scale: Float | None = None + o_transition_x: SpriteSizeType | None = None + o_transition_y: SpriteSizeType | None = None + o_transition_tile_height: Uint8 | None = None + o_transition_line_length: Uint8 | None = None + o_transition_count: Uint8 | None = None + + +@dataclass +class TimeElapsedTipTrigger: + type: Literal["time-elapsed"] + ticks: Uint32 + + +@dataclass +class TimeSinceLastTipActivationTipTrigger: + type: Literal["time-since-last-tip-activation"] + ticks: MapTick + + +@dataclass +class Frame6: + timestamp: MapTick | None = None + opacity: Double | None = None + opacity_t: Double | None = None + tint_upper: Color | None = None + tint_upper_t: Color | None = None + tint_lower: Color | None = None + tint_lower_t: Color | None = None + + +@dataclass +class TintProcessionLayer: + type: Literal["tint"] + frames: list[Frame6] | dict[str, Any] + render_layer: RenderLayer | None = None + + +@dataclass +class ToggleRailLayerTipTrigger: + type: Literal["toggle-rail-layer"] + count: Uint32 | None = None + + +@dataclass +class ToggleShowEntityInfoTipTrigger: + type: Literal["toggle-show-entity-info"] + count: Uint32 | None = None + + +@dataclass +class TrainVisualizationConstants: + not_last_box_color: Color + last_box_color: Color + reverse_box_color: Color + last_reverse_box_color: Color + box_width: Float + box_length: Float + joint_distance: Float + connection_distance: Float + final_margin: Float + stock_number_scale: Float + + +@dataclass +class TransitionApplication: + offset: Boolean | None = None + pod_offset: Boolean | None = None + rotation: Boolean | None = None + + +TriggerTargetMask: TypeAlias = list[String] | dict[str, Any] + + +TrivialSmokeID: TypeAlias = String + + +@dataclass +class UnitAISettings: + destroy_when_commands_fail: Boolean | None = None + allow_try_return_to_spawner: Boolean | None = None + do_separation: Boolean | None = None + path_resolution_modifier: Int8 | None = None + strafe_settings: PrototypeStrafeSettings | None = None + size_in_group: Float | None = None + join_attacks: Boolean | None = None + + +@dataclass +class UnitAlternativeFrameSequence: + warmup_frame_sequence: list[Uint16] | dict[str, Any] + warmup2_frame_sequence: list[Uint16] | dict[str, Any] + attacking_frame_sequence: list[Uint16] | dict[str, Any] + cooldown_frame_sequence: list[Uint16] | dict[str, Any] + prepared_frame_sequence: list[Uint16] | dict[str, Any] + back_to_walk_frame_sequence: list[Uint16] | dict[str, Any] + warmup_animation_speed: Float + attacking_animation_speed: Float + cooldown_animation_speed: Float + prepared_animation_speed: Float + back_to_walk_animation_speed: Float + + +@dataclass +class UnitGroupSettings: + min_group_gathering_time: Uint32 + max_group_gathering_time: Uint32 + max_wait_time_for_late_members: Uint32 + max_group_radius: Double + min_group_radius: Double + max_member_speedup_when_behind: Double + max_member_slowdown_when_ahead: Double + max_group_slowdown_factor: Double + max_group_member_fallback_factor: Double + member_disown_distance: Double + tick_tolerance_when_member_arrives: Uint32 + max_gathering_unit_groups: Uint32 + max_unit_group_size: Uint32 + + +@dataclass +class UnitSpawnDefinition1: + unit: EntityID + spawn_points: list[SpawnPoint] | dict[str, Any] + + +UnitSpawnDefinition: TypeAlias = ( + UnitSpawnDefinition1 | list[EntityID | list[SpawnPoint] | dict[str, Any]] +) + + +@dataclass +class UnlockRecipeTipTrigger: + type: Literal["unlock-recipe"] + recipe: RecipeID + + +@dataclass +class UseConfirmTipTrigger: + type: Literal["use-confirm"] + count: Uint32 | None = None + + +@dataclass +class UsePipetteTipTrigger: + type: Literal["use-pipette"] + count: Uint32 | None = None + + +@dataclass +class UseRailPlannerTipTrigger: + type: Literal["use-rail-planner"] + build_mode: BuildMode + count: Uint32 | None = None + + +VariableAmbientSoundLayerSample: TypeAlias = list[String | Uint32] + + +@dataclass +class VariableAmbientSoundNextStateConditions: + weight: Uint32 + layer_sample: VariableAmbientSoundLayerSample | None = None + previous_state: String | None = None + + +@dataclass +class VariableAmbientSoundNextStateItem: + state: String + conditions: VariableAmbientSoundNextStateConditions + + +@dataclass +class Vector1: + x: Double + y: Double + + +Vector: TypeAlias = Vector1 | list[Double] + + +@dataclass +class Vector3D1: + x: Float + y: Float + z: Float + + +Vector3D: TypeAlias = Vector3D1 | list[Float] + + +@dataclass +class Vector4f1: + x: Float + y: Float + z: Float + w: Float + + +Vector4f: TypeAlias = Vector4f1 | list[Float] + + +@dataclass +class VerticalFlowStyleSpecification: + type: Literal["vertical_flow_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + vertical_spacing: Int32 | None = None + + +VirtualSignalID: TypeAlias = String + + +@dataclass +class VisualState: + name: String + next_active: String + next_inactive: String + duration: Uint8 + color: Color | None = None + + +@dataclass +class VoidEnergySource: + type: Literal["void"] + emissions_per_minute: dict[AirbornePollutantID, Double] | None = None + render_no_power_icon: Boolean | None = None + render_no_network_icon: Boolean | None = None + + +Weight: TypeAlias = Double + + +@dataclass +class WirePosition: + copper: Vector | None = None + red: Vector | None = None + green: Vector | None = None + + +@dataclass +class PlaceAsTile: + result: TileID + condition: CollisionMaskConnector + condition_size: Uint32 + invert: Boolean | None = None + tile_condition: list[TileID] | dict[str, Any] | None = None + + +@dataclass +class EditorControllerPrototype: + type: Literal["editor-controller"] + name: String + inventory_size: ItemStackIndex + gun_inventory_size: ItemStackIndex + movement_speed: Double + item_pickup_distance: Double + loot_pickup_distance: Double + mining_speed: Double + enable_flash_light: Boolean + adjust_speed_based_off_zoom: Boolean + render_as_day: Boolean + instant_blueprint_building: Boolean + instant_deconstruction: Boolean + instant_upgrading: Boolean + instant_rail_planner: Boolean + show_status_icons: Boolean + show_hidden_entities: Boolean + show_entity_tags: Boolean + show_entity_health_bars: Boolean + show_additional_entity_info_gui: Boolean + generate_neighbor_chunks: Boolean + fill_built_entity_energy_buffers: Boolean + show_character_tab_in_controller_gui: Boolean + show_infinity_filters_in_controller_gui: Boolean + placed_corpses_never_expire: Boolean + ignore_tile_conditions: Boolean + + +@dataclass +class BurntPatchAlphaVariation: + tile: TileID + alpha: Float + + +@dataclass +class FontPrototype: + type: Literal["font"] + name: String + size: Int32 + from_: String + spacing: Float | None = None + border: Boolean | None = None + filtered: Boolean | None = None + border_color: Color | None = None + + +@dataclass +class GodControllerPrototype: + type: Literal["god-controller"] + name: String + inventory_size: ItemStackIndex + movement_speed: Double + item_pickup_distance: Double + loot_pickup_distance: Double + mining_speed: Double + crafting_categories: list[RecipeCategoryID] | dict[str, Any] | None = None + mining_categories: list[ResourceCategoryID] | dict[str, Any] | None = None + + +@dataclass +class Steering: + default: StateSteeringSettings + moving: StateSteeringSettings + + +@dataclass +class MapSettings: + type: Literal["map-settings"] + name: String + pollution: PollutionSettings + steering: Steering + enemy_evolution: EnemyEvolutionSettings + enemy_expansion: EnemyExpansionSettings + unit_group: UnitGroupSettings + path_finder: PathFinderSettings + max_failed_behavior_count: Uint32 + difficulty_settings: DifficultySettings + asteroids: AsteroidSettings + + +@dataclass +class BeaconTint: + primary: Color | None = None + secondary: Color | None = None + tertiary: Color | None = None + quaternary: Color | None = None + + +@dataclass +class MouseCursor: + type: Literal["mouse-cursor"] + name: String + system_cursor: SystemCursor | None = None + filename: FileName | None = None + hot_pixel_x: Int16 | None = None + hot_pixel_y: Int16 | None = None + + +@dataclass +class TipsAndTricksItemCategory: + type: Literal["tips-and-tricks-item-category"] + name: String + order: Order + + +@dataclass +class PlayerColor: + name: String + player_color: Color + chat_color: Color + + +@dataclass +class BonusGuiOrdering: + artillery_range: Order + worker_robots: Order + character: Order + follower_robots: Order + research_speed: Order + beacon_distribution: Order + inserter: Order + stack_inserter: Order + bulk_inserter: Order + turret_attack: Order + mining_productivity: Order + train_braking_force: Order + + +@dataclass +class MapEditor: + clone_editor_copy_source_color: Color + clone_editor_copy_destination_allowed_color: Color + clone_editor_copy_destination_not_allowed_color: Color + clone_editor_brush_source_color: Color + clone_editor_brush_destination_color: Color + clone_editor_brush_cursor_preview_tint: Color + clone_editor_brush_world_preview_tint: Color + script_editor_select_area_color: Color + script_editor_drag_area_color: Color + force_editor_select_area_color: Color + cliff_editor_remove_cliffs_color: Color + tile_editor_selection_preview_tint: Color + tile_editor_area_selection_color: Color + decorative_editor_selection_preview_tint: Color + tile_editor_selection_preview_radius: Uint8 + decorative_editor_selection_preview_radius: Uint8 + + +@dataclass +class ItemHealthBarColor: + threshold: Float + color: Color + + +@dataclass +class ColorFilter: + name: String + localised_name: LocalisedString + matrix: list[list[Float] | dict[str, Any]] | dict[str, Any] + + +@dataclass +class ActivateEquipmentCapsuleAction: + type: Literal["equipment-remote"] + equipment: EquipmentID + + +@dataclass +class AdvancedVolumeControl: + attenuation: Fade | None = None + fades: Fades | None = None + darkness_threshold: Float | None = None + + +@dataclass +class AgriculturalCraneSpeed: + arm: AgriculturalCraneSpeedArm + grappler: AgriculturalCraneSpeedGrappler + + +@dataclass +class Rotation: + frames: list[Vector] | dict[str, Any] + render_layer: RenderLayer | None = None + + +@dataclass +class DirectionShift: + north: Vector | None = None + east: Vector | None = None + south: Vector | None = None + west: Vector | None = None + + +@dataclass +class AnimatedVector: + rotations: list[Rotation] | dict[str, Any] + render_layer: RenderLayer | None = None + direction_shift: DirectionShift | None = None + + +@dataclass +class Animation: + filename: FileName | None = None + size: SpriteSizeType | list[SpriteSizeType] | None = None + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + position: list[SpriteSizeType] | None = None + load_in_minimal_mode: Boolean | None = None + premul_alpha: Boolean | None = None + allow_forced_downscale: Boolean | None = None + priority: SpritePriority | None = None + flags: SpriteFlags | None = None + shift: Vector | None = None + rotate_shift: Boolean | None = None + apply_special_effect: Boolean | None = None + scale: Double | None = None + draw_as_shadow: Boolean | None = None + draw_as_glow: Boolean | None = None + draw_as_light: Boolean | None = None + occludes_light: Boolean | None = None + mipmap_count: Uint8 | None = None + apply_runtime_tint: Boolean | None = None + tint_as_overlay: Boolean | None = None + invert_colors: Boolean | None = None + tint: Color | None = None + blend_mode: BlendMode | None = None + generate_sdf: Boolean | None = None + surface: SpriteUsageSurfaceHint | None = None + usage: SpriteUsageHint | None = None + run_mode: AnimationRunMode | None = None + frame_count: Uint32 | None = None + line_length: Uint32 | None = None + animation_speed: Float | None = None + max_advance: Float | None = None + repeat_count: Uint8 | None = None + dice: Uint8 | None = None + dice_x: Uint8 | None = None + dice_y: Uint8 | None = None + frame_sequence: AnimationFrameSequence | None = None + layers: list[Animation] | dict[str, Any] | None = None + stripes: list[Stripe] | dict[str, Any] | None = None + filenames: list[FileName] | dict[str, Any] | None = None + slice: Uint32 | None = None + lines_per_file: Uint32 | None = None + + +@dataclass +class Animation4Way1: + north: Animation + north_east: Animation | None = None + east: Animation | None = None + south_east: Animation | None = None + south: Animation | None = None + south_west: Animation | None = None + west: Animation | None = None + north_west: Animation | None = None + + +Animation4Way: TypeAlias = Animation4Way1 | Animation + + +@dataclass +class AnimationElement: + render_layer: RenderLayer | None = None + secondary_draw_order: Int8 | None = None + apply_tint: Boolean | None = None + always_draw: Boolean | None = None + animation: Animation | None = None + + +@dataclass +class AnimationSheet: + variation_count: Uint32 + filename: FileName | None = None + size: SpriteSizeType | list[SpriteSizeType] | None = None + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + position: list[SpriteSizeType] | None = None + load_in_minimal_mode: Boolean | None = None + premul_alpha: Boolean | None = None + allow_forced_downscale: Boolean | None = None + priority: SpritePriority | None = None + flags: SpriteFlags | None = None + shift: Vector | None = None + rotate_shift: Boolean | None = None + apply_special_effect: Boolean | None = None + scale: Double | None = None + draw_as_shadow: Boolean | None = None + draw_as_glow: Boolean | None = None + draw_as_light: Boolean | None = None + occludes_light: Boolean | None = None + mipmap_count: Uint8 | None = None + apply_runtime_tint: Boolean | None = None + tint_as_overlay: Boolean | None = None + invert_colors: Boolean | None = None + tint: Color | None = None + blend_mode: BlendMode | None = None + generate_sdf: Boolean | None = None + surface: SpriteUsageSurfaceHint | None = None + usage: SpriteUsageHint | None = None + run_mode: AnimationRunMode | None = None + frame_count: Uint32 | None = None + line_length: Uint32 | None = None + animation_speed: Float | None = None + max_advance: Float | None = None + repeat_count: Uint8 | None = None + dice: Uint8 | None = None + dice_x: Uint8 | None = None + dice_y: Uint8 | None = None + frame_sequence: AnimationFrameSequence | None = None + filenames: list[FileName] | dict[str, Any] | None = None + lines_per_file: Uint32 | None = None + + +@dataclass +class AnimationVariations1: + sheet: AnimationSheet | None = None + sheets: list[AnimationSheet] | dict[str, Any] | None = None + + +AnimationVariations: TypeAlias = ( + AnimationVariations1 | Animation | list[Animation] | dict[str, Any] +) + + +@dataclass +class ArtilleryRemoteCapsuleAction: + type: Literal["artillery-remote"] + flare: EntityID + play_sound_on_failure: Boolean | None = None + + +@dataclass +class AutoplaceSpecification: + probability_expression: NoiseExpression + control: AutoplaceControlID | None = None + default_enabled: Boolean | None = None + force: Literal["enemy", "player", "neutral"] | String | None = None + order: Order | None = None + placement_density: Uint32 | None = None + tile_restriction: list[TileID | list[TileID]] | dict[str, Any] | None = None + richness_expression: NoiseExpression | None = None + local_expressions: dict[String, NoiseExpression] | None = None + local_functions: dict[String, NoiseFunction] | None = None + + +@dataclass +class BeamAnimationSet: + start: Animation | None = None + ending: Animation | None = None + head: Animation | None = None + tail: Animation | None = None + body: AnimationVariations | None = None + render_layer: RenderLayer | None = None + + +@dataclass +class BoundingBox1: + left_top: MapPosition + right_bottom: MapPosition + orientation: RealOrientation | None = None + + +BoundingBox: TypeAlias = ( + BoundingBox1 + | list[MapPosition] + | list[MapPosition | RealOrientation] + | list[MapPosition | Float] +) + + +@dataclass +class BuildEntityTipTrigger: + type: Literal["build-entity"] + count: Uint32 | None = None + entity: EntityID | None = None + match_type_only: Boolean | None = None + build_by_dragging: Boolean | None = None + consecutive: Boolean | None = None + linear_power_pole_line: Boolean | None = None + build_in_line: Boolean | None = None + quality: QualityID | None = None + + +@dataclass +class CaptureSpawnerTechnologyTrigger: + type: Literal["capture-spawner"] + entity: EntityID | None = None + + +@dataclass +class ChartUtilityConstants: + copper_wire_color: Color + electric_power_pole_color: Color + enabled_switch_color: Color + disabled_switch_color: Color + electric_line_width: Float + electric_line_minimum_absolute_width: Float + red_wire_color: Color + green_wire_color: Color + circuit_network_member_color: Color + turret_range_color: Color + artillery_range_color: Color + default_friendly_color: Color + default_enemy_color: Color + default_enemy_territory_color: Color + rail_color: Color + elevated_rail_color: Color + rail_ramp_color: Color + entity_ghost_color: Color + tile_ghost_color: Color + vehicle_outer_color: Color + vehicle_outer_color_selected: Color + vehicle_inner_color: Color + vehicle_wagon_connection_color: Color + resource_outline_selection_color: Color + chart_train_stop_text_color: Color + chart_train_stop_disabled_text_color: Color + chart_train_stop_full_text_color: Color + red_signal_color: Color + green_signal_color: Color + blue_signal_color: Color + yellow_signal_color: Color + chart_deconstruct_tint: Color + chart_deconstruct_active_color: Color + explosion_visualization_duration: MapTick + train_path_color: Color + train_preview_path_outline_color: Color + train_current_path_outline_color: Color + chart_logistic_robot_color: Color + chart_construction_robot_color: Color + chart_mobile_construction_robot_color: Color + chart_personal_construction_robot_color: Color + chart_delivery_to_me_logistic_robot_color: Color + zoom_threshold_to_draw_spider_path: Double + chart_player_circle_size: Float + recipe_icon_scale: Float + default_friendly_color_by_type: dict[String, Color] | None = None + default_color_by_type: dict[String, Color] | None = None + custom_tag_scale: Float | None = None + custom_tag_max_scale: Float | None = None + custom_tag_selected_overlay_tint: Color | None = None + + +@dataclass +class CircularParticleCreationSpecification: + name: ParticleID + starting_frame_speed: Float + direction: Float | None = None + direction_deviation: Float | None = None + speed: Float | None = None + speed_deviation: Float | None = None + starting_frame_speed_deviation: Float | None = None + height: Float | None = None + height_deviation: Float | None = None + vertical_speed: Float | None = None + vertical_speed_deviation: Float | None = None + center: Vector | None = None + creation_distance: Double | None = None + creation_distance_orientation: Double | None = None + use_source_position: Boolean | None = None + + +CircularProjectileCreationSpecification: TypeAlias = ( + list[list[RealOrientation | Vector]] | dict[str, Any] +) + + +@dataclass +class CliffPlacementSettings: + name: EntityID | None = None + control: AutoplaceControlID | None = None + cliff_elevation_0: Float | None = None + cliff_elevation_interval: Float | None = None + cliff_smoothing: Float | None = None + richness: Float | None = None + + +ColorLookupTable: TypeAlias = FileName | Literal["identity"] + + +@dataclass +class CoverGraphicEffectData: + style: CloudEffectStyle | None = None + relative_to: EffectRelativeTo | None = None + distance_traveled_strength: Vector | None = None + pod_movement_strength: Vector | None = None + + +@dataclass +class Frame: + timestamp: MapTick | None = None + opacity: Double | None = None + opacity_t: Double | None = None + rotation: Double | None = None + rotation_t: Double | None = None + effect_scale_min: Double | None = None + effect_scale_min_t: Double | None = None + effect_scale_max: Double | None = None + effect_scale_max_t: Double | None = None + alt_effect_scale_min: Double | None = None + alt_effect_scale_min_t: Double | None = None + alt_effect_scale_max: Double | None = None + alt_effect_scale_max_t: Double | None = None + effect_shift: Vector | None = None + effect_shift_t: Vector | None = None + effect_shift_rate: Double | None = None + effect_shift_rate_t: Double | None = None + alt_effect_shift: Vector | None = None + alt_effect_shift_t: Vector | None = None + alt_effect_shift_rate: Double | None = None + alt_effect_shift_rate_t: Double | None = None + offset: Vector | None = None + offset_t: Vector | None = None + offset_rate: Double | None = None + offset_rate_t: Double | None = None + + +@dataclass +class CraftFluidTechnologyTrigger: + type: Literal["craft-fluid"] + fluid: FluidID + amount: Double | None = None + + +@dataclass +class CraftItemTipTrigger: + type: Literal["craft-item"] + event_type: EventType + count: Uint32 | None = None + item: ItemID | None = None + consecutive: Boolean | None = None + + +@dataclass +class Segment: + orientation: Float + offset: Vector + + +@dataclass +class CraterPlacementDefinition: + segments: list[Segment] | dict[str, Any] + minimum_segments_to_place: Uint32 | None = None + segment_probability: Float | None = None + + +@dataclass +class CustomTooltipField: + name: LocalisedString + value: LocalisedString + quality_header: String | None = None + quality_values: dict[QualityID, LocalisedString] | None = None + order: Uint8 | None = None + show_in_factoriopedia: Boolean | None = None + show_in_tooltip: Boolean | None = None + + +@dataclass +class DamageParameters: + amount: Float + type: DamageTypeID + + +@dataclass +class DamageTypeFilters1: + types: DamageTypeID | list[DamageTypeID] | dict[str, Any] + whitelist: Boolean | None = None + + +DamageTypeFilters: TypeAlias = ( + DamageTypeFilters1 | DamageTypeID | list[DamageTypeID] | dict[str, Any] +) + + +DaytimeColorLookupTable: TypeAlias = ( + list[list[Double | ColorLookupTable]] | dict[str, Any] +) + + +@dataclass +class DestroyCliffsTriggerEffectItem: + type: Literal["destroy-cliffs"] + radius: Float + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + explosion_at_trigger: EntityID | None = None + explosion_at_cliff: EntityID | None = None + + +@dataclass +class DestroyDecorativesTriggerEffectItem: + type: Literal["destroy-decoratives"] + radius: Float + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + from_render_layer: RenderLayer | None = None + to_render_layer: RenderLayer | None = None + include_soft_decoratives: Boolean | None = None + include_decals: Boolean | None = None + invoke_decorative_trigger: Boolean | None = None + decoratives_with_trigger_only: Boolean | None = None + + +@dataclass +class Effect6: + consumption: EffectValue | None = None + speed: EffectValue | None = None + productivity: EffectValue | None = None + pollution: EffectValue | None = None + quality: EffectValue | None = None + + +@dataclass +class EffectReceiver: + base_effect: Effect6 | None = None + uses_module_effects: Boolean | None = None + uses_beacon_effects: Boolean | None = None + uses_surface_effects: Boolean | None = None + + +@dataclass +class EffectTexture: + filename: FileName | None = None + size: SpriteSizeType | list[SpriteSizeType] | None = None + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + position: list[SpriteSizeType] | None = None + load_in_minimal_mode: Boolean | None = None + premul_alpha: Boolean | None = None + allow_forced_downscale: Boolean | None = None + + +@dataclass +class ElectricEnergySource: + type: Literal["electric"] + usage_priority: ElectricUsagePriority + emissions_per_minute: dict[AirbornePollutantID, Double] | None = None + render_no_power_icon: Boolean | None = None + render_no_network_icon: Boolean | None = None + buffer_capacity: Energy | None = None + input_flow_limit: Energy | None = None + output_flow_limit: Energy | None = None + drain: Energy | None = None + + +@dataclass +class EnterVehicleTipTrigger: + type: Literal["enter-vehicle"] + count: Uint32 | None = None + vehicle: EntityID | None = None + match_type_only: Boolean | None = None + + +@dataclass +class EntityBuildAnimationPiece: + top: Animation + body: Animation + + +@dataclass +class EntityIDFilter1: + name: EntityID + quality: QualityID | None = None + comparator: ComparatorString | None = None + + +EntityIDFilter: TypeAlias = EntityIDFilter1 | EntityID + + +@dataclass +class ExplosionDefinition1: + name: EntityID + offset: Vector | None = None + + +ExplosionDefinition: TypeAlias = EntityID | ExplosionDefinition1 + + +@dataclass +class FlowStyleSpecification: + type: Literal["flow_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + max_on_row: Int32 | None = None + horizontal_spacing: Int32 | None = None + vertical_spacing: Int32 | None = None + + +@dataclass +class FogEffectProperties: + shape_noise_texture: EffectTexture + detail_noise_texture: EffectTexture + fog_type: FogType | None = None + color1: Color | None = None + color2: Color | None = None + tick_factor: Float | None = None + + +@dataclass +class FogMaskShapeDefinition: + rect: SimpleBoundingBox + falloff: Float | None = None + + +@dataclass +class FootprintParticle: + tiles: list[TileID] | dict[str, Any] + particle_name: ParticleID | None = None + use_as_default: Boolean | None = None + + +@dataclass +class FrequencySizeRichness: + frequency: MapGenSize | None = None + size: MapGenSize | None = None + richness: MapGenSize | None = None + + +@dataclass +class GhostShimmerConfig: + tint: Color + distortion: Float + blend_mode: Int32 + visualize_borders: Boolean + proportional_distortion: Boolean + world_uv_modulo: Int32 + overlay_layers: list[GhostShimmerOverlayData] | dict[str, Any] + distortion_layers: list[GhostShimmerDistortionData] | dict[str, Any] + + +@dataclass +class GlobalTintEffectProperties: + noise_texture: EffectTexture + offset: Vector4f + intensity: Vector4f + scale_u: Vector4f + scale_v: Vector4f + global_intensity: Float + global_scale: Float + zoom_factor: Float + zoom_intensity: Float + + +@dataclass +class HeatConnection: + position: MapPosition + direction: float + + +@dataclass +class HorizontalFlowStyleSpecification: + type: Literal["horizontal_flow_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + horizontal_spacing: Int32 | None = None + + +@dataclass +class IconData: + icon: FileName + icon_size: SpriteSizeType | None = None + tint: Color | None = None + shift: Vector | None = None + scale: Double | None = None + draw_background: Boolean | None = None + floating: Boolean | None = None + + +@dataclass +class IconDrawSpecification: + shift: Vector | None = None + scale: Float | None = None + scale_for_many: Float | None = None + render_layer: RenderLayer1 | None = None + + +@dataclass +class IconSequencePositioning: + inventory_index: float + max_icons_per_row: Uint8 | None = None + max_icon_rows: Uint8 | None = None + shift: Vector | None = None + scale: Float | None = None + separation_multiplier: Float | None = None + multi_row_initial_height_modifier: Float | None = None + + +IngredientPrototype: TypeAlias = ( + ItemIngredientPrototype | FluidIngredientPrototype +) + + +@dataclass +class InsertItemTriggerEffectItem: + type: Literal["insert-item"] + item: ItemID + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + quality: QualityID | None = None + count: ItemCountType | None = None + + +@dataclass +class InserterStackSizeBonusModifier: + modifier: Double + type: Literal["inserter-stack-size-bonus"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class InventoryWithCustomStackSizeSpecification: + stack_size_multiplier: Double | None = None + stack_size_min: ItemCountType | None = None + stack_size_max: ItemCountType | None = None + stack_size_override: dict[ItemID, ItemCountType] | None = None + with_bar: Boolean | None = None + + +@dataclass +class InvokeTileEffectTriggerEffectItem: + type: Literal["invoke-tile-trigger"] + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + tile_collision_mask: CollisionMaskConnector | None = None + + +@dataclass +class ItemIDFilter1: + name: ItemID + quality: QualityID | None = None + comparator: ComparatorString | None = None + + +ItemIDFilter: TypeAlias = ItemIDFilter1 | ItemID + + +@dataclass +class LabelStyleSpecification: + type: Literal["label_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + font: String | None = None + font_color: Color | None = None + hovered_font_color: Color | None = None + game_controller_hovered_font_color: Color | None = None + clicked_font_color: Color | None = None + disabled_font_color: Color | None = None + parent_hovered_font_color: Color | None = None + rich_text_setting: RichTextSetting | None = None + single_line: Boolean | None = None + underlined: Boolean | None = None + rich_text_highlight_error_color: Color | None = None + rich_text_highlight_warning_color: Color | None = None + rich_text_highlight_ok_color: Color | None = None + + +@dataclass +class LaboratoryProductivityModifier: + modifier: Double + type: Literal["laboratory-productivity"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class LaboratorySpeedModifier: + modifier: Double + type: Literal["laboratory-speed"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class LightProperties: + color: Color | None = None + direction: Vector3D | None = None + + +@dataclass +class AdvancedSettings: + asteroids: MapGenPresetAsteroidSettings | None = None + pollution: MapGenPresetPollutionSettings | None = None + enemy_evolution: MapGenPresetEnemyEvolutionSettings | None = None + enemy_expansion: MapGenPresetEnemyExpansionSettings | None = None + difficulty_settings: MapGenPresetDifficultySettings | None = None + + +@dataclass +class MaterialTextureParameters: + count: Uint32 + picture: FileName + scale: Float | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + line_length: Uint32 | None = None + + +@dataclass +class MaxFailedAttemptsPerTickPerConstructionQueueModifier: + modifier: Double + type: Literal["max-failed-attempts-per-tick-per-construction-queue"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class MaxSuccessfulAttemptsPerTickPerConstructionQueueModifier: + modifier: Double + type: Literal["max-successful-attempts-per-tick-per-construction-queue"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class MaximumFollowingRobotsCountModifier: + modifier: Double + type: Literal["maximum-following-robots-count"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class MiningDrillProductivityBonusModifier: + modifier: Double + type: Literal["mining-drill-productivity-bonus"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class MiningWithFluidModifier: + modifier: Boolean + type: Literal["mining-with-fluid"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class NeighbourConnectable: + connections: list[NeighbourConnectableConnectionDefinition] | dict[str, Any] + affected_by_direction: Boolean | None = None + neighbour_search_distance: Float | None = None + + +@dataclass +class NothingModifier: + type: Literal["nothing"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + effect_description: LocalisedString | None = None + + +@dataclass +class PodDistanceTraveledProcessionLayer: + type: Literal["pod-distance-traveled"] + frames: list[Frame2] | dict[str, Any] + reference_group: ProcessionLayerInheritanceGroupID | None = None + contribute_to_distance_traveled: Boolean | None = None + distance_traveled_contribution: Float | None = None + + +@dataclass +class Frame3: + timestamp: MapTick | None = None + tilt: Double | None = None + tilt_t: Double | None = None + offset: Vector | None = None + offset_t: Vector | None = None + offset_rate: Double | None = None + offset_rate_t: Double | None = None + + +@dataclass +class PodMovementProcessionLayer: + type: Literal["pod-movement"] + frames: list[Frame3] | dict[str, Any] + reference_group: ProcessionLayerInheritanceGroupID | None = None + inherit_from: ProcessionLayerInheritanceGroupID | None = None + contribute_to_distance_traveled: Boolean | None = None + distance_traveled_contribution: Float | None = None + + +@dataclass +class PodOpacityProcessionLayer: + type: Literal["pod-opacity"] + lut: ColorLookupTable + frames: list[Frame4] | dict[str, Any] + + +ProbabilityTable: TypeAlias = list[ProbabilityTableItem] | dict[str, Any] + + +@dataclass +class PumpConnectorGraphicsAnimation: + standup_base: Animation | None = None + standup_top: Animation | None = None + standup_shadow: Animation | None = None + connector: Animation | None = None + connector_shadow: Animation | None = None + + +@dataclass +class PushBackTriggerEffectItem: + type: Literal["push-back"] + distance: Float + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + + +@dataclass +class SliceOrigin: + north: Vector | None = None + east: Vector | None = None + south: Vector | None = None + west: Vector | None = None + + +@dataclass +class FogMask: + north: FogMaskShapeDefinition | None = None + east: FogMaskShapeDefinition | None = None + south: FogMaskShapeDefinition | None = None + west: FogMaskShapeDefinition | None = None + + +@dataclass +class RailPlannerAllowElevatedRailsModifier: + modifier: Boolean + type: Literal["rail-planner-allow-elevated-rails"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class RailSignalStaticSpriteLayer: + sprites: Animation + render_layer: RenderLayer | None = None + hide_if_simulation: Boolean | None = None + hide_if_not_connected_to_rails: Boolean | None = None + shifts: list[MapPosition] | dict[str, Any] | None = None + align_to_frame_index: list[Uint8] | dict[str, Any] | None = None + + +@dataclass +class RailSupportOnDeepOilOceanModifier: + modifier: Boolean + type: Literal["rail-support-on-deep-oil-ocean"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class ResearchTechnologyTipTrigger: + type: Literal["research"] + technology: TechnologyID + + +@dataclass +class RotatedAnimation: + filename: FileName | None = None + size: SpriteSizeType | list[SpriteSizeType] | None = None + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + position: list[SpriteSizeType] | None = None + load_in_minimal_mode: Boolean | None = None + premul_alpha: Boolean | None = None + allow_forced_downscale: Boolean | None = None + priority: SpritePriority | None = None + flags: SpriteFlags | None = None + shift: Vector | None = None + rotate_shift: Boolean | None = None + apply_special_effect: Boolean | None = None + scale: Double | None = None + draw_as_shadow: Boolean | None = None + draw_as_glow: Boolean | None = None + draw_as_light: Boolean | None = None + occludes_light: Boolean | None = None + mipmap_count: Uint8 | None = None + apply_runtime_tint: Boolean | None = None + tint_as_overlay: Boolean | None = None + invert_colors: Boolean | None = None + tint: Color | None = None + blend_mode: BlendMode | None = None + generate_sdf: Boolean | None = None + surface: SpriteUsageSurfaceHint | None = None + usage: SpriteUsageHint | None = None + run_mode: AnimationRunMode | None = None + frame_count: Uint32 | None = None + line_length: Uint32 | None = None + animation_speed: Float | None = None + max_advance: Float | None = None + repeat_count: Uint8 | None = None + dice: Uint8 | None = None + dice_x: Uint8 | None = None + dice_y: Uint8 | None = None + frame_sequence: AnimationFrameSequence | None = None + layers: list[RotatedAnimation] | dict[str, Any] | None = None + direction_count: Uint32 | None = None + filenames: list[FileName] | dict[str, Any] | None = None + lines_per_file: Uint32 | None = None + slice: Uint32 | None = None + still_frame: Uint32 | None = None + counterclockwise: Boolean | None = None + middle_orientation: RealOrientation | None = None + orientation_range: Float | None = None + apply_projection: Boolean | None = None + stripes: list[Stripe] | dict[str, Any] | None = None + + +@dataclass +class RotatedAnimation8Way1: + north: RotatedAnimation + north_east: RotatedAnimation | None = None + east: RotatedAnimation | None = None + south_east: RotatedAnimation | None = None + south: RotatedAnimation | None = None + south_west: RotatedAnimation | None = None + west: RotatedAnimation | None = None + north_west: RotatedAnimation | None = None + + +RotatedAnimation8Way: TypeAlias = RotatedAnimation8Way1 | RotatedAnimation + + +RotatedAnimationVariations: TypeAlias = ( + RotatedAnimation | list[RotatedAnimation] | dict[str, Any] +) + + +@dataclass +class RotatedSpriteFrame: + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + shift: Vector | None = None + + +@dataclass +class ScriptTriggerEffectItem: + type: Literal["script"] + effect_id: String + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + + +@dataclass +class ScriptedTechnologyTrigger: + type: Literal["scripted"] + trigger_description: LocalisedString | None = None + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + + +@dataclass +class SegmentEngineSpecification: + segments: list[SegmentSpecification] | dict[str, Any] + + +@dataclass +class SendItemToOrbitTechnologyTrigger: + type: Literal["send-item-to-orbit"] + item: ItemIDFilter + + +@dataclass +class SetTileTriggerEffectItem: + type: Literal["set-tile"] + tile_name: TileID + radius: Float + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + apply_projection: Boolean | None = None + apply_on_space_platform: Boolean | None = None + tile_collision_mask: CollisionMaskConnector | None = None + + +@dataclass +class ShiftAnimationWaypoints: + north: list[Vector] | dict[str, Any] + east: list[Vector] | dict[str, Any] + south: list[Vector] | dict[str, Any] + west: list[Vector] | dict[str, Any] + + +@dataclass +class ShowExplosionOnChartTriggerEffectItem: + type: Literal["show-explosion-on-chart"] + scale: Float + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + + +@dataclass +class SignalColorMapping: + type: Type6 + name: ( + VirtualSignalID + | ItemID + | FluidID + | RecipeID + | EntityID + | SpaceLocationID + | AsteroidChunkID + | QualityID + ) + color: Color + + +@dataclass +class SignalIDConnector: + type: Type6 + name: ( + VirtualSignalID + | ItemID + | FluidID + | RecipeID + | EntityID + | SpaceLocationID + | AsteroidChunkID + | QualityID + ) + + +@dataclass +class SimulationDefinition: + planet: SpaceLocationID | None = None + game_view_settings: GameViewSettings | None = None + save: FileName | None = None + init_file: FileName | None = None + init: String | None = None + update_file: FileName | None = None + update: String | None = None + mods: list[String] | dict[str, Any] | None = None + init_update_count: Uint32 | None = None + length: Uint32 | None = None + generate_map: Boolean | None = None + checkboard: Boolean | None = None + hide_health_bars: Boolean | None = None + mute_technology_finished_sound: Boolean | None = None + mute_alert_sounds: Boolean | None = None + volume_modifier: Float | None = None + override_volume: Boolean | None = None + mute_wind_sounds: Boolean | None = None + hide_factoriopedia_gradient: Boolean | None = None + + +@dataclass +class Frame5: + timestamp: MapTick | None = None + opacity: Double | None = None + opacity_t: Double | None = None + tint: Color | None = None + tint_t: Color | None = None + rotation: Double | None = None + rotation_t: Double | None = None + scale: Double | None = None + scale_t: Double | None = None + shift: Vector | None = None + shift_t: Vector | None = None + shift_rate: Double | None = None + shift_rate_t: Double | None = None + frame: Float | None = None + + +@dataclass +class SmokeSource: + name: TrivialSmokeID + frequency: Float + offset: Float | None = None + position: Vector | None = None + has_8_directions: Boolean | None = None + north_position: Vector | None = None + north_east_position: Vector | None = None + east_position: Vector | None = None + south_east_position: Vector | None = None + south_position: Vector | None = None + south_west_position: Vector | None = None + west_position: Vector | None = None + north_west_position: Vector | None = None + deviation: Vector | None = None + starting_frame: Uint16 | None = None + starting_frame_deviation: Uint16 | None = None + height: Float | None = None + height_deviation: Float | None = None + starting_vertical_speed: Float | None = None + starting_vertical_speed_deviation: Float | None = None + vertical_speed_slowdown: Float | None = None + + +@dataclass +class SoundDefinition1: + filename: FileName + volume: Float | None = None + min_volume: Float | None = None + max_volume: Float | None = None + preload: Boolean | None = None + speed: Float | None = None + min_speed: Float | None = None + max_speed: Float | None = None + modifiers: SoundModifier | list[SoundModifier] | dict[str, Any] | None = ( + None + ) + + +SoundDefinition: TypeAlias = SoundDefinition1 | FileName + + +@dataclass +class SpaceConnectionAsteroidSpawnDefinition1: + asteroid: EntityID | AsteroidChunkID + spawn_points: list[SpaceConnectionAsteroidSpawnPoint] | dict[str, Any] + type: Type8 | None = None + + +SpaceConnectionAsteroidSpawnDefinition: TypeAlias = ( + SpaceConnectionAsteroidSpawnDefinition1 + | list[EntityID | list[SpaceConnectionAsteroidSpawnPoint] | dict[str, Any]] +) + + +@dataclass +class SpaceDustEffectProperties: + noise_texture: EffectTexture + asteroid_texture: EffectTexture + asteroid_normal_texture: EffectTexture + animation_speed: Float | None = None + + +@dataclass +class SpacePlatformTileDefinition: + tile: TileID + position: TilePosition + + +@dataclass +class SpacePlatformsModifier: + modifier: Boolean + type: Literal["unlock-space-platforms"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class Sprite: + filename: FileName | None = None + size: SpriteSizeType | list[SpriteSizeType] | None = None + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + position: list[SpriteSizeType] | None = None + load_in_minimal_mode: Boolean | None = None + premul_alpha: Boolean | None = None + allow_forced_downscale: Boolean | None = None + priority: SpritePriority | None = None + flags: SpriteFlags | None = None + shift: Vector | None = None + rotate_shift: Boolean | None = None + apply_special_effect: Boolean | None = None + scale: Double | None = None + draw_as_shadow: Boolean | None = None + draw_as_glow: Boolean | None = None + draw_as_light: Boolean | None = None + occludes_light: Boolean | None = None + mipmap_count: Uint8 | None = None + apply_runtime_tint: Boolean | None = None + tint_as_overlay: Boolean | None = None + invert_colors: Boolean | None = None + tint: Color | None = None + blend_mode: BlendMode | None = None + generate_sdf: Boolean | None = None + surface: SpriteUsageSurfaceHint | None = None + usage: SpriteUsageHint | None = None + layers: list[Sprite] | dict[str, Any] | None = None + dice: SpriteSizeType | None = None + dice_x: SpriteSizeType | None = None + dice_y: SpriteSizeType | None = None + + +@dataclass +class SpriteNWaySheet: + filename: FileName | None = None + size: SpriteSizeType | list[SpriteSizeType] | None = None + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + position: list[SpriteSizeType] | None = None + load_in_minimal_mode: Boolean | None = None + premul_alpha: Boolean | None = None + allow_forced_downscale: Boolean | None = None + priority: SpritePriority | None = None + flags: SpriteFlags | None = None + shift: Vector | None = None + rotate_shift: Boolean | None = None + apply_special_effect: Boolean | None = None + scale: Double | None = None + draw_as_shadow: Boolean | None = None + draw_as_glow: Boolean | None = None + draw_as_light: Boolean | None = None + occludes_light: Boolean | None = None + mipmap_count: Uint8 | None = None + apply_runtime_tint: Boolean | None = None + tint_as_overlay: Boolean | None = None + invert_colors: Boolean | None = None + tint: Color | None = None + blend_mode: BlendMode | None = None + generate_sdf: Boolean | None = None + surface: SpriteUsageSurfaceHint | None = None + usage: SpriteUsageHint | None = None + frames: Uint32 | None = None + + +@dataclass +class SpriteSheet: + filename: FileName | None = None + size: SpriteSizeType | list[SpriteSizeType] | None = None + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + position: list[SpriteSizeType] | None = None + load_in_minimal_mode: Boolean | None = None + premul_alpha: Boolean | None = None + allow_forced_downscale: Boolean | None = None + priority: SpritePriority | None = None + flags: SpriteFlags | None = None + shift: Vector | None = None + rotate_shift: Boolean | None = None + apply_special_effect: Boolean | None = None + scale: Double | None = None + draw_as_shadow: Boolean | None = None + draw_as_glow: Boolean | None = None + draw_as_light: Boolean | None = None + occludes_light: Boolean | None = None + mipmap_count: Uint8 | None = None + apply_runtime_tint: Boolean | None = None + tint_as_overlay: Boolean | None = None + invert_colors: Boolean | None = None + tint: Color | None = None + blend_mode: BlendMode | None = None + generate_sdf: Boolean | None = None + surface: SpriteUsageSurfaceHint | None = None + usage: SpriteUsageHint | None = None + layers: list[SpriteSheet] | dict[str, Any] | None = None + variation_count: Uint32 | None = None + repeat_count: Uint32 | None = None + line_length: Uint32 | None = None + filenames: list[FileName] | dict[str, Any] | None = None + lines_per_file: Uint32 | None = None + dice: SpriteSizeType | None = None + dice_x: SpriteSizeType | None = None + dice_y: SpriteSizeType | None = None + + +@dataclass +class SpriteVariations1: + sheet: SpriteSheet + + +SpriteVariations: TypeAlias = ( + SpriteVariations1 | SpriteSheet | list[Sprite] | dict[str, Any] +) + + +@dataclass +class GunCenterShift: + north: Vector + east: Vector | None = None + south: Vector | None = None + west: Vector | None = None + + +@dataclass +class SurfaceCondition: + property: SurfacePropertyID + min: Double | None = None + max: Double | None = None + + +@dataclass +class TileTransitionSpritesheetLayout: + spritesheet: FileName | None = None + scale: Float | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + tile_height: Uint8 | None = None + line_length: Uint8 | None = None + count: Uint8 | None = None + overlay: TileTransitionVariantLayout | None = None + mask: TileTransitionVariantLayout | None = None + background: TileTransitionVariantLayout | None = None + background_mask: TileTransitionVariantLayout | None = None + effect_map: TileTransitionVariantLayout | None = None + lightmap: TileTransitionVariantLayout | None = None + auxiliary_effect_mask: TileTransitionVariantLayout | None = None + inner_corner_scale: Float | None = None + inner_corner_x: SpriteSizeType | None = None + inner_corner_y: SpriteSizeType | None = None + inner_corner_tile_height: Uint8 | None = None + inner_corner_line_length: Uint8 | None = None + inner_corner_count: Uint8 | None = None + outer_corner_scale: Float | None = None + outer_corner_x: SpriteSizeType | None = None + outer_corner_y: SpriteSizeType | None = None + outer_corner_tile_height: Uint8 | None = None + outer_corner_line_length: Uint8 | None = None + outer_corner_count: Uint8 | None = None + side_scale: Float | None = None + side_x: SpriteSizeType | None = None + side_y: SpriteSizeType | None = None + side_tile_height: Uint8 | None = None + side_line_length: Uint8 | None = None + side_count: Uint8 | None = None + double_side_scale: Float | None = None + double_side_x: SpriteSizeType | None = None + double_side_y: SpriteSizeType | None = None + double_side_tile_height: Uint8 | None = None + double_side_line_length: Uint8 | None = None + double_side_count: Uint8 | None = None + u_transition_scale: Float | None = None + u_transition_x: SpriteSizeType | None = None + u_transition_y: SpriteSizeType | None = None + u_transition_tile_height: Uint8 | None = None + u_transition_line_length: Uint8 | None = None + u_transition_count: Uint8 | None = None + o_transition_scale: Float | None = None + o_transition_x: SpriteSizeType | None = None + o_transition_y: SpriteSizeType | None = None + o_transition_tile_height: Uint8 | None = None + o_transition_line_length: Uint8 | None = None + o_transition_count: Uint8 | None = None + + +@dataclass +class TileTransitions: + layout: TileTransitionSpritesheetLayout | None = None + spritesheet: FileName | None = None + overlay_enabled: Boolean | None = None + mask_enabled: Boolean | None = None + background_enabled: Boolean | None = None + background_mask_enabled: Boolean | None = None + effect_map_enabled: Boolean | None = None + lightmap_enabled: Boolean | None = None + auxiliary_effect_mask_enabled: Boolean | None = None + overlay_layout: TileTransitionVariantLayout | None = None + mask_layout: TileTransitionVariantLayout | None = None + background_layout: TileTransitionVariantLayout | None = None + background_mask_layout: TileTransitionVariantLayout | None = None + effect_map_layout: TileTransitionVariantLayout | None = None + lightmap_layout: TileTransitionVariantLayout | None = None + auxiliary_effect_mask_layout: TileTransitionVariantLayout | None = None + mask_spritesheet: FileName | None = None + background_spritesheet: FileName | None = None + background_mask_spritesheet: FileName | None = None + effect_map_spritesheet: FileName | None = None + lightmap_spritesheet: FileName | None = None + auxiliary_effect_mask_spritesheet: FileName | None = None + water_patch: Sprite | None = None + overlay_layer_group: TileRenderLayer | None = None + background_layer_group: TileRenderLayer | None = None + waving_effect_time_scale: Float | None = None + overlay_layer_offset: Int8 | None = None + masked_overlay_layer_offset: Int8 | None = None + background_layer_offset: Int8 | None = None + masked_background_layer_offset: Int8 | None = None + draw_background_layer_under_tiles: Boolean | None = None + background_layer_occludes_light: Boolean | None = None + apply_effect_color_to_overlay: Boolean | None = None + apply_waving_effect_on_masks: Boolean | None = None + apply_waving_effect_on_background_mask: Boolean | None = None + draw_simple_outer_corner_over_diagonal: Boolean | None = None + offset_background_layer_by_tile_layer: Boolean | None = None + inner_corner_weights: list[Float] | dict[str, Any] | None = None + outer_corner_weights: list[Float] | dict[str, Any] | None = None + side_weights: list[Float] | dict[str, Any] | None = None + side_variations_in_group: Uint8 | None = None + double_side_weights: list[Float] | dict[str, Any] | None = None + double_side_variations_in_group: Uint8 | None = None + u_transition_weights: list[Float] | dict[str, Any] | None = None + + +@dataclass +class TileTransitionsBetweenTransitions: + transition_group1: Uint8 + transition_group2: Uint8 + layout: TileTransitionSpritesheetLayout | None = None + spritesheet: FileName | None = None + overlay_enabled: Boolean | None = None + mask_enabled: Boolean | None = None + background_enabled: Boolean | None = None + background_mask_enabled: Boolean | None = None + effect_map_enabled: Boolean | None = None + lightmap_enabled: Boolean | None = None + auxiliary_effect_mask_enabled: Boolean | None = None + overlay_layout: TileTransitionVariantLayout | None = None + mask_layout: TileTransitionVariantLayout | None = None + background_layout: TileTransitionVariantLayout | None = None + background_mask_layout: TileTransitionVariantLayout | None = None + effect_map_layout: TileTransitionVariantLayout | None = None + lightmap_layout: TileTransitionVariantLayout | None = None + auxiliary_effect_mask_layout: TileTransitionVariantLayout | None = None + mask_spritesheet: FileName | None = None + background_spritesheet: FileName | None = None + background_mask_spritesheet: FileName | None = None + effect_map_spritesheet: FileName | None = None + lightmap_spritesheet: FileName | None = None + auxiliary_effect_mask_spritesheet: FileName | None = None + water_patch: Sprite | None = None + overlay_layer_group: TileRenderLayer | None = None + background_layer_group: TileRenderLayer | None = None + waving_effect_time_scale: Float | None = None + overlay_layer_offset: Int8 | None = None + masked_overlay_layer_offset: Int8 | None = None + background_layer_offset: Int8 | None = None + masked_background_layer_offset: Int8 | None = None + draw_background_layer_under_tiles: Boolean | None = None + background_layer_occludes_light: Boolean | None = None + apply_effect_color_to_overlay: Boolean | None = None + apply_waving_effect_on_masks: Boolean | None = None + apply_waving_effect_on_background_mask: Boolean | None = None + draw_simple_outer_corner_over_diagonal: Boolean | None = None + offset_background_layer_by_tile_layer: Boolean | None = None + inner_corner_weights: list[Float] | dict[str, Any] | None = None + outer_corner_weights: list[Float] | dict[str, Any] | None = None + side_weights: list[Float] | dict[str, Any] | None = None + side_variations_in_group: Uint8 | None = None + double_side_weights: list[Float] | dict[str, Any] | None = None + double_side_variations_in_group: Uint8 | None = None + u_transition_weights: list[Float] | dict[str, Any] | None = None + + +@dataclass +class TileTransitionsToTiles: + to_tiles: list[TileID] | dict[str, Any] + transition_group: Uint8 + layout: TileTransitionSpritesheetLayout | None = None + spritesheet: FileName | None = None + overlay_enabled: Boolean | None = None + mask_enabled: Boolean | None = None + background_enabled: Boolean | None = None + background_mask_enabled: Boolean | None = None + effect_map_enabled: Boolean | None = None + lightmap_enabled: Boolean | None = None + auxiliary_effect_mask_enabled: Boolean | None = None + overlay_layout: TileTransitionVariantLayout | None = None + mask_layout: TileTransitionVariantLayout | None = None + background_layout: TileTransitionVariantLayout | None = None + background_mask_layout: TileTransitionVariantLayout | None = None + effect_map_layout: TileTransitionVariantLayout | None = None + lightmap_layout: TileTransitionVariantLayout | None = None + auxiliary_effect_mask_layout: TileTransitionVariantLayout | None = None + mask_spritesheet: FileName | None = None + background_spritesheet: FileName | None = None + background_mask_spritesheet: FileName | None = None + effect_map_spritesheet: FileName | None = None + lightmap_spritesheet: FileName | None = None + auxiliary_effect_mask_spritesheet: FileName | None = None + water_patch: Sprite | None = None + overlay_layer_group: TileRenderLayer | None = None + background_layer_group: TileRenderLayer | None = None + waving_effect_time_scale: Float | None = None + overlay_layer_offset: Int8 | None = None + masked_overlay_layer_offset: Int8 | None = None + background_layer_offset: Int8 | None = None + masked_background_layer_offset: Int8 | None = None + draw_background_layer_under_tiles: Boolean | None = None + background_layer_occludes_light: Boolean | None = None + apply_effect_color_to_overlay: Boolean | None = None + apply_waving_effect_on_masks: Boolean | None = None + apply_waving_effect_on_background_mask: Boolean | None = None + draw_simple_outer_corner_over_diagonal: Boolean | None = None + offset_background_layer_by_tile_layer: Boolean | None = None + inner_corner_weights: list[Float] | dict[str, Any] | None = None + outer_corner_weights: list[Float] | dict[str, Any] | None = None + side_weights: list[Float] | dict[str, Any] | None = None + side_variations_in_group: Uint8 | None = None + double_side_weights: list[Float] | dict[str, Any] | None = None + double_side_variations_in_group: Uint8 | None = None + u_transition_weights: list[Float] | dict[str, Any] | None = None + + +@dataclass +class TileTransitionsVariants: + main: list[TileMainPictures] | dict[str, Any] | None = None + material_texture_width_in_tiles: Uint8 | None = None + material_texture_height_in_tiles: Uint8 | None = None + material_background: MaterialTextureParameters | None = None + light: list[TileLightPictures] | dict[str, Any] | None = None + material_light: MaterialTextureParameters | None = None + empty_transitions: Boolean | None = None + transition: TileTransitions | None = None + + +@dataclass +class TrainBrakingForceBonusModifier: + modifier: Double + type: Literal["train-braking-force-bonus"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class TransportBeltConnectorFrame: + frame_main: AnimationVariations + frame_shadow: AnimationVariations + frame_main_scanner: Animation + frame_main_scanner_movement_speed: Float + frame_main_scanner_horizontal_start_shift: Vector + frame_main_scanner_horizontal_end_shift: Vector + frame_main_scanner_horizontal_y_scale: Float + frame_main_scanner_horizontal_rotation: RealOrientation + frame_main_scanner_vertical_start_shift: Vector + frame_main_scanner_vertical_end_shift: Vector + frame_main_scanner_vertical_y_scale: Float + frame_main_scanner_vertical_rotation: RealOrientation + frame_main_scanner_cross_horizontal_start_shift: Vector + frame_main_scanner_cross_horizontal_end_shift: Vector + frame_main_scanner_cross_horizontal_y_scale: Float + frame_main_scanner_cross_horizontal_rotation: RealOrientation + frame_main_scanner_cross_vertical_start_shift: Vector + frame_main_scanner_cross_vertical_end_shift: Vector + frame_main_scanner_cross_vertical_y_scale: Float + frame_main_scanner_cross_vertical_rotation: RealOrientation + frame_main_scanner_nw_ne: Animation + frame_main_scanner_sw_se: Animation + frame_back_patch: SpriteVariations | None = None + frame_front_patch: SpriteVariations | None = None + + +@dataclass +class TurretAttackModifier: + type: Literal["turret-attack"] + turret_id: EntityID + modifier: Double + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class TurretBaseVisualisation: + animation: Animation4Way + render_layer: RenderLayer | None = None + secondary_draw_order: Int8 | None = None + enabled_states: list[TurretState] | dict[str, Any] | None = None + draw_when_has_energy: Boolean | None = None + draw_when_no_energy: Boolean | None = None + draw_when_has_ammo: Boolean | None = None + draw_when_no_ammo: Boolean | None = None + draw_when_frozen: Boolean | None = None + draw_when_not_frozen: Boolean | None = None + + +@dataclass +class TurretSpecialEffectCenter1: + default: Vector | None = None + north: Vector | None = None + north_east: Vector | None = None + east: Vector | None = None + south_east: Vector | None = None + south: Vector | None = None + south_west: Vector | None = None + west: Vector | None = None + north_west: Vector | None = None + + +TurretSpecialEffectCenter: TypeAlias = TurretSpecialEffectCenter1 | Vector + + +@dataclass +class UnlockQualityModifier: + type: Literal["unlock-quality"] + quality: QualityID + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class UnlockRecipeModifier: + type: Literal["unlock-recipe"] + recipe: RecipeID + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class UnlockSpaceLocationModifier: + type: Literal["unlock-space-location"] + space_location: SpaceLocationID + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class VariableAmbientSoundLayerStateProperties: + enabled: Boolean | None = None + variant: Uint8 | None = None + sequence_length: RandomRange | None = None + number_of_repetitions: RandomRange | ProbabilityTable | None = None + start_pause: RandomRange | None = None + pause_between_samples: RandomRange | None = None + pause_between_repetitions: RandomRange | None = None + end_pause: RandomRange | None = None + silence_instead_of_sample_probability: Float | None = None + + +@dataclass +class VariableAmbientSoundState: + name: String + type: VariableAmbientSoundStateType | None = None + next_state: String | None = None + next_states: ( + list[VariableAmbientSoundNextStateItem] | dict[str, Any] | None + ) = None + next_state_trigger: VariableAmbientSoundNextStateTrigger | None = None + next_state_layers_finished_layers: list[String] | dict[str, Any] | None = ( + None + ) + state_duration_seconds: Uint32 | None = None + layers_properties: ( + list[VariableAmbientSoundLayerStateProperties] | dict[str, Any] | None + ) = None + start_pause: RandomRange | None = None + end_pause: RandomRange | None = None + number_of_enabled_layers: RandomRange | None = None + + +@dataclass +class VehicleLogisticsModifier: + modifier: Boolean + type: Literal["vehicle-logistics"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class WaterReflectionDefinition: + pictures: SpriteVariations | None = None + orientation_to_variation: Boolean | None = None + rotate: Boolean | None = None + + +@dataclass +class WaterTileEffectParameters: + specular_lightness: Color + foam_color: Color + foam_color_multiplier: Float + tick_scale: Float + animation_speed: Float + animation_scale: Float | list[Float] + dark_threshold: Float | list[Float] + reflection_threshold: Float | list[Float] + specular_threshold: Float | list[Float] + textures: list[EffectTexture] | dict[str, Any] + near_zoom: Float | None = None + far_zoom: Float | None = None + lightmap_alpha: Float | None = None + shader_variation: EffectVariation | None = None + texture_variations_rows: Uint8 | None = None + texture_variations_columns: Uint8 | None = None + secondary_texture_variations_rows: Uint8 | None = None + secondary_texture_variations_columns: Uint8 | None = None + + +@dataclass +class WireConnectionPoint: + wire: WirePosition + shadow: WirePosition + + +@dataclass +class WorkerRobotBatteryModifier: + modifier: Double + type: Literal["worker-robot-battery"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class WorkerRobotSpeedModifier: + modifier: Double + type: Literal["worker-robot-speed"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class WorkerRobotStorageModifier: + modifier: Double + type: Literal["worker-robot-storage"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class AchievementPrototype: + type: Literal["achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + + +@dataclass +class AirbornePollutantPrototype: + type: Literal["airborne-pollutant"] + name: String + chart_color: Color + icon: Sprite + affects_evolution: Boolean + affects_water_tint: Boolean + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + localised_name_with_amount: String | None = None + damages_trees: Boolean | None = None + + +@dataclass +class AmmoCategory: + type: Literal["ammo-category"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + bonus_gui_order: Order | None = None + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + + +@dataclass +class AnimationPrototype: + type: Literal["animation"] + name: String + layers: list[Animation] | dict[str, Any] | None = None + filename: FileName | None = None + priority: SpritePriority | None = None + flags: SpriteFlags | None = None + size: SpriteSizeType | list[SpriteSizeType] | None = None + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + position: list[SpriteSizeType] | None = None + shift: Vector | None = None + rotate_shift: Boolean | None = None + apply_special_effect: Boolean | None = None + scale: Double | None = None + draw_as_shadow: Boolean | None = None + draw_as_glow: Boolean | None = None + draw_as_light: Boolean | None = None + mipmap_count: Uint8 | None = None + apply_runtime_tint: Boolean | None = None + tint_as_overlay: Boolean | None = None + invert_colors: Boolean | None = None + tint: Color | None = None + blend_mode: BlendMode | None = None + load_in_minimal_mode: Boolean | None = None + premul_alpha: Boolean | None = None + allow_forced_downscale: Boolean | None = None + generate_sdf: Boolean | None = None + surface: SpriteUsageSurfaceHint | None = None + usage: SpriteUsageHint | None = None + run_mode: AnimationRunMode | None = None + frame_count: Uint32 | None = None + line_length: Uint32 | None = None + animation_speed: Float | None = None + max_advance: Float | None = None + repeat_count: Uint8 | None = None + dice: Uint8 | None = None + dice_x: Uint8 | None = None + dice_y: Uint8 | None = None + frame_sequence: AnimationFrameSequence | None = None + stripes: list[Stripe] | dict[str, Any] | None = None + filenames: list[FileName] | dict[str, Any] | None = None + slice: Uint32 | None = None + lines_per_file: Uint32 | None = None + + +@dataclass +class AutoplaceControl: + type: Literal["autoplace-control"] + name: String + category: Category + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + richness: Boolean | None = None + can_be_disabled: Boolean | None = None + related_to_fight_achievements: Boolean | None = None + + +@dataclass +class BatteryEquipmentPrototype: + type: Literal["battery-equipment"] + name: String + sprite: Sprite + shape: EquipmentShape + categories: list[EquipmentCategoryID] | dict[str, Any] + energy_source: ElectricEnergySource + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + take_result: ItemID | None = None + background_color: Color | None = None + background_border_color: Color | None = None + grabbed_background_color: Color | None = None + + +@dataclass +class BeltImmunityEquipmentPrototype: + type: Literal["belt-immunity-equipment"] + name: String + sprite: Sprite + shape: EquipmentShape + categories: list[EquipmentCategoryID] | dict[str, Any] + energy_source: ElectricEnergySource + energy_consumption: Energy + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + take_result: ItemID | None = None + background_color: Color | None = None + background_border_color: Color | None = None + grabbed_background_color: Color | None = None + + +@dataclass +class BuildEntityAchievementPrototype: + type: Literal["build-entity-achievement"] + name: String + to_build: EntityID + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + amount: Uint32 | None = None + limited_to_one_game: Boolean | None = None + within: MapTick | None = None + + +@dataclass +class BurnerUsagePrototype: + type: Literal["burner-usage"] + name: String + empty_slot_sprite: Sprite + empty_slot_caption: LocalisedString + icon: Sprite + accepted_fuel_key: String + burned_in_key: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + empty_slot_description: LocalisedString | None = None + no_fuel_status: LocalisedString | None = None + + +@dataclass +class ChangedSurfaceAchievementPrototype: + type: Literal["change-surface-achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + surface: String | None = None + + +@dataclass +class CollisionLayerPrototype: + type: Literal["collision-layer"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class CombatRobotCountAchievementPrototype: + type: Literal["combat-robot-count-achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + count: Uint32 | None = None + + +@dataclass +class CompleteObjectiveAchievementPrototype: + type: Literal["complete-objective-achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + objective_condition: ObjectiveCondition | None = None + within: MapTick | None = None + + +@dataclass +class ConstructWithRobotsAchievementPrototype: + type: Literal["construct-with-robots-achievement"] + name: String + limited_to_one_game: Boolean + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + amount: Uint32 | None = None + more_than_manually: Boolean | None = None + + +@dataclass +class CreatePlatformAchievementPrototype: + type: Literal["create-platform-achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + amount: Uint32 | None = None + + +@dataclass +class CustomEventPrototype: + type: Literal["custom-event"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class CustomInputPrototype: + type: Literal["custom-input"] + name: String + key_sequence: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + alternative_key_sequence: String | None = None + controller_key_sequence: String | None = None + controller_alternative_key_sequence: String | None = None + linked_game_control: LinkedGameControl | None = None + consuming: ConsumingType | None = None + enabled: Boolean | None = None + enabled_while_spectating: Boolean | None = None + enabled_while_in_cutscene: Boolean | None = None + include_selected_prototype: Boolean | None = None + item_to_spawn: ItemID | None = None + action: Action | None = None + block_modifiers: Boolean | None = None + + +@dataclass +class DamageType: + type: Literal["damage-type"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class DeconstructWithRobotsAchievementPrototype: + type: Literal["deconstruct-with-robots-achievement"] + name: String + amount: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + + +@dataclass +class DeliverByRobotsAchievementPrototype: + type: Literal["deliver-by-robots-achievement"] + name: String + amount: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + + +@dataclass +class DepleteResourceAchievementPrototype: + type: Literal["deplete-resource-achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + amount: Uint32 | None = None + limited_to_one_game: Boolean | None = None + + +@dataclass +class DestroyCliffAchievementPrototype: + type: Literal["destroy-cliff-achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + amount: Uint32 | None = None + limited_to_one_game: Boolean | None = None + + +@dataclass +class DontBuildEntityAchievementPrototype: + type: Literal["dont-build-entity-achievement"] + name: String + dont_build: EntityID | list[EntityID] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + objective_condition: ObjectiveCondition | None = None + amount: Uint32 | None = None + research_with: ItemID | list[ItemID] | dict[str, Any] | None = None + + +@dataclass +class DontCraftManuallyAchievementPrototype: + type: Literal["dont-craft-manually-achievement"] + name: String + amount: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + objective_condition: ObjectiveCondition | None = None + + +@dataclass +class DontKillManuallyAchievementPrototype: + type: Literal["dont-kill-manually-achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + objective_condition: ObjectiveCondition | None = None + to_kill: EntityID | None = None + type_not_to_kill: String | None = None + + +@dataclass +class DontResearchBeforeResearchingAchievementPrototype: + type: Literal["dont-research-before-researching-achievement"] + name: String + dont_research: ItemID | list[ItemID] | dict[str, Any] + research_with: ItemID | list[ItemID] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + objective_condition: ObjectiveCondition | None = None + + +@dataclass +class DontUseEntityInEnergyProductionAchievementPrototype: + type: Literal["dont-use-entity-in-energy-production-achievement"] + name: String + excluded: EntityID | list[EntityID] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + objective_condition: ObjectiveCondition | None = None + included: EntityID | list[EntityID] | dict[str, Any] | None = None + last_hour_only: Boolean | None = None + minimum_energy_produced: Energy | None = None + + +@dataclass +class EnergyShieldEquipmentPrototype: + type: Literal["energy-shield-equipment"] + name: String + sprite: Sprite + shape: EquipmentShape + categories: list[EquipmentCategoryID] | dict[str, Any] + energy_source: ElectricEnergySource + max_shield_value: Float + energy_per_shield: Energy + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + take_result: ItemID | None = None + background_color: Color | None = None + background_border_color: Color | None = None + grabbed_background_color: Color | None = None + + +@dataclass +class EquipArmorAchievementPrototype: + type: Literal["equip-armor-achievement"] + name: String + armor: ItemID + alternative_armor: ItemID + limit_quality: QualityID + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + amount: Uint32 | None = None + limited_to_one_game: Boolean | None = None + + +@dataclass +class EquipmentCategory: + type: Literal["equipment-category"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class EquipmentGhostPrototype: + type: Literal["equipment-ghost"] + name: String + sprite: Sprite + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + shape: EquipmentShape | None = None + categories: list[EquipmentCategoryID] | dict[str, Any] | None = None + energy_source: ElectricEnergySource | None = None + take_result: ItemID | None = None + background_color: Color | None = None + background_border_color: Color | None = None + grabbed_background_color: Color | None = None + + +@dataclass +class EquipmentGridPrototype: + type: Literal["equipment-grid"] + name: String + equipment_categories: list[EquipmentCategoryID] | dict[str, Any] + width: Uint32 + height: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + locked: Boolean | None = None + + +@dataclass +class FluidPrototype: + type: Literal["fluid"] + name: String + default_temperature: Float + base_color: Color + flow_color: Color + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + visualization_color: Color | None = None + max_temperature: Float | None = None + heat_capacity: Energy | None = None + fuel_value: Energy | None = None + emissions_multiplier: Double | None = None + gas_temperature: Float | None = None + auto_barrel: Boolean | None = None + + +@dataclass +class FuelCategory: + type: Literal["fuel-category"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + fuel_value_type: LocalisedString | None = None + + +@dataclass +class GroupAttackAchievementPrototype: + type: Literal["group-attack-achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + amount: Uint32 | None = None + entities: list[EntityID] | dict[str, Any] | None = None + attack_type: AttackType | None = None + + +@dataclass +class GuiStyle: + type: Literal["gui-style"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + default_tileset: FileName | None = None + default_sprite_scale: Double | None = None + default_sprite_priority: SpritePriority | None = None + + +@dataclass +class InventoryBonusEquipmentPrototype: + type: Literal["inventory-bonus-equipment"] + name: String + sprite: Sprite + shape: EquipmentShape + categories: list[EquipmentCategoryID] | dict[str, Any] + inventory_size_bonus: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + energy_source: ElectricEnergySource | None = None + take_result: ItemID | None = None + background_color: Color | None = None + background_border_color: Color | None = None + grabbed_background_color: Color | None = None + + +@dataclass +class ItemGroup: + type: Literal["item-group"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + order_in_recipe: Order | None = None + + +@dataclass +class ItemSubGroup: + type: Literal["item-subgroup"] + name: String + group: ItemGroupID + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class KillAchievementPrototype: + type: Literal["kill-achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + to_kill: EntityID | list[EntityID] | dict[str, Any] | None = None + type_to_kill: String | None = None + damage_type: DamageTypeID | None = None + damage_dealer: EntityID | list[EntityID] | dict[str, Any] | None = None + amount: Uint32 | None = None + in_vehicle: Boolean | None = None + personally: Boolean | None = None + + +@dataclass +class ModData: + type: Literal["mod-data"] + name: String + data: dict[String, AnyBasic] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + data_type: String | None = None + + +@dataclass +class ModuleCategory: + type: Literal["module-category"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class ModuleTransferAchievementPrototype: + type: Literal["module-transfer-achievement"] + name: String + module: ItemID | list[ItemID] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + amount: Uint32 | None = None + limited_to_one_game: Boolean | None = None + + +@dataclass +class MovementBonusEquipmentPrototype: + type: Literal["movement-bonus-equipment"] + name: String + sprite: Sprite + shape: EquipmentShape + categories: list[EquipmentCategoryID] | dict[str, Any] + energy_source: ElectricEnergySource + energy_consumption: Energy + movement_bonus: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + take_result: ItemID | None = None + background_color: Color | None = None + background_border_color: Color | None = None + grabbed_background_color: Color | None = None + + +@dataclass +class NamedNoiseExpression: + type: Literal["noise-expression"] + name: String + expression: NoiseExpression + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + local_expressions: dict[String, NoiseExpression] | None = None + local_functions: dict[String, NoiseFunction] | None = None + intended_property: String | None = None + + +@dataclass +class NamedNoiseFunction: + type: Literal["noise-function"] + name: String + parameters: list[String] | dict[str, Any] + expression: NoiseExpression + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + local_expressions: dict[String, NoiseExpression] | None = None + local_functions: dict[String, NoiseFunction] | None = None + + +@dataclass +class PlaceEquipmentAchievementPrototype: + type: Literal["place-equipment-achievement"] + name: String + armor: ItemID + limit_quality: QualityID + limit_equip_quality: QualityID + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + amount: Uint32 | None = None + limited_to_one_game: Boolean | None = None + + +@dataclass +class PlayerDamagedAchievementPrototype: + type: Literal["player-damaged-achievement"] + name: String + minimum_damage: Float + should_survive: Boolean + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + type_of_dealer: String | None = None + + +@dataclass +class ProcessionLayerInheritanceGroup: + type: Literal["procession-layer-inheritance-group"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + intermezzo_application: TransitionApplication | None = None + arrival_application: TransitionApplication | None = None + + +@dataclass +class ProduceAchievementPrototype: + type: Literal["produce-achievement"] + name: String + amount: MaterialAmountType + limited_to_one_game: Boolean + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + item_product: ItemIDFilter | None = None + fluid_product: FluidID | None = None + + +@dataclass +class ProducePerHourAchievementPrototype: + type: Literal["produce-per-hour-achievement"] + name: String + amount: MaterialAmountType + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + item_product: ItemIDFilter | None = None + fluid_product: FluidID | None = None + + +@dataclass +class QualityPrototype: + type: Literal["quality"] + name: String + color: Color + level: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + draw_sprite_by_default: Boolean | None = None + next: QualityID | None = None + next_probability: Double | None = None + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + beacon_power_usage_multiplier: Float | None = None + mining_drill_resource_drain_multiplier: Float | None = None + science_pack_drain_multiplier: Float | None = None + default_multiplier: Double | None = None + inserter_speed_multiplier: Double | None = None + fluid_wagon_capacity_multiplier: Double | None = None + inventory_size_multiplier: Double | None = None + lab_research_speed_multiplier: Double | None = None + crafting_machine_speed_multiplier: Double | None = None + crafting_machine_energy_usage_multiplier: Double | None = None + logistic_cell_charging_energy_multiplier: Double | None = None + tool_durability_multiplier: Double | None = None + accumulator_capacity_multiplier: Double | None = None + flying_robot_max_energy_multiplier: Double | None = None + range_multiplier: Double | None = None + asteroid_collector_collection_radius_bonus: Double | None = None + equipment_grid_width_bonus: Int16 | None = None + equipment_grid_height_bonus: Int16 | None = None + electric_pole_wire_reach_bonus: Float | None = None + electric_pole_supply_area_distance_bonus: Float | None = None + beacon_supply_area_distance_bonus: Float | None = None + mining_drill_mining_radius_bonus: Float | None = None + logistic_cell_charging_station_count_bonus: Uint32 | None = None + beacon_module_slots_bonus: ItemStackIndex | None = None + crafting_machine_module_slots_bonus: ItemStackIndex | None = None + mining_drill_module_slots_bonus: ItemStackIndex | None = None + lab_module_slots_bonus: ItemStackIndex | None = None + + +@dataclass +class RecipeCategory: + type: Literal["recipe-category"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class RecipePrototype: + type: Literal["recipe"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + category: RecipeCategoryID | None = None + additional_categories: list[RecipeCategoryID] | dict[str, Any] | None = None + crafting_machine_tint: RecipeTints | None = None + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + ingredients: list[IngredientPrototype] | dict[str, Any] | None = None + results: list[ProductPrototype] | dict[str, Any] | None = None + main_product: String | None = None + energy_required: Double | None = None + emissions_multiplier: Double | None = None + maximum_productivity: Double | None = None + requester_paste_multiplier: Uint32 | None = None + overload_multiplier: Uint32 | None = None + allow_inserter_overload: Boolean | None = None + enabled: Boolean | None = None + hide_from_stats: Boolean | None = None + hide_from_player_crafting: Boolean | None = None + hide_from_bonus_gui: Boolean | None = None + allow_decomposition: Boolean | None = None + allow_as_intermediate: Boolean | None = None + allow_intermediates: Boolean | None = None + always_show_made_in: Boolean | None = None + show_amount_in_title: Boolean | None = None + always_show_products: Boolean | None = None + unlock_results: Boolean | None = None + preserve_products_in_machine_output: Boolean | None = None + result_is_always_fresh: Boolean | None = None + reset_freshness_on_craft: Boolean | None = None + allow_consumption_message: LocalisedString | None = None + allow_speed_message: LocalisedString | None = None + allow_productivity_message: LocalisedString | None = None + allow_pollution_message: LocalisedString | None = None + allow_quality_message: LocalisedString | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + hide_from_signal_gui: Boolean | None = None + allow_consumption: Boolean | None = None + allow_speed: Boolean | None = None + allow_productivity: Boolean | None = None + allow_pollution: Boolean | None = None + allow_quality: Boolean | None = None + allowed_module_categories: ( + list[ModuleCategoryID] | dict[str, Any] | None + ) = None + alternative_unlock_methods: list[TechnologyID] | dict[str, Any] | None = ( + None + ) + auto_recycle: Boolean | None = None + + +@dataclass +class ResearchAchievementPrototype: + type: Literal["research-achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + technology: TechnologyID | None = None + research_all: Boolean | None = None + + +@dataclass +class ResearchWithSciencePackAchievementPrototype: + type: Literal["research-with-science-pack-achievement"] + name: String + science_pack: ItemID + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + amount: Uint32 | None = None + + +@dataclass +class ResourceCategory: + type: Literal["resource-category"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class ShootAchievementPrototype: + type: Literal["shoot-achievement"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + ammo_type: ItemID | None = None + amount: Uint32 | None = None + + +@dataclass +class ShortcutPrototype: + type: Literal["shortcut"] + name: String + action: Action1 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + small_icons: list[IconData] | dict[str, Any] | None = None + small_icon: FileName | None = None + small_icon_size: SpriteSizeType | None = None + item_to_spawn: ItemID | None = None + technology_to_unlock: TechnologyID | None = None + unavailable_until_unlocked: Boolean | None = None + toggleable: Boolean | None = None + associated_control_input: String | None = None + style: Style | None = None + + +@dataclass +class SolarPanelEquipmentPrototype: + type: Literal["solar-panel-equipment"] + name: String + sprite: Sprite + shape: EquipmentShape + categories: list[EquipmentCategoryID] | dict[str, Any] + energy_source: ElectricEnergySource + power: Energy + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + take_result: ItemID | None = None + background_color: Color | None = None + background_border_color: Color | None = None + grabbed_background_color: Color | None = None + performance_at_day: Double | None = None + performance_at_night: Double | None = None + solar_coefficient_property: SurfacePropertyID | None = None + + +@dataclass +class SoundPrototype: + type: Literal["sound"] + name: String + category: SoundType | None = None + priority: Uint8 | None = None + aggregation: AggregationSpecification | None = None + allow_random_repeat: Boolean | None = None + audible_distance_modifier: Double | None = None + game_controller_vibration_data: GameControllerVibrationData | None = None + advanced_volume_control: AdvancedVolumeControl | None = None + speed_smoothing_window_size: Uint32 | None = None + variations: ( + SoundDefinition | list[SoundDefinition] | dict[str, Any] | None + ) = None + filename: FileName | None = None + volume: Float | None = None + min_volume: Float | None = None + max_volume: Float | None = None + preload: Boolean | None = None + speed: Float | None = None + min_speed: Float | None = None + max_speed: Float | None = None + modifiers: SoundModifier | list[SoundModifier] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class SpaceConnectionDistanceTraveledAchievementPrototype: + type: Literal["space-connection-distance-traveled-achievement"] + name: String + tracked_connection: SpaceConnectionID + distance: Uint32 + reversed: Boolean + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + + +@dataclass +class SpaceConnectionPrototype: + type: Literal["space-connection"] + name: String + from_: SpaceLocationID + to: SpaceLocationID + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + length: Uint32 | None = None + asteroid_spawn_definitions: ( + list[SpaceConnectionAsteroidSpawnDefinition] | dict[str, Any] | None + ) = None + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + + +@dataclass +class SpritePrototype: + type: Literal["sprite"] + name: String + layers: list[Sprite] | dict[str, Any] | None = None + filename: FileName | None = None + dice: SpriteSizeType | None = None + dice_x: SpriteSizeType | None = None + dice_y: SpriteSizeType | None = None + priority: SpritePriority | None = None + flags: SpriteFlags | None = None + size: SpriteSizeType | list[SpriteSizeType] | None = None + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + position: list[SpriteSizeType] | None = None + shift: Vector | None = None + rotate_shift: Boolean | None = None + apply_special_effect: Boolean | None = None + scale: Double | None = None + draw_as_shadow: Boolean | None = None + draw_as_glow: Boolean | None = None + draw_as_light: Boolean | None = None + mipmap_count: Uint8 | None = None + apply_runtime_tint: Boolean | None = None + tint_as_overlay: Boolean | None = None + invert_colors: Boolean | None = None + tint: Color | None = None + blend_mode: BlendMode | None = None + load_in_minimal_mode: Boolean | None = None + premul_alpha: Boolean | None = None + allow_forced_downscale: Boolean | None = None + generate_sdf: Boolean | None = None + surface: SpriteUsageSurfaceHint | None = None + usage: SpriteUsageHint | None = None + + +@dataclass +class SurfacePropertyPrototype: + type: Literal["surface-property"] + name: String + default_value: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + localised_unit_key: String | None = None + is_time: Boolean | None = None + + +@dataclass +class SurfacePrototype: + type: Literal["surface"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + surface_properties: dict[SurfacePropertyID, Double] | None = None + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + + +@dataclass +class TrainPathAchievementPrototype: + type: Literal["train-path-achievement"] + name: String + minimum_distance: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + + +@dataclass +class DrawingBoxes: + north: BoundingBox + east: BoundingBox + south: BoundingBox + west: BoundingBox + + +@dataclass +class TrivialSmokePrototype: + type: Literal["trivial-smoke"] + name: String + animation: Animation + duration: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + glow_animation: Animation | None = None + color: Color | None = None + start_scale: Float | None = None + end_scale: Float | None = None + movement_slow_down_factor: Double | None = None + spread_duration: Uint32 | None = None + fade_away_duration: Uint32 | None = None + fade_in_duration: Uint32 | None = None + glow_fade_away_duration: Uint32 | None = None + cyclic: Boolean | None = None + affected_by_wind: Boolean | None = None + show_when_smoke_off: Boolean | None = None + render_layer: RenderLayer | None = None + + +@dataclass +class TutorialDefinition: + type: Literal["tutorial"] + name: String + scenario: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + + +@dataclass +class UseEntityInEnergyProductionAchievementPrototype: + type: Literal["use-entity-in-energy-production-achievement"] + name: String + entity: EntityID + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + consumed_condition: ItemIDFilter | None = None + produced_condition: ItemIDFilter | None = None + required_to_build: EntityID | None = None + + +@dataclass +class UseItemAchievementPrototype: + type: Literal["use-item-achievement"] + name: String + to_use: ItemID + limit_quality: QualityID + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + steam_stats_name: String | None = None + allowed_without_fight: Boolean | None = None + amount: Uint32 | None = None + limited_to_one_game: Boolean | None = None + + +@dataclass +class UtilityConstants: + type: Literal["utility-constants"] + name: String + entity_button_background_color: Color + building_buildable_too_far_tint: Color + building_buildable_tint: Color + building_not_buildable_tint: Color + building_ignorable_tint: Color + building_no_tint: Color + underground_belt_max_distance_tint: Color + underground_pipe_max_distance_tint: Color + ghost_shader_tint: GhostTintSet + ghost_shaderless_tint: GhostTintSet + ghost_shimmer_settings: GhostShimmerConfig + probability_product_count_tint: Color + zero_count_value_tint: Color + equipment_default_background_color: Color + equipment_default_background_border_color: Color + equipment_default_grabbed_background_color: Color + turret_range_visualization_color: Color + capsule_range_visualization_color: Color + agricultural_range_visualization_color: Color + artillery_range_visualization_color: Color + chart: ChartUtilityConstants + gui_remark_color: Color + gui_search_match_foreground_color: Color + gui_search_match_background_color: Color + default_player_force_color: Color + default_enemy_force_color: Color + default_other_force_color: Color + deconstruct_mark_tint: Color + rail_planner_count_button_color: Color + count_button_size: Int32 + logistic_gui_unselected_network_highlight_tint: Color + logistic_gui_selected_network_highlight_tint: Color + chart_search_highlight: Color + selected_chart_search_highlight: Color + zoom_to_world_can_use_nightvision: Boolean + zoom_to_world_effect_strength: Float + max_logistic_filter_count: LogisticFilterIndex + max_terrain_building_size: Uint8 + small_area_size: Float + medium_area_size: Float + large_area_size: Float + huge_platform_animation_sound_area: Float + small_blueprint_area_size: Float + medium_blueprint_area_size: Float + large_blueprint_area_size: Float + enabled_recipe_slot_tint: Color + disabled_recipe_slot_tint: Color + disabled_recipe_slot_background_tint: Color + forced_enabled_recipe_slot_background_tint: Color + rail_segment_colors: list[Color] | dict[str, Any] + player_colors: list[PlayerColor] | dict[str, Any] + server_command_console_chat_color: Color + script_command_console_chat_color: Color + default_alert_icon_scale: Float + bonus_gui_ordering: BonusGuiOrdering + daytime_color_lookup: DaytimeColorLookupTable + zoom_to_world_daytime_color_lookup: DaytimeColorLookupTable + frozen_color_lookup: ColorLookupTable + map_editor: MapEditor + drop_item_radius: Float + checkerboard_white: Color + checkerboard_black: Color + item_outline_color: Color + item_outline_radius: Float + item_outline_inset: Float + item_outline_sharpness: Float + item_default_random_tint_strength: Color + spawner_evolution_factor_health_modifier: Float + item_health_bar_colors: list[ItemHealthBarColor] | dict[str, Any] + item_ammo_magazine_left_bar_color: Color + item_tool_durability_bar_color: Color + filter_outline_color: Color + icon_shadow_radius: Float + icon_shadow_inset: Float + icon_shadow_sharpness: Float + icon_shadow_color: Color + clipboard_history_size: Uint32 + recipe_step_limit: Uint32 + manual_rail_building_reach_modifier: Double + train_temporary_stop_wait_time: Uint32 + train_time_wait_condition_default: Uint32 + train_inactivity_wait_condition_default: Uint32 + unit_group_pathfind_resolution: Int8 + unit_group_max_pursue_distance: Double + dynamic_recipe_overload_factor: Double + minimum_recipe_overload_multiplier: Uint32 + maximum_recipe_overload_multiplier: Uint32 + entity_renderer_search_box_limits: EntityRendererSearchBoxLimits + light_renderer_search_distance_limit: Uint8 + tree_leaf_distortion_strength_far: Vector + tree_leaf_distortion_distortion_far: Vector + tree_leaf_distortion_speed_far: Vector + tree_leaf_distortion_strength_near: Vector + tree_leaf_distortion_distortion_near: Vector + tree_leaf_distortion_speed_near: Vector + tree_shadow_roughness: Float + tree_shadow_speed: Float + missing_preview_sprite_location: FileName + main_menu_background_image_location: FileName + main_menu_background_vignette_intensity: Float + main_menu_background_vignette_sharpness: Float + feedback_screenshot_subfolder_name: String + feedback_screenshot_file_name: String + default_scorch_mark_color: Color + minimap_slot_hovered_tint: Color + minimap_slot_clicked_tint: Color + clear_cursor_volume_modifier: Float + weapons_in_simulation_volume_modifier: Float + explosions_in_simulation_volume_modifier: Float + enemies_in_simulation_volume_modifier: Float + low_energy_robot_estimate_multiplier: Double + asteroid_spawning_offset: SimpleBoundingBox + asteroid_fading_range: Float + asteroid_spawning_with_random_orientation_max_speed: Double + asteroid_position_offset_to_speed_coefficient: Double + asteroid_collector_navmesh_refresh_tick_interval: Uint32 + asteroid_collector_blockage_update_tile_distance: Uint32 + asteroid_collector_max_nurbs_control_point_separation: Double + asteroid_collector_static_head_swing_strength_scale: Float + asteroid_collector_static_head_swing_segment_count: Uint32 + space_platform_acceleration_expression: MathExpression + space_platform_relative_speed_factor: Double + space_platform_starfield_movement_vector: Vector + space_platform_max_size: SimpleBoundingBox + space_platform_dump_cooldown: Uint32 + space_platform_manual_dump_cooldown: Uint32 + space_platform_max_relative_speed_deviation_for_asteroid_chunks_update: ( + Float + ) + space_platform_asteroid_chunk_trajectory_updates_per_tick: Uint32 + default_item_weight: Weight + rocket_lift_weight: Weight + factoriopedia_recycling_recipe_categories: ( + list[RecipeCategoryID] | dict[str, Any] + ) + max_fluid_flow: FluidAmount + default_pipeline_extent: Double + default_platform_procession_set: ProcessionSet + default_planet_procession_set: ProcessionSet + landing_area_clear_zone_radius: Float + landing_area_max_radius: Float + lightning_attractor_collection_range_color: Color + lightning_attractor_protection_range_color: Color + landing_squash_immunity: MapTick + ejected_item_lifetime: MapTick + ejected_item_speed: Double + ejected_item_direction_variation: Double + ejected_item_friction: Double + train_visualization: TrainVisualizationConstants + default_collision_masks: dict[String, CollisionMaskConnector] + show_chunk_components_collision_mask: CollisionMaskConnector + building_collision_mask: CollisionMaskConnector + water_collision_mask: CollisionMaskConnector + ghost_layer: CollisionLayerID + train_pushed_by_player_max_speed: Double + train_pushed_by_player_max_acceleration: Double + train_pushed_by_player_ignores_friction: Boolean + freezing_temperature: Double + train_on_elevated_rail_shadow_shift_multiplier: Vector + max_belt_stack_size: Uint8 + inserter_hand_stack_items_per_sprite: ItemCountType + inserter_hand_stack_max_sprites: ItemCountType + remote_view_LPF_min_cutoff_frequency: Float + remote_view_LPF_max_cutoff_frequency: Float + space_LPF_min_cutoff_frequency: Float + space_LPF_max_cutoff_frequency: Float + walking_sound_count_reduction_rate: Float + moving_sound_count_reduction_rate: Float + environment_sounds_transition_fade_in_ticks: Uint32 + starmap_orbit_default_color: Color + starmap_orbit_hovered_color: Color + starmap_orbit_clicked_color: Color + starmap_orbit_disabled_color: Color + time_to_show_full_health_bar: MapTick + capture_water_mask_at_layer: Uint8 + logistic_robots_use_busy_robots_queue: Boolean + construction_robots_use_busy_robots_queue: Boolean + quality_selector_dropdown_threshold: Uint8 + maximum_quality_jump: Uint8 + select_group_row_count: Uint8 + select_slot_row_count: Uint8 + crafting_queue_slots_per_row: Uint8 + logistic_slots_per_row: Uint8 + blueprint_big_slots_per_row: Uint8 + blueprint_small_slots_per_row: Uint8 + inventory_width: Uint8 + module_inventory_width: Uint8 + trash_inventory_width: Uint8 + tooltip_monitor_edge_border: Int32 + flying_text_ttl: Uint32 + train_path_finding: TrainPathFinding + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + default_alert_icon_shift_by_type: dict[String, Vector] | None = None + default_alert_icon_scale_by_type: dict[String, Float] | None = None + merge_bonus_gui_production_bonuses: Boolean | None = None + default_trigger_target_mask_by_type: ( + dict[String, TriggerTargetMask] | None + ) = None + main_menu_simulations: dict[String, SimulationDefinition] | None = None + color_filters: list[ColorFilter] | dict[str, Any] | None = None + + +@dataclass +class PlatformEntityBuildAnimations: + back_left: EntityBuildAnimationPiece + back_right: EntityBuildAnimationPiece + front_left: EntityBuildAnimationPiece + front_right: EntityBuildAnimationPiece + + +@dataclass +class VirtualSignalPrototype: + type: Literal["virtual-signal"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + + +@dataclass +class ActivateImpactTriggerEffectItem: + type: Literal["activate-impact"] + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + deliver_category: String | None = None + + +@dataclass +class AmmoDamageModifier: + type: Literal["ammo-damage"] + ammo_category: AmmoCategoryID + modifier: Double + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class ArtilleryRangeModifier: + modifier: Double + type: Literal["artillery-range"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class AsteroidVariation: + color_texture: Sprite + normal_map: Sprite + roughness_map: Sprite + shadow_shift: Vector | None = None + + +@dataclass +class AutoplaceSettings: + treat_missing_as_default: Boolean | None = None + settings: ( + dict[EntityID | TileID | DecorativeID, FrequencySizeRichness] | None + ) = None + + +@dataclass +class BeaconDistributionModifier: + modifier: Double + type: Literal["beacon-distribution"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class BeaconModuleVisualization: + has_empty_slot: Boolean | None = None + secondary_draw_order: Int8 | None = None + apply_module_tint: ModuleTint | None = None + render_layer: RenderLayer | None = None + pictures: SpriteVariations | None = None + + +@dataclass +class BeaconModuleVisualizations: + art_style: String + use_for_empty_slots: Boolean | None = None + tier_offset: Int32 | None = None + slots: ( + list[list[BeaconModuleVisualization] | dict[str, Any]] + | dict[str, Any] + | None + ) = None + + +@dataclass +class BeamGraphicsSet: + beam: BeamAnimationSet | None = None + ground: BeamAnimationSet | None = None + desired_segment_length: Float | None = None + random_end_animation_rotation: Boolean | None = None + transparent_start_end_animations: Boolean | None = None + randomize_animation_per_segment: Boolean | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class BeltReaderLayer: + sprites: RotatedAnimation + render_layer: RenderLayer | None = None + + +@dataclass +class BeltStackSizeBonusModifier: + modifier: Double + type: Literal["belt-stack-size-bonus"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class BoilerPictures: + structure: Animation + patch: Sprite | None = None + fire: Animation | None = None + fire_glow: Animation | None = None + + +@dataclass +class BorderImageSet: + scale: Double | None = None + border_width: Int32 | None = None + vertical_line: Sprite | None = None + horizontal_line: Sprite | None = None + top_right_corner: Sprite | None = None + bottom_right_corner: Sprite | None = None + bottom_left_corner: Sprite | None = None + top_left_coner: Sprite | None = None + top_t: Sprite | None = None + right_t: Sprite | None = None + bottom_t: Sprite | None = None + left_t: Sprite | None = None + cross: Sprite | None = None + top_end: Sprite | None = None + right_end: Sprite | None = None + bottom_end: Sprite | None = None + left_end: Sprite | None = None + + +@dataclass +class BoxSpecification: + sprite: Sprite + is_whole_box: Boolean | None = None + side_length: Double | None = None + side_height: Double | None = None + max_side_length: Double | None = None + + +@dataclass +class BuildEntityTechnologyTrigger: + type: Literal["build-entity"] + entity: EntityIDFilter + + +@dataclass +class BulkInserterCapacityBonusModifier: + modifier: Double + type: Literal["bulk-inserter-capacity-bonus"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class BurnerEnergySource: + type: Literal["burner"] + fuel_inventory_size: ItemStackIndex + emissions_per_minute: dict[AirbornePollutantID, Double] | None = None + render_no_power_icon: Boolean | None = None + render_no_network_icon: Boolean | None = None + burnt_inventory_size: ItemStackIndex | None = None + smoke: list[SmokeSource] | dict[str, Any] | None = None + light_flicker: LightFlickeringDefinition | None = None + effectivity: Double | None = None + burner_usage: BurnerUsageID | None = None + fuel_categories: list[FuelCategoryID] | dict[str, Any] | None = None + initial_fuel: ItemID | None = None + initial_fuel_percent: Double | None = None + + +@dataclass +class CameraEffectTriggerEffectItem: + type: Literal["camera-effect"] + duration: Uint8 + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + ease_in_duration: Uint8 | None = None + ease_out_duration: Uint8 | None = None + delay: Uint8 | None = None + full_strength_max_distance: Uint16 | None = None + max_distance: Uint16 | None = None + strength: Float | None = None + + +@dataclass +class CargoLandingPadLimitModifier: + modifier: Double + type: Literal["cargo-landing-pad-count"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class ChangeRecipeProductivityModifier: + type: Literal["change-recipe-productivity"] + recipe: RecipeID + change: EffectValue + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterArmorAnimation: + idle_with_gun: RotatedAnimation + running_with_gun: RotatedAnimation + mining_with_tool: RotatedAnimation + idle: RotatedAnimation | None = None + running: RotatedAnimation | None = None + flipped_shadow_running_with_gun: RotatedAnimation | None = None + idle_in_air: RotatedAnimation | None = None + idle_with_gun_in_air: RotatedAnimation | None = None + flying: RotatedAnimation | None = None + flying_with_gun: RotatedAnimation | None = None + take_off: RotatedAnimation | None = None + landing: RotatedAnimation | None = None + armors: list[ItemID] | dict[str, Any] | None = None + smoke_in_air: list[SmokeSource] | dict[str, Any] | None = None + smoke_cycles_per_tick: Float | None = None + extra_smoke_cycles_per_tile: Float | None = None + mining_with_tool_particles_animation_positions: ( + list[Float] | dict[str, Any] | None + ) = None + + +@dataclass +class CharacterBuildDistanceModifier: + modifier: Double + type: Literal["character-build-distance"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterCraftingSpeedModifier: + modifier: Double + type: Literal["character-crafting-speed"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterHealthBonusModifier: + modifier: Double + type: Literal["character-health-bonus"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterInventorySlotsBonusModifier: + modifier: Double + type: Literal["character-inventory-slots-bonus"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterItemDropDistanceModifier: + modifier: Double + type: Literal["character-item-drop-distance"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterItemPickupDistanceModifier: + modifier: Double + type: Literal["character-item-pickup-distance"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterLogisticRequestsModifier: + modifier: Boolean + type: Literal["character-logistic-requests"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterLogisticTrashSlotsModifier: + modifier: Double + type: Literal["character-logistic-trash-slots"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterLootPickupDistanceModifier: + modifier: Double + type: Literal["character-loot-pickup-distance"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterMiningSpeedModifier: + modifier: Double + type: Literal["character-mining-speed"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterReachDistanceModifier: + modifier: Double + type: Literal["character-reach-distance"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterResourceReachDistanceModifier: + modifier: Double + type: Literal["character-resource-reach-distance"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CharacterRunningSpeedModifier: + modifier: Double + type: Literal["character-running-speed"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CircuitConditionConnector: + first: SignalIDConnector | None = None + comparator: ComparatorString | None = None + second: SignalIDConnector | Int32 | None = None + + +@dataclass +class CircuitNetworkModifier: + modifier: Boolean + type: Literal["unlock-circuit-network"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CliffDeconstructionEnabledModifier: + modifier: Boolean + type: Literal["cliff-deconstruction-enabled"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CloudsEffectProperties: + shape_noise_texture: EffectTexture + detail_noise_texture: EffectTexture + warp_sample_1: CloudsTextureCoordinateTransformation + warp_sample_2: CloudsTextureCoordinateTransformation + warped_shape_sample: CloudsTextureCoordinateTransformation + additional_density_sample: CloudsTextureCoordinateTransformation + detail_sample_1: CloudsTextureCoordinateTransformation + detail_sample_2: CloudsTextureCoordinateTransformation + scale: Float | None = None + movement_speed_multiplier: Float | None = None + shape_warp_strength: Float | None = None + shape_warp_weight: Float | None = None + opacity: Float | None = None + opacity_at_night: Float | None = None + density: Float | None = None + density_at_night: Float | None = None + detail_factor: Float | None = None + detail_factor_at_night: Float | None = None + shape_factor: Float | None = None + detail_exponent: Float | None = None + detail_sample_morph_duration: Uint32 | None = None + + +@dataclass +class ConnectableEntityGraphics: + single: SpriteVariations + straight_vertical: SpriteVariations + straight_horizontal: SpriteVariations + corner_right_down: SpriteVariations + corner_left_down: SpriteVariations + corner_right_up: SpriteVariations + corner_left_up: SpriteVariations + t_up: SpriteVariations + t_right: SpriteVariations + t_down: SpriteVariations + t_left: SpriteVariations + ending_up: SpriteVariations + ending_right: SpriteVariations + ending_down: SpriteVariations + ending_left: SpriteVariations + cross: SpriteVariations + + +@dataclass +class CraftItemTechnologyTrigger: + type: Literal["craft-item"] + item: ItemIDFilter + count: ItemCountType | None = None + + +@dataclass +class CreateAsteroidChunkEffectItem: + type: Literal["create-asteroid-chunk"] + asteroid_name: AsteroidChunkID + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + offset_deviation: BoundingBox | None = None + offsets: list[Vector] | dict[str, Any] | None = None + + +@dataclass +class CreateDecorativesTriggerEffectItem: + decorative: DecorativeID + spawn_max: Uint16 + spawn_min_radius: Float + spawn_max_radius: Float + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + type: Literal["create-decorative"] = "create-decorative" + spawn_min: Uint16 | None = None + radius_curve: Float | None = None + apply_projection: Boolean | None = None + spread_evenly: Boolean | None = None + + +@dataclass +class CreateGhostOnEntityDeathModifier: + modifier: Boolean + type: Literal["create-ghost-on-entity-death"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class CreateParticleTriggerEffectItem: + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + type: Literal["create-particle"] = "create-particle" + particle_name: ParticleID | None = None + initial_height: Float | None = None + offset_deviation: SimpleBoundingBox | None = None + tile_collision_mask: CollisionMaskConnector | None = None + offsets: list[Vector] | dict[str, Any] | None = None + initial_height_deviation: Float | None = None + initial_vertical_speed: Float | None = None + initial_vertical_speed_deviation: Float | None = None + speed_from_center: Float | None = None + speed_from_center_deviation: Float | None = None + frame_speed: Float | None = None + frame_speed_deviation: Float | None = None + movement_multiplier: Float | None = None + tail_length: Uint8 | None = None + tail_length_deviation: Uint8 | None = None + tail_width: Float | None = None + rotate_offsets: Boolean | None = None + only_when_visible: Boolean | None = None + apply_tile_tint: ApplyTileTint | None = None + tint: Color | None = None + + +@dataclass +class CreateStickerTriggerEffectItem: + type: Literal["create-sticker"] + sticker: EntityID + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + trigger_created_entity: Boolean | None = None + + +@dataclass +class CreateTrivialSmokeEffectItem: + type: Literal["create-trivial-smoke"] + smoke_name: TrivialSmokeID + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + offset_deviation: BoundingBox | None = None + offsets: list[Vector] | dict[str, Any] | None = None + initial_height: Float | None = None + max_radius: Float | None = None + speed: Vector | None = None + speed_multiplier: Float | None = None + speed_multiplier_deviation: Float | None = None + starting_frame: Float | None = None + starting_frame_deviation: Float | None = None + speed_from_center: Float | None = None + speed_from_center_deviation: Float | None = None + only_when_visible: Boolean | None = None + + +@dataclass +class DamageEntityTriggerEffectItem: + type: Literal["damage"] + damage: DamageParameters + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + apply_damage_to_trees: Boolean | None = None + vaporize: Boolean | None = None + use_substitute: Boolean | None = None + lower_distance_threshold: Uint16 | None = None + upper_distance_threshold: Uint16 | None = None + lower_damage_modifier: Float | None = None + upper_damage_modifier: Float | None = None + + +@dataclass +class DamageTileTriggerEffectItem: + type: Literal["damage-tile"] + damage: DamageParameters + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + radius: Float | None = None + + +@dataclass +class DeconstructionTimeToLiveModifier: + modifier: Double + type: Literal["deconstruction-time-to-live"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class ElementImageSetLayer1: + draw_type: DrawType | None = None + type: Type | None = None + tint: Color | None = None + center: Sprite | None = None + left: Sprite | None = None + left_top: Sprite | None = None + left_bottom: Sprite | None = None + right: Sprite | None = None + right_top: Sprite | None = None + right_bottom: Sprite | None = None + top: Sprite | None = None + bottom: Sprite | None = None + corner_size: Uint16 | list[Uint16] | None = None + filename: FileName | None = None + position: MapPosition | None = None + load_in_minimal_mode: Boolean | None = None + top_width: SpriteSizeType | None = None + bottom_width: SpriteSizeType | None = None + left_height: SpriteSizeType | None = None + right_height: SpriteSizeType | None = None + center_width: SpriteSizeType | None = None + center_height: SpriteSizeType | None = None + scale: Double | None = None + top_border: Int32 | None = None + right_border: Int32 | None = None + bottom_border: Int32 | None = None + left_border: Int32 | None = None + border: Int32 | None = None + stretch_monolith_image_to_size: Boolean | None = None + left_tiling: Boolean | None = None + right_tiling: Boolean | None = None + top_tiling: Boolean | None = None + bottom_tiling: Boolean | None = None + center_tiling_vertical: Boolean | None = None + center_tiling_horizontal: Boolean | None = None + overall_tiling_horizontal_size: Uint16 | None = None + overall_tiling_horizontal_spacing: Uint16 | None = None + overall_tiling_horizontal_padding: Uint16 | None = None + overall_tiling_vertical_size: Uint16 | None = None + overall_tiling_vertical_spacing: Uint16 | None = None + overall_tiling_vertical_padding: Uint16 | None = None + custom_horizontal_tiling_sizes: list[Uint32] | dict[str, Any] | None = None + opacity: Double | None = None + background_blur: Boolean | None = None + background_blur_sigma: Float | None = None + top_outer_border_shift: Int32 | None = None + bottom_outer_border_shift: Int32 | None = None + right_outer_border_shift: Int32 | None = None + left_outer_border_shift: Int32 | None = None + + +ElementImageSetLayer: TypeAlias = ElementImageSetLayer1 | Sprite + + +@dataclass +class EnemySpawnerGraphicsSet: + animations: AnimationVariations | None = None + underwater_animations: AnimationVariations | None = None + underwater_layer_offset: Int8 | None = None + water_effect_map_animations: AnimationVariations | None = None + integration: SpriteVariations | None = None + random_animation_offset: Boolean | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class FollowerRobotLifetimeModifier: + modifier: Double + type: Literal["follower-robot-lifetime"] + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class FootstepTriggerEffectItem: + tiles: list[TileID] | dict[str, Any] + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + type: Literal["create-particle"] = "create-particle" + particle_name: ParticleID | None = None + initial_height: Float | None = None + offset_deviation: SimpleBoundingBox | None = None + tile_collision_mask: CollisionMaskConnector | None = None + offsets: list[Vector] | dict[str, Any] | None = None + initial_height_deviation: Float | None = None + initial_vertical_speed: Float | None = None + initial_vertical_speed_deviation: Float | None = None + speed_from_center: Float | None = None + speed_from_center_deviation: Float | None = None + frame_speed: Float | None = None + frame_speed_deviation: Float | None = None + movement_multiplier: Float | None = None + tail_length: Uint8 | None = None + tail_length_deviation: Uint8 | None = None + tail_width: Float | None = None + rotate_offsets: Boolean | None = None + only_when_visible: Boolean | None = None + apply_tile_tint: ApplyTileTint | None = None + tint: Color | None = None + actions: list[CreateParticleTriggerEffectItem] | dict[str, Any] | None = ( + None + ) + use_as_default: Boolean | None = None + + +FootstepTriggerEffectList: TypeAlias = ( + list[FootstepTriggerEffectItem] | dict[str, Any] +) + + +@dataclass +class FusionGeneratorFluidInputGraphics: + sprite: Sprite | None = None + working_light: Sprite | None = None + fusion_effect_uv_map: Sprite | None = None + + +@dataclass +class FusionReactorConnectionGraphics: + pictures: Animation | None = None + working_light_pictures: Animation | None = None + fusion_effect_uv_map: Sprite | None = None + + +@dataclass +class GiveItemModifier: + type: Literal["give-item"] + item: ItemID + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + quality: QualityID | None = None + count: ItemCountType | None = None + + +@dataclass +class GraphStyleSpecification: + type: Literal["graph_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + background_color: Color | None = None + line_colors: list[Color] | dict[str, Any] | None = None + horizontal_label_style: LabelStyleSpecification | None = None + vertical_label_style: LabelStyleSpecification | None = None + minimal_horizontal_label_spacing: Uint32 | None = None + minimal_vertical_label_spacing: Uint32 | None = None + horizontal_labels_margin: Uint32 | None = None + vertical_labels_margin: Uint32 | None = None + graph_top_margin: Uint32 | None = None + graph_right_margin: Uint32 | None = None + data_line_highlight_distance: Uint32 | None = None + selection_dot_radius: Uint32 | None = None + grid_lines_color: Color | None = None + guide_lines_color: Color | None = None + font: String | None = None + + +@dataclass +class GunSpeedModifier: + type: Literal["gun-speed"] + ammo_category: AmmoCategoryID + modifier: Double + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hidden: Boolean | None = None + infer_icon: Boolean | None = None + use_icon_overlay_constant: Boolean | None = None + + +@dataclass +class LayeredSprite1: + render_layer: RenderLayer + filename: FileName | None = None + size: SpriteSizeType | list[SpriteSizeType] | None = None + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + position: list[SpriteSizeType] | None = None + load_in_minimal_mode: Boolean | None = None + premul_alpha: Boolean | None = None + allow_forced_downscale: Boolean | None = None + priority: SpritePriority | None = None + flags: SpriteFlags | None = None + shift: Vector | None = None + rotate_shift: Boolean | None = None + apply_special_effect: Boolean | None = None + scale: Double | None = None + draw_as_shadow: Boolean | None = None + draw_as_glow: Boolean | None = None + draw_as_light: Boolean | None = None + occludes_light: Boolean | None = None + mipmap_count: Uint8 | None = None + apply_runtime_tint: Boolean | None = None + tint_as_overlay: Boolean | None = None + invert_colors: Boolean | None = None + tint: Color | None = None + blend_mode: BlendMode | None = None + generate_sdf: Boolean | None = None + surface: SpriteUsageSurfaceHint | None = None + usage: SpriteUsageHint | None = None + layers: list[Sprite] | dict[str, Any] | None = None + dice: SpriteSizeType | None = None + dice_x: SpriteSizeType | None = None + dice_y: SpriteSizeType | None = None + + +LayeredSprite: TypeAlias = LayeredSprite1 | ( + list["LayeredSprite"] | dict[str, Any] +) + + +LayeredSpriteVariations: TypeAlias = list[LayeredSprite] | dict[str, Any] + + +@dataclass +class LightDefinition1: + intensity: Float + size: Float + type: Type2 | None = None + picture: Sprite | None = None + rotation_shift: RealOrientation | None = None + source_orientation_offset: RealOrientation | None = None + add_perspective: Boolean | None = None + flicker_interval: Uint8 | None = None + flicker_min_modifier: Float | None = None + flicker_max_modifier: Float | None = None + offset_flicker: Boolean | None = None + shift: Vector | None = None + color: Color | None = None + minimum_darkness: Float | None = None + + +@dataclass +class LightDefinitionItem: + intensity: Float + size: Float + type: Type2 | None = None + picture: Sprite | None = None + rotation_shift: RealOrientation | None = None + source_orientation_offset: RealOrientation | None = None + add_perspective: Boolean | None = None + flicker_interval: Uint8 | None = None + flicker_min_modifier: Float | None = None + flicker_max_modifier: Float | None = None + offset_flicker: Boolean | None = None + shift: Vector | None = None + color: Color | None = None + minimum_darkness: Float | None = None + + +LightDefinition: TypeAlias = ( + LightDefinition1 | list[LightDefinitionItem] | dict[str, Any] +) + + +@dataclass +class LightningGraphicsSet: + shader_configuration: ( + list[ShaderConfigurationItem] | dict[str, Any] | None + ) = None + bolt_half_width: Float | None = None + bolt_midpoint_variance: Float | None = None + max_bolt_offset: Float | None = None + max_fork_probability: Float | None = None + min_relative_fork_length: Float | None = None + max_relative_fork_length: Float | None = None + fork_orientation_variance: Float | None = None + fork_intensity_multiplier: Float | None = None + relative_cloud_fork_length: Float | None = None + cloud_fork_orientation_variance: Float | None = None + min_ground_streamer_distance: Float | None = None + max_ground_streamer_distance: Float | None = None + ground_streamer_variance: Float | None = None + cloud_forks: Uint8 | None = None + cloud_detail_level: Uint8 | None = None + bolt_detail_level: Uint8 | None = None + cloud_background: Animation | None = None + explosion: AnimationVariations | None = None + attractor_hit_animation: Animation | None = None + ground_streamers: list[Animation] | dict[str, Any] | None = None + light: LightDefinition | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class LightningProperties: + lightnings_per_chunk_per_tick: Double + search_radius: Double + lightning_types: list[EntityID] | dict[str, Any] + priority_rules: list[LightningPriorityRule] | dict[str, Any] | None = None + exemption_rules: list[LightningRuleBase] | dict[str, Any] | None = None + lightning_multiplier_at_day: Double | None = None + lightning_multiplier_at_night: Double | None = None + multiplier_surface_property: SurfacePropertyID | None = None + lightning_warning_icon: Sprite | None = None + + +@dataclass +class LineStyleSpecification: + type: Literal["line_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + border: BorderImageSet | None = None + + +@dataclass +class MapGenSettings: + default_enable_all_autoplace_controls: Boolean | None = None + autoplace_controls: ( + dict[AutoplaceControlID, FrequencySizeRichness] | None + ) = None + autoplace_settings: dict[AutoplaceSettings1, AutoplaceSettings] | None = ( + None + ) + property_expression_names: ( + dict[String, String | Boolean | Double] | None + ) = None + starting_points: list[MapPosition] | dict[str, Any] | None = None + seed: Uint32 | None = None + width: Uint32 | None = None + height: Uint32 | None = None + starting_area: MapGenSize | None = None + peaceful_mode: Boolean | None = None + no_enemies_mode: Boolean | None = None + cliff_settings: CliffPlacementSettings | None = None + territory_settings: TerritorySettings | None = None + + +Modifier: TypeAlias = ( + InserterStackSizeBonusModifier + | BulkInserterCapacityBonusModifier + | LaboratorySpeedModifier + | CharacterLogisticTrashSlotsModifier + | MaximumFollowingRobotsCountModifier + | WorkerRobotSpeedModifier + | WorkerRobotStorageModifier + | TurretAttackModifier + | AmmoDamageModifier + | GiveItemModifier + | GunSpeedModifier + | UnlockRecipeModifier + | CharacterCraftingSpeedModifier + | CharacterMiningSpeedModifier + | CharacterRunningSpeedModifier + | CharacterBuildDistanceModifier + | CharacterItemDropDistanceModifier + | CharacterReachDistanceModifier + | CharacterResourceReachDistanceModifier + | CharacterItemPickupDistanceModifier + | CharacterLootPickupDistanceModifier + | CharacterInventorySlotsBonusModifier + | DeconstructionTimeToLiveModifier + | MaxFailedAttemptsPerTickPerConstructionQueueModifier + | MaxSuccessfulAttemptsPerTickPerConstructionQueueModifier + | CharacterHealthBonusModifier + | MiningDrillProductivityBonusModifier + | TrainBrakingForceBonusModifier + | WorkerRobotBatteryModifier + | LaboratoryProductivityModifier + | FollowerRobotLifetimeModifier + | ArtilleryRangeModifier + | NothingModifier + | CharacterLogisticRequestsModifier + | VehicleLogisticsModifier + | UnlockSpaceLocationModifier + | UnlockQualityModifier + | SpacePlatformsModifier + | CircuitNetworkModifier + | CargoLandingPadLimitModifier + | ChangeRecipeProductivityModifier + | CliffDeconstructionEnabledModifier + | MiningWithFluidModifier + | RailSupportOnDeepOilOceanModifier + | RailPlannerAllowElevatedRailsModifier + | BeaconDistributionModifier + | CreateGhostOnEntityDeathModifier + | BeltStackSizeBonusModifier +) + + +@dataclass +class OrientedCliffPrototype: + collision_bounding_box: BoundingBox + render_layer: RenderLayer | None = None + pictures: SpriteVariations | None = None + pictures_lower: SpriteVariations | None = None + + +@dataclass +class PipePictures: + straight_vertical_single: Sprite | None = None + straight_vertical: Sprite | None = None + straight_vertical_window: Sprite | None = None + straight_horizontal: Sprite | None = None + straight_horizontal_window: Sprite | None = None + corner_up_right: Sprite | None = None + corner_up_left: Sprite | None = None + corner_down_right: Sprite | None = None + corner_down_left: Sprite | None = None + t_up: Sprite | None = None + t_down: Sprite | None = None + t_right: Sprite | None = None + t_left: Sprite | None = None + cross: Sprite | None = None + ending_up: Sprite | None = None + ending_down: Sprite | None = None + ending_right: Sprite | None = None + ending_left: Sprite | None = None + straight_vertical_single_frozen: Sprite | None = None + straight_vertical_frozen: Sprite | None = None + straight_vertical_window_frozen: Sprite | None = None + straight_horizontal_frozen: Sprite | None = None + straight_horizontal_window_frozen: Sprite | None = None + corner_up_right_frozen: Sprite | None = None + corner_up_left_frozen: Sprite | None = None + corner_down_right_frozen: Sprite | None = None + corner_down_left_frozen: Sprite | None = None + t_up_frozen: Sprite | None = None + t_down_frozen: Sprite | None = None + t_right_frozen: Sprite | None = None + t_left_frozen: Sprite | None = None + cross_frozen: Sprite | None = None + ending_up_frozen: Sprite | None = None + ending_down_frozen: Sprite | None = None + ending_right_frozen: Sprite | None = None + ending_left_frozen: Sprite | None = None + straight_vertical_single_visualization: Sprite | None = None + straight_vertical_visualization: Sprite | None = None + straight_vertical_window_visualization: Sprite | None = None + straight_horizontal_visualization: Sprite | None = None + straight_horizontal_window_visualization: Sprite | None = None + corner_up_right_visualization: Sprite | None = None + corner_up_left_visualization: Sprite | None = None + corner_down_right_visualization: Sprite | None = None + corner_down_left_visualization: Sprite | None = None + t_up_visualization: Sprite | None = None + t_down_visualization: Sprite | None = None + t_right_visualization: Sprite | None = None + t_left_visualization: Sprite | None = None + cross_visualization: Sprite | None = None + ending_up_visualization: Sprite | None = None + ending_down_visualization: Sprite | None = None + ending_right_visualization: Sprite | None = None + ending_left_visualization: Sprite | None = None + straight_vertical_single_disabled_visualization: Sprite | None = None + straight_vertical_disabled_visualization: Sprite | None = None + straight_vertical_window_disabled_visualization: Sprite | None = None + straight_horizontal_disabled_visualization: Sprite | None = None + straight_horizontal_window_disabled_visualization: Sprite | None = None + corner_up_right_disabled_visualization: Sprite | None = None + corner_up_left_disabled_visualization: Sprite | None = None + corner_down_right_disabled_visualization: Sprite | None = None + corner_down_left_disabled_visualization: Sprite | None = None + t_up_disabled_visualization: Sprite | None = None + t_down_disabled_visualization: Sprite | None = None + t_right_disabled_visualization: Sprite | None = None + t_left_disabled_visualization: Sprite | None = None + cross_disabled_visualization: Sprite | None = None + ending_up_disabled_visualization: Sprite | None = None + ending_down_disabled_visualization: Sprite | None = None + ending_right_disabled_visualization: Sprite | None = None + ending_left_disabled_visualization: Sprite | None = None + horizontal_window_background: Sprite | None = None + vertical_window_background: Sprite | None = None + fluid_background: Sprite | None = None + low_temperature_flow: Sprite | None = None + middle_temperature_flow: Sprite | None = None + high_temperature_flow: Sprite | None = None + gas_flow: Animation | None = None + + +@dataclass +class PlanetPrototypeMapGenSettings: + cliff_settings: CliffPlacementSettings | None = None + territory_settings: TerritorySettings | None = None + autoplace_controls: ( + dict[AutoplaceControlID, FrequencySizeRichness] | None + ) = None + autoplace_settings: dict[AutoplaceSettings1, AutoplaceSettings] | None = ( + None + ) + property_expression_names: ( + dict[String, String | Boolean | Double] | None + ) = None + moisture_climate_control: Boolean | None = None + aux_climate_control: Boolean | None = None + + +@dataclass +class ProcessionGraphic: + type: ProcessionGraphicType + sprite: Sprite | None = None + animation: Animation | None = None + catalogue_id: Uint32 | None = None + + +@dataclass +class ProcessionGraphicCatalogueItem: + index: Uint32 + animation: Animation | None = None + sprite: Sprite | None = None + + +@dataclass +class PuddleTileEffectParameters: + puddle_noise_texture: EffectTexture + water_effect_parameters: WaterTileEffectParameters | None = None + water_effect: TileEffectDefinitionID | None = None + + +@dataclass +class PumpConnectorGraphics: + north: list[PumpConnectorGraphicsAnimation] | dict[str, Any] + east: list[PumpConnectorGraphicsAnimation] | dict[str, Any] + south: list[PumpConnectorGraphicsAnimation] | dict[str, Any] + west: list[PumpConnectorGraphicsAnimation] | dict[str, Any] + + +@dataclass +class RadiusVisualisationSpecification: + sprite: Sprite | None = None + distance: Double | None = None + offset: Vector | None = None + draw_in_cursor: Boolean | None = None + draw_on_selection: Boolean | None = None + + +@dataclass +class RailFenceDirectionSet: + north: SpriteVariations | None = None + northeast: SpriteVariations | None = None + east: SpriteVariations | None = None + southeast: SpriteVariations | None = None + south: SpriteVariations | None = None + southwest: SpriteVariations | None = None + west: SpriteVariations | None = None + northwest: SpriteVariations | None = None + + +@dataclass +class RailFencePictureSet: + ends: list[RailFenceDirectionSet] + fence: RailFenceDirectionSet + ends_upper: list[RailFenceDirectionSet] | None = None + fence_upper: RailFenceDirectionSet | None = None + + +@dataclass +class RailPieceLayers: + metals: SpriteVariations | None = None + backplates: SpriteVariations | None = None + ties: SpriteVariations | None = None + stone_path: SpriteVariations | None = None + stone_path_background: SpriteVariations | None = None + segment_visualisation_middle: Sprite | None = None + water_reflection: Sprite | None = None + underwater_structure: Sprite | None = None + shadow_subtract_mask: Sprite | None = None + shadow_mask: Sprite | None = None + + +@dataclass +class RailSignalLightDefinition: + light: LightDefinition + shift: Vector | None = None + + +@dataclass +class RailSignalLights: + red: RailSignalLightDefinition | None = None + green: RailSignalLightDefinition | None = None + blue: RailSignalLightDefinition | None = None + yellow: RailSignalLightDefinition | None = None + + +@dataclass +class RotatedSprite: + filename: FileName | None = None + size: SpriteSizeType | list[SpriteSizeType] | None = None + width: SpriteSizeType | None = None + height: SpriteSizeType | None = None + x: SpriteSizeType | None = None + y: SpriteSizeType | None = None + position: list[SpriteSizeType] | None = None + load_in_minimal_mode: Boolean | None = None + premul_alpha: Boolean | None = None + allow_forced_downscale: Boolean | None = None + priority: SpritePriority | None = None + flags: SpriteFlags | None = None + shift: Vector | None = None + rotate_shift: Boolean | None = None + apply_special_effect: Boolean | None = None + scale: Double | None = None + draw_as_shadow: Boolean | None = None + draw_as_glow: Boolean | None = None + draw_as_light: Boolean | None = None + occludes_light: Boolean | None = None + mipmap_count: Uint8 | None = None + apply_runtime_tint: Boolean | None = None + tint_as_overlay: Boolean | None = None + invert_colors: Boolean | None = None + tint: Color | None = None + blend_mode: BlendMode | None = None + generate_sdf: Boolean | None = None + surface: SpriteUsageSurfaceHint | None = None + usage: SpriteUsageHint | None = None + layers: list[RotatedSprite] | dict[str, Any] | None = None + direction_count: Uint16 | None = None + filenames: list[FileName] | dict[str, Any] | None = None + lines_per_file: Uint64 | None = None + dice: SpriteSizeType | None = None + dice_x: SpriteSizeType | None = None + dice_y: SpriteSizeType | None = None + back_equals_front: Boolean | None = None + apply_projection: Boolean | None = None + counterclockwise: Boolean | None = None + line_length: Uint32 | None = None + allow_low_quality_rotation: Boolean | None = None + frames: list[RotatedSpriteFrame] | dict[str, Any] | None = None + + +@dataclass +class SingleGraphicProcessionLayer: + type: Literal["single-graphic"] + graphic: ProcessionGraphic + frames: list[Frame5] | dict[str, Any] + render_layer: RenderLayer | None = None + secondary_draw_order: Int8 | None = None + relative_to: EffectRelativeTo | None = None + compensated_pivot: Boolean | None = None + rotates_with_pod: Boolean | None = None + shift_rotates_with_pod: Boolean | None = None + is_passenger_only: Boolean | None = None + clip_with_hatches: Boolean | None = None + animation_driven_by_curve: Boolean | None = None + + +@dataclass +class Sound1: + category: SoundType | None = None + priority: Uint8 | None = None + aggregation: AggregationSpecification | None = None + allow_random_repeat: Boolean | None = None + audible_distance_modifier: Double | None = None + game_controller_vibration_data: GameControllerVibrationData | None = None + advanced_volume_control: AdvancedVolumeControl | None = None + speed_smoothing_window_size: Uint32 | None = None + variations: ( + SoundDefinition | list[SoundDefinition] | dict[str, Any] | None + ) = None + filename: FileName | None = None + volume: Float | None = None + min_volume: Float | None = None + max_volume: Float | None = None + preload: Boolean | None = None + speed: Float | None = None + min_speed: Float | None = None + max_speed: Float | None = None + modifiers: SoundModifier | list[SoundModifier] | dict[str, Any] | None = ( + None + ) + + +Sound: TypeAlias = ( + Sound1 | SoundDefinition | list[SoundDefinition] | dict[str, Any] | String +) + + +@dataclass +class SoundAccent: + sound: Sound | None = None + frame: Uint16 | None = None + play_for_working_visualisation: String | None = None + + +@dataclass +class SpiderLegPart: + top_end: RotatedSprite | None = None + middle: RotatedSprite | None = None + bottom_end: RotatedSprite | None = None + middle_offset_from_top: Float | None = None + middle_offset_from_bottom: Float | None = None + top_end_length: Float | None = None + bottom_end_length: Float | None = None + top_end_offset: Float | None = None + bottom_end_offset: Float | None = None + render_layer: RenderLayer | None = None + + +@dataclass +class SpiderTorsoGraphicsSet: + base_animation: RotatedAnimation | None = None + shadow_base_animation: RotatedAnimation | None = None + animation: RotatedAnimation | None = None + shadow_animation: RotatedAnimation | None = None + base_render_layer: RenderLayer | None = None + render_layer: RenderLayer | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class SpiderVehicleGraphicsSet: + base_animation: RotatedAnimation | None = None + shadow_base_animation: RotatedAnimation | None = None + animation: RotatedAnimation | None = None + shadow_animation: RotatedAnimation | None = None + base_render_layer: RenderLayer | None = None + render_layer: RenderLayer | None = None + water_reflection: WaterReflectionDefinition | None = None + autopilot_destination_visualisation_render_layer: RenderLayer | None = None + light: LightDefinition | None = None + eye_light: LightDefinition | None = None + autopilot_destination_on_map_visualisation: Animation | None = None + autopilot_destination_queue_on_map_visualisation: Animation | None = None + autopilot_destination_visualisation: Animation | None = None + autopilot_destination_queue_visualisation: Animation | None = None + autopilot_path_visualisation_line_width: Float | None = None + autopilot_path_visualisation_on_map_line_width: Float | None = None + light_positions: ( + list[list[Vector] | dict[str, Any]] | dict[str, Any] | None + ) = None + default_color: Float | Color | None = None + + +@dataclass +class Sprite16Way: + sheets: list[SpriteNWaySheet] | dict[str, Any] | None = None + sheet: SpriteNWaySheet | None = None + north: Sprite | None = None + north_north_east: Sprite | None = None + north_east: Sprite | None = None + east_north_east: Sprite | None = None + east: Sprite | None = None + east_south_east: Sprite | None = None + south_east: Sprite | None = None + south_south_east: Sprite | None = None + south: Sprite | None = None + south_south_west: Sprite | None = None + south_west: Sprite | None = None + west_south_west: Sprite | None = None + west: Sprite | None = None + west_north_west: Sprite | None = None + north_west: Sprite | None = None + north_north_west: Sprite | None = None + + +@dataclass +class Sprite4Way1: + sheets: list[SpriteNWaySheet] | dict[str, Any] | None = None + sheet: SpriteNWaySheet | None = None + north: Sprite | None = None + east: Sprite | None = None + south: Sprite | None = None + west: Sprite | None = None + + +Sprite4Way: TypeAlias = Sprite4Way1 | Sprite + + +@dataclass +class StatelessVisualisation: + animation: AnimationVariations | None = None + shadow: AnimationVariations | None = None + light: LightDefinition | None = None + count: Uint16 | None = None + min_count: Uint16 | None = None + max_count: Uint16 | None = None + period: Uint16 | None = None + particle_tick_offset: Float | None = None + probability: Float | None = None + offset_x: RangedValue | None = None + offset_y: RangedValue | None = None + offset_z: RangedValue | None = None + speed_x: RangedValue | None = None + speed_y: RangedValue | None = None + speed_z: RangedValue | None = None + acceleration_x: Float | None = None + acceleration_y: Float | None = None + acceleration_z: Float | None = None + movement_slowdown_factor_x: Float | None = None + movement_slowdown_factor_y: Float | None = None + movement_slowdown_factor_z: Float | None = None + scale: RangedValue | None = None + begin_scale: Float | None = None + end_scale: Float | None = None + fade_in_progress_duration: Float | None = None + fade_out_progress_duration: Float | None = None + spread_progress_duration: Float | None = None + adjust_animation_speed_by_base_scale: Boolean | None = None + affected_by_wind: Boolean | None = None + render_layer: RenderLayer | None = None + positions: list[Vector] | dict[str, Any] | None = None + nested_visualisations: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + can_lay_on_the_ground: Boolean | None = None + + +@dataclass +class SurfaceRenderParameters: + day_night_cycle_color_lookup: DaytimeColorLookupTable | None = None + shadow_opacity: Float | None = None + draw_sprite_clouds: Boolean | None = None + clouds: CloudsEffectProperties | None = None + fog: FogEffectProperties | None = None + terrain_tint_effect: GlobalTintEffectProperties | None = None + space_dust_background: SpaceDustEffectProperties | None = None + space_dust_foreground: SpaceDustEffectProperties | None = None + + +TechnologyTrigger: TypeAlias = ( + MineEntityTechnologyTrigger + | CraftItemTechnologyTrigger + | CraftFluidTechnologyTrigger + | SendItemToOrbitTechnologyTrigger + | CaptureSpawnerTechnologyTrigger + | BuildEntityTechnologyTrigger + | CreateSpacePlatformTechnologyTrigger + | ScriptedTechnologyTrigger +) + + +@dataclass +class TrainStopLight: + picture: Sprite4Way + red_picture: Sprite4Way + light: LightDefinition + + +@dataclass +class TransportBeltAnimationSet: + animation_set: RotatedAnimation + east_index: Uint8 | None = None + west_index: Uint8 | None = None + north_index: Uint8 | None = None + south_index: Uint8 | None = None + starting_south_index: Uint8 | None = None + ending_south_index: Uint8 | None = None + starting_west_index: Uint8 | None = None + ending_west_index: Uint8 | None = None + starting_north_index: Uint8 | None = None + ending_north_index: Uint8 | None = None + starting_east_index: Uint8 | None = None + ending_east_index: Uint8 | None = None + frozen_patch: RotatedSprite | None = None + east_index_frozen: Uint8 | None = None + west_index_frozen: Uint8 | None = None + north_index_frozen: Uint8 | None = None + south_index_frozen: Uint8 | None = None + starting_south_index_frozen: Uint8 | None = None + ending_south_index_frozen: Uint8 | None = None + starting_west_index_frozen: Uint8 | None = None + ending_west_index_frozen: Uint8 | None = None + starting_north_index_frozen: Uint8 | None = None + ending_north_index_frozen: Uint8 | None = None + starting_east_index_frozen: Uint8 | None = None + ending_east_index_frozen: Uint8 | None = None + alternate: Boolean | None = None + belt_reader: list[BeltReaderLayer] | dict[str, Any] | None = None + + +@dataclass +class TransportBeltAnimationSetWithCorners: + animation_set: RotatedAnimation + east_index: Uint8 | None = None + west_index: Uint8 | None = None + north_index: Uint8 | None = None + south_index: Uint8 | None = None + starting_south_index: Uint8 | None = None + ending_south_index: Uint8 | None = None + starting_west_index: Uint8 | None = None + ending_west_index: Uint8 | None = None + starting_north_index: Uint8 | None = None + ending_north_index: Uint8 | None = None + starting_east_index: Uint8 | None = None + ending_east_index: Uint8 | None = None + frozen_patch: RotatedSprite | None = None + east_index_frozen: Uint8 | None = None + west_index_frozen: Uint8 | None = None + north_index_frozen: Uint8 | None = None + south_index_frozen: Uint8 | None = None + starting_south_index_frozen: Uint8 | None = None + ending_south_index_frozen: Uint8 | None = None + starting_west_index_frozen: Uint8 | None = None + ending_west_index_frozen: Uint8 | None = None + starting_north_index_frozen: Uint8 | None = None + ending_north_index_frozen: Uint8 | None = None + starting_east_index_frozen: Uint8 | None = None + ending_east_index_frozen: Uint8 | None = None + alternate: Boolean | None = None + belt_reader: list[BeltReaderLayer] | dict[str, Any] | None = None + east_to_north_index: Uint8 | None = None + north_to_east_index: Uint8 | None = None + west_to_north_index: Uint8 | None = None + north_to_west_index: Uint8 | None = None + south_to_east_index: Uint8 | None = None + east_to_south_index: Uint8 | None = None + south_to_west_index: Uint8 | None = None + west_to_south_index: Uint8 | None = None + east_to_north_index_frozen: Uint8 | None = None + north_to_east_index_frozen: Uint8 | None = None + west_to_north_index_frozen: Uint8 | None = None + north_to_west_index_frozen: Uint8 | None = None + south_to_east_index_frozen: Uint8 | None = None + east_to_south_index_frozen: Uint8 | None = None + south_to_west_index_frozen: Uint8 | None = None + west_to_south_index_frozen: Uint8 | None = None + + +@dataclass +class TreeVariation: + trunk: Animation + leaves: Animation + leaf_generation: CreateParticleTriggerEffectItem | None = None + branch_generation: CreateParticleTriggerEffectItem | None = None + shadow: Animation | None = None + disable_shadow_distortion_beginning_at_frame: Uint32 | None = None + normal: Animation | None = None + overlay: Animation | None = None + underwater: Animation | None = None + underwater_layer_offset: Int8 | None = None + leaves_when_mined_manually: Uint8 | None = None + leaves_when_mined_automatically: Uint8 | None = None + leaves_when_damaged: Uint8 | None = None + leaves_when_destroyed: Uint8 | None = None + branches_when_mined_manually: Uint8 | None = None + branches_when_mined_automatically: Uint8 | None = None + branches_when_damaged: Uint8 | None = None + branches_when_destroyed: Uint8 | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class TurretGraphicsSet: + base_visualisation: ( + TurretBaseVisualisation + | list[TurretBaseVisualisation] + | dict[str, Any] + | None + ) = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class TurretSpecialEffect: + type: Literal["mask-by-circle"] + center: TurretSpecialEffectCenter | None = None + min_radius: Float | None = None + max_radius: Float | None = None + falloff: Float | None = None + attacking_min_radius: Float | None = None + attacking_max_radius: Float | None = None + attacking_falloff: Float | None = None + + +@dataclass +class VariableAmbientSoundLayer: + name: String + variants: list[Sound] | dict[str, Any] + composition_mode: VariableAmbientSoundCompositionMode + control_layer: String | None = None + control_layer_sample_mapping: ( + list[list[Uint8] | dict[str, Any]] | dict[str, Any] | None + ) = None + has_start_sample: Boolean | None = None + has_end_sample: Boolean | None = None + number_of_sublayers: Uint8 | None = None + sublayer_starting_offset: RandomRange | ProbabilityTable | None = None + sublayer_offset: RandomRange | ProbabilityTable | None = None + sample_length: RandomRange | None = None + + +@dataclass +class VariableAmbientSoundVariableSound: + layers: list[VariableAmbientSoundLayer] | dict[str, Any] + states: list[VariableAmbientSoundState] | dict[str, Any] + length_seconds: Uint32 + intermezzo: Sound | None = None + alignment_samples: Uint32 | None = None + + +@dataclass +class WorkingVisualisation: + render_layer: RenderLayer | None = None + fadeout: Boolean | None = None + synced_fadeout: Boolean | None = None + constant_speed: Boolean | None = None + always_draw: Boolean | None = None + animated_shift: Boolean | None = None + align_to_waypoint: Boolean | None = None + mining_drill_scorch_mark: Boolean | None = None + secondary_draw_order: Int8 | None = None + light: LightDefinition | None = None + effect: Effect32 | None = None + apply_recipe_tint: ApplyRecipeTint | None = None + apply_tint: ApplyTint | None = None + north_animation: Animation | None = None + east_animation: Animation | None = None + south_animation: Animation | None = None + west_animation: Animation | None = None + north_position: Vector | None = None + east_position: Vector | None = None + south_position: Vector | None = None + west_position: Vector | None = None + north_secondary_draw_order: Int8 | None = None + east_secondary_draw_order: Int8 | None = None + south_secondary_draw_order: Int8 | None = None + west_secondary_draw_order: Int8 | None = None + north_fog_mask: FogMaskShapeDefinition | None = None + east_fog_mask: FogMaskShapeDefinition | None = None + south_fog_mask: FogMaskShapeDefinition | None = None + west_fog_mask: FogMaskShapeDefinition | None = None + fog_mask: FogMaskShapeDefinition | None = None + animation: Animation | None = None + draw_in_states: list[String] | dict[str, Any] | None = None + draw_when_state_filter_matches: Boolean | None = None + enabled_by_name: Boolean | None = None + name: String | None = None + enabled_in_animated_shift_during_waypoint_stop: Boolean | None = None + enabled_in_animated_shift_during_transition: Boolean | None = None + frame_based_on_shift_animation_progress: Boolean | None = None + scorch_mark_fade_out_duration: Uint16 | None = None + scorch_mark_lifetime: Uint16 | None = None + scorch_mark_fade_in_frames: Uint8 | None = None + + +@dataclass +class WorldAmbientSoundDefinition1: + sound: Sound | None = None + radius: Double | None = None + min_entity_count: Uint32 | None = None + max_entity_count: Uint32 | None = None + entity_to_sound_ratio: Float | None = None + average_pause_seconds: Double | None = None + + +WorldAmbientSoundDefinition: TypeAlias = WorldAmbientSoundDefinition1 | Sound + + +@dataclass +class AmbientSound: + type: Literal["ambient-sound"] + name: String + track_type: AmbientSoundType + weight: Double | None = None + planet: SpaceLocationID | None = None + sound: Sound | None = None + variable_sound: VariableAmbientSoundVariableSound | None = None + + +@dataclass +class GraphicsSet: + animation: Animation4Way | None = None + status_lamp_picture_on: RotatedSprite | None = None + status_lamp_picture_full: RotatedSprite | None = None + status_lamp_picture_off: RotatedSprite | None = None + below_arm_pictures: RotatedSprite | None = None + below_ground_pictures: RotatedSprite | None = None + arm_head_animation: RotatedAnimation | None = None + arm_head_top_animation: RotatedAnimation | None = None + arm_link: RotatedSprite | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class Pictures: + north: BoilerPictures + east: BoilerPictures + south: BoilerPictures + west: BoilerPictures + + +@dataclass +class Orientations: + west_to_east: OrientedCliffPrototype + north_to_south: OrientedCliffPrototype + east_to_west: OrientedCliffPrototype + south_to_north: OrientedCliffPrototype + west_to_north: OrientedCliffPrototype + north_to_east: OrientedCliffPrototype + east_to_south: OrientedCliffPrototype + south_to_west: OrientedCliffPrototype + west_to_south: OrientedCliffPrototype + north_to_west: OrientedCliffPrototype + east_to_north: OrientedCliffPrototype + south_to_east: OrientedCliffPrototype + west_to_none: OrientedCliffPrototype + none_to_east: OrientedCliffPrototype + north_to_none: OrientedCliffPrototype + none_to_south: OrientedCliffPrototype + east_to_none: OrientedCliffPrototype + none_to_west: OrientedCliffPrototype + south_to_none: OrientedCliffPrototype + none_to_north: OrientedCliffPrototype + + +@dataclass +class GeneratorEquipmentPrototype: + type: Literal["generator-equipment"] + name: String + sprite: Sprite + shape: EquipmentShape + categories: list[EquipmentCategoryID] | dict[str, Any] + energy_source: ElectricEnergySource + power: Energy + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + take_result: ItemID | None = None + background_color: Color | None = None + background_border_color: Color | None = None + grabbed_background_color: Color | None = None + burner: BurnerEnergySource | None = None + + +@dataclass +class Structure: + direction_in: Sprite4Way | None = None + direction_out: Sprite4Way | None = None + back_patch: Sprite4Way | None = None + front_patch: Sprite4Way | None = None + direction_in_side_loading: Sprite4Way | None = None + direction_out_side_loading: Sprite4Way | None = None + + +@dataclass +class NightVisionEquipmentPrototype: + type: Literal["night-vision-equipment"] + name: String + sprite: Sprite + shape: EquipmentShape + categories: list[EquipmentCategoryID] | dict[str, Any] + energy_source: ElectricEnergySource + energy_input: Energy + color_lookup: DaytimeColorLookupTable + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + take_result: ItemID | None = None + background_color: Color | None = None + background_border_color: Color | None = None + grabbed_background_color: Color | None = None + darkness_to_turn_on: Float | None = None + activate_sound: Sound | None = None + deactivate_sound: Sound | None = None + + +@dataclass +class FluidWagonConnectorGraphics: + load_animations: PumpConnectorGraphics + unload_animations: PumpConnectorGraphics + + +@dataclass +class GraphicsSet1: + structure: RotatedSprite + underwater_structure: RotatedSprite | None = None + render_layer: RenderLayer | None = None + underwater_layer_offset: Int8 | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class RoboportEquipmentPrototype: + type: Literal["roboport-equipment"] + name: String + sprite: Sprite + shape: EquipmentShape + categories: list[EquipmentCategoryID] | dict[str, Any] + energy_source: ElectricEnergySource + spawn_and_station_height: Float + charge_approach_distance: Float + construction_radius: Float + charging_energy: Energy + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + take_result: ItemID | None = None + background_color: Color | None = None + background_border_color: Color | None = None + grabbed_background_color: Color | None = None + recharging_animation: Animation | None = None + spawn_and_station_shadow_height_offset: Float | None = None + stationing_render_layer_swap_height: Float | None = None + draw_logistic_radius_visualization: Boolean | None = None + draw_construction_radius_visualization: Boolean | None = None + recharging_light: LightDefinition | None = None + charging_station_count: Uint32 | None = None + charging_station_count_affected_by_quality: Boolean | None = None + charging_distance: Float | None = None + charging_station_shift: Vector | None = None + charging_threshold_distance: Float | None = None + robot_vertical_acceleration: Float | None = None + stationing_offset: Vector | None = None + robot_limit: ItemCountType | None = None + robots_shrink_when_entering_and_exiting: Boolean | None = None + charging_offsets: list[Vector] | dict[str, Any] | None = None + spawn_minimum: Energy | None = None + burner: BurnerEnergySource | None = None + power: Energy | None = None + + +@dataclass +class GraphicsSet2: + joint_turn_offset: Float | None = None + joint_render_layer: RenderLayer | None = None + joint: RotatedSprite | None = None + joint_shadow: RotatedSprite | None = None + upper_part: SpiderLegPart | None = None + lower_part: SpiderLegPart | None = None + upper_part_shadow: SpiderLegPart | None = None + lower_part_shadow: SpiderLegPart | None = None + upper_part_water_reflection: SpiderLegPart | None = None + lower_part_water_reflection: SpiderLegPart | None = None + foot: RotatedSprite | None = None + foot_shadow: RotatedSprite | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class Pictures1: + picture: Sprite4Way | None = None + frozen_patch: Sprite4Way | None = None + window_background: Sprite | None = None + fluid_background: Sprite | None = None + flow_sprite: Sprite | None = None + gas_flow: Animation | None = None + + +@dataclass +class TechnologyPrototype: + type: Literal["technology"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + upgrade: Boolean | None = None + enabled: Boolean | None = None + essential: Boolean | None = None + visible_when_disabled: Boolean | None = None + ignore_tech_cost_multiplier: Boolean | None = None + allows_productivity: Boolean | None = None + research_trigger: TechnologyTrigger | None = None + unit: TechnologyUnit | None = None + max_level: Uint32 | Literal["infinite"] | None = None + prerequisites: list[TechnologyID] | dict[str, Any] | None = None + show_levels_info: Boolean | None = None + effects: list[Modifier] | dict[str, Any] | None = None + + +@dataclass +class TileEffectDefinition: + type: Literal["tile-effect"] + name: String + shader: Shader + water: WaterTileEffectParameters | None = None + space: SpaceTileEffectParameters | None = None + puddle: PuddleTileEffectParameters | None = None + + +@dataclass +class BuildSound: + small: Sound | None = None + medium: Sound | None = None + large: Sound | None = None + animated: Sound | None = None + + +@dataclass +class Structure1: + direction_in: Sprite4Way | None = None + direction_out: Sprite4Way | None = None + back_patch: Sprite4Way | None = None + front_patch: Sprite4Way | None = None + direction_in_side_loading: Sprite4Way | None = None + direction_out_side_loading: Sprite4Way | None = None + frozen_patch_in: Sprite4Way | None = None + frozen_patch_out: Sprite4Way | None = None + + +@dataclass +class CursorBox: + regular: list[BoxSpecification] | dict[str, Any] + multiplayer_selection: list[BoxSpecification] | dict[str, Any] + not_allowed: list[BoxSpecification] | dict[str, Any] + copy: list[BoxSpecification] | dict[str, Any] + electricity: list[BoxSpecification] | dict[str, Any] + logistics: list[BoxSpecification] | dict[str, Any] + pair: list[BoxSpecification] | dict[str, Any] + train_visualization: list[BoxSpecification] | dict[str, Any] + blueprint_snap_rectangle: list[BoxSpecification] | dict[str, Any] + spidertron_remote_selected: list[BoxSpecification] | dict[str, Any] + spidertron_remote_to_be_selected: list[BoxSpecification] | dict[str, Any] + + +@dataclass +class UtilitySprites: + type: Literal["utility-sprites"] + name: String + cursor_box: CursorBox + bookmark: Sprite + center: Sprite + check_mark: Sprite + check_mark_white: Sprite + check_mark_green: Sprite + check_mark_dark_green: Sprite + not_played_yet_green: Sprite + not_played_yet_dark_green: Sprite + played_green: Sprite + played_dark_green: Sprite + close_fat: Sprite + close: Sprite + close_black: Sprite + backward_arrow: Sprite + backward_arrow_black: Sprite + forward_arrow: Sprite + forward_arrow_black: Sprite + recipe_arrow: Sprite + close_map_preview: Sprite + color_picker: Sprite + change_recipe: Sprite + dropdown: Sprite + downloading: Sprite + downloaded: Sprite + equipment_grid: Sprite + equipment_grid_small: Sprite + expand_dots: Sprite + export: Sprite + import_: Sprite + map: Sprite + map_exchange_string: Sprite + missing_mod_icon: Sprite + not_available: Sprite + not_available_black: Sprite + play: Sprite + stop: Sprite + preset: Sprite + refresh: Sprite + reset: Sprite + reset_white: Sprite + shuffle: Sprite + station_name: Sprite + search: Sprite + sync_mods: Sprite + trash: Sprite + trash_white: Sprite + copy: Sprite + reassign: Sprite + warning: Sprite + warning_white: Sprite + list_view: Sprite + grid_view: Sprite + slots_view: Sprite + reference_point: Sprite + mouse_cursor: Sprite + mouse_cursor_macos: Sprite + mod_category: Sprite + mod_last_updated: Sprite + mod_downloads_count: Sprite + item_to_be_delivered_symbol: Sprite + rebuild_mark: Sprite + any_quality: Sprite + mod_dependency_arrow: Sprite + add: Sprite + add_white: Sprite + clone: Sprite + go_to_arrow: Sprite + pause: Sprite + speed_down: Sprite + speed_up: Sprite + editor_speed_down: Sprite + editor_pause: Sprite + editor_play: Sprite + editor_speed_up: Sprite + tick_once: Sprite + tick_sixty: Sprite + tick_custom: Sprite + search_icon: Sprite + too_far: Sprite + shoot_cursor_green: Sprite + shoot_cursor_red: Sprite + electricity_icon: Sprite + lightning_warning_icon: Sprite + fuel_icon: Sprite + ammo_icon: Sprite + fluid_icon: Sprite + warning_icon: Sprite + danger_icon: Sprite + destroyed_icon: Sprite + recharge_icon: Sprite + no_path_icon: Sprite + destination_full_icon: Sprite + too_far_from_roboport_icon: Sprite + pump_cannot_connect_icon: Sprite + not_enough_repair_packs_icon: Sprite + not_enough_construction_robots_icon: Sprite + no_building_material_icon: Sprite + no_storage_space_icon: Sprite + no_platform_storage_space_icon: Sprite + asteroid_collector_path_blocked_icon: Sprite + unclaimed_cargo_icon: Sprite + no_roboport_storage_space_icon: Sprite + cargo_bay_not_connected_icon: Sprite + frozen_icon: Sprite + pipeline_disabled_icon: Sprite + electricity_icon_unplugged: Sprite + tooltip_category_spoilable: Sprite + resources_depleted_icon: Sprite + game_stopped_visualization: Sprite + health_bar_green_pip: Sprite + health_bar_yellow_pip: Sprite + health_bar_red_pip: Sprite + ghost_bar_pip: Sprite + bar_gray_pip: Sprite + shield_bar_pip: Sprite + hand: Sprite + hand_black: Sprite + entity_info_dark_background: Sprite + medium_gui_arrow: Sprite + small_gui_arrow: Sprite + light_medium: Sprite + light_small: Sprite + light_cone: Sprite + color_effect: Sprite + clock: Sprite + default_ammo_damage_modifier_icon: Sprite + default_gun_speed_modifier_icon: Sprite + default_turret_attack_modifier_icon: Sprite + hint_arrow_up: Sprite + hint_arrow_down: Sprite + hint_arrow_right: Sprite + hint_arrow_left: Sprite + fluid_indication_arrow: Sprite + fluid_indication_arrow_both_ways: Sprite + heat_exchange_indication: Sprite + indication_arrow: Sprite + rail_planner_indication_arrow: Sprite + rail_planner_indication_arrow_anchored: Sprite + rail_planner_indication_arrow_too_far: Sprite + rail_path_not_possible: Sprite + indication_line: Sprite + short_indication_line: Sprite + short_indication_line_green: Sprite + empty_module_slot: Sprite + empty_armor_slot: Sprite + empty_gun_slot: Sprite + empty_ammo_slot: Sprite + empty_robot_slot: Sprite + empty_robot_material_slot: Sprite + empty_inserter_hand_slot: Sprite + empty_trash_slot: Sprite + empty_drop_cargo_slot: Sprite + upgrade_blueprint: Sprite + slot: Sprite + equipment_slot: Sprite + equipment_collision: Sprite + battery: Sprite + green_circle: Sprite + green_dot: Sprite + robot_slot: Sprite + set_bar_slot: Sprite + missing_icon: Sprite + deconstruction_mark: Sprite + buildability_collision: Sprite + buildability_elevated_collision_line: Sprite + buildability_elevated_collision_top: Sprite + buildability_elevated_collision_bottom: Sprite + buildability_collision_elevated: Sprite + upgrade_mark: Sprite + confirm_slot: Sprite + export_slot: Sprite + import_slot: Sprite + none_editor_icon: Sprite + cable_editor_icon: Sprite + tile_editor_icon: Sprite + decorative_editor_icon: Sprite + asteroid_chunk_editor_icon: Sprite + resource_editor_icon: Sprite + entity_editor_icon: Sprite + item_editor_icon: Sprite + force_editor_icon: Sprite + clone_editor_icon: Sprite + scripting_editor_icon: Sprite + paint_bucket_icon: Sprite + surface_editor_icon: Sprite + time_editor_icon: Sprite + cliff_editor_icon: Sprite + brush_icon: Sprite + spray_icon: Sprite + cursor_icon: Sprite + area_icon: Sprite + line_icon: Sprite + variations_tool_icon: Sprite + lua_snippet_tool_icon: Sprite + editor_selection: Sprite + brush_square_shape: Sprite + brush_circle_shape: Sprite + player_force_icon: Sprite + neutral_force_icon: Sprite + enemy_force_icon: Sprite + nature_icon: Sprite + no_nature_icon: Sprite + multiplayer_waiting_icon: Sprite + spawn_flag: Sprite + questionmark: Sprite + copper_wire: Sprite + green_wire: Sprite + red_wire: Sprite + copper_wire_highlight: Sprite + green_wire_highlight: Sprite + red_wire_highlight: Sprite + wire_shadow: Sprite + and_or: Sprite + left_arrow: Sprite + right_arrow: Sprite + down_arrow: Sprite + enter: Sprite + move_tag: Sprite + side_menu_blueprint_library_icon: Sprite + side_menu_production_icon: Sprite + side_menu_bonus_icon: Sprite + side_menu_tutorials_icon: Sprite + side_menu_factoriopedia_icon: Sprite + side_menu_train_icon: Sprite + side_menu_achievements_icon: Sprite + side_menu_menu_icon: Sprite + side_menu_map_icon: Sprite + side_menu_space_platforms_icon: Sprite + side_menu_technology_icon: Sprite + side_menu_logistic_networks_icon: Sprite + side_menu_players_icon: Sprite + circuit_network_panel: Sprite + logistic_network_panel_white: Sprite + logistic_network_panel_black: Sprite + rename_icon: Sprite + achievement_warning: Sprite + achievement_label: Sprite + achievement_label_completed: Sprite + achievement_label_failed: Sprite + rail_signal_placement_indicator: Sprite + train_stop_placement_indicator: Sprite + rail_support_placement_indicator: Sprite + placement_indicator_leg: Sprite + grey_rail_signal_placement_indicator: Sprite + grey_placement_indicator_leg: Sprite + logistic_radius_visualization: Sprite + construction_radius_visualization: Sprite + track_button: Sprite + track_button_white: Sprite + show_logistics_network_in_map_view: Sprite + show_electric_network_in_map_view: Sprite + show_turret_range_in_map_view: Sprite + show_train_station_names_in_map_view: Sprite + show_player_names_in_map_view: Sprite + show_tags_in_map_view: Sprite + show_worker_robots_in_map_view: Sprite + show_rail_signal_states_in_map_view: Sprite + show_recipe_icons_in_map_view: Sprite + show_pipelines_in_map_view: Sprite + train_stop_in_map_view: Sprite + train_stop_disabled_in_map_view: Sprite + train_stop_full_in_map_view: Sprite + custom_tag_in_map_view: Sprite + covered_chunk: Sprite + white_square: Sprite + white_square_icon: Sprite + white_mask: Sprite + crafting_machine_recipe_not_unlocked: Sprite + filter_blacklist: Sprite + gps_map_icon: Sprite + custom_tag_icon: Sprite + space_age_icon: Sprite + tip_icon: Sprite + underground_remove_belts: Sprite + max_distance_underground_remove_belts: Sprite + underground_remove_pipes: Sprite + underground_pipe_connection: Sprite + ghost_cursor: Sprite + tile_ghost_cursor: Sprite + force_ghost_cursor: Sprite + force_tile_ghost_cursor: Sprite + cross_select: Sprite + crosshair: Sprite + expand: Sprite + collapse: Sprite + collapse_dark: Sprite + status_working: Sprite + status_not_working: Sprite + status_yellow: Sprite + status_blue: Sprite + status_inactive: Sprite + gradient: Sprite + output_console_gradient: Sprite + select_icon_white: Sprite + select_icon_black: Sprite + notification: Sprite + alert_arrow: Sprite + pin_arrow: Sprite + pin_center: Sprite + technology_white: Sprite + feedback: Sprite + sort_by_name: Sprite + sort_by_time: Sprite + parametrise: Sprite + fluid_visualization_connection: Sprite + fluid_visualization_connection_both_ways: Sprite + fluid_visualization_connection_underground: Sprite + fluid_visualization_extent_arrow: Sprite + starmap_platform_moving: Sprite + starmap_platform_moving_hovered: Sprite + starmap_platform_moving_clicked: Sprite + starmap_platform_stopped: Sprite + starmap_platform_stopped_hovered: Sprite + starmap_platform_stopped_clicked: Sprite + starmap_platform_stacked: Sprite + starmap_platform_stacked_hovered: Sprite + starmap_platform_stacked_clicked: Sprite + starmap_star: Sprite + controller_joycon_a: Sprite + controller_joycon_b: Sprite + controller_joycon_x: Sprite + controller_joycon_y: Sprite + controller_joycon_back: Sprite + controller_joycon_start: Sprite + controller_joycon_leftstick: Sprite + controller_joycon_rightstick: Sprite + controller_joycon_leftshoulder: Sprite + controller_joycon_rightshoulder: Sprite + controller_joycon_dpup: Sprite + controller_joycon_dpdown: Sprite + controller_joycon_dpleft: Sprite + controller_joycon_dpright: Sprite + controller_joycon_paddle1: Sprite + controller_joycon_paddle2: Sprite + controller_joycon_paddle3: Sprite + controller_joycon_paddle4: Sprite + controller_joycon_righttrigger: Sprite + controller_joycon_lefttrigger: Sprite + controller_joycon_left_stick: Sprite + controller_joycon_right_stick: Sprite + controller_joycon_black_a: Sprite + controller_joycon_black_b: Sprite + controller_joycon_black_x: Sprite + controller_joycon_black_y: Sprite + controller_joycon_black_back: Sprite + controller_joycon_black_start: Sprite + controller_joycon_black_leftstick: Sprite + controller_joycon_black_rightstick: Sprite + controller_joycon_black_leftshoulder: Sprite + controller_joycon_black_rightshoulder: Sprite + controller_joycon_black_dpup: Sprite + controller_joycon_black_dpdown: Sprite + controller_joycon_black_dpleft: Sprite + controller_joycon_black_dpright: Sprite + controller_joycon_black_paddle1: Sprite + controller_joycon_black_paddle2: Sprite + controller_joycon_black_paddle3: Sprite + controller_joycon_black_paddle4: Sprite + controller_joycon_black_righttrigger: Sprite + controller_joycon_black_lefttrigger: Sprite + controller_joycon_black_left_stick: Sprite + controller_joycon_black_right_stick: Sprite + controller_xbox_a: Sprite + controller_xbox_b: Sprite + controller_xbox_x: Sprite + controller_xbox_y: Sprite + controller_xbox_back: Sprite + controller_xbox_start: Sprite + controller_xbox_leftstick: Sprite + controller_xbox_rightstick: Sprite + controller_xbox_leftshoulder: Sprite + controller_xbox_rightshoulder: Sprite + controller_xbox_dpup: Sprite + controller_xbox_dpdown: Sprite + controller_xbox_dpleft: Sprite + controller_xbox_dpright: Sprite + controller_xbox_righttrigger: Sprite + controller_xbox_lefttrigger: Sprite + controller_xbox_left_stick: Sprite + controller_xbox_right_stick: Sprite + controller_xbox_black_a: Sprite + controller_xbox_black_b: Sprite + controller_xbox_black_x: Sprite + controller_xbox_black_y: Sprite + controller_xbox_black_back: Sprite + controller_xbox_black_start: Sprite + controller_xbox_black_leftstick: Sprite + controller_xbox_black_rightstick: Sprite + controller_xbox_black_leftshoulder: Sprite + controller_xbox_black_rightshoulder: Sprite + controller_xbox_black_dpup: Sprite + controller_xbox_black_dpdown: Sprite + controller_xbox_black_dpleft: Sprite + controller_xbox_black_dpright: Sprite + controller_xbox_black_righttrigger: Sprite + controller_xbox_black_lefttrigger: Sprite + controller_xbox_black_left_stick: Sprite + controller_xbox_black_right_stick: Sprite + controller_ps_a: Sprite + controller_ps_b: Sprite + controller_ps_x: Sprite + controller_ps_y: Sprite + controller_ps_back: Sprite + controller_ps_start: Sprite + controller_ps_leftstick: Sprite + controller_ps_rightstick: Sprite + controller_ps_leftshoulder: Sprite + controller_ps_rightshoulder: Sprite + controller_ps_dpup: Sprite + controller_ps_dpdown: Sprite + controller_ps_dpleft: Sprite + controller_ps_dpright: Sprite + controller_ps_righttrigger: Sprite + controller_ps_lefttrigger: Sprite + controller_ps_left_stick: Sprite + controller_ps_right_stick: Sprite + controller_ps_black_a: Sprite + controller_ps_black_b: Sprite + controller_ps_black_x: Sprite + controller_ps_black_y: Sprite + controller_ps_black_back: Sprite + controller_ps_black_start: Sprite + controller_ps_black_leftstick: Sprite + controller_ps_black_rightstick: Sprite + controller_ps_black_leftshoulder: Sprite + controller_ps_black_rightshoulder: Sprite + controller_ps_black_dpup: Sprite + controller_ps_black_dpdown: Sprite + controller_ps_black_dpleft: Sprite + controller_ps_black_dpright: Sprite + controller_ps_black_righttrigger: Sprite + controller_ps_black_lefttrigger: Sprite + controller_ps_black_left_stick: Sprite + controller_ps_black_right_stick: Sprite + controller_steamdeck_a: Sprite + controller_steamdeck_b: Sprite + controller_steamdeck_x: Sprite + controller_steamdeck_y: Sprite + controller_steamdeck_back: Sprite + controller_steamdeck_start: Sprite + controller_steamdeck_leftstick: Sprite + controller_steamdeck_rightstick: Sprite + controller_steamdeck_leftshoulder: Sprite + controller_steamdeck_rightshoulder: Sprite + controller_steamdeck_dpup: Sprite + controller_steamdeck_dpdown: Sprite + controller_steamdeck_dpleft: Sprite + controller_steamdeck_dpright: Sprite + controller_steamdeck_paddle1: Sprite + controller_steamdeck_paddle2: Sprite + controller_steamdeck_paddle3: Sprite + controller_steamdeck_paddle4: Sprite + controller_steamdeck_righttrigger: Sprite + controller_steamdeck_lefttrigger: Sprite + controller_steamdeck_left_stick: Sprite + controller_steamdeck_right_stick: Sprite + controller_steamdeck_black_a: Sprite + controller_steamdeck_black_b: Sprite + controller_steamdeck_black_x: Sprite + controller_steamdeck_black_y: Sprite + controller_steamdeck_black_back: Sprite + controller_steamdeck_black_start: Sprite + controller_steamdeck_black_leftstick: Sprite + controller_steamdeck_black_rightstick: Sprite + controller_steamdeck_black_leftshoulder: Sprite + controller_steamdeck_black_rightshoulder: Sprite + controller_steamdeck_black_dpup: Sprite + controller_steamdeck_black_dpdown: Sprite + controller_steamdeck_black_dpleft: Sprite + controller_steamdeck_black_dpright: Sprite + controller_steamdeck_black_paddle1: Sprite + controller_steamdeck_black_paddle2: Sprite + controller_steamdeck_black_paddle3: Sprite + controller_steamdeck_black_paddle4: Sprite + controller_steamdeck_black_righttrigger: Sprite + controller_steamdeck_black_lefttrigger: Sprite + controller_steamdeck_black_left_stick: Sprite + controller_steamdeck_black_right_stick: Sprite + clouds: Animation + arrow_button: Animation + explosion_chart_visualization: Animation + refresh_white: Animation + navmesh_pending_icon: Animation + inserter_stack_size_bonus_modifier_icon: Sprite + bulk_inserter_capacity_bonus_modifier_icon: Sprite + laboratory_speed_modifier_icon: Sprite + character_logistic_trash_slots_modifier_icon: Sprite + maximum_following_robots_count_modifier_icon: Sprite + worker_robot_speed_modifier_icon: Sprite + worker_robot_storage_modifier_icon: Sprite + create_ghost_on_entity_death_modifier_icon: Sprite + turret_attack_modifier_icon: Sprite + ammo_damage_modifier_icon: Sprite + give_item_modifier_icon: Sprite + gun_speed_modifier_icon: Sprite + unlock_recipe_modifier_icon: Sprite + character_crafting_speed_modifier_icon: Sprite + character_mining_speed_modifier_icon: Sprite + character_running_speed_modifier_icon: Sprite + character_build_distance_modifier_icon: Sprite + character_item_drop_distance_modifier_icon: Sprite + character_reach_distance_modifier_icon: Sprite + character_resource_reach_distance_modifier_icon: Sprite + character_item_pickup_distance_modifier_icon: Sprite + character_loot_pickup_distance_modifier_icon: Sprite + character_inventory_slots_bonus_modifier_icon: Sprite + deconstruction_time_to_live_modifier_icon: Sprite + max_failed_attempts_per_tick_per_construction_queue_modifier_icon: Sprite + max_successful_attempts_per_tick_per_construction_queue_modifier_icon: ( + Sprite + ) + character_health_bonus_modifier_icon: Sprite + mining_drill_productivity_bonus_modifier_icon: Sprite + train_braking_force_bonus_modifier_icon: Sprite + worker_robot_battery_modifier_icon: Sprite + laboratory_productivity_modifier_icon: Sprite + follower_robot_lifetime_modifier_icon: Sprite + artillery_range_modifier_icon: Sprite + nothing_modifier_icon: Sprite + character_additional_mining_categories_modifier_icon: Sprite + character_logistic_requests_modifier_icon: Sprite + unlock_space_location_modifier_icon: Sprite + unlock_quality_modifier_icon: Sprite + unlock_space_platforms_modifier_icon: Sprite + unlock_circuit_network_modifier_icon: Sprite + cargo_landing_pad_count_modifier_icon: Sprite + change_recipe_productivity_modifier_icon: Sprite + cliff_deconstruction_enabled_modifier_icon: Sprite + mining_with_fluid_modifier_icon: Sprite + rail_support_on_deep_oil_ocean_modifier_icon: Sprite + rail_planner_allow_elevated_rails_modifier_icon: Sprite + beacon_distribution_modifier_icon: Sprite + belt_stack_size_bonus_modifier_icon: Sprite + vehicle_logistics_modifier_icon: Sprite + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + platform_entity_build_animations: PlatformEntityBuildAnimations | None = ( + None + ) + inserter_stack_size_bonus_modifier_constant: Sprite | None = None + bulk_inserter_capacity_bonus_modifier_constant: Sprite | None = None + laboratory_speed_modifier_constant: Sprite | None = None + character_logistic_trash_slots_modifier_constant: Sprite | None = None + maximum_following_robots_count_modifier_constant: Sprite | None = None + worker_robot_speed_modifier_constant: Sprite | None = None + worker_robot_storage_modifier_constant: Sprite | None = None + create_ghost_on_entity_death_modifier_constant: Sprite | None = None + turret_attack_modifier_constant: Sprite | None = None + ammo_damage_modifier_constant: Sprite | None = None + give_item_modifier_constant: Sprite | None = None + gun_speed_modifier_constant: Sprite | None = None + unlock_recipe_modifier_constant: Sprite | None = None + character_crafting_speed_modifier_constant: Sprite | None = None + character_mining_speed_modifier_constant: Sprite | None = None + character_running_speed_modifier_constant: Sprite | None = None + character_build_distance_modifier_constant: Sprite | None = None + character_item_drop_distance_modifier_constant: Sprite | None = None + character_reach_distance_modifier_constant: Sprite | None = None + character_resource_reach_distance_modifier_constant: Sprite | None = None + character_item_pickup_distance_modifier_constant: Sprite | None = None + character_loot_pickup_distance_modifier_constant: Sprite | None = None + character_inventory_slots_bonus_modifier_constant: Sprite | None = None + deconstruction_time_to_live_modifier_constant: Sprite | None = None + max_failed_attempts_per_tick_per_construction_queue_modifier_constant: ( + Sprite | None + ) = None + max_successful_attempts_per_tick_per_construction_queue_modifier_constant: ( + Sprite | None + ) = None + character_health_bonus_modifier_constant: Sprite | None = None + mining_drill_productivity_bonus_modifier_constant: Sprite | None = None + train_braking_force_bonus_modifier_constant: Sprite | None = None + worker_robot_battery_modifier_constant: Sprite | None = None + laboratory_productivity_modifier_constant: Sprite | None = None + follower_robot_lifetime_modifier_constant: Sprite | None = None + artillery_range_modifier_constant: Sprite | None = None + nothing_modifier_constant: Sprite | None = None + character_additional_mining_categories_modifier_constant: Sprite | None = ( + None + ) + character_logistic_requests_modifier_constant: Sprite | None = None + unlock_space_location_modifier_constant: Sprite | None = None + unlock_quality_modifier_constant: Sprite | None = None + unlock_space_platforms_modifier_constant: Sprite | None = None + unlock_circuit_network_modifier_constant: Sprite | None = None + cargo_landing_pad_count_modifier_constant: Sprite | None = None + change_recipe_productivity_modifier_constant: Sprite | None = None + cliff_deconstruction_enabled_modifier_constant: Sprite | None = None + mining_with_fluid_modifier_constant: Sprite | None = None + rail_support_on_deep_oil_ocean_modifier_constant: Sprite | None = None + rail_planner_allow_elevated_rails_modifier_constant: Sprite | None = None + beacon_distribution_modifier_constant: Sprite | None = None + belt_stack_size_bonus_modifier_constant: Sprite | None = None + vehicle_logistics_modifier_constant: Sprite | None = None + + +@dataclass +class Pictures2: + single: SpriteVariations | None = None + straight_vertical: SpriteVariations | None = None + straight_horizontal: SpriteVariations | None = None + corner_right_down: SpriteVariations | None = None + corner_left_down: SpriteVariations | None = None + t_up: SpriteVariations | None = None + ending_right: SpriteVariations | None = None + ending_left: SpriteVariations | None = None + filling: SpriteVariations | None = None + water_connection_patch: Sprite4Way | None = None + gate_connection_patch: Sprite4Way | None = None + + +@dataclass +class AsteroidGraphicsSet: + rotation_speed: Float | None = None + normal_strength: Float | None = None + light_width: Float | None = None + brightness: Float | None = None + specular_strength: Float | None = None + specular_power: Float | None = None + specular_purity: Float | None = None + sss_contrast: Float | None = None + sss_amount: Float | None = None + sprite: Sprite | None = None + variations: ( + AsteroidVariation | list[AsteroidVariation] | dict[str, Any] | None + ) = None + lights: LightProperties | list[LightProperties] | dict[str, Any] | None = ( + None + ) + ambient_light: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class BeaconGraphicsSet: + draw_animation_when_idle: Boolean | None = None + draw_light_when_idle: Boolean | None = None + random_animation_offset: Boolean | None = None + module_icons_suppressed: Boolean | None = None + reset_animation_when_frozen: Boolean | None = None + base_layer: RenderLayer | None = None + animation_layer: RenderLayer | None = None + top_layer: RenderLayer | None = None + animation_progress: Float | None = None + apply_module_tint: ModuleTint | None = None + no_modules_tint: Color | None = None + animation_list: list[AnimationElement] | dict[str, Any] | None = None + frozen_patch: Sprite | None = None + light: LightDefinition | None = None + module_visualisations: ( + list[BeaconModuleVisualizations] | dict[str, Any] | None + ) = None + module_tint_mode: ModuleTintMode | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class CargoBayConnections: + top_wall: LayeredSpriteVariations | None = None + right_wall: LayeredSpriteVariations | None = None + bottom_wall: LayeredSpriteVariations | None = None + left_wall: LayeredSpriteVariations | None = None + top_left_outer_corner: LayeredSpriteVariations | None = None + top_right_outer_corner: LayeredSpriteVariations | None = None + bottom_left_outer_corner: LayeredSpriteVariations | None = None + bottom_right_outer_corner: LayeredSpriteVariations | None = None + top_left_inner_corner: LayeredSpriteVariations | None = None + top_right_inner_corner: LayeredSpriteVariations | None = None + bottom_left_inner_corner: LayeredSpriteVariations | None = None + bottom_right_inner_corner: LayeredSpriteVariations | None = None + bridge_horizontal_narrow: LayeredSpriteVariations | None = None + bridge_horizontal_wide: LayeredSpriteVariations | None = None + bridge_vertical_narrow: LayeredSpriteVariations | None = None + bridge_vertical_wide: LayeredSpriteVariations | None = None + bridge_crossing: LayeredSpriteVariations | None = None + + +@dataclass +class ChargableGraphics: + picture: Sprite | None = None + charge_animation: Animation | None = None + charge_animation_is_looped: Boolean | None = None + charge_light: LightDefinition | None = None + charge_cooldown: Uint16 | None = None + discharge_animation: Animation | None = None + discharge_light: LightDefinition | None = None + discharge_cooldown: Uint16 | None = None + + +@dataclass +class CircuitConnectorSprites: + led_red: Sprite + led_green: Sprite + led_blue: Sprite + led_light: LightDefinition + connector_main: Sprite | None = None + connector_shadow: Sprite | None = None + wire_pins: Sprite | None = None + wire_pins_shadow: Sprite | None = None + led_blue_off: Sprite | None = None + blue_led_light_offset: Vector | None = None + red_green_led_light_offset: Vector | None = None + + +@dataclass +class CoverGraphicProcessionLayer: + type: Literal["cover-graphic"] + frames: list[Frame] | dict[str, Any] + reference_group: ProcessionLayerInheritanceGroupID | None = None + inherit_from: ProcessionLayerInheritanceGroupID | None = None + graphic: ProcessionGraphic | None = None + mask_graphic: ProcessionGraphic | None = None + effect_graphic: ProcessionGraphic | None = None + render_layer: RenderLayer | None = None + secondary_draw_order: Int8 | None = None + is_cloud_effect_advanced: Boolean | None = None + is_quad_texture: Boolean | None = None + rotate_with_pod: Boolean | None = None + texture_relative_to: EffectRelativeTo | None = None + distance_traveled_strength: Vector | None = None + pod_movement_strength: Vector | None = None + world_size: Vector | None = None + effect: CoverGraphicEffectData | None = None + alt_effect: CoverGraphicEffectData | None = None + + +@dataclass +class CraftingMachineGraphicsSet: + animation: Animation4Way | None = None + idle_animation: Animation4Way | None = None + always_draw_idle_animation: Boolean | None = None + default_recipe_tint: GlobalRecipeTints | None = None + recipe_not_set_tint: GlobalRecipeTints | None = None + states: list[VisualState] | dict[str, Any] | None = None + working_visualisations: ( + list[WorkingVisualisation] + | dict[str, Any] + | dict[str, WorkingVisualisation] + | None + ) = None + shift_animation_waypoints: ShiftAnimationWaypoints | None = None + shift_animation_waypoint_stop_duration: Uint16 | None = None + shift_animation_transition_duration: Uint16 | None = None + status_colors: StatusColors | None = None + frozen_patch: Sprite4Way | None = None + circuit_connector_layer: RenderLayer | CircuitConnectorLayer | None = None + circuit_connector_secondary_draw_order: ( + Int8 | CircuitConnectorSecondaryDrawOrder | None + ) = None + animation_progress: Float | None = None + reset_animation_when_frozen: Boolean | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class CranePartDyingEffect: + particle_effect_linear_distance_step: Float | None = None + explosion_linear_distance_step: Float | None = None + particle_effects: ( + CreateParticleTriggerEffectItem + | list[CreateParticleTriggerEffectItem] + | dict[str, Any] + | None + ) = None + explosion: ExplosionDefinition | None = None + + +@dataclass +class CyclicSound: + begin_sound: Sound | None = None + middle_sound: Sound | None = None + end_sound: Sound | None = None + + +@dataclass +class ElementImageSet1: + base: ElementImageSetLayer | None = None + shadow: ElementImageSetLayer | None = None + glow: ElementImageSetLayer | None = None + + +ElementImageSet: TypeAlias = ElementImageSet1 | ElementImageSetLayer + + +@dataclass +class EmptyWidgetStyleSpecification: + type: Literal["empty_widget_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + graphical_set: ElementImageSet | None = None + + +@dataclass +class FluidBox: + volume: FluidAmount + pipe_connections: list[PipeConnectionDefinition] | dict[str, Any] + filter: FluidID | None = None + render_layer: RenderLayer | None = None + draw_only_when_connected: Boolean | None = None + hide_connection_info: Boolean | None = None + volume_reservation_fraction: Float | None = None + pipe_covers: Sprite4Way | None = None + pipe_covers_frozen: Sprite4Way | None = None + pipe_picture: Sprite4Way | None = None + pipe_picture_frozen: Sprite4Way | None = None + mirrored_pipe_picture: Sprite4Way | None = None + mirrored_pipe_picture_frozen: Sprite4Way | None = None + minimum_temperature: Float | None = None + maximum_temperature: Float | None = None + max_pipeline_extent: Uint32 | None = None + production_type: ProductionType | None = None + secondary_draw_order: Int8 | None = None + secondary_draw_orders: SecondaryDrawOrders | None = None + always_draw_covers: Boolean | None = None + enable_working_visualisations: list[String] | dict[str, Any] | None = None + + +@dataclass +class FluidEnergySource: + type: Literal["fluid"] + fluid_box: FluidBox + emissions_per_minute: dict[AirbornePollutantID, Double] | None = None + render_no_power_icon: Boolean | None = None + render_no_network_icon: Boolean | None = None + smoke: list[SmokeSource] | dict[str, Any] | None = None + light_flicker: LightFlickeringDefinition | None = None + effectivity: Double | None = None + burns_fluid: Boolean | None = None + scale_fluid_usage: Boolean | None = None + destroy_non_fuel_fluid: Boolean | None = None + fluid_usage_per_tick: FluidAmount | None = None + maximum_temperature: Float | None = None + + +@dataclass +class FrameStyleSpecification: + type: Literal["frame_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + graphical_set: ElementImageSet | None = None + horizontal_flow_style: HorizontalFlowStyleSpecification | None = None + vertical_flow_style: VerticalFlowStyleSpecification | None = None + header_flow_style: HorizontalFlowStyleSpecification | None = None + header_filler_style: EmptyWidgetStyleSpecification | None = None + title_style: LabelStyleSpecification | None = None + use_header_filler: Boolean | None = None + drag_by_title: Boolean | None = None + header_background: ElementImageSet | None = None + background_graphical_set: ElementImageSet | None = None + border: BorderImageSet | None = None + + +@dataclass +class FusionGeneratorDirectionGraphicsSet: + animation: Animation | None = None + working_light: Animation | None = None + fusion_effect_uv_map: Sprite | None = None + fluid_input_graphics: ( + list[FusionGeneratorFluidInputGraphics] | dict[str, Any] | None + ) = None + + +@dataclass +class FusionGeneratorGraphicsSet: + north_graphics_set: FusionGeneratorDirectionGraphicsSet + east_graphics_set: FusionGeneratorDirectionGraphicsSet + south_graphics_set: FusionGeneratorDirectionGraphicsSet + west_graphics_set: FusionGeneratorDirectionGraphicsSet + render_layer: RenderLayer | None = None + light: LightDefinition | None = None + glow_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class FusionReactorGraphicsSet: + plasma_category: NeighbourConnectableConnectionCategory + structure: Sprite4Way | None = None + render_layer: RenderLayer | None = None + default_fuel_glow_color: Color | None = None + light: LightDefinition | None = None + working_light_pictures: Sprite4Way | None = None + use_fuel_glow_color: Boolean | None = None + fusion_effect_uv_map: Sprite | None = None + connections_graphics: ( + list[FusionReactorConnectionGraphics] | dict[str, Any] | None + ) = None + direction_to_connections_graphics: ( + dict[DirectionString, list[Uint8] | dict[str, Any]] | None + ) = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class GlowStyleSpecification: + type: Literal["glow_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + image_set: ElementImageSet | None = None + + +@dataclass +class HeatBuffer: + max_temperature: Double + specific_heat: Energy + max_transfer: Energy + default_temperature: Double | None = None + min_temperature_gradient: Double | None = None + min_working_temperature: Double | None = None + minimum_glow_temperature: Float | None = None + pipe_covers: Sprite4Way | None = None + heat_pipe_covers: Sprite4Way | None = None + heat_picture: Sprite4Way | None = None + heat_glow: Sprite4Way | None = None + connections: list[HeatConnection] | dict[str, Any] | None = None + + +@dataclass +class HeatEnergySource: + type: Literal["heat"] + max_temperature: Double + specific_heat: Energy + max_transfer: Energy + emissions_per_minute: dict[AirbornePollutantID, Double] | None = None + render_no_power_icon: Boolean | None = None + render_no_network_icon: Boolean | None = None + default_temperature: Double | None = None + min_temperature_gradient: Double | None = None + min_working_temperature: Double | None = None + minimum_glow_temperature: Float | None = None + pipe_covers: Sprite4Way | None = None + heat_pipe_covers: Sprite4Way | None = None + heat_picture: Sprite4Way | None = None + heat_glow: Sprite4Way | None = None + connections: list[HeatConnection] | dict[str, Any] | None = None + + +@dataclass +class ImageStyleSpecification: + type: Literal["image_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + graphical_set: ElementImageSet | None = None + stretch_image_to_widget_size: Boolean | None = None + invert_colors_of_picture_when_hovered_or_toggled: Boolean | None = None + + +@dataclass +class InterruptibleSound: + sound: Sound | None = None + minimal_change_per_tick: Float | None = None + stopped_sound: Sound | None = None + minimal_sound_duration_for_stopped_sound: Uint16 | None = None + fade_ticks: Uint32 | None = None + + +@dataclass +class LayeredSound1: + layers: list[Sound] | dict[str, Any] + + +LayeredSound: TypeAlias = LayeredSound1 | Sound + + +@dataclass +class LoaderStructure: + direction_in: Sprite4Way | None = None + direction_out: Sprite4Way | None = None + back_patch: Sprite4Way | None = None + front_patch: Sprite4Way | None = None + frozen_patch_in: Sprite4Way | None = None + frozen_patch_out: Sprite4Way | None = None + + +@dataclass +class MainSound: + sound: Sound | None = None + probability: Double | None = None + fade_in_ticks: Uint32 | None = None + fade_out_ticks: Uint32 | None = None + activity_to_volume_modifiers: ActivityMatchingModifiers | None = None + activity_to_speed_modifiers: ActivityMatchingModifiers | None = None + match_progress_to_activity: Boolean | None = None + match_volume_to_activity: Boolean | None = None + match_speed_to_activity: Boolean | None = None + play_for_working_visualisations: list[String] | dict[str, Any] | None = None + volume_smoothing_window_size: Uint32 | None = None + + +@dataclass +class MapGenPreset: + order: Order + default: Boolean | None = None + basic_settings: MapGenSettings | None = None + advanced_settings: AdvancedSettings | None = None + + +@dataclass +class MinimapStyleSpecification: + type: Literal["minimap_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + graphical_set: ElementImageSet | None = None + + +@dataclass +class MiningDrillGraphicsSet: + animation: Animation4Way | None = None + idle_animation: Animation4Way | None = None + always_draw_idle_animation: Boolean | None = None + default_recipe_tint: GlobalRecipeTints | None = None + recipe_not_set_tint: GlobalRecipeTints | None = None + states: list[VisualState] | dict[str, Any] | None = None + working_visualisations: ( + list[WorkingVisualisation] + | dict[str, Any] + | dict[str, WorkingVisualisation] + | None + ) = None + shift_animation_waypoints: ShiftAnimationWaypoints | None = None + shift_animation_waypoint_stop_duration: Uint16 | None = None + shift_animation_transition_duration: Uint16 | None = None + status_colors: StatusColors | None = None + frozen_patch: Sprite4Way | None = None + reset_animation_when_frozen: Boolean | None = None + circuit_connector_layer: RenderLayer | CircuitConnectorLayer | None = None + circuit_connector_secondary_draw_order: ( + Int8 | CircuitConnectorSecondaryDrawOrder | None + ) = None + drilling_vertical_movement_duration: Uint16 | None = None + animation_progress: Float | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class OffshorePumpGraphicsSet: + animation: Animation4Way | None = None + base_render_layer: RenderLayer | None = None + underwater_layer_offset: Int8 | None = None + fluid_animation: Animation4Way | None = None + glass_pictures: Sprite4Way | None = None + base_pictures: Sprite4Way | None = None + underwater_pictures: Sprite4Way | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class PersistentWorldAmbientSoundDefinition1: + sound: Sound + + +PersistentWorldAmbientSoundDefinition: TypeAlias = ( + PersistentWorldAmbientSoundDefinition1 | Sound +) + + +@dataclass +class PlaySoundTriggerEffectItem: + type: Literal["play-sound"] + sound: Sound + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + min_distance: Float | None = None + max_distance: Float | None = None + play_on_target_position: Boolean | None = None + + +@dataclass +class PlumeEffect: + animation: AnimationVariations | None = None + shadow: AnimationVariations | None = None + light: LightDefinition | None = None + count: Uint16 | None = None + min_count: Uint16 | None = None + max_count: Uint16 | None = None + period: Uint16 | None = None + particle_tick_offset: Float | None = None + probability: Float | None = None + offset_x: RangedValue | None = None + offset_y: RangedValue | None = None + offset_z: RangedValue | None = None + speed_x: RangedValue | None = None + speed_y: RangedValue | None = None + speed_z: RangedValue | None = None + acceleration_x: Float | None = None + acceleration_y: Float | None = None + acceleration_z: Float | None = None + movement_slowdown_factor_x: Float | None = None + movement_slowdown_factor_y: Float | None = None + movement_slowdown_factor_z: Float | None = None + scale: RangedValue | None = None + begin_scale: Float | None = None + end_scale: Float | None = None + fade_in_progress_duration: Float | None = None + fade_out_progress_duration: Float | None = None + spread_progress_duration: Float | None = None + adjust_animation_speed_by_base_scale: Boolean | None = None + affected_by_wind: Boolean | None = None + render_layer: RenderLayer | None = None + positions: list[Vector] | dict[str, Any] | None = None + nested_visualisations: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + can_lay_on_the_ground: Boolean | None = None + age_discrimination: Int8 | None = None + + +@dataclass +class PlumesSpecification: + render_box: BoundingBox | None = None + min_probability: Float | None = None + max_probability: Float | None = None + min_y_offset: Float | None = None + max_y_offset: Float | None = None + stateless_visualisations: ( + PlumeEffect | list[PlumeEffect] | dict[str, Any] | None + ) = None + + +@dataclass +class PodAnimationProcessionLayer: + type: Literal["pod-animation"] + frames: list[Frame1] | dict[str, Any] + graphic: ProcessionGraphic | None = None + + +@dataclass +class ProcessionAudio: + type: ProcessionAudioType + sound: Sound | None = None + looped_sound: InterruptibleSound | None = None + catalogue_id: Uint32 | None = None + + +@dataclass +class ProcessionAudioCatalogueItem: + index: Uint32 + sound: Sound | None = None + looped_sound: InterruptibleSound | None = None + + +@dataclass +class ProcessionAudioEvent: + type: ProcessionAudioEventType + usage: ProcessionAudioUsage | None = None + audio: ProcessionAudio | None = None + loop_id: Uint32 | None = None + + +ProcessionGraphicCatalogue: TypeAlias = ( + list[ProcessionGraphicCatalogueItem] | dict[str, Any] +) + + +ProcessionLayer: TypeAlias = ( + PodDistanceTraveledProcessionLayer + | PodMovementProcessionLayer + | PodOpacityProcessionLayer + | SingleGraphicProcessionLayer + | CoverGraphicProcessionLayer + | TintProcessionLayer + | PodAnimationProcessionLayer +) + + +@dataclass +class ProcessionTimeline: + duration: MapTick + layers: list[ProcessionLayer] | dict[str, Any] + special_action_tick: MapTick | None = None + draw_switch_tick: MapTick | None = None + intermezzo_min_duration: MapTick | None = None + intermezzo_max_duration: MapTick | None = None + audio_events: list[ProcessionAudioEvent] | dict[str, Any] | None = None + + +@dataclass +class ProgrammableSpeakerNote: + name: String + sound: Sound | None = None + cyclic_sound: CyclicSound | None = None + + +@dataclass +class OtherColor: + less_than: Double + color: Color | None = None + bar: ElementImageSet | None = None + + +@dataclass +class ProgressBarStyleSpecification: + type: Literal["progressbar_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + bar_width: Uint32 | None = None + color: Color | None = None + other_colors: list[OtherColor] | dict[str, Any] | None = None + bar: ElementImageSet | None = None + bar_background: ElementImageSet | None = None + font: String | None = None + font_color: Color | None = None + filled_font_color: Color | None = None + embed_text_in_bar: Boolean | None = None + side_text_padding: Int16 | None = None + + +@dataclass +class RadioButtonStyleSpecification: + type: Literal["radiobutton_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + default_graphical_set: ElementImageSet | None = None + hovered_graphical_set: ElementImageSet | None = None + clicked_graphical_set: ElementImageSet | None = None + disabled_graphical_set: ElementImageSet | None = None + selected_graphical_set: ElementImageSet | None = None + selected_hovered_graphical_set: ElementImageSet | None = None + game_controller_selected_hovered_graphical_set: ElementImageSet | None = ( + None + ) + selected_clicked_graphical_set: ElementImageSet | None = None + left_click_sound: Sound | None = None + font: String | None = None + font_color: Color | None = None + disabled_font_color: Color | None = None + text_padding: Uint32 | None = None + + +@dataclass +class RailFenceGraphicsSet: + segment_count: Uint8 + side_A: RailFencePictureSet + side_B: RailFencePictureSet + back_fence_render_layer: RenderLayer | None = None + front_fence_render_layer: RenderLayer | None = None + back_fence_render_layer_secondary: RenderLayer | None = None + front_fence_render_layer_secondary: RenderLayer | None = None + + +@dataclass +class RailPictureSet: + north: RailPieceLayers + northeast: RailPieceLayers + east: RailPieceLayers + southeast: RailPieceLayers + south: RailPieceLayers + southwest: RailPieceLayers + west: RailPieceLayers + northwest: RailPieceLayers + render_layers: RailRenderLayers + front_rail_endings: Sprite16Way | None = None + back_rail_endings: Sprite16Way | None = None + rail_endings: Sprite16Way | None = None + segment_visualisation_endings: RotatedAnimation | None = None + secondary_render_layers: RailRenderLayers | None = None + slice_origin: SliceOrigin | None = None + fog_mask: FogMask | None = None + + +@dataclass +class RollingStockRotatedSlopedGraphics: + rotated: RotatedSprite + sloped: RotatedSprite | None = None + slope_back_equals_front: Boolean | None = None + slope_angle_between_frames: Double | None = None + + +@dataclass +class SelectionModeData: + border_color: Color + cursor_box_type: CursorBoxType + mode: SelectionModeFlags + count_button_color: Color | None = None + chart_color: Color | None = None + entity_filters: list[EntityID] | dict[str, Any] | None = None + entity_type_filters: list[String] | dict[str, Any] | None = None + tile_filters: list[TileID] | dict[str, Any] | None = None + started_sound: Sound | None = None + ended_sound: Sound | None = None + play_ended_sound_when_nothing_selected: Boolean | None = None + entity_filter_mode: EntityFilterMode | None = None + tile_filter_mode: TileFilterMode | None = None + + +@dataclass +class SemiPersistentWorldAmbientSoundDefinition1: + sound: Sound + delay_mean_seconds: Float | None = None + delay_variance_seconds: Float | None = None + + +SemiPersistentWorldAmbientSoundDefinition: TypeAlias = ( + SemiPersistentWorldAmbientSoundDefinition1 | Sound +) + + +@dataclass +class SpeechBubbleStyleSpecification: + type: Literal["speech_bubble_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + frame_style: FrameStyleSpecification | None = None + label_style: LabelStyleSpecification | None = None + arrow_graphical_set: ElementImageSet | None = None + close_color: Color | None = None + arrow_indent: Double | None = None + pass_through_mouse: Boolean | None = None + + +@dataclass +class TabStyleSpecification: + type: Literal["tab_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + default_graphical_set: ElementImageSet | None = None + hovered_graphical_set: ElementImageSet | None = None + clicked_graphical_set: ElementImageSet | None = None + disabled_graphical_set: ElementImageSet | None = None + selected_graphical_set: ElementImageSet | None = None + selected_hovered_graphical_set: ElementImageSet | None = None + game_controller_selected_hovered_graphical_set: ElementImageSet | None = ( + None + ) + selected_clicked_graphical_set: ElementImageSet | None = None + left_click_sound: Sound | None = None + font: String | None = None + badge_font: String | None = None + badge_horizontal_spacing: Int16 | None = None + default_font_color: Color | None = None + selected_font_color: Color | None = None + disabled_font_color: Color | None = None + default_badge_font_color: Color | None = None + selected_badge_font_color: Color | None = None + disabled_badge_font_color: Color | None = None + override_graphics_on_edges: Boolean | None = None + increase_height_when_selected: Boolean | None = None + left_edge_selected_graphical_set: ElementImageSet | None = None + right_edge_selected_graphical_set: ElementImageSet | None = None + default_badge_graphical_set: ElementImageSet | None = None + selected_badge_graphical_set: ElementImageSet | None = None + hover_badge_graphical_set: ElementImageSet | None = None + press_badge_graphical_set: ElementImageSet | None = None + disabled_badge_graphical_set: ElementImageSet | None = None + draw_grayscale_picture: Boolean | None = None + + +@dataclass +class TechnologySlotStyleSpecification: + type: Literal["technology_slot_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + default_graphical_set: ElementImageSet | None = None + hovered_graphical_set: ElementImageSet | None = None + clicked_graphical_set: ElementImageSet | None = None + disabled_graphical_set: ElementImageSet | None = None + selected_graphical_set: ElementImageSet | None = None + selected_hovered_graphical_set: ElementImageSet | None = None + game_controller_selected_hovered_graphical_set: ElementImageSet | None = ( + None + ) + selected_clicked_graphical_set: ElementImageSet | None = None + left_click_sound: Sound | None = None + font: String | None = None + default_font_color: Color | None = None + hovered_font_color: Color | None = None + clicked_font_color: Color | None = None + disabled_font_color: Color | None = None + selected_font_color: Color | None = None + selected_hovered_font_color: Color | None = None + selected_clicked_font_color: Color | None = None + strikethrough_color: Color | None = None + pie_progress_color: Color | None = None + clicked_vertical_offset: Uint32 | None = None + draw_shadow_under_picture: Boolean | None = None + draw_grayscale_picture: Boolean | None = None + invert_colors_of_picture_when_hovered_or_toggled: Boolean | None = None + invert_colors_of_picture_when_disabled: Boolean | None = None + icon_horizontal_align: HorizontalAlign | None = None + highlighted_graphical_set: ElementImageSet | None = None + default_background_shadow: ElementImageSet | None = None + level_band: ElementImageSet | None = None + hovered_level_band: ElementImageSet | None = None + level_offset_x: Int32 | None = None + level_offset_y: Int32 | None = None + level_band_width: Uint32 | None = None + level_band_height: Uint32 | None = None + level_font: String | None = None + level_range_font: String | None = None + level_font_color: Color | None = None + hovered_level_font_color: Color | None = None + level_range_font_color: Color | None = None + hovered_level_range_font_color: Color | None = None + level_range_band: ElementImageSet | None = None + hovered_level_range_band: ElementImageSet | None = None + level_range_offset_x: Int32 | None = None + level_range_offset_y: Int32 | None = None + ingredients_height: Uint32 | None = None + default_ingredients_background: ElementImageSet | None = None + hovered_ingredients_background: ElementImageSet | None = None + clicked_ingredients_background: ElementImageSet | None = None + disabled_ingredients_background: ElementImageSet | None = None + highlighted_ingredients_background: ElementImageSet | None = None + ingredients_padding: Uint32 | None = None + ingredient_icon_size: Uint32 | None = None + ingredient_icon_overlap: Uint32 | None = None + clicked_overlay: ElementImageSet | None = None + progress_bar_background: ElementImageSet | None = None + progress_bar: ElementImageSet | None = None + progress_bar_shadow: ElementImageSet | None = None + progress_bar_height: Uint32 | None = None + progress_bar_color: Color | None = None + drag_handle_style: EmptyWidgetStyleSpecification | None = None + + +@dataclass +class TextBoxStyleSpecification: + type: Literal["textbox_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + font: String | None = None + font_color: Color | None = None + disabled_font_color: Color | None = None + selection_background_color: Color | None = None + default_background: ElementImageSet | None = None + active_background: ElementImageSet | None = None + game_controller_hovered_background: ElementImageSet | None = None + disabled_background: ElementImageSet | None = None + rich_text_setting: RichTextSetting | None = None + rich_text_highlight_error_color: Color | None = None + rich_text_highlight_warning_color: Color | None = None + rich_text_highlight_ok_color: Color | None = None + selected_rich_text_highlight_error_color: Color | None = None + selected_rich_text_highlight_warning_color: Color | None = None + selected_rich_text_highlight_ok_color: Color | None = None + + +@dataclass +class ThrusterGraphicsSet: + animation: Animation4Way | None = None + idle_animation: Animation4Way | None = None + always_draw_idle_animation: Boolean | None = None + default_recipe_tint: GlobalRecipeTints | None = None + recipe_not_set_tint: GlobalRecipeTints | None = None + states: list[VisualState] | dict[str, Any] | None = None + working_visualisations: ( + list[WorkingVisualisation] + | dict[str, Any] + | dict[str, WorkingVisualisation] + | None + ) = None + shift_animation_waypoints: ShiftAnimationWaypoints | None = None + shift_animation_waypoint_stop_duration: Uint16 | None = None + shift_animation_transition_duration: Uint16 | None = None + status_colors: StatusColors | None = None + flame: Sprite | None = None + flame_effect: EffectTexture | None = None + flame_position: Vector | None = None + flame_effect_height: Float | None = None + flame_effect_width: Float | None = None + flame_half_height: Float | None = None + flame_effect_offset: Float | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class WorkingSound1: + sound: Sound | None = None + probability: Double | None = None + fade_in_ticks: Uint32 | None = None + fade_out_ticks: Uint32 | None = None + activity_to_volume_modifiers: ActivityMatchingModifiers | None = None + activity_to_speed_modifiers: ActivityMatchingModifiers | None = None + match_progress_to_activity: Boolean | None = None + match_volume_to_activity: Boolean | None = None + match_speed_to_activity: Boolean | None = None + play_for_working_visualisations: list[String] | dict[str, Any] | None = None + volume_smoothing_window_size: Uint32 | None = None + main_sounds: MainSound | list[MainSound] | dict[str, Any] | None = None + max_sounds_per_prototype: Uint8 | None = None + extra_sounds_ignore_limit: Boolean | None = None + persistent: Boolean | None = None + use_doppler_shift: Boolean | None = None + idle_sound: Sound | None = None + activate_sound: Sound | None = None + deactivate_sound: Sound | None = None + sound_accents: SoundAccent | list[SoundAccent] | dict[str, Any] | None = ( + None + ) + + +WorkingSound: TypeAlias = WorkingSound1 | Sound + + +@dataclass +class ProcessionPrototype: + type: Literal["procession"] + name: String + timeline: ProcessionTimeline + usage: Usage + procession_style: Uint32 | list[Uint32] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + ground_timeline: ProcessionTimeline | None = None + + +@dataclass +class Instrument: + name: String + notes: list[ProgrammableSpeakerNote] | dict[str, Any] + + +@dataclass +class UtilitySounds: + type: Literal["utility-sounds"] + name: String + gui_click: Sound + list_box_click: Sound + build_small: Sound + build_medium: Sound + build_large: Sound + build_huge: Sound + cannot_build: Sound + build_blueprint_small: Sound + build_blueprint_medium: Sound + build_blueprint_large: Sound + build_blueprint_huge: Sound + build_ghost_upgrade: Sound + build_ghost_upgrade_cancel: Sound + build_animated_small: Sound + build_animated_medium: Sound + build_animated_large: Sound + build_animated_huge: Sound + deconstruct_small: Sound + deconstruct_medium: Sound + deconstruct_large: Sound + deconstruct_huge: Sound + deconstruct_robot: Sound + rotated_small: Sound + rotated_medium: Sound + rotated_large: Sound + rotated_huge: Sound + axe_mining_ore: Sound + axe_mining_stone: Sound + mining_wood: Sound + axe_fighting: Sound + alert_destroyed: Sound + console_message: Sound + scenario_message: Sound + new_objective: Sound + game_lost: Sound + game_won: Sound + metal_walking_sound: Sound + research_completed: Sound + default_manual_repair: Sound + crafting_finished: Sound + inventory_click: Sound + inventory_move: Sound + clear_cursor: Sound + armor_insert: Sound + armor_remove: Sound + achievement_unlocked: Sound + wire_connect_pole: Sound + wire_disconnect: Sound + wire_pickup: Sound + tutorial_notice: Sound + smart_pipette: Sound + switch_gun: Sound + picked_up_item: Sound + paste_activated: Sound + item_deleted: Sound + entity_settings_pasted: Sound + entity_settings_copied: Sound + item_spawned: Sound + confirm: Sound + undo: Sound + drop_item: Sound + rail_plan_start: Sound + default_driving_sound: InterruptibleSound + default_landing_steps: Sound + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + segment_dying_sound: Sound | None = None + + +@dataclass +class ActivityBarStyleSpecification: + type: Literal["activity_bar_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + speed: Float | None = None + bar_width: Uint32 | None = None + color: Color | None = None + bar_background: ElementImageSet | None = None + bar: ElementImageSet | None = None + bar_size_ratio: Float | None = None + + +@dataclass +class ButtonStyleSpecification: + type: Literal["button_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + default_graphical_set: ElementImageSet | None = None + hovered_graphical_set: ElementImageSet | None = None + clicked_graphical_set: ElementImageSet | None = None + disabled_graphical_set: ElementImageSet | None = None + selected_graphical_set: ElementImageSet | None = None + selected_hovered_graphical_set: ElementImageSet | None = None + game_controller_selected_hovered_graphical_set: ElementImageSet | None = ( + None + ) + selected_clicked_graphical_set: ElementImageSet | None = None + left_click_sound: Sound | None = None + font: String | None = None + default_font_color: Color | None = None + hovered_font_color: Color | None = None + clicked_font_color: Color | None = None + disabled_font_color: Color | None = None + selected_font_color: Color | None = None + selected_hovered_font_color: Color | None = None + selected_clicked_font_color: Color | None = None + strikethrough_color: Color | None = None + pie_progress_color: Color | None = None + clicked_vertical_offset: Uint32 | None = None + draw_shadow_under_picture: Boolean | None = None + draw_grayscale_picture: Boolean | None = None + invert_colors_of_picture_when_hovered_or_toggled: Boolean | None = None + invert_colors_of_picture_when_disabled: Boolean | None = None + icon_horizontal_align: HorizontalAlign | None = None + + +@dataclass +class CameraStyleSpecification: + type: Literal["camera_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + graphical_set: ElementImageSet | None = None + + +@dataclass +class CargoBayConnectableGraphicsSet: + picture: LayeredSprite | None = None + animation: Animation | None = None + animation_render_layer: RenderLayer | None = None + connections: CargoBayConnections | None = None + water_reflection: WaterReflectionDefinition | None = None + + +@dataclass +class CargoHatchDefinition: + hatch_graphics: Animation | None = None + hatch_render_layer: RenderLayer | None = None + entering_render_layer: RenderLayer | None = None + offset: Vector | None = None + pod_shadow_offset: Vector | None = None + sky_slice_height: Float | None = None + slice_height: Float | None = None + travel_height: Float | None = None + busy_timeout_ticks: Uint32 | None = None + hatch_opening_ticks: Uint32 | None = None + opening_sound: InterruptibleSound | None = None + closing_sound: InterruptibleSound | None = None + cargo_unit_entity_to_spawn: EntityID | None = None + illumination_graphic_index: Uint32 | None = None + receiving_cargo_units: list[EntityID] | dict[str, Any] | None = None + + +@dataclass +class CheckBoxStyleSpecification: + type: Literal["checkbox_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + default_graphical_set: ElementImageSet | None = None + hovered_graphical_set: ElementImageSet | None = None + clicked_graphical_set: ElementImageSet | None = None + disabled_graphical_set: ElementImageSet | None = None + selected_graphical_set: ElementImageSet | None = None + selected_hovered_graphical_set: ElementImageSet | None = None + game_controller_selected_hovered_graphical_set: ElementImageSet | None = ( + None + ) + selected_clicked_graphical_set: ElementImageSet | None = None + left_click_sound: Sound | None = None + font: String | None = None + font_color: Color | None = None + disabled_font_color: Color | None = None + checkmark: Sprite | None = None + disabled_checkmark: Sprite | None = None + intermediate_mark: Sprite | None = None + text_padding: Uint32 | None = None + + +@dataclass +class CircuitConnectorDefinition: + sprites: CircuitConnectorSprites | None = None + points: WireConnectionPoint | None = None + + +@dataclass +class CranePart: + orientation_shift: Float | None = None + is_contractible_by_cropping: Boolean | None = None + should_scale_for_perspective: Boolean | None = None + scale_to_fit_model: Boolean | None = None + allow_sprite_rotation: Boolean | None = None + snap_start: Float | None = None + snap_end: Float | None = None + snap_end_arm_extent_multiplier: Float | None = None + name: String | None = None + dying_effect: CranePartDyingEffect | None = None + relative_position: Vector3D | None = None + relative_position_grappler: Vector3D | None = None + static_length: Vector3D | None = None + extendable_length: Vector3D | None = None + static_length_grappler: Vector3D | None = None + extendable_length_grappler: Vector3D | None = None + sprite: Sprite | None = None + rotated_sprite: RotatedSprite | None = None + sprite_shadow: Sprite | None = None + rotated_sprite_shadow: RotatedSprite | None = None + sprite_reflection: Sprite | None = None + rotated_sprite_reflection: RotatedSprite | None = None + layer: Int8 | None = None + + +@dataclass +class DoubleSliderStyleSpecification: + type: Literal["double_slider_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + full_bar: ElementImageSet | None = None + full_bar_disabled: ElementImageSet | None = None + empty_bar: ElementImageSet | None = None + empty_bar_disabled: ElementImageSet | None = None + draw_notches: Boolean | None = None + notch: ElementImageSet | None = None + button: ButtonStyleSpecification | None = None + high_button: ButtonStyleSpecification | None = None + + +EnergySource: TypeAlias = ( + ElectricEnergySource + | BurnerEnergySource + | HeatEnergySource + | FluidEnergySource + | VoidEnergySource +) + + +@dataclass +class GigaCargoHatchDefinition: + covered_hatches: list[Uint32] | dict[str, Any] + hatch_graphics_back: Animation | None = None + hatch_graphics_front: Animation | None = None + hatch_render_layer_back: RenderLayer | None = None + hatch_render_layer_front: RenderLayer | None = None + opening_sound: InterruptibleSound | None = None + closing_sound: InterruptibleSound | None = None + + +@dataclass +class HorizontalScrollBarStyleSpecification: + type: Literal["horizontal_scrollbar_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + background_graphical_set: ElementImageSet | None = None + thumb_button_style: ButtonStyleSpecification | None = None + + +@dataclass +class PersistentWorldAmbientSoundsDefinition: + base_ambience: ( + PersistentWorldAmbientSoundDefinition + | list[PersistentWorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + wind: ( + PersistentWorldAmbientSoundDefinition + | list[PersistentWorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + crossfade: PersistentWorldAmbientSoundsDefinitionCrossfade | None = None + semi_persistent: ( + SemiPersistentWorldAmbientSoundDefinition + | list[SemiPersistentWorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + + +ProcessionAudioCatalogue: TypeAlias = ( + list[ProcessionAudioCatalogueItem] | dict[str, Any] +) + + +@dataclass +class RailSignalPictureSet: + structure: RotatedAnimation + signal_color_to_structure_frame_index: RailSignalColorToFrameIndex + lights: RailSignalLights + structure_render_layer: RenderLayer | None = None + rail_piece: RailSignalStaticSpriteLayer | None = None + upper_rail_piece: RailSignalStaticSpriteLayer | None = None + circuit_connector: ( + list[CircuitConnectorDefinition] | dict[str, Any] | None + ) = None + circuit_connector_render_layer: RenderLayer | None = None + structure_align_to_animation_index: list[Uint8] | dict[str, Any] | None = ( + None + ) + selection_box_shift: list[Vector] | dict[str, Any] | None = None + + +@dataclass +class SliderStyleSpecification: + type: Literal["slider_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + full_bar: ElementImageSet | None = None + full_bar_disabled: ElementImageSet | None = None + empty_bar: ElementImageSet | None = None + empty_bar_disabled: ElementImageSet | None = None + draw_notches: Boolean | None = None + notch: ElementImageSet | None = None + button: ButtonStyleSpecification | None = None + high_button: ButtonStyleSpecification | None = None + + +@dataclass +class SwitchStyleSpecification: + type: Literal["switch_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + left_button_position: Uint32 | None = None + middle_button_position: Uint32 | None = None + right_button_position: Uint32 | None = None + default_background: Sprite | None = None + hover_background: Sprite | None = None + disabled_background: Sprite | None = None + button: ButtonStyleSpecification | None = None + active_label: LabelStyleSpecification | None = None + inactive_label: LabelStyleSpecification | None = None + + +@dataclass +class TableStyleSpecification: + type: Literal["table_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + horizontal_spacing: Int32 | list[SpacingItem] | dict[str, Any] | None = None + vertical_spacing: Int32 | list[SpacingItem] | dict[str, Any] | None = None + cell_padding: Int16 | None = None + top_cell_padding: Int16 | None = None + right_cell_padding: Int16 | None = None + bottom_cell_padding: Int16 | None = None + left_cell_padding: Int16 | None = None + apply_row_graphical_set_per_column: Boolean | None = None + wide_as_column_count: Boolean | None = None + column_graphical_set: ElementImageSet | None = None + default_row_graphical_set: ElementImageSet | None = None + even_row_graphical_set: ElementImageSet | None = None + odd_row_graphical_set: ElementImageSet | None = None + hovered_graphical_set: ElementImageSet | None = None + clicked_graphical_set: ElementImageSet | None = None + selected_graphical_set: ElementImageSet | None = None + selected_hovered_graphical_set: ElementImageSet | None = None + selected_clicked_graphical_set: ElementImageSet | None = None + background_graphical_set: ElementImageSet | None = None + column_alignments: list[ColumnAlignment] | dict[str, Any] | None = None + column_widths: ( + ColumnWidthItem | list[ColumnWidth] | dict[str, Any] | None + ) = None + hovered_row_color: Color | None = None + selected_row_color: Color | None = None + vertical_line_color: Color | None = None + horizontal_line_color: Color | None = None + column_ordering_ascending_button_style: ButtonStyleSpecification | None = ( + None + ) + column_ordering_descending_button_style: ButtonStyleSpecification | None = ( + None + ) + inactive_column_ordering_ascending_button_style: ( + ButtonStyleSpecification | None + ) = None + inactive_column_ordering_descending_button_style: ( + ButtonStyleSpecification | None + ) = None + border: BorderImageSet | None = None + + +@dataclass +class VerticalScrollBarStyleSpecification: + type: Literal["vertical_scrollbar_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + background_graphical_set: ElementImageSet | None = None + thumb_button_style: ButtonStyleSpecification | None = None + + +@dataclass +class SpaceLocationPrototype: + type: Literal["space-location"] + name: String + distance: Double + orientation: RealOrientation + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + gravity_pull: Double | None = None + magnitude: Double | None = None + parked_platforms_orientation: RealOrientation | None = None + label_orientation: RealOrientation | None = None + draw_orbit: Boolean | None = None + solar_power_in_space: Double | None = None + asteroid_spawn_influence: Double | None = None + fly_condition: Boolean | None = None + auto_save_on_first_trip: Boolean | None = None + procession_graphic_catalogue: ProcessionGraphicCatalogue | None = None + procession_audio_catalogue: ProcessionAudioCatalogue | None = None + platform_procession_set: ProcessionSet | None = None + planet_procession_set: ProcessionSet | None = None + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + starmap_icons: list[IconData] | dict[str, Any] | None = None + starmap_icon: FileName | None = None + starmap_icon_size: SpriteSizeType | None = None + starmap_icon_orientation: RealOrientation | None = None + asteroid_spawn_definitions: ( + list[SpaceLocationAsteroidSpawnDefinition] | dict[str, Any] | None + ) = None + + +@dataclass +class AgriculturalCraneProperties: + speed: AgriculturalCraneSpeed + origin: Vector3D + shadow_direction: Vector3D + parts: list[CranePart] | dict[str, Any] + min_arm_extent: Double | None = None + min_grappler_extent: Double | None = None + operation_angle: Float | None = None + telescope_default_extention: Double | None = None + + +@dataclass +class CargoStationParameters: + prefer_packed_cargo_units: Boolean | None = None + hatch_definitions: list[CargoHatchDefinition] | dict[str, Any] | None = None + giga_hatch_definitions: ( + list[GigaCargoHatchDefinition] | dict[str, Any] | None + ) = None + is_input_station: Boolean | None = None + is_output_station: Boolean | None = None + + +@dataclass +class ScrollPaneStyleSpecification: + type: Literal["scroll_pane_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + vertical_flow_style: VerticalFlowStyleSpecification | None = None + horizontal_scrollbar_style: HorizontalScrollBarStyleSpecification | None = ( + None + ) + vertical_scrollbar_style: VerticalScrollBarStyleSpecification | None = None + graphical_set: ElementImageSet | None = None + background_graphical_set: ElementImageSet | None = None + extra_padding_when_activated: Int32 | None = None + extra_top_padding_when_activated: Int32 | None = None + extra_bottom_padding_when_activated: Int32 | None = None + extra_left_padding_when_activated: Int32 | None = None + extra_right_padding_when_activated: Int32 | None = None + extra_margin_when_activated: Int32 | None = None + extra_top_margin_when_activated: Int32 | None = None + extra_bottom_margin_when_activated: Int32 | None = None + extra_left_margin_when_activated: Int32 | None = None + extra_right_margin_when_activated: Int32 | None = None + dont_force_clipping_rect_for_contents: Boolean | None = None + always_draw_borders: Boolean | None = None + scrollbars_go_outside: Boolean | None = None + + +@dataclass +class TabbedPaneStyleSpecification: + type: Literal["tabbed_pane_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + vertical_spacing: Uint32 | None = None + tab_content_frame: FrameStyleSpecification | None = None + tab_container: TableStyleSpecification | None = None + + +@dataclass +class ListBoxStyleSpecification: + type: Literal["list_box_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + item_style: ButtonStyleSpecification | None = None + scroll_pane_style: ScrollPaneStyleSpecification | None = None + + +@dataclass +class DropDownStyleSpecification: + type: Literal["dropdown_style"] + parent: String | None = None + horizontal_align: HorizontalAlign | None = None + vertical_align: VerticalAlign | None = None + ignored_by_search: Boolean | None = None + never_hide_by_search: Boolean | None = None + horizontally_stretchable: StretchRule | None = None + vertically_stretchable: StretchRule | None = None + horizontally_squashable: StretchRule | None = None + vertically_squashable: StretchRule | None = None + natural_size: Uint32 | list[Uint32] | None = None + size: Uint32 | list[Uint32] | None = None + width: Uint32 | None = None + minimal_width: Uint32 | None = None + maximal_width: Uint32 | None = None + natural_width: Uint32 | None = None + height: Uint32 | None = None + minimal_height: Uint32 | None = None + maximal_height: Uint32 | None = None + natural_height: Uint32 | None = None + padding: Int16 | None = None + top_padding: Int16 | None = None + right_padding: Int16 | None = None + bottom_padding: Int16 | None = None + left_padding: Int16 | None = None + margin: Int16 | None = None + top_margin: Int16 | None = None + right_margin: Int16 | None = None + bottom_margin: Int16 | None = None + left_margin: Int16 | None = None + effect: Effect | None = None + effect_opacity: Float | None = None + tooltip: LocalisedString | None = None + button_style: ButtonStyleSpecification | None = None + icon: Sprite | None = None + list_box_style: ListBoxStyleSpecification | None = None + selector_and_title_spacing: Int16 | None = None + opened_sound: Sound | None = None + + +StyleSpecification: TypeAlias = ( + ActivityBarStyleSpecification + | ButtonStyleSpecification + | CameraStyleSpecification + | CheckBoxStyleSpecification + | DropDownStyleSpecification + | FlowStyleSpecification + | FrameStyleSpecification + | GraphStyleSpecification + | HorizontalFlowStyleSpecification + | LineStyleSpecification + | ImageStyleSpecification + | LabelStyleSpecification + | ListBoxStyleSpecification + | ProgressBarStyleSpecification + | RadioButtonStyleSpecification + | HorizontalScrollBarStyleSpecification + | VerticalScrollBarStyleSpecification + | ScrollPaneStyleSpecification + | SliderStyleSpecification + | SwitchStyleSpecification + | TableStyleSpecification + | TabStyleSpecification + | TextBoxStyleSpecification + | VerticalFlowStyleSpecification + | TabbedPaneStyleSpecification + | EmptyWidgetStyleSpecification + | MinimapStyleSpecification + | TechnologySlotStyleSpecification + | GlowStyleSpecification + | SpeechBubbleStyleSpecification + | DoubleSliderStyleSpecification +) + + +@dataclass +class FactorioDataRaw: + accumulator: dict[str, AccumulatorPrototype] | None = None + achievement: dict[str, AchievementPrototype] | None = None + active_defense_equipment: ( + dict[str, ActiveDefenseEquipmentPrototype] | None + ) = None + agricultural_tower: dict[str, AgriculturalTowerPrototype] | None = None + airborne_pollutant: dict[str, AirbornePollutantPrototype] | None = None + ambient_sound: dict[str, AmbientSound] | None = None + ammo_category: dict[str, AmmoCategory] | None = None + ammo: dict[str, AmmoItemPrototype] | None = None + ammo_turret: dict[str, AmmoTurretPrototype] | None = None + animation: dict[str, AnimationPrototype] | None = None + arithmetic_combinator: dict[str, ArithmeticCombinatorPrototype] | None = ( + None + ) + armor: dict[str, ArmorPrototype] | None = None + arrow: dict[str, ArrowPrototype] | None = None + artillery_flare: dict[str, ArtilleryFlarePrototype] | None = None + artillery_projectile: dict[str, ArtilleryProjectilePrototype] | None = None + artillery_turret: dict[str, ArtilleryTurretPrototype] | None = None + artillery_wagon: dict[str, ArtilleryWagonPrototype] | None = None + assembling_machine: dict[str, AssemblingMachinePrototype] | None = None + asteroid_chunk: dict[str, AsteroidChunkPrototype] | None = None + asteroid_collector: dict[str, AsteroidCollectorPrototype] | None = None + asteroid: dict[str, AsteroidPrototype] | None = None + autoplace_control: dict[str, AutoplaceControl] | None = None + battery_equipment: dict[str, BatteryEquipmentPrototype] | None = None + beacon: dict[str, BeaconPrototype] | None = None + beam: dict[str, BeamPrototype] | None = None + belt_immunity_equipment: ( + dict[str, BeltImmunityEquipmentPrototype] | None + ) = None + blueprint_book: dict[str, BlueprintBookPrototype] | None = None + blueprint: dict[str, BlueprintItemPrototype] | None = None + boiler: dict[str, BoilerPrototype] | None = None + build_entity_achievement: ( + dict[str, BuildEntityAchievementPrototype] | None + ) = None + burner_generator: dict[str, BurnerGeneratorPrototype] | None = None + burner_usage: dict[str, BurnerUsagePrototype] | None = None + capsule: dict[str, CapsulePrototype] | None = None + capture_robot: dict[str, CaptureRobotPrototype] | None = None + car: dict[str, CarPrototype] | None = None + cargo_bay: dict[str, CargoBayPrototype] | None = None + cargo_landing_pad: dict[str, CargoLandingPadPrototype] | None = None + cargo_pod: dict[str, CargoPodPrototype] | None = None + cargo_wagon: dict[str, CargoWagonPrototype] | None = None + chain_active_trigger: dict[str, ChainActiveTriggerPrototype] | None = None + change_surface_achievement: ( + dict[str, ChangedSurfaceAchievementPrototype] | None + ) = None + character_corpse: dict[str, CharacterCorpsePrototype] | None = None + character: dict[str, CharacterPrototype] | None = None + cliff: dict[str, CliffPrototype] | None = None + collision_layer: dict[str, CollisionLayerPrototype] | None = None + combat_robot_count_achievement: ( + dict[str, CombatRobotCountAchievementPrototype] | None + ) = None + combat_robot: dict[str, CombatRobotPrototype] | None = None + complete_objective_achievement: ( + dict[str, CompleteObjectiveAchievementPrototype] | None + ) = None + constant_combinator: dict[str, ConstantCombinatorPrototype] | None = None + construct_with_robots_achievement: ( + dict[str, ConstructWithRobotsAchievementPrototype] | None + ) = None + construction_robot: dict[str, ConstructionRobotPrototype] | None = None + container: dict[str, ContainerPrototype] | None = None + copy_paste_tool: dict[str, CopyPasteToolPrototype] | None = None + corpse: dict[str, CorpsePrototype] | None = None + create_platform_achievement: ( + dict[str, CreatePlatformAchievementPrototype] | None + ) = None + curved_rail_a: dict[str, CurvedRailAPrototype] | None = None + curved_rail_b: dict[str, CurvedRailBPrototype] | None = None + custom_event: dict[str, CustomEventPrototype] | None = None + custom_input: dict[str, CustomInputPrototype] | None = None + damage_type: dict[str, DamageType] | None = None + decider_combinator: dict[str, DeciderCombinatorPrototype] | None = None + deconstruct_with_robots_achievement: ( + dict[str, DeconstructWithRobotsAchievementPrototype] | None + ) = None + deconstructible_tile_proxy: ( + dict[str, DeconstructibleTileProxyPrototype] | None + ) = None + deconstruction_item: dict[str, DeconstructionItemPrototype] | None = None + optimized_decorative: dict[str, DecorativePrototype] | None = None + delayed_active_trigger: dict[str, DelayedActiveTriggerPrototype] | None = ( + None + ) + deliver_by_robots_achievement: ( + dict[str, DeliverByRobotsAchievementPrototype] | None + ) = None + deliver_category: dict[str, DeliverCategory] | None = None + deliver_impact_combination: dict[str, DeliverImpactCombination] | None = ( + None + ) + deplete_resource_achievement: ( + dict[str, DepleteResourceAchievementPrototype] | None + ) = None + destroy_cliff_achievement: ( + dict[str, DestroyCliffAchievementPrototype] | None + ) = None + display_panel: dict[str, DisplayPanelPrototype] | None = None + dont_build_entity_achievement: ( + dict[str, DontBuildEntityAchievementPrototype] | None + ) = None + dont_craft_manually_achievement: ( + dict[str, DontCraftManuallyAchievementPrototype] | None + ) = None + dont_kill_manually_achievement: ( + dict[str, DontKillManuallyAchievementPrototype] | None + ) = None + dont_research_before_researching_achievement: ( + dict[str, DontResearchBeforeResearchingAchievementPrototype] | None + ) = None + dont_use_entity_in_energy_production_achievement: ( + dict[str, DontUseEntityInEnergyProductionAchievementPrototype] | None + ) = None + editor_controller: dict[str, EditorControllerPrototype] | None = None + electric_energy_interface: ( + dict[str, ElectricEnergyInterfacePrototype] | None + ) = None + electric_pole: dict[str, ElectricPolePrototype] | None = None + electric_turret: dict[str, ElectricTurretPrototype] | None = None + elevated_curved_rail_a: dict[str, ElevatedCurvedRailAPrototype] | None = ( + None + ) + elevated_curved_rail_b: dict[str, ElevatedCurvedRailBPrototype] | None = ( + None + ) + elevated_half_diagonal_rail: ( + dict[str, ElevatedHalfDiagonalRailPrototype] | None + ) = None + elevated_straight_rail: dict[str, ElevatedStraightRailPrototype] | None = ( + None + ) + unit_spawner: dict[str, EnemySpawnerPrototype] | None = None + energy_shield_equipment: ( + dict[str, EnergyShieldEquipmentPrototype] | None + ) = None + entity_ghost: dict[str, EntityGhostPrototype] | None = None + equip_armor_achievement: ( + dict[str, EquipArmorAchievementPrototype] | None + ) = None + equipment_category: dict[str, EquipmentCategory] | None = None + equipment_ghost: dict[str, EquipmentGhostPrototype] | None = None + equipment_grid: dict[str, EquipmentGridPrototype] | None = None + explosion: dict[str, ExplosionPrototype] | None = None + fire: dict[str, FireFlamePrototype] | None = None + fish: dict[str, FishPrototype] | None = None + fluid: dict[str, FluidPrototype] | None = None + stream: dict[str, FluidStreamPrototype] | None = None + fluid_turret: dict[str, FluidTurretPrototype] | None = None + fluid_wagon: dict[str, FluidWagonPrototype] | None = None + font: dict[str, FontPrototype] | None = None + fuel_category: dict[str, FuelCategory] | None = None + furnace: dict[str, FurnacePrototype] | None = None + fusion_generator: dict[str, FusionGeneratorPrototype] | None = None + fusion_reactor: dict[str, FusionReactorPrototype] | None = None + gate: dict[str, GatePrototype] | None = None + generator_equipment: dict[str, GeneratorEquipmentPrototype] | None = None + generator: dict[str, GeneratorPrototype] | None = None + god_controller: dict[str, GodControllerPrototype] | None = None + group_attack_achievement: ( + dict[str, GroupAttackAchievementPrototype] | None + ) = None + gui_style: dict[str, GuiStyle] | None = None + gun: dict[str, GunPrototype] | None = None + half_diagonal_rail: dict[str, HalfDiagonalRailPrototype] | None = None + heat_interface: dict[str, HeatInterfacePrototype] | None = None + heat_pipe: dict[str, HeatPipePrototype] | None = None + highlight_box: dict[str, HighlightBoxEntityPrototype] | None = None + impact_category: dict[str, ImpactCategory] | None = None + infinity_cargo_wagon: dict[str, InfinityCargoWagonPrototype] | None = None + infinity_container: dict[str, InfinityContainerPrototype] | None = None + infinity_pipe: dict[str, InfinityPipePrototype] | None = None + inserter: dict[str, InserterPrototype] | None = None + inventory_bonus_equipment: ( + dict[str, InventoryBonusEquipmentPrototype] | None + ) = None + item_entity: dict[str, ItemEntityPrototype] | None = None + item_group: dict[str, ItemGroup] | None = None + item: dict[str, ItemPrototype] | None = None + item_request_proxy: dict[str, ItemRequestProxyPrototype] | None = None + item_subgroup: dict[str, ItemSubGroup] | None = None + item_with_entity_data: dict[str, ItemWithEntityDataPrototype] | None = None + item_with_inventory: dict[str, ItemWithInventoryPrototype] | None = None + item_with_label: dict[str, ItemWithLabelPrototype] | None = None + item_with_tags: dict[str, ItemWithTagsPrototype] | None = None + kill_achievement: dict[str, KillAchievementPrototype] | None = None + lab: dict[str, LabPrototype] | None = None + lamp: dict[str, LampPrototype] | None = None + land_mine: dict[str, LandMinePrototype] | None = None + lane_splitter: dict[str, LaneSplitterPrototype] | None = None + legacy_curved_rail: dict[str, LegacyCurvedRailPrototype] | None = None + legacy_straight_rail: dict[str, LegacyStraightRailPrototype] | None = None + lightning_attractor: dict[str, LightningAttractorPrototype] | None = None + lightning: dict[str, LightningPrototype] | None = None + linked_belt: dict[str, LinkedBeltPrototype] | None = None + linked_container: dict[str, LinkedContainerPrototype] | None = None + loader_1x1: dict[str, Loader1x1Prototype] | None = None + loader: dict[str, Loader1x2Prototype] | None = None + locomotive: dict[str, LocomotivePrototype] | None = None + logistic_container: dict[str, LogisticContainerPrototype] | None = None + logistic_robot: dict[str, LogisticRobotPrototype] | None = None + map_gen_presets: dict[str, MapGenPresets] | None = None + map_settings: dict[str, MapSettings] | None = None + market: dict[str, MarketPrototype] | None = None + mining_drill: dict[str, MiningDrillPrototype] | None = None + mod_data: dict[str, ModData] | None = None + module_category: dict[str, ModuleCategory] | None = None + module: dict[str, ModulePrototype] | None = None + module_transfer_achievement: ( + dict[str, ModuleTransferAchievementPrototype] | None + ) = None + mouse_cursor: dict[str, MouseCursor] | None = None + movement_bonus_equipment: ( + dict[str, MovementBonusEquipmentPrototype] | None + ) = None + noise_expression: dict[str, NamedNoiseExpression] | None = None + noise_function: dict[str, NamedNoiseFunction] | None = None + night_vision_equipment: dict[str, NightVisionEquipmentPrototype] | None = ( + None + ) + offshore_pump: dict[str, OffshorePumpPrototype] | None = None + optimized_particle: dict[str, ParticlePrototype] | None = None + particle_source: dict[str, ParticleSourcePrototype] | None = None + pipe: dict[str, PipePrototype] | None = None + pipe_to_ground: dict[str, PipeToGroundPrototype] | None = None + place_equipment_achievement: ( + dict[str, PlaceEquipmentAchievementPrototype] | None + ) = None + planet: dict[str, PlanetPrototype] | None = None + plant: dict[str, PlantPrototype] | None = None + player_damaged_achievement: ( + dict[str, PlayerDamagedAchievementPrototype] | None + ) = None + player_port: dict[str, PlayerPortPrototype] | None = None + power_switch: dict[str, PowerSwitchPrototype] | None = None + procession_layer_inheritance_group: ( + dict[str, ProcessionLayerInheritanceGroup] | None + ) = None + procession: dict[str, ProcessionPrototype] | None = None + produce_achievement: dict[str, ProduceAchievementPrototype] | None = None + produce_per_hour_achievement: ( + dict[str, ProducePerHourAchievementPrototype] | None + ) = None + programmable_speaker: dict[str, ProgrammableSpeakerPrototype] | None = None + projectile: dict[str, ProjectilePrototype] | None = None + proxy_container: dict[str, ProxyContainerPrototype] | None = None + pump: dict[str, PumpPrototype] | None = None + quality: dict[str, QualityPrototype] | None = None + radar: dict[str, RadarPrototype] | None = None + rail_chain_signal: dict[str, RailChainSignalPrototype] | None = None + rail_planner: dict[str, RailPlannerPrototype] | None = None + rail_ramp: dict[str, RailRampPrototype] | None = None + rail_remnants: dict[str, RailRemnantsPrototype] | None = None + rail_signal: dict[str, RailSignalPrototype] | None = None + rail_support: dict[str, RailSupportPrototype] | None = None + reactor: dict[str, ReactorPrototype] | None = None + recipe_category: dict[str, RecipeCategory] | None = None + recipe: dict[str, RecipePrototype] | None = None + remote_controller: dict[str, RemoteControllerPrototype] | None = None + repair_tool: dict[str, RepairToolPrototype] | None = None + research_achievement: dict[str, ResearchAchievementPrototype] | None = None + research_with_science_pack_achievement: ( + dict[str, ResearchWithSciencePackAchievementPrototype] | None + ) = None + resource_category: dict[str, ResourceCategory] | None = None + resource: dict[str, ResourceEntityPrototype] | None = None + roboport_equipment: dict[str, RoboportEquipmentPrototype] | None = None + roboport: dict[str, RoboportPrototype] | None = None + rocket_silo: dict[str, RocketSiloPrototype] | None = None + rocket_silo_rocket: dict[str, RocketSiloRocketPrototype] | None = None + rocket_silo_rocket_shadow: ( + dict[str, RocketSiloRocketShadowPrototype] | None + ) = None + segment: dict[str, SegmentPrototype] | None = None + segmented_unit: dict[str, SegmentedUnitPrototype] | None = None + selection_tool: dict[str, SelectionToolPrototype] | None = None + selector_combinator: dict[str, SelectorCombinatorPrototype] | None = None + shoot_achievement: dict[str, ShootAchievementPrototype] | None = None + shortcut: dict[str, ShortcutPrototype] | None = None + simple_entity: dict[str, SimpleEntityPrototype] | None = None + simple_entity_with_force: ( + dict[str, SimpleEntityWithForcePrototype] | None + ) = None + simple_entity_with_owner: ( + dict[str, SimpleEntityWithOwnerPrototype] | None + ) = None + smoke_with_trigger: dict[str, SmokeWithTriggerPrototype] | None = None + solar_panel_equipment: dict[str, SolarPanelEquipmentPrototype] | None = None + solar_panel: dict[str, SolarPanelPrototype] | None = None + sound: dict[str, SoundPrototype] | None = None + space_connection_distance_traveled_achievement: ( + dict[str, SpaceConnectionDistanceTraveledAchievementPrototype] | None + ) = None + space_connection: dict[str, SpaceConnectionPrototype] | None = None + space_location: dict[str, SpaceLocationPrototype] | None = None + space_platform_hub: dict[str, SpacePlatformHubPrototype] | None = None + space_platform_starter_pack: ( + dict[str, SpacePlatformStarterPackPrototype] | None + ) = None + spectator_controller: dict[str, SpectatorControllerPrototype] | None = None + speech_bubble: dict[str, SpeechBubblePrototype] | None = None + spider_leg: dict[str, SpiderLegPrototype] | None = None + spider_unit: dict[str, SpiderUnitPrototype] | None = None + spider_vehicle: dict[str, SpiderVehiclePrototype] | None = None + spidertron_remote: dict[str, SpidertronRemotePrototype] | None = None + splitter: dict[str, SplitterPrototype] | None = None + sprite: dict[str, SpritePrototype] | None = None + sticker: dict[str, StickerPrototype] | None = None + storage_tank: dict[str, StorageTankPrototype] | None = None + straight_rail: dict[str, StraightRailPrototype] | None = None + surface_property: dict[str, SurfacePropertyPrototype] | None = None + surface: dict[str, SurfacePrototype] | None = None + technology: dict[str, TechnologyPrototype] | None = None + temporary_container: dict[str, TemporaryContainerPrototype] | None = None + thruster: dict[str, ThrusterPrototype] | None = None + tile_effect: dict[str, TileEffectDefinition] | None = None + tile_ghost: dict[str, TileGhostPrototype] | None = None + tile: dict[str, TilePrototype] | None = None + tips_and_tricks_item: dict[str, TipsAndTricksItem] | None = None + tips_and_tricks_item_category: ( + dict[str, TipsAndTricksItemCategory] | None + ) = None + tool: dict[str, ToolPrototype] | None = None + train_path_achievement: dict[str, TrainPathAchievementPrototype] | None = ( + None + ) + train_stop: dict[str, TrainStopPrototype] | None = None + transport_belt: dict[str, TransportBeltPrototype] | None = None + tree: dict[str, TreePrototype] | None = None + trigger_target_type: dict[str, TriggerTargetType] | None = None + trivial_smoke: dict[str, TrivialSmokePrototype] | None = None + turret: dict[str, TurretPrototype] | None = None + tutorial: dict[str, TutorialDefinition] | None = None + underground_belt: dict[str, UndergroundBeltPrototype] | None = None + unit: dict[str, UnitPrototype] | None = None + upgrade_item: dict[str, UpgradeItemPrototype] | None = None + use_entity_in_energy_production_achievement: ( + dict[str, UseEntityInEnergyProductionAchievementPrototype] | None + ) = None + use_item_achievement: dict[str, UseItemAchievementPrototype] | None = None + utility_constants: dict[str, UtilityConstants] | None = None + utility_sounds: dict[str, UtilitySounds] | None = None + utility_sprites: dict[str, UtilitySprites] | None = None + valve: dict[str, ValvePrototype] | None = None + virtual_signal: dict[str, VirtualSignalPrototype] | None = None + wall: dict[str, WallPrototype] | None = None + + +@dataclass +class AmmoType: + action: Trigger | None = None + clamp_position: Boolean | None = None + energy_consumption: Energy | None = None + range_modifier: Double | None = None + cooldown_modifier: Double | None = None + consumption_modifier: Float | None = None + target_type: TargetType | None = None + source_type: AmmoSourceType | None = None + target_filter: list[EntityID] | dict[str, Any] | None = None + + +@dataclass +class AndTipTrigger: + type: Literal["and"] + triggers: list[TipTrigger] | dict[str, Any] + + +@dataclass +class AreaTriggerItem: + type: Literal["area"] + radius: Double + entity_flags: EntityPrototypeFlags | None = None + collision_mask: CollisionMaskConnector | None = None + ignore_collision_condition: Boolean | None = None + trigger_target_mask: TriggerTargetMask | None = None + repeat_count: Uint32 | None = None + probability: Float | None = None + action_delivery: ( + TriggerDelivery | list[TriggerDelivery] | dict[str, Any] | None + ) = None + force: ForceCondition | None = None + trigger_from_target: Boolean | None = None + target_entities: Boolean | None = None + target_enemies: Boolean | None = None + show_in_tooltip: Boolean | None = None + collision_mode: CollisionMode | None = None + + +@dataclass +class ArtilleryTriggerDelivery: + type: Literal["artillery"] + projectile: EntityID + starting_speed: Float + source_effects: TriggerEffect | None = None + target_effects: TriggerEffect | None = None + starting_speed_deviation: Float | None = None + direction_deviation: Float | None = None + range_deviation: Float | None = None + trigger_fired_artillery: Boolean | None = None + + +AttackParameters: TypeAlias = Union[ + "ProjectileAttackParameters", + "BeamAttackParameters", + "StreamAttackParameters", +] + + +@dataclass +class AttackReactionItem: + range: Float + action: Trigger | None = None + reaction_modifier: Float | None = None + damage_type: DamageTypeID | None = None + + +@dataclass +class BeamAttackParameters: + range: Float + cooldown: Float + type: Literal["beam"] + min_range: Float | None = None + turn_range: Float | None = None + fire_penalty: Float | None = None + rotate_penalty: Float | None = None + health_penalty: Float | None = None + range_mode: RangeMode | None = None + min_attack_distance: Float | None = None + damage_modifier: Float | None = None + ammo_consumption_modifier: Float | None = None + cooldown_deviation: Float | None = None + warmup: Uint32 | None = None + lead_target_for_projectile_speed: Float | None = None + lead_target_for_projectile_delay: Uint32 | None = None + movement_slow_down_cooldown: Float | None = None + movement_slow_down_factor: Double | None = None + ammo_type: AmmoType | None = None + activation_type: ActivationType | None = None + sound: LayeredSound | None = None + animation: RotatedAnimation | None = None + cyclic_sound: CyclicSound | None = None + use_shooter_direction: Boolean | None = None + ammo_categories: list[AmmoCategoryID] | dict[str, Any] | None = None + ammo_category: AmmoCategoryID | None = None + true_collinear_ejection: Boolean | None = None + source_direction_count: Uint32 | None = None + source_offset: Vector | None = None + + +@dataclass +class BeamTriggerDelivery: + type: Literal["beam"] + beam: EntityID + source_effects: TriggerEffect | None = None + target_effects: TriggerEffect | None = None + add_to_shooter: Boolean | None = None + max_length: Uint32 | None = None + duration: Uint32 | None = None + source_offset: Vector | None = None + destroy_with_source_or_target: Boolean | None = None + + +CapsuleAction: TypeAlias = Union[ + "ThrowCapsuleAction", + ActivateEquipmentCapsuleAction, + "UseOnSelfCapsuleAction", + "DestroyCliffsCapsuleAction", + ArtilleryRemoteCapsuleAction, +] + + +@dataclass +class ChainTriggerDelivery: + type: Literal["chain"] + chain: ActiveTriggerID + source_effects: TriggerEffect | None = None + target_effects: TriggerEffect | None = None + + +@dataclass +class ClusterTriggerItem: + type: Literal["cluster"] + cluster_count: Uint32 + distance: Float + entity_flags: EntityPrototypeFlags | None = None + collision_mask: CollisionMaskConnector | None = None + ignore_collision_condition: Boolean | None = None + trigger_target_mask: TriggerTargetMask | None = None + repeat_count: Uint32 | None = None + probability: Float | None = None + action_delivery: ( + TriggerDelivery | list[TriggerDelivery] | dict[str, Any] | None + ) = None + force: ForceCondition | None = None + distance_deviation: Float | None = None + + +@dataclass +class CreateEntityTriggerEffectItem: + type: Literal["create-entity"] + entity_name: EntityID + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + offset_deviation: BoundingBox | None = None + trigger_created_entity: Boolean | None = None + check_buildability: Boolean | None = None + only_when_visible: Boolean | None = None + tile_collision_mask: CollisionMaskConnector | None = None + offsets: list[Vector] | dict[str, Any] | None = None + as_enemy: Boolean | None = None + ignore_no_enemies_mode: Boolean | None = None + find_non_colliding_position: Boolean | None = None + abort_if_over_space: Boolean | None = None + non_colliding_search_radius: Double | None = None + non_colliding_search_precision: Double | None = None + non_colliding_fail_result: Trigger | None = None + protected: Boolean | None = None + + +@dataclass +class CreateExplosionTriggerEffectItem: + type: Literal["create-explosion"] + entity_name: EntityID + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + offset_deviation: BoundingBox | None = None + trigger_created_entity: Boolean | None = None + check_buildability: Boolean | None = None + only_when_visible: Boolean | None = None + tile_collision_mask: CollisionMaskConnector | None = None + offsets: list[Vector] | dict[str, Any] | None = None + as_enemy: Boolean | None = None + ignore_no_enemies_mode: Boolean | None = None + find_non_colliding_position: Boolean | None = None + abort_if_over_space: Boolean | None = None + non_colliding_search_radius: Double | None = None + non_colliding_search_precision: Double | None = None + non_colliding_fail_result: Trigger | None = None + protected: Boolean | None = None + max_movement_distance: Float | None = None + max_movement_distance_deviation: Float | None = None + inherit_movement_distance_from_projectile: Boolean | None = None + cycle_while_moving: Boolean | None = None + + +@dataclass +class CreateFireTriggerEffectItem: + type: Literal["create-fire"] + entity_name: EntityID + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + offset_deviation: BoundingBox | None = None + trigger_created_entity: Boolean | None = None + check_buildability: Boolean | None = None + only_when_visible: Boolean | None = None + tile_collision_mask: CollisionMaskConnector | None = None + offsets: list[Vector] | dict[str, Any] | None = None + as_enemy: Boolean | None = None + ignore_no_enemies_mode: Boolean | None = None + find_non_colliding_position: Boolean | None = None + abort_if_over_space: Boolean | None = None + non_colliding_search_radius: Double | None = None + non_colliding_search_precision: Double | None = None + non_colliding_fail_result: Trigger | None = None + protected: Boolean | None = None + initial_ground_flame_count: Uint8 | None = None + + +@dataclass +class CreateSmokeTriggerEffectItem: + type: Literal["create-smoke"] + entity_name: EntityID + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + offset_deviation: BoundingBox | None = None + trigger_created_entity: Boolean | None = None + check_buildability: Boolean | None = None + only_when_visible: Boolean | None = None + tile_collision_mask: CollisionMaskConnector | None = None + offsets: list[Vector] | dict[str, Any] | None = None + as_enemy: Boolean | None = None + ignore_no_enemies_mode: Boolean | None = None + find_non_colliding_position: Boolean | None = None + abort_if_over_space: Boolean | None = None + non_colliding_search_radius: Double | None = None + non_colliding_search_precision: Double | None = None + non_colliding_fail_result: Trigger | None = None + protected: Boolean | None = None + initial_height: Float | None = None + speed: Vector | None = None + speed_multiplier: Float | None = None + speed_multiplier_deviation: Float | None = None + starting_frame: Float | None = None + starting_frame_deviation: Float | None = None + speed_from_center: Float | None = None + speed_from_center_deviation: Float | None = None + + +@dataclass +class DelayedTriggerDelivery: + type: Literal["delayed"] + delayed_trigger: ActiveTriggerID + source_effects: TriggerEffect | None = None + target_effects: TriggerEffect | None = None + + +@dataclass +class DestroyCliffsCapsuleAction: + type: Literal["destroy-cliffs"] + attack_parameters: AttackParameters + radius: Float + timeout: Uint32 | None = None + play_sound_on_failure: Boolean | None = None + uses_stack: Boolean | None = None + + +@dataclass +class DirectTriggerItem: + type: Literal["direct"] + entity_flags: EntityPrototypeFlags | None = None + collision_mask: CollisionMaskConnector | None = None + ignore_collision_condition: Boolean | None = None + trigger_target_mask: TriggerTargetMask | None = None + repeat_count: Uint32 | None = None + probability: Float | None = None + action_delivery: ( + TriggerDelivery | list[TriggerDelivery] | dict[str, Any] | None + ) = None + force: ForceCondition | None = None + filter_enabled: Boolean | None = None + + +@dataclass +class InstantTriggerDelivery: + type: Literal["instant"] + source_effects: TriggerEffect | None = None + target_effects: TriggerEffect | None = None + + +@dataclass +class LineTriggerItem: + type: Literal["line"] + range: Double + width: Double + entity_flags: EntityPrototypeFlags | None = None + collision_mask: CollisionMaskConnector | None = None + ignore_collision_condition: Boolean | None = None + trigger_target_mask: TriggerTargetMask | None = None + repeat_count: Uint32 | None = None + probability: Float | None = None + action_delivery: ( + TriggerDelivery | list[TriggerDelivery] | dict[str, Any] | None + ) = None + force: ForceCondition | None = None + range_effects: TriggerEffect | None = None + + +@dataclass +class MinableProperties: + mining_time: Double + include_in_show_counts: Boolean | None = None + transfer_entity_health_to_products: Boolean | None = None + results: list[ProductPrototype] | dict[str, Any] | None = None + result: ItemID | None = None + fluid_amount: FluidAmount | None = None + mining_particle: ParticleID | None = None + required_fluid: FluidID | None = None + count: Uint16 | None = None + mining_trigger: Trigger | None = None + + +@dataclass +class NestedTriggerEffectItem: + type: Literal["nested-result"] + action: Trigger + repeat_count: Uint16 | None = None + repeat_count_deviation: Uint16 | None = None + probability: Float | None = None + affects_target: Boolean | None = None + show_in_tooltip: Boolean | None = None + damage_type_filters: DamageTypeFilters | None = None + + +@dataclass +class OrTipTrigger: + type: Literal["or"] + triggers: list[TipTrigger] | dict[str, Any] + + +@dataclass +class ProjectileAttackParameters: + range: Float + cooldown: Float + type: Literal["projectile"] + min_range: Float | None = None + turn_range: Float | None = None + fire_penalty: Float | None = None + rotate_penalty: Float | None = None + health_penalty: Float | None = None + range_mode: RangeMode | None = None + min_attack_distance: Float | None = None + damage_modifier: Float | None = None + ammo_consumption_modifier: Float | None = None + cooldown_deviation: Float | None = None + warmup: Uint32 | None = None + lead_target_for_projectile_speed: Float | None = None + lead_target_for_projectile_delay: Uint32 | None = None + movement_slow_down_cooldown: Float | None = None + movement_slow_down_factor: Double | None = None + ammo_type: AmmoType | None = None + activation_type: ActivationType | None = None + sound: LayeredSound | None = None + animation: RotatedAnimation | None = None + cyclic_sound: CyclicSound | None = None + use_shooter_direction: Boolean | None = None + ammo_categories: list[AmmoCategoryID] | dict[str, Any] | None = None + ammo_category: AmmoCategoryID | None = None + true_collinear_ejection: Boolean | None = None + apply_projection_to_projectile_creation_position: Boolean | None = None + projectile_center: Vector | None = None + projectile_creation_distance: Float | None = None + shell_particle: CircularParticleCreationSpecification | None = None + projectile_creation_parameters: ( + CircularProjectileCreationSpecification | None + ) = None + projectile_orientation_offset: RealOrientation | None = None + projectile_creation_offsets: list[Vector] | dict[str, Any] | None = None + + +@dataclass +class ProjectileTriggerDelivery: + type: Literal["projectile"] + projectile: EntityID + starting_speed: Float + source_effects: TriggerEffect | None = None + target_effects: TriggerEffect | None = None + starting_speed_deviation: Float | None = None + direction_deviation: Float | None = None + range_deviation: Float | None = None + max_range: Double | None = None + min_range: Double | None = None + + +@dataclass +class SequenceTipTrigger: + type: Literal["sequence"] + triggers: list[TipTrigger] | dict[str, Any] + + +@dataclass +class SpiderEngineSpecification: + legs: SpiderLegSpecification | list[SpiderLegSpecification] | dict[str, Any] + walking_group_overlap: Float | None = None + + +@dataclass +class SpiderLegSpecification: + leg: EntityID + mount_position: Vector + ground_position: Vector + walking_group: Uint8 + leg_hit_the_ground_trigger: TriggerEffect | None = None + leg_hit_the_ground_when_attacking_trigger: TriggerEffect | None = None + + +@dataclass +class SpiderLegTriggerEffect: + position: Float + effect: TriggerEffect + + +@dataclass +class SpoilToTriggerResult: + trigger: Trigger + items_per_trigger: ItemCountType + + +@dataclass +class StreamAttackParameters: + range: Float + cooldown: Float + type: Literal["stream"] + min_range: Float | None = None + turn_range: Float | None = None + fire_penalty: Float | None = None + rotate_penalty: Float | None = None + health_penalty: Float | None = None + range_mode: RangeMode | None = None + min_attack_distance: Float | None = None + damage_modifier: Float | None = None + ammo_consumption_modifier: Float | None = None + cooldown_deviation: Float | None = None + warmup: Uint32 | None = None + lead_target_for_projectile_speed: Float | None = None + lead_target_for_projectile_delay: Uint32 | None = None + movement_slow_down_cooldown: Float | None = None + movement_slow_down_factor: Double | None = None + ammo_type: AmmoType | None = None + activation_type: ActivationType | None = None + sound: LayeredSound | None = None + animation: RotatedAnimation | None = None + cyclic_sound: CyclicSound | None = None + use_shooter_direction: Boolean | None = None + ammo_categories: list[AmmoCategoryID] | dict[str, Any] | None = None + ammo_category: AmmoCategoryID | None = None + true_collinear_ejection: Boolean | None = None + fluid_consumption: FluidAmount | None = None + gun_barrel_length: Float | None = None + projectile_creation_parameters: ( + CircularProjectileCreationSpecification | None + ) = None + gun_center_shift: Vector | GunCenterShift | None = None + fluids: list[Fluid] | dict[str, Any] | None = None + + +@dataclass +class StreamTriggerDelivery: + type: Literal["stream"] + stream: EntityID + source_effects: TriggerEffect | None = None + target_effects: TriggerEffect | None = None + source_offset: Vector | None = None + + +@dataclass +class ThrowCapsuleAction: + type: Literal["throw"] + attack_parameters: AttackParameters + uses_stack: Boolean | None = None + + +TipTrigger: TypeAlias = ( + OrTipTrigger + | AndTipTrigger + | SequenceTipTrigger + | DependenciesMetTipTrigger + | TimeElapsedTipTrigger + | TimeSinceLastTipActivationTipTrigger + | ResearchTechnologyTipTrigger + | ResearchWithSciencePackTipTrigger + | UnlockRecipeTipTrigger + | CraftItemTipTrigger + | BuildEntityTipTrigger + | ManualTransferTipTrigger + | ModuleTransferTipTrigger + | StackTransferTipTrigger + | EntityTransferTipTrigger + | DropItemTipTrigger + | SetRecipeTipTrigger + | SetFilterTipTrigger + | LimitChestTipTrigger + | UsePipetteTipTrigger + | SetLogisticRequestTipTrigger + | UseConfirmTipTrigger + | ToggleShowEntityInfoTipTrigger + | GeneratingPowerTipTrigger + | LowPowerTipTrigger + | PasteEntitySettingsTipTrigger + | FastReplaceTipTrigger + | GroupAttackTipTrigger + | FastBeltBendTipTrigger + | BeltTraverseTipTrigger + | PlaceEquipmentTipTrigger + | ClearCursorTipTrigger + | RotateEntityTipTrigger + | FlipEntityTipTrigger + | AlternativeBuildTipTrigger + | GateOverRailBuildTipTrigger + | ManualWireDragTipTrigger + | ShootTipTrigger + | ChangeSurfaceTipTrigger + | ApplyStarterPackTipTrigger + | MineItemByRobotTipTrigger + | BuildEntityByRobotTipTrigger + | PlanTrainPathTipTrigger + | UseRailPlannerTipTrigger + | ToggleRailLayerTipTrigger + | EnterVehicleTipTrigger + | SendSpidertronTipTrigger + | ActivatePasteTipTrigger + | KillTipTrigger +) + + +Trigger: TypeAlias = ( + DirectTriggerItem + | AreaTriggerItem + | LineTriggerItem + | ClusterTriggerItem + | list[ + DirectTriggerItem + | AreaTriggerItem + | LineTriggerItem + | ClusterTriggerItem + ] + | dict[str, Any] +) + + +TriggerDelivery: TypeAlias = ( + InstantTriggerDelivery + | ProjectileTriggerDelivery + | BeamTriggerDelivery + | StreamTriggerDelivery + | ArtilleryTriggerDelivery + | ChainTriggerDelivery + | DelayedTriggerDelivery +) + + +TriggerEffect: TypeAlias = ( + DamageEntityTriggerEffectItem + | DamageTileTriggerEffectItem + | CreateEntityTriggerEffectItem + | CreateExplosionTriggerEffectItem + | CreateFireTriggerEffectItem + | CreateSmokeTriggerEffectItem + | CreateTrivialSmokeEffectItem + | CreateAsteroidChunkEffectItem + | CreateParticleTriggerEffectItem + | CreateStickerTriggerEffectItem + | CreateDecorativesTriggerEffectItem + | NestedTriggerEffectItem + | PlaySoundTriggerEffectItem + | PushBackTriggerEffectItem + | DestroyCliffsTriggerEffectItem + | ShowExplosionOnChartTriggerEffectItem + | InsertItemTriggerEffectItem + | ScriptTriggerEffectItem + | SetTileTriggerEffectItem + | InvokeTileEffectTriggerEffectItem + | DestroyDecorativesTriggerEffectItem + | CameraEffectTriggerEffectItem + | ActivateImpactTriggerEffectItem + | list[ + DamageEntityTriggerEffectItem + | DamageTileTriggerEffectItem + | CreateEntityTriggerEffectItem + | CreateExplosionTriggerEffectItem + | CreateFireTriggerEffectItem + | CreateSmokeTriggerEffectItem + | CreateTrivialSmokeEffectItem + | CreateAsteroidChunkEffectItem + | CreateParticleTriggerEffectItem + | CreateStickerTriggerEffectItem + | CreateDecorativesTriggerEffectItem + | NestedTriggerEffectItem + | PlaySoundTriggerEffectItem + | PushBackTriggerEffectItem + | DestroyCliffsTriggerEffectItem + | ShowExplosionOnChartTriggerEffectItem + | InsertItemTriggerEffectItem + | ScriptTriggerEffectItem + | SetTileTriggerEffectItem + | InvokeTileEffectTriggerEffectItem + | DestroyDecorativesTriggerEffectItem + | CameraEffectTriggerEffectItem + | ActivateImpactTriggerEffectItem + ] + | dict[str, Any] +) + + +@dataclass +class TriggerEffectWithCooldown: + effect: TriggerEffect + distance_cooldown: Double | None = None + initial_distance_cooldown: Double | None = None + time_cooldown: MapTick | None = None + initial_time_cooldown: MapTick | None = None + + +@dataclass +class UseOnSelfCapsuleAction: + type: Literal["use-on-self"] + attack_parameters: AttackParameters + uses_stack: Boolean | None = None + + +@dataclass +class AccumulatorPrototype: + type: Literal["accumulator"] + name: String + energy_source: ElectricEnergySource + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + chargable_graphics: ChargableGraphics | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + default_output_signal: SignalIDConnector | None = None + + +@dataclass +class ActiveDefenseEquipmentPrototype: + type: Literal["active-defense-equipment"] + name: String + sprite: Sprite + shape: EquipmentShape + categories: list[EquipmentCategoryID] | dict[str, Any] + energy_source: ElectricEnergySource + automatic: Boolean + attack_parameters: AttackParameters + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + take_result: ItemID | None = None + background_color: Color | None = None + background_border_color: Color | None = None + grabbed_background_color: Color | None = None + + +@dataclass +class AgriculturalTowerPrototype: + type: Literal["agricultural-tower"] + name: String + crane: AgriculturalCraneProperties + energy_source: EnergySource + input_inventory_size: ItemStackIndex + energy_usage: Energy + crane_energy_usage: Energy + radius: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + graphics_set: CraftingMachineGraphicsSet | None = None + output_inventory_size: ItemStackIndex | None = None + growth_grid_tile_size: Uint32 | None = None + growth_area_radius: Double | None = None + random_growth_offset: Double | None = None + randomize_planting_tile: Boolean | None = None + radius_visualisation_picture: Sprite | None = None + central_orienting_sound: InterruptibleSound | None = None + arm_extending_sound: InterruptibleSound | None = None + grappler_orienting_sound: InterruptibleSound | None = None + grappler_extending_sound: InterruptibleSound | None = None + planting_sound: Sound | None = None + harvesting_sound: Sound | None = None + central_orienting_sound_source: String | None = None + arm_extending_sound_source: String | None = None + grappler_orienting_sound_source: String | None = None + grappler_extending_sound_source: String | None = None + planting_procedure_points: list[Vector3D] | dict[str, Any] | None = None + harvesting_procedure_points: list[Vector3D] | dict[str, Any] | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + accepted_seeds: list[ItemID] | dict[str, Any] | None = None + + +@dataclass +class AmmoItemPrototype: + type: Literal["ammo"] + name: String + stack_size: ItemCountType + ammo_type: AmmoType | list[AmmoType] | dict[str, Any] + ammo_category: AmmoCategoryID + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + magazine_size: Float | None = None + reload_time: Float | None = None + shoot_protected: Boolean | None = None + + +@dataclass +class AmmoTurretPrototype: + type: Literal["ammo-turret"] + name: String + attack_parameters: AttackParameters + folded_animation: RotatedAnimation8Way + call_for_help_radius: Double + graphics_set: TurretGraphicsSet + inventory_size: ItemStackIndex + automated_ammo_count: ItemCountType + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + attack_target_mask: TriggerTargetMask | None = None + ignore_target_mask: TriggerTargetMask | None = None + shoot_in_prepare_state: Boolean | None = None + start_attacking_only_when_can_shoot: Boolean | None = None + turret_base_has_direction: Boolean | None = None + random_animation_offset: Boolean | None = None + attack_from_start_frame: Boolean | None = None + allow_turning_when_starting_attack: Boolean | None = None + gun_animation_secondary_draw_order: Uint8 | None = None + gun_animation_render_layer: RenderLayer | None = None + preparing_animation: RotatedAnimation8Way | None = None + prepared_animation: RotatedAnimation8Way | None = None + prepared_alternative_animation: RotatedAnimation8Way | None = None + starting_attack_animation: RotatedAnimation8Way | None = None + attacking_animation: RotatedAnimation8Way | None = None + energy_glow_animation: RotatedAnimation8Way | None = None + resource_indicator_animation: RotatedAnimation8Way | None = None + ending_attack_animation: RotatedAnimation8Way | None = None + folding_animation: RotatedAnimation8Way | None = None + integration: Sprite | None = None + special_effect: TurretSpecialEffect | None = None + glow_light_intensity: Float | None = None + energy_glow_animation_flicker_strength: Float | None = None + starting_attack_sound: Sound | None = None + dying_sound: Sound | None = None + preparing_sound: Sound | None = None + folding_sound: Sound | None = None + prepared_sound: Sound | None = None + prepared_alternative_sound: Sound | None = None + rotating_sound: InterruptibleSound | None = None + default_speed: Float | None = None + default_speed_secondary: Float | None = None + default_speed_when_killed: Float | None = None + default_starting_progress_when_killed: Float | None = None + rotation_speed: Float | None = None + rotation_speed_secondary: Float | None = None + rotation_speed_when_killed: Float | None = None + rotation_starting_progress_when_killed: Float | None = None + preparing_speed: Float | None = None + preparing_speed_secondary: Float | None = None + preparing_speed_when_killed: Float | None = None + preparing_starting_progress_when_killed: Float | None = None + folded_speed: Float | None = None + folded_speed_secondary: Float | None = None + folded_speed_when_killed: Float | None = None + folded_starting_progress_when_killed: Float | None = None + prepared_speed: Float | None = None + prepared_speed_secondary: Float | None = None + prepared_speed_when_killed: Float | None = None + prepared_starting_progress_when_killed: Float | None = None + prepared_alternative_speed: Float | None = None + prepared_alternative_speed_secondary: Float | None = None + prepared_alternative_speed_when_killed: Float | None = None + prepared_alternative_starting_progress_when_killed: Float | None = None + prepared_alternative_chance: Float | None = None + starting_attack_speed: Float | None = None + starting_attack_speed_secondary: Float | None = None + starting_attack_speed_when_killed: Float | None = None + starting_attack_starting_progress_when_killed: Float | None = None + attacking_speed: Float | None = None + ending_attack_speed: Float | None = None + ending_attack_speed_secondary: Float | None = None + ending_attack_speed_when_killed: Float | None = None + ending_attack_starting_progress_when_killed: Float | None = None + folding_speed: Float | None = None + folding_speed_secondary: Float | None = None + folding_speed_when_killed: Float | None = None + folding_starting_progress_when_killed: Float | None = None + prepare_range: Double | None = None + alert_when_attacking: Boolean | None = None + spawn_decorations_on_expansion: Boolean | None = None + folded_animation_is_stateless: Boolean | None = None + unfolds_before_dying: Boolean | None = None + spawn_decoration: ( + list[CreateDecorativesTriggerEffectItem] | dict[str, Any] | None + ) = None + folded_state_corpse: EntityID | list[EntityID] | dict[str, Any] | None = ( + None + ) + can_retarget_while_starting_attack: Boolean | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: ( + list[CircuitConnectorDefinition] | dict[str, Any] | None + ) = None + energy_source: ElectricEnergySource | None = None + energy_per_shot: Energy | None = None + prepare_with_no_ammo: Boolean | None = None + + +@dataclass +class ArithmeticCombinatorPrototype: + type: Literal["arithmetic-combinator"] + name: String + energy_source: ElectricEnergySource | VoidEnergySource + active_energy_usage: Energy + input_connection_bounding_box: BoundingBox + output_connection_bounding_box: BoundingBox + activity_led_light_offsets: list[Vector] + screen_light_offsets: list[Vector] + input_connection_points: list[WireConnectionPoint] + output_connection_points: list[WireConnectionPoint] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + sprites: Sprite4Way | None = None + frozen_patch: Sprite4Way | None = None + activity_led_sprites: Sprite4Way | None = None + activity_led_light: LightDefinition | None = None + screen_light: LightDefinition | None = None + activity_led_hold_time: Uint8 | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + plus_symbol_sprites: Sprite4Way | None = None + minus_symbol_sprites: Sprite4Way | None = None + multiply_symbol_sprites: Sprite4Way | None = None + divide_symbol_sprites: Sprite4Way | None = None + modulo_symbol_sprites: Sprite4Way | None = None + power_symbol_sprites: Sprite4Way | None = None + left_shift_symbol_sprites: Sprite4Way | None = None + right_shift_symbol_sprites: Sprite4Way | None = None + and_symbol_sprites: Sprite4Way | None = None + or_symbol_sprites: Sprite4Way | None = None + xor_symbol_sprites: Sprite4Way | None = None + + +@dataclass +class ArmorPrototype: + type: Literal["armor"] + name: String + stack_size: ItemCountType + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + durability: Double | None = None + durability_description_key: String | None = None + durability_description_value: String | None = None + infinite: Boolean | None = None + equipment_grid: EquipmentGridID | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + inventory_size_bonus: ItemStackIndex | None = None + provides_flight: Boolean | None = None + collision_box: BoundingBox | None = None + drawing_box: BoundingBox | None = None + takeoff_sound: Sound | None = None + flight_sound: InterruptibleSound | None = None + landing_sound: Sound | None = None + steps_sound: Sound | None = None + moving_sound: Sound | None = None + + +@dataclass +class ArrowPrototype: + type: Literal["arrow"] + name: String + arrow_picture: Sprite + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + circle_picture: Sprite | None = None + blinking: Boolean | None = None + + +@dataclass +class ArtilleryFlarePrototype: + type: Literal["artillery-flare"] + name: String + map_color: Color + life_time: Uint16 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + pictures: AnimationVariations | None = None + shadows: AnimationVariations | None = None + render_layer: RenderLayer | None = None + render_layer_when_on_ground: RenderLayer | None = None + regular_trigger_effect: TriggerEffect | None = None + regular_trigger_effect_frequency: Uint32 | None = None + ended_in_water_trigger_effect: TriggerEffect | None = None + movement_modifier_when_on_ground: Double | None = None + movement_modifier: Double | None = None + creation_shift: Vector | None = None + initial_speed: Vector | None = None + initial_height: Float | None = None + initial_vertical_speed: Float | None = None + initial_frame_speed: Float | None = None + shots_per_flare: Uint32 | None = None + early_death_ticks: Uint32 | None = None + shot_category: AmmoCategoryID | None = None + + +@dataclass +class ArtilleryProjectilePrototype: + type: Literal["artillery-projectile"] + name: String + map_color: Color + reveal_map: Boolean + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + picture: Sprite | None = None + shadow: Sprite | None = None + chart_picture: Sprite | None = None + action: Trigger | None = None + final_action: Trigger | None = None + height_from_ground: Float | None = None + rotatable: Boolean | None = None + + +@dataclass +class ArtilleryTurretPrototype: + type: Literal["artillery-turret"] + name: String + gun: ItemID + inventory_size: ItemStackIndex + ammo_stack_limit: ItemCountType + turret_rotation_speed: Double + manual_range_modifier: Double + cannon_base_shift: Vector3D + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + automated_ammo_count: ItemCountType | None = None + alert_when_attacking: Boolean | None = None + disable_automatic_firing: Boolean | None = None + base_picture_secondary_draw_order: Uint8 | None = None + base_picture_render_layer: RenderLayer | None = None + base_picture: Animation4Way | None = None + cannon_base_pictures: RotatedSprite | None = None + cannon_barrel_pictures: RotatedSprite | None = None + rotating_sound: InterruptibleSound | None = None + turn_after_shooting_cooldown: Uint16 | None = None + cannon_parking_frame_count: Uint16 | None = None + cannon_parking_speed: Float | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + cannon_barrel_recoil_shiftings: list[Vector3D] | dict[str, Any] | None = ( + None + ) + cannon_barrel_recoil_shiftings_load_correction_matrix: ( + list[Vector3D] | dict[str, Any] | None + ) = None + cannon_barrel_light_direction: Vector3D | None = None + + +@dataclass +class ArtilleryWagonPrototype: + type: Literal["artillery-wagon"] + name: String + weight: Double + energy_per_hit_point: Double + max_speed: Double + air_resistance: Double + joint_distance: Double + connection_distance: Double + vertical_selection_shift: Double + gun: ItemID + inventory_size: ItemStackIndex + ammo_stack_limit: ItemCountType + turret_rotation_speed: Double + manual_range_modifier: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + braking_power: Energy | Double | None = None + braking_force: Energy | Double | None = None + friction: Double | None = None + friction_force: Double | None = None + terrain_friction_modifier: Float | None = None + impact_speed_to_volume_ratio: Double | None = None + stop_trigger_speed: Double | None = None + crash_trigger: TriggerEffect | None = None + stop_trigger: TriggerEffect | None = None + equipment_grid: EquipmentGridID | None = None + minimap_representation: Sprite | None = None + selected_minimap_representation: Sprite | None = None + allow_passengers: Boolean | None = None + deliver_category: String | None = None + chunk_exploration_radius: Uint32 | None = None + allow_remote_driving: Boolean | None = None + pictures: RollingStockRotatedSlopedGraphics | None = None + wheels: RollingStockRotatedSlopedGraphics | None = None + drive_over_tie_trigger: TriggerEffect | None = None + drive_over_tie_trigger_minimal_speed: Double | None = None + tie_distance: Double | None = None + back_light: LightDefinition | None = None + stand_by_light: LightDefinition | None = None + horizontal_doors: Animation | None = None + vertical_doors: Animation | None = None + color: Color | None = None + allow_manual_color: Boolean | None = None + allow_robot_dispatch_in_automatic_mode: Boolean | None = None + default_copy_color_from_train_stop: Boolean | None = None + transition_collision_mask: CollisionMaskConnector | None = None + elevated_collision_mask: CollisionMaskConnector | None = None + elevated_selection_priority: Uint8 | None = None + elevated_rail_sound: MainSound | None = None + drive_over_elevated_tie_trigger: TriggerEffect | None = None + door_opening_sound: InterruptibleSound | None = None + door_closing_sound: InterruptibleSound | None = None + automated_ammo_count: ItemCountType | None = None + disable_automatic_firing: Boolean | None = None + cannon_base_pictures: RollingStockRotatedSlopedGraphics | None = None + cannon_base_height: Double | None = None + cannon_base_shift_when_vertical: Double | None = None + cannon_base_shift_when_horizontal: Double | None = None + cannon_barrel_pictures: RollingStockRotatedSlopedGraphics | None = None + rotating_sound: InterruptibleSound | None = None + turn_after_shooting_cooldown: Uint16 | None = None + cannon_parking_frame_count: Uint16 | None = None + cannon_parking_speed: Float | None = None + cannon_barrel_recoil_shiftings: list[Vector3D] | dict[str, Any] | None = ( + None + ) + cannon_barrel_recoil_shiftings_load_correction_matrix: ( + list[Vector3D] | dict[str, Any] | None + ) = None + cannon_barrel_light_direction: Vector3D | None = None + + +@dataclass +class AssemblingMachinePrototype: + type: Literal["assembling-machine"] + name: String + energy_usage: Energy + crafting_speed: Double + crafting_categories: list[RecipeCategoryID] | dict[str, Any] + energy_source: EnergySource + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + quality_affects_energy_usage: Boolean | None = None + fluid_boxes: list[FluidBox] | dict[str, Any] | None = None + effect_receiver: EffectReceiver | None = None + module_slots: ItemStackIndex | None = None + quality_affects_module_slots: Boolean | None = None + allowed_effects: EffectTypeLimitation | None = None + allowed_module_categories: ( + list[ModuleCategoryID] | dict[str, Any] | None + ) = None + show_recipe_icon: Boolean | None = None + return_ingredients_on_change: Boolean | None = None + draw_entity_info_icon_background: Boolean | None = None + match_animation_speed_to_activity: Boolean | None = None + show_recipe_icon_on_map: Boolean | None = None + fast_transfer_modules_into_module_slots_only: Boolean | None = None + ignore_output_full: Boolean | None = None + graphics_set: CraftingMachineGraphicsSet | None = None + graphics_set_flipped: CraftingMachineGraphicsSet | None = None + perceived_performance: PerceivedPerformance | None = None + production_health_effect: ProductionHealthEffect | None = None + trash_inventory_size: ItemStackIndex | None = None + vector_to_place_result: Vector | None = None + forced_symmetry: Mirroring | None = None + crafting_speed_quality_multiplier: dict[QualityID, Double] | None = None + module_slots_quality_bonus: dict[QualityID, ItemStackIndex] | None = None + energy_usage_quality_multiplier: dict[QualityID, Double] | None = None + fixed_recipe: RecipeID | None = None + fixed_quality: QualityID | None = None + gui_title_key: String | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + default_recipe_finished_signal: SignalIDConnector | None = None + default_working_signal: SignalIDConnector | None = None + enable_logistic_control_behavior: Boolean | None = None + ingredient_count: Uint16 | None = None + max_item_product_count: Uint16 | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + circuit_connector_flipped: list[CircuitConnectorDefinition] | None = None + fluid_boxes_off_when_no_fluid_recipe: Boolean | None = None + disabled_when_recipe_not_researched: Boolean | None = None + + +@dataclass +class AsteroidChunkPrototype: + type: Literal["asteroid-chunk"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + minable: MinableProperties | None = None + dying_trigger_effect: TriggerEffect | None = None + graphics_set: AsteroidGraphicsSet | None = None + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + hide_from_signal_gui: Boolean | None = None + + +@dataclass +class AsteroidCollectorPrototype: + type: Literal["asteroid-collector"] + name: String + graphics_set: GraphicsSet + passive_energy_usage: Energy + arm_energy_usage: Energy + arm_slow_energy_usage: Energy + energy_source: ElectricEnergySource | VoidEnergySource + collection_radius: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + arm_inventory_size: ItemStackIndex | None = None + arm_inventory_size_quality_increase: ItemStackIndex | None = None + inventory_size: ItemStackIndex | None = None + inventory_size_quality_increase: ItemStackIndex | None = None + energy_usage_quality_scaling: Float | None = None + arm_count_base: Uint32 | None = None + arm_count_quality_scaling: Uint32 | None = None + head_collection_radius: Float | None = None + collection_box_offset: Float | None = None + deposit_radius: Float | None = None + arm_speed_base: Float | None = None + arm_speed_quality_scaling: Float | None = None + arm_angular_speed_cap_base: Float | None = None + arm_angular_speed_cap_quality_scaling: Float | None = None + tether_size: Float | None = None + unpowered_arm_speed_scale: Float | None = None + minimal_arm_swing_segment_retraction: Uint32 | None = None + held_items_offset: Float | None = None + held_items_spread: Float | None = None + held_items_display_count: Uint8 | None = None + munch_sound: Sound | None = None + deposit_sound: Sound | None = None + arm_extend_sound: Sound | None = None + arm_retract_sound: Sound | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + radius_visualisation_picture: Sprite | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + arm_color_gradient: list[Color] | dict[str, Any] | None = None + + +@dataclass +class AsteroidPrototype: + type: Literal["asteroid"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + mass: Double | None = None + graphics_set: AsteroidGraphicsSet | None = None + + +@dataclass +class BeaconPrototype: + type: Literal["beacon"] + name: String + energy_usage: Energy + energy_source: ElectricEnergySource | VoidEnergySource + supply_area_distance: Uint32 + distribution_effectivity: Double + module_slots: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + distribution_effectivity_bonus_per_quality_level: Double | None = None + quality_affects_module_slots: Boolean | None = None + quality_affects_supply_area_distance: Boolean | None = None + graphics_set: BeaconGraphicsSet | None = None + animation: Animation | None = None + base_picture: Animation | None = None + perceived_performance: PerceivedPerformance | None = None + radius_visualisation_picture: Sprite | None = None + allowed_effects: EffectTypeLimitation | None = None + allowed_module_categories: ( + list[ModuleCategoryID] | dict[str, Any] | None + ) = None + profile: list[Double] | dict[str, Any] | None = None + beacon_counter: BeaconCounter | None = None + + +@dataclass +class BeamPrototype: + type: Literal["beam"] + name: String + width: Float + damage_interval: Uint32 + graphics_set: BeamGraphicsSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + action: Trigger | None = None + target_offset: Vector | None = None + random_target_offset: Boolean | None = None + action_triggered_automatically: Boolean | None = None + + +@dataclass +class BlueprintBookPrototype: + type: Literal["blueprint-book"] + name: String + stack_size: Literal[1] + inventory_size: ItemStackIndex | Literal["dynamic"] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + default_label_color: Color | None = None + draw_label_for_cursor_render: Boolean | None = None + item_filters: list[ItemID] | dict[str, Any] | None = None + item_group_filters: list[ItemGroupID] | dict[str, Any] | None = None + item_subgroup_filters: list[ItemSubGroupID] | dict[str, Any] | None = None + filter_mode: FilterMode | None = None + filter_message_key: String | None = None + + +@dataclass +class BlueprintItemPrototype: + type: Literal["blueprint"] + name: String + stack_size: Literal[1] + select: SelectionModeData + alt_select: SelectionModeData + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + default_label_color: Color | None = None + draw_label_for_cursor_render: Boolean | None = None + super_forced_select: SelectionModeData | None = None + reverse_select: SelectionModeData | None = None + alt_reverse_select: SelectionModeData | None = None + always_include_tiles: Boolean | None = None + mouse_cursor: MouseCursorID | None = None + skip_fog_of_war: Boolean | None = None + + +@dataclass +class BoilerPrototype: + type: Literal["boiler"] + name: String + energy_source: EnergySource + fluid_box: FluidBox + output_fluid_box: FluidBox + energy_consumption: Energy + burning_cooldown: Uint16 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + pictures: Pictures | None = None + target_temperature: Float | None = None + fire_glow_flicker_enabled: Boolean | None = None + fire_flicker_enabled: Boolean | None = None + mode: Mode | None = None + + +@dataclass +class BurnerGeneratorPrototype: + type: Literal["burner-generator"] + name: String + energy_source: ElectricEnergySource + burner: BurnerEnergySource + max_power_output: Energy + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + animation: Animation4Way | None = None + idle_animation: Animation4Way | None = None + always_draw_idle_animation: Boolean | None = None + perceived_performance: PerceivedPerformance | None = None + + +@dataclass +class CapsulePrototype: + type: Literal["capsule"] + name: String + stack_size: ItemCountType + capsule_action: CapsuleAction + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + radius_color: Color | None = None + + +@dataclass +class CaptureRobotPrototype: + type: Literal["capture-robot"] + name: String + speed: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + max_speed: Double | None = None + max_energy: Energy | None = None + energy_per_move: Energy | None = None + energy_per_tick: Energy | None = None + min_to_charge: Float | None = None + max_to_charge: Float | None = None + speed_multiplier_when_out_of_energy: Float | None = None + capture_speed: Double | None = None + search_radius: Double | None = None + destroy_action: Trigger | None = None + capture_animation: Animation | None = None + + +@dataclass +class CarPrototype: + type: Literal["car"] + name: String + weight: Double + energy_per_hit_point: Double + effectivity: Double + consumption: Energy + rotation_speed: Double + energy_source: BurnerEnergySource | VoidEnergySource + inventory_size: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + braking_power: Energy | Double | None = None + braking_force: Energy | Double | None = None + friction: Double | None = None + friction_force: Double | None = None + terrain_friction_modifier: Float | None = None + impact_speed_to_volume_ratio: Double | None = None + stop_trigger_speed: Double | None = None + crash_trigger: TriggerEffect | None = None + stop_trigger: TriggerEffect | None = None + equipment_grid: EquipmentGridID | None = None + minimap_representation: Sprite | None = None + selected_minimap_representation: Sprite | None = None + allow_passengers: Boolean | None = None + deliver_category: String | None = None + chunk_exploration_radius: Uint32 | None = None + allow_remote_driving: Boolean | None = None + animation: RotatedAnimation | None = None + rotation_snap_angle: Double | None = None + turret_animation: RotatedAnimation | None = None + light_animation: RotatedAnimation | None = None + render_layer: RenderLayer | None = None + tank_driving: Boolean | None = None + auto_sort_inventory: Boolean | None = None + has_belt_immunity: Boolean | None = None + immune_to_tree_impacts: Boolean | None = None + immune_to_rock_impacts: Boolean | None = None + immune_to_cliff_impacts: Boolean | None = None + turret_rotation_speed: Float | None = None + turret_return_timeout: Uint32 | None = None + trash_inventory_size: ItemStackIndex | None = None + light: LightDefinition | None = None + sound_no_fuel: Sound | None = None + darkness_to_render_light_animation: Float | None = None + track_particle_triggers: FootstepTriggerEffectList | None = None + guns: list[ItemID] | dict[str, Any] | None = None + + +@dataclass +class CargoBayPrototype: + type: Literal["cargo-bay"] + name: String + inventory_size_bonus: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + graphics_set: CargoBayConnectableGraphicsSet | None = None + platform_graphics_set: CargoBayConnectableGraphicsSet | None = None + hatch_definitions: list[CargoHatchDefinition] | dict[str, Any] | None = None + + +@dataclass +class CargoLandingPadPrototype: + type: Literal["cargo-landing-pad"] + name: String + inventory_size: ItemStackIndex + cargo_station_parameters: CargoStationParameters + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + graphics_set: CargoBayConnectableGraphicsSet | None = None + trash_inventory_size: ItemStackIndex | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + robot_animation: Animation | None = None + robot_landing_location_offset: Vector | None = None + robot_opened_duration: Uint8 | None = None + robot_animation_sound: Sound | None = None + radar_range: Uint32 | None = None + radar_visualisation_color: Color | None = None + + +@dataclass +class CargoPodPrototype: + type: Literal["cargo-pod"] + name: String + inventory_size: ItemStackIndex + spawned_container: EntityID + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + default_graphic: ProcessionGraphic | None = None + default_shadow_graphic: ProcessionGraphic | None = None + procession_graphic_catalogue: ProcessionGraphicCatalogue | None = None + procession_audio_catalogue: ProcessionAudioCatalogue | None = None + shadow_slave_entity: EntityID | None = None + impact_trigger: Trigger | None = None + + +@dataclass +class CargoWagonPrototype: + type: Literal["cargo-wagon"] + name: String + weight: Double + energy_per_hit_point: Double + max_speed: Double + air_resistance: Double + joint_distance: Double + connection_distance: Double + vertical_selection_shift: Double + inventory_size: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + braking_power: Energy | Double | None = None + braking_force: Energy | Double | None = None + friction: Double | None = None + friction_force: Double | None = None + terrain_friction_modifier: Float | None = None + impact_speed_to_volume_ratio: Double | None = None + stop_trigger_speed: Double | None = None + crash_trigger: TriggerEffect | None = None + stop_trigger: TriggerEffect | None = None + equipment_grid: EquipmentGridID | None = None + minimap_representation: Sprite | None = None + selected_minimap_representation: Sprite | None = None + allow_passengers: Boolean | None = None + deliver_category: String | None = None + chunk_exploration_radius: Uint32 | None = None + allow_remote_driving: Boolean | None = None + pictures: RollingStockRotatedSlopedGraphics | None = None + wheels: RollingStockRotatedSlopedGraphics | None = None + drive_over_tie_trigger: TriggerEffect | None = None + drive_over_tie_trigger_minimal_speed: Double | None = None + tie_distance: Double | None = None + back_light: LightDefinition | None = None + stand_by_light: LightDefinition | None = None + horizontal_doors: Animation | None = None + vertical_doors: Animation | None = None + color: Color | None = None + allow_manual_color: Boolean | None = None + allow_robot_dispatch_in_automatic_mode: Boolean | None = None + default_copy_color_from_train_stop: Boolean | None = None + transition_collision_mask: CollisionMaskConnector | None = None + elevated_collision_mask: CollisionMaskConnector | None = None + elevated_selection_priority: Uint8 | None = None + elevated_rail_sound: MainSound | None = None + drive_over_elevated_tie_trigger: TriggerEffect | None = None + door_opening_sound: InterruptibleSound | None = None + door_closing_sound: InterruptibleSound | None = None + quality_affects_inventory_size: Boolean | None = None + + +@dataclass +class ChainActiveTriggerPrototype: + type: Literal["chain-active-trigger"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + action: Trigger | None = None + max_jumps: Uint32 | None = None + max_range_per_jump: Double | None = None + max_range: Double | None = None + jump_delay_ticks: MapTick | None = None + fork_chance: Double | None = None + fork_chance_increase_per_quality_level: Double | None = None + max_forks_per_jump: Uint32 | None = None + max_forks: Uint32 | None = None + + +@dataclass +class CharacterCorpsePrototype: + type: Literal["character-corpse"] + name: String + time_to_live: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + render_layer: RenderLayer | None = None + pictures: AnimationVariations | None = None + picture: Animation | None = None + armor_picture_mapping: dict[ItemID, Int32] | None = None + + +@dataclass +class CharacterPrototype: + type: Literal["character"] + name: String + mining_speed: Double + running_speed: Double + distance_per_frame: Double + maximum_corner_sliding_distance: Double + inventory_size: ItemStackIndex + build_distance: Uint32 + drop_item_distance: Uint32 + reach_distance: Uint32 + reach_resource_distance: Double + item_pickup_distance: Double + loot_pickup_distance: Double + ticks_to_keep_gun: Uint32 + ticks_to_keep_aiming_direction: Uint32 + ticks_to_stay_in_combat: Uint32 + damage_hit_tint: Color + mining_with_tool_particles_animation_positions: list[Float] | dict[str, Any] + running_sound_animation_positions: list[Float] | dict[str, Any] + moving_sound_animation_positions: list[Float] | dict[str, Any] + animations: list[CharacterArmorAnimation] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + crafting_speed: Double | None = None + heartbeat: Sound | None = None + guns_inventory_size: ItemStackIndex | None = None + crafting_categories: list[RecipeCategoryID] | dict[str, Any] | None = None + mining_categories: list[ResourceCategoryID] | dict[str, Any] | None = None + light: LightDefinition | None = None + flying_bob_speed: Float | None = None + grounded_landing_search_radius: Double | None = None + enter_vehicle_distance: Double | None = None + tool_attack_distance: Double | None = None + respawn_time: Uint32 | None = None + has_belt_immunity: Boolean | None = None + character_corpse: EntityID | None = None + flying_collision_mask: CollisionMaskConnector | None = None + tool_attack_result: Trigger | None = None + footstep_particle_triggers: FootstepTriggerEffectList | None = None + synced_footstep_particle_triggers: FootstepTriggerEffectList | None = None + footprint_particles: list[FootprintParticle] | dict[str, Any] | None = None + left_footprint_offset: Vector | None = None + right_footprint_offset: Vector | None = None + right_footprint_frames: list[Float] | dict[str, Any] | None = None + left_footprint_frames: list[Float] | dict[str, Any] | None = None + + +@dataclass +class CliffPrototype: + type: Literal["cliff"] + name: String + orientations: Orientations + grid_size: Vector + grid_offset: Vector + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + cliff_explosive: ItemID | None = None + place_as_crater: CraterPlacementDefinition | None = None + + +@dataclass +class CombatRobotPrototype: + type: Literal["combat-robot"] + name: String + speed: Double + time_to_live: Uint32 + attack_parameters: AttackParameters + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + max_speed: Double | None = None + max_energy: Energy | None = None + energy_per_move: Energy | None = None + energy_per_tick: Energy | None = None + min_to_charge: Float | None = None + max_to_charge: Float | None = None + speed_multiplier_when_out_of_energy: Float | None = None + idle: RotatedAnimation | None = None + shadow_idle: RotatedAnimation | None = None + in_motion: RotatedAnimation | None = None + shadow_in_motion: RotatedAnimation | None = None + range_from_player: Double | None = None + friction: Double | None = None + destroy_action: Trigger | None = None + follows_player: Boolean | None = None + light: LightDefinition | None = None + + +@dataclass +class ConstantCombinatorPrototype: + type: Literal["constant-combinator"] + name: String + activity_led_light_offsets: list[Vector] + circuit_wire_connection_points: list[WireConnectionPoint] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + sprites: Sprite4Way | None = None + activity_led_sprites: Sprite4Way | None = None + activity_led_light: LightDefinition | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + pulse_duration: Uint32 | None = None + + +@dataclass +class ConstructionRobotPrototype: + type: Literal["construction-robot"] + name: String + speed: Double + max_payload_size: ItemCountType + construction_vector: Vector + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + max_speed: Double | None = None + max_energy: Energy | None = None + energy_per_move: Energy | None = None + energy_per_tick: Energy | None = None + min_to_charge: Float | None = None + max_to_charge: Float | None = None + speed_multiplier_when_out_of_energy: Float | None = None + max_payload_size_after_bonus: ItemCountType | None = None + idle: RotatedAnimation | None = None + in_motion: RotatedAnimation | None = None + shadow_idle: RotatedAnimation | None = None + shadow_in_motion: RotatedAnimation | None = None + destroy_action: Trigger | None = None + draw_cargo: Boolean | None = None + charging_sound: InterruptibleSound | None = None + working: RotatedAnimation | None = None + shadow_working: RotatedAnimation | None = None + smoke: Animation | None = None + sparks: AnimationVariations | None = None + repairing_sound: Sound | None = None + mined_sound_volume_modifier: Float | None = None + working_light: LightDefinition | None = None + + +@dataclass +class ContainerPrototype: + type: Literal["container"] + name: String + inventory_size: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + quality_affects_inventory_size: Boolean | None = None + picture: Sprite | None = None + inventory_type: InventoryType | None = None + inventory_properties: InventoryWithCustomStackSizeSpecification | None = ( + None + ) + inventory_weight_limit: Weight | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + default_status: EntityStatus | None = None + + +@dataclass +class CopyPasteToolPrototype: + type: Literal["copy-paste-tool"] + name: String + stack_size: Literal[1] + select: SelectionModeData + alt_select: SelectionModeData + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + default_label_color: Color | None = None + draw_label_for_cursor_render: Boolean | None = None + super_forced_select: SelectionModeData | None = None + reverse_select: SelectionModeData | None = None + alt_reverse_select: SelectionModeData | None = None + always_include_tiles: Boolean | None = None + mouse_cursor: MouseCursorID | None = None + skip_fog_of_war: Boolean | None = None + cuts: Boolean | None = None + + +@dataclass +class CorpsePrototype: + type: Literal["corpse"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + dying_speed: Float | None = None + splash_speed: Float | None = None + time_before_shading_off: Uint32 | None = None + time_before_removed: Uint32 | None = None + expires: Boolean | None = None + remove_on_entity_placement: Boolean | None = None + remove_on_tile_placement: Boolean | None = None + auto_setup_collision_box: Boolean | None = None + final_render_layer: RenderLayer | None = None + ground_patch_render_layer: RenderLayer | None = None + animation_render_layer: RenderLayer | None = None + splash_render_layer: RenderLayer | None = None + animation_overlay_render_layer: RenderLayer | None = None + animation_overlay_final_render_layer: RenderLayer | None = None + shuffle_directions_at_frame: Uint8 | None = None + use_tile_color_for_ground_patch_tint: Boolean | None = None + use_decay_layer: Boolean | None = None + underwater_layer_offset: Int8 | None = None + ground_patch_fade_in_delay: Float | None = None + ground_patch_fade_in_speed: Float | None = None + ground_patch_fade_out_start: Float | None = None + decay_frame_transition_duration: Float | None = None + animation: RotatedAnimationVariations | None = None + animation_overlay: RotatedAnimationVariations | None = None + decay_animation: RotatedAnimationVariations | None = None + splash: AnimationVariations | None = None + ground_patch: AnimationVariations | None = None + ground_patch_higher: AnimationVariations | None = None + ground_patch_decay: AnimationVariations | None = None + underwater_patch: RotatedSprite | None = None + ground_patch_fade_out_duration: Float | None = None + direction_shuffle: ( + list[list[Uint16] | dict[str, Any]] | dict[str, Any] | None + ) = None + + +@dataclass +class CurvedRailAPrototype: + type: Literal["curved-rail-a"] + name: String + pictures: RailPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + walking_sound: Sound | None = None + fence_pictures: RailFenceGraphicsSet | None = None + extra_planner_penalty: Double | None = None + extra_planner_goal_penalty: Double | None = None + forced_fence_segment_count: Uint8 | None = None + ending_shifts: list[Vector] | dict[str, Any] | None = None + deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None + removes_soft_decoratives: Boolean | None = None + + +@dataclass +class CurvedRailBPrototype: + type: Literal["curved-rail-b"] + name: String + pictures: RailPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + walking_sound: Sound | None = None + fence_pictures: RailFenceGraphicsSet | None = None + extra_planner_penalty: Double | None = None + extra_planner_goal_penalty: Double | None = None + forced_fence_segment_count: Uint8 | None = None + ending_shifts: list[Vector] | dict[str, Any] | None = None + deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None + removes_soft_decoratives: Boolean | None = None + + +@dataclass +class DeciderCombinatorPrototype: + type: Literal["decider-combinator"] + name: String + energy_source: ElectricEnergySource | VoidEnergySource + active_energy_usage: Energy + input_connection_bounding_box: BoundingBox + output_connection_bounding_box: BoundingBox + activity_led_light_offsets: list[Vector] + screen_light_offsets: list[Vector] + input_connection_points: list[WireConnectionPoint] + output_connection_points: list[WireConnectionPoint] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + sprites: Sprite4Way | None = None + frozen_patch: Sprite4Way | None = None + activity_led_sprites: Sprite4Way | None = None + activity_led_light: LightDefinition | None = None + screen_light: LightDefinition | None = None + activity_led_hold_time: Uint8 | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + equal_symbol_sprites: Sprite4Way | None = None + greater_symbol_sprites: Sprite4Way | None = None + less_symbol_sprites: Sprite4Way | None = None + not_equal_symbol_sprites: Sprite4Way | None = None + greater_or_equal_symbol_sprites: Sprite4Way | None = None + less_or_equal_symbol_sprites: Sprite4Way | None = None + + +@dataclass +class DeconstructibleTileProxyPrototype: + type: Literal["deconstructible-tile-proxy"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class DeconstructionItemPrototype: + type: Literal["deconstruction-item"] + name: String + stack_size: Literal[1] + select: SelectionModeData + alt_select: SelectionModeData + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + default_label_color: Color | None = None + draw_label_for_cursor_render: Boolean | None = None + super_forced_select: SelectionModeData | None = None + reverse_select: SelectionModeData | None = None + alt_reverse_select: SelectionModeData | None = None + always_include_tiles: Boolean | None = None + mouse_cursor: MouseCursorID | None = None + skip_fog_of_war: Boolean | None = None + entity_filter_count: ItemStackIndex | None = None + tile_filter_count: ItemStackIndex | None = None + + +@dataclass +class DecorativePrototype: + type: Literal["optimized-decorative"] + name: String + pictures: SpriteVariations + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + stateless_visualisation_variations: ( + list[ + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + ] + | dict[str, Any] + | None + ) = None + collision_box: BoundingBox | None = None + render_layer: RenderLayer | None = None + grows_through_rail_path: Boolean | None = None + opacity_over_water: Float | None = None + tile_layer: Int16 | None = None + decal_overdraw_priority: Uint16 | None = None + collision_mask: CollisionMaskConnector | None = None + walking_sound: Sound | None = None + trigger_effect: TriggerEffect | None = None + minimal_separation: Double | None = None + target_count: Uint16 | None = None + placed_effect: TriggerEffect | None = None + autoplace: AutoplaceSpecification | None = None + + +@dataclass +class DelayedActiveTriggerPrototype: + type: Literal["delayed-active-trigger"] + name: String + action: Trigger + delay: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + repeat_count: Uint32 | None = None + repeat_delay: Uint32 | None = None + cancel_when_source_is_destroyed: Boolean | None = None + + +@dataclass +class DeliverImpactCombination: + type: Literal["deliver-impact-combination"] + name: String + impact_category: String + deliver_category: String + trigger_effect_item: TriggerEffect + + +@dataclass +class DisplayPanelPrototype: + type: Literal["display-panel"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + sprites: Sprite4Way | None = None + max_text_width: Uint32 | None = None + text_shift: Vector | None = None + text_color: Color | None = None + background_color: Color | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + + +@dataclass +class ElectricEnergyInterfacePrototype: + type: Literal["electric-energy-interface"] + name: String + energy_source: ElectricEnergySource + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + energy_production: Energy | None = None + energy_usage: Energy | None = None + gui_mode: GuiMode | None = None + continuous_animation: Boolean | None = None + render_layer: RenderLayer | None = None + light: LightDefinition | None = None + picture: Sprite | None = None + pictures: Sprite4Way | None = None + animation: Animation | None = None + animations: Animation4Way | None = None + + +@dataclass +class ElectricPolePrototype: + type: Literal["electric-pole"] + name: String + supply_area_distance: Double + connection_points: list[WireConnectionPoint] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + pictures: RotatedSprite | None = None + radius_visualisation_picture: Sprite | None = None + active_picture: Sprite | None = None + maximum_wire_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + light: LightDefinition | None = None + track_coverage_during_build_by_moving: Boolean | None = None + auto_connect_up_to_n_wires: Uint8 | None = None + rewire_neighbours_when_destroying: Boolean | None = None + + +@dataclass +class ElectricTurretPrototype: + type: Literal["electric-turret"] + name: String + attack_parameters: AttackParameters + folded_animation: RotatedAnimation8Way + call_for_help_radius: Double + graphics_set: TurretGraphicsSet + energy_source: ElectricEnergySource | VoidEnergySource + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + attack_target_mask: TriggerTargetMask | None = None + ignore_target_mask: TriggerTargetMask | None = None + shoot_in_prepare_state: Boolean | None = None + start_attacking_only_when_can_shoot: Boolean | None = None + turret_base_has_direction: Boolean | None = None + random_animation_offset: Boolean | None = None + attack_from_start_frame: Boolean | None = None + allow_turning_when_starting_attack: Boolean | None = None + gun_animation_secondary_draw_order: Uint8 | None = None + gun_animation_render_layer: RenderLayer | None = None + preparing_animation: RotatedAnimation8Way | None = None + prepared_animation: RotatedAnimation8Way | None = None + prepared_alternative_animation: RotatedAnimation8Way | None = None + starting_attack_animation: RotatedAnimation8Way | None = None + attacking_animation: RotatedAnimation8Way | None = None + energy_glow_animation: RotatedAnimation8Way | None = None + resource_indicator_animation: RotatedAnimation8Way | None = None + ending_attack_animation: RotatedAnimation8Way | None = None + folding_animation: RotatedAnimation8Way | None = None + integration: Sprite | None = None + special_effect: TurretSpecialEffect | None = None + glow_light_intensity: Float | None = None + energy_glow_animation_flicker_strength: Float | None = None + starting_attack_sound: Sound | None = None + dying_sound: Sound | None = None + preparing_sound: Sound | None = None + folding_sound: Sound | None = None + prepared_sound: Sound | None = None + prepared_alternative_sound: Sound | None = None + rotating_sound: InterruptibleSound | None = None + default_speed: Float | None = None + default_speed_secondary: Float | None = None + default_speed_when_killed: Float | None = None + default_starting_progress_when_killed: Float | None = None + rotation_speed: Float | None = None + rotation_speed_secondary: Float | None = None + rotation_speed_when_killed: Float | None = None + rotation_starting_progress_when_killed: Float | None = None + preparing_speed: Float | None = None + preparing_speed_secondary: Float | None = None + preparing_speed_when_killed: Float | None = None + preparing_starting_progress_when_killed: Float | None = None + folded_speed: Float | None = None + folded_speed_secondary: Float | None = None + folded_speed_when_killed: Float | None = None + folded_starting_progress_when_killed: Float | None = None + prepared_speed: Float | None = None + prepared_speed_secondary: Float | None = None + prepared_speed_when_killed: Float | None = None + prepared_starting_progress_when_killed: Float | None = None + prepared_alternative_speed: Float | None = None + prepared_alternative_speed_secondary: Float | None = None + prepared_alternative_speed_when_killed: Float | None = None + prepared_alternative_starting_progress_when_killed: Float | None = None + prepared_alternative_chance: Float | None = None + starting_attack_speed: Float | None = None + starting_attack_speed_secondary: Float | None = None + starting_attack_speed_when_killed: Float | None = None + starting_attack_starting_progress_when_killed: Float | None = None + attacking_speed: Float | None = None + ending_attack_speed: Float | None = None + ending_attack_speed_secondary: Float | None = None + ending_attack_speed_when_killed: Float | None = None + ending_attack_starting_progress_when_killed: Float | None = None + folding_speed: Float | None = None + folding_speed_secondary: Float | None = None + folding_speed_when_killed: Float | None = None + folding_starting_progress_when_killed: Float | None = None + prepare_range: Double | None = None + alert_when_attacking: Boolean | None = None + spawn_decorations_on_expansion: Boolean | None = None + folded_animation_is_stateless: Boolean | None = None + unfolds_before_dying: Boolean | None = None + spawn_decoration: ( + list[CreateDecorativesTriggerEffectItem] | dict[str, Any] | None + ) = None + folded_state_corpse: EntityID | list[EntityID] | dict[str, Any] | None = ( + None + ) + can_retarget_while_starting_attack: Boolean | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: ( + list[CircuitConnectorDefinition] | dict[str, Any] | None + ) = None + + +@dataclass +class ElevatedCurvedRailAPrototype: + type: Literal["elevated-curved-rail-a"] + name: String + pictures: RailPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + walking_sound: Sound | None = None + fence_pictures: RailFenceGraphicsSet | None = None + extra_planner_penalty: Double | None = None + extra_planner_goal_penalty: Double | None = None + forced_fence_segment_count: Uint8 | None = None + ending_shifts: list[Vector] | dict[str, Any] | None = None + deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None + removes_soft_decoratives: Boolean | None = None + + +@dataclass +class ElevatedCurvedRailBPrototype: + type: Literal["elevated-curved-rail-b"] + name: String + pictures: RailPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + walking_sound: Sound | None = None + fence_pictures: RailFenceGraphicsSet | None = None + extra_planner_penalty: Double | None = None + extra_planner_goal_penalty: Double | None = None + forced_fence_segment_count: Uint8 | None = None + ending_shifts: list[Vector] | dict[str, Any] | None = None + deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None + removes_soft_decoratives: Boolean | None = None + + +@dataclass +class ElevatedHalfDiagonalRailPrototype: + type: Literal["elevated-half-diagonal-rail"] + name: String + pictures: RailPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + walking_sound: Sound | None = None + fence_pictures: RailFenceGraphicsSet | None = None + extra_planner_penalty: Double | None = None + extra_planner_goal_penalty: Double | None = None + forced_fence_segment_count: Uint8 | None = None + ending_shifts: list[Vector] | dict[str, Any] | None = None + deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None + removes_soft_decoratives: Boolean | None = None + + +@dataclass +class ElevatedStraightRailPrototype: + type: Literal["elevated-straight-rail"] + name: String + pictures: RailPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + walking_sound: Sound | None = None + fence_pictures: RailFenceGraphicsSet | None = None + extra_planner_penalty: Double | None = None + extra_planner_goal_penalty: Double | None = None + forced_fence_segment_count: Uint8 | None = None + ending_shifts: list[Vector] | dict[str, Any] | None = None + deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None + removes_soft_decoratives: Boolean | None = None + + +@dataclass +class EnemySpawnerPrototype: + type: Literal["unit-spawner"] + name: String + graphics_set: EnemySpawnerGraphicsSet + max_count_of_owned_units: Uint32 + max_friends_around_to_spawn: Uint32 + spawning_cooldown: list[Double] + spawning_radius: Double + spawning_spacing: Double + max_richness_for_spawn_shift: Double + max_spawn_shift: Double + call_for_help_radius: Double + result_units: list[UnitSpawnDefinition] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Literal[True] = True + allow_run_time_change_of_is_military_target: Literal[False] = False + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + max_count_of_owned_defensive_units: Uint32 | None = None + max_defensive_friends_around_to_spawn: Uint32 | None = None + time_to_capture: Uint32 | None = None + dying_sound: Sound | None = None + absorptions_per_second: ( + dict[AirbornePollutantID, EnemySpawnerAbsorption] | None + ) = None + min_darkness_to_spawn: Float | None = None + max_darkness_to_spawn: Float | None = None + spawn_decorations_on_expansion: Boolean | None = None + spawn_decoration: ( + list[CreateDecorativesTriggerEffectItem] | dict[str, Any] | None + ) = None + captured_spawner_entity: EntityID | None = None + + +@dataclass +class EntityGhostPrototype: + type: Literal["entity-ghost"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + medium_build_sound: Sound | None = None + large_build_sound: Sound | None = None + huge_build_sound: Sound | None = None + small_build_animated_sound: Sound | None = None + medium_build_animated_sound: Sound | None = None + large_build_animated_sound: Sound | None = None + huge_build_animated_sound: Sound | None = None + + +@dataclass +class ExplosionPrototype: + type: Literal["explosion"] + name: String + animations: AnimationVariations + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + sound: Sound | None = None + smoke: TrivialSmokeID | None = None + height: Float | None = None + smoke_slow_down_factor: Float | None = None + smoke_count: Uint16 | None = None + rotate: Boolean | None = None + beam: Boolean | None = None + correct_rotation: Boolean | None = None + scale_animation_speed: Boolean | None = None + fade_in_duration: Uint8 | None = None + fade_out_duration: Uint8 | None = None + render_layer: RenderLayer | None = None + scale_in_duration: Uint8 | None = None + scale_out_duration: Uint8 | None = None + scale_end: Float | None = None + scale_increment_per_tick: Float | None = None + light_intensity_factor_initial: Float | None = None + light_intensity_factor_final: Float | None = None + light_size_factor_initial: Float | None = None + light_size_factor_final: Float | None = None + light: LightDefinition | None = None + light_intensity_peak_start_progress: Float | None = None + light_intensity_peak_end_progress: Float | None = None + light_size_peak_start_progress: Float | None = None + light_size_peak_end_progress: Float | None = None + scale_initial: Float | None = None + scale_initial_deviation: Float | None = None + scale: Float | None = None + scale_deviation: Float | None = None + delay: MapTick | None = None + delay_deviation: MapTick | None = None + explosion_effect: Trigger | None = None + + +@dataclass +class FireFlamePrototype: + type: Literal["fire"] + name: String + damage_per_tick: DamageParameters + spread_delay: Uint32 + spread_delay_deviation: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + render_layer: RenderLayer | None = None + initial_render_layer: RenderLayer | None = None + secondary_render_layer: RenderLayer | None = None + small_tree_fire_pictures: AnimationVariations | None = None + pictures: AnimationVariations | None = None + smoke_source_pictures: AnimationVariations | None = None + secondary_pictures: AnimationVariations | None = None + burnt_patch_pictures: SpriteVariations | None = None + secondary_picture_fade_out_start: Uint32 | None = None + secondary_picture_fade_out_duration: Uint32 | None = None + spawn_entity: EntityID | None = None + smoke: list[SmokeSource] | dict[str, Any] | None = None + maximum_spread_count: Uint16 | None = None + initial_flame_count: Uint8 | None = None + uses_alternative_behavior: Boolean | None = None + limit_overlapping_particles: Boolean | None = None + tree_dying_factor: Float | None = None + fade_in_duration: Uint32 | None = None + fade_out_duration: Uint32 | None = None + initial_lifetime: Uint32 | None = None + damage_multiplier_decrease_per_tick: Float | None = None + damage_multiplier_increase_per_added_fuel: Float | None = None + maximum_damage_multiplier: Float | None = None + lifetime_increase_by: Uint32 | None = None + lifetime_increase_cooldown: Uint32 | None = None + maximum_lifetime: Uint32 | None = None + add_fuel_cooldown: Uint32 | None = None + delay_between_initial_flames: Uint32 | None = None + smoke_fade_in_duration: Uint32 | None = None + smoke_fade_out_duration: Uint32 | None = None + on_fuel_added_action: Trigger | None = None + on_damage_tick_effect: Trigger | None = None + light: LightDefinition | None = None + light_size_modifier_per_flame: Float | None = None + light_size_modifier_maximum: Float | None = None + particle_alpha_blend_duration: Uint16 | None = None + burnt_patch_lifetime: Uint32 | None = None + burnt_patch_alpha_default: Float | None = None + particle_alpha: Float | None = None + particle_alpha_deviation: Float | None = None + flame_alpha: Float | None = None + flame_alpha_deviation: Float | None = None + burnt_patch_alpha_variations: ( + list[BurntPatchAlphaVariation] | dict[str, Any] | None + ) = None + + +@dataclass +class FishPrototype: + type: Literal["fish"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + pictures: SpriteVariations | None = None + + +@dataclass +class FluidStreamPrototype: + type: Literal["stream"] + name: String + particle_spawn_interval: Uint16 + particle_horizontal_speed: Float + particle_horizontal_speed_deviation: Float + particle_vertical_acceleration: Float + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + initial_action: Trigger | None = None + action: Trigger | None = None + special_neutral_target_damage: DamageParameters | None = None + width: Float | None = None + particle_buffer_size: Uint32 | None = None + particle_spawn_timeout: Uint16 | None = None + particle_start_alpha: Float | None = None + particle_end_alpha: Float | None = None + particle_start_scale: Float | None = None + particle_alpha_per_part: Float | None = None + particle_scale_per_part: Float | None = None + particle_fade_out_threshold: Float | None = None + particle_loop_exit_threshold: Float | None = None + particle_loop_frame_count: Uint16 | None = None + particle_fade_out_duration: Uint16 | None = None + spine_animation: Animation | None = None + particle: Animation | None = None + shadow: Animation | None = None + smoke_sources: list[SmokeSource] | dict[str, Any] | None = None + progress_to_create_smoke: Float | None = None + stream_light: LightDefinition | None = None + ground_light: LightDefinition | None = None + target_position_deviation: Double | None = None + oriented_particle: Boolean | None = None + shadow_scale_enabled: Boolean | None = None + target_initial_position_only: Boolean | None = None + + +@dataclass +class FluidTurretPrototype: + type: Literal["fluid-turret"] + name: String + attack_parameters: StreamAttackParameters + folded_animation: RotatedAnimation8Way + call_for_help_radius: Double + turret_base_has_direction: Literal[True] + graphics_set: TurretGraphicsSet + fluid_buffer_size: FluidAmount + fluid_buffer_input_flow: FluidAmount + activation_buffer_ratio: FluidAmount + fluid_box: FluidBox + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + attack_target_mask: TriggerTargetMask | None = None + ignore_target_mask: TriggerTargetMask | None = None + shoot_in_prepare_state: Boolean | None = None + start_attacking_only_when_can_shoot: Boolean | None = None + random_animation_offset: Boolean | None = None + attack_from_start_frame: Boolean | None = None + allow_turning_when_starting_attack: Boolean | None = None + gun_animation_secondary_draw_order: Uint8 | None = None + gun_animation_render_layer: RenderLayer | None = None + preparing_animation: RotatedAnimation8Way | None = None + prepared_animation: RotatedAnimation8Way | None = None + prepared_alternative_animation: RotatedAnimation8Way | None = None + starting_attack_animation: RotatedAnimation8Way | None = None + attacking_animation: RotatedAnimation8Way | None = None + energy_glow_animation: RotatedAnimation8Way | None = None + resource_indicator_animation: RotatedAnimation8Way | None = None + ending_attack_animation: RotatedAnimation8Way | None = None + folding_animation: RotatedAnimation8Way | None = None + integration: Sprite | None = None + special_effect: TurretSpecialEffect | None = None + glow_light_intensity: Float | None = None + energy_glow_animation_flicker_strength: Float | None = None + starting_attack_sound: Sound | None = None + dying_sound: Sound | None = None + preparing_sound: Sound | None = None + folding_sound: Sound | None = None + prepared_sound: Sound | None = None + prepared_alternative_sound: Sound | None = None + rotating_sound: InterruptibleSound | None = None + default_speed: Float | None = None + default_speed_secondary: Float | None = None + default_speed_when_killed: Float | None = None + default_starting_progress_when_killed: Float | None = None + rotation_speed: Float | None = None + rotation_speed_secondary: Float | None = None + rotation_speed_when_killed: Float | None = None + rotation_starting_progress_when_killed: Float | None = None + preparing_speed: Float | None = None + preparing_speed_secondary: Float | None = None + preparing_speed_when_killed: Float | None = None + preparing_starting_progress_when_killed: Float | None = None + folded_speed: Float | None = None + folded_speed_secondary: Float | None = None + folded_speed_when_killed: Float | None = None + folded_starting_progress_when_killed: Float | None = None + prepared_speed: Float | None = None + prepared_speed_secondary: Float | None = None + prepared_speed_when_killed: Float | None = None + prepared_starting_progress_when_killed: Float | None = None + prepared_alternative_speed: Float | None = None + prepared_alternative_speed_secondary: Float | None = None + prepared_alternative_speed_when_killed: Float | None = None + prepared_alternative_starting_progress_when_killed: Float | None = None + prepared_alternative_chance: Float | None = None + starting_attack_speed: Float | None = None + starting_attack_speed_secondary: Float | None = None + starting_attack_speed_when_killed: Float | None = None + starting_attack_starting_progress_when_killed: Float | None = None + attacking_speed: Float | None = None + ending_attack_speed: Float | None = None + ending_attack_speed_secondary: Float | None = None + ending_attack_speed_when_killed: Float | None = None + ending_attack_starting_progress_when_killed: Float | None = None + folding_speed: Float | None = None + folding_speed_secondary: Float | None = None + folding_speed_when_killed: Float | None = None + folding_starting_progress_when_killed: Float | None = None + prepare_range: Double | None = None + alert_when_attacking: Boolean | None = None + spawn_decorations_on_expansion: Boolean | None = None + folded_animation_is_stateless: Boolean | None = None + unfolds_before_dying: Boolean | None = None + spawn_decoration: ( + list[CreateDecorativesTriggerEffectItem] | dict[str, Any] | None + ) = None + folded_state_corpse: EntityID | list[EntityID] | dict[str, Any] | None = ( + None + ) + can_retarget_while_starting_attack: Boolean | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: ( + list[CircuitConnectorDefinition] | dict[str, Any] | None + ) = None + muzzle_light: LightDefinition | None = None + enough_fuel_indicator_light: LightDefinition | None = None + not_enough_fuel_indicator_light: LightDefinition | None = None + muzzle_animation: Animation | None = None + folded_muzzle_animation_shift: AnimatedVector | None = None + preparing_muzzle_animation_shift: AnimatedVector | None = None + prepared_muzzle_animation_shift: AnimatedVector | None = None + starting_attack_muzzle_animation_shift: AnimatedVector | None = None + attacking_muzzle_animation_shift: AnimatedVector | None = None + ending_attack_muzzle_animation_shift: AnimatedVector | None = None + folding_muzzle_animation_shift: AnimatedVector | None = None + enough_fuel_indicator_picture: Sprite4Way | None = None + not_enough_fuel_indicator_picture: Sprite4Way | None = None + out_of_ammo_alert_icon: Sprite | None = None + + +@dataclass +class FluidWagonPrototype: + type: Literal["fluid-wagon"] + name: String + weight: Double + energy_per_hit_point: Double + max_speed: Double + air_resistance: Double + joint_distance: Double + connection_distance: Double + vertical_selection_shift: Double + capacity: FluidAmount + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + braking_power: Energy | Double | None = None + braking_force: Energy | Double | None = None + friction: Double | None = None + friction_force: Double | None = None + terrain_friction_modifier: Float | None = None + impact_speed_to_volume_ratio: Double | None = None + stop_trigger_speed: Double | None = None + crash_trigger: TriggerEffect | None = None + stop_trigger: TriggerEffect | None = None + equipment_grid: EquipmentGridID | None = None + minimap_representation: Sprite | None = None + selected_minimap_representation: Sprite | None = None + allow_passengers: Boolean | None = None + deliver_category: String | None = None + chunk_exploration_radius: Uint32 | None = None + allow_remote_driving: Boolean | None = None + pictures: RollingStockRotatedSlopedGraphics | None = None + wheels: RollingStockRotatedSlopedGraphics | None = None + drive_over_tie_trigger: TriggerEffect | None = None + drive_over_tie_trigger_minimal_speed: Double | None = None + tie_distance: Double | None = None + back_light: LightDefinition | None = None + stand_by_light: LightDefinition | None = None + horizontal_doors: Animation | None = None + vertical_doors: Animation | None = None + color: Color | None = None + allow_manual_color: Boolean | None = None + allow_robot_dispatch_in_automatic_mode: Boolean | None = None + default_copy_color_from_train_stop: Boolean | None = None + transition_collision_mask: CollisionMaskConnector | None = None + elevated_collision_mask: CollisionMaskConnector | None = None + elevated_selection_priority: Uint8 | None = None + elevated_rail_sound: MainSound | None = None + drive_over_elevated_tie_trigger: TriggerEffect | None = None + door_opening_sound: InterruptibleSound | None = None + door_closing_sound: InterruptibleSound | None = None + quality_affects_capacity: Boolean | None = None + tank_count: Uint8 | None = None + connection_category: String | list[String] | dict[str, Any] | None = None + + +@dataclass +class FurnacePrototype: + type: Literal["furnace"] + name: String + energy_usage: Energy + crafting_speed: Double + crafting_categories: list[RecipeCategoryID] | dict[str, Any] + energy_source: EnergySource + result_inventory_size: ItemStackIndex + source_inventory_size: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + quality_affects_energy_usage: Boolean | None = None + fluid_boxes: list[FluidBox] | dict[str, Any] | None = None + effect_receiver: EffectReceiver | None = None + module_slots: ItemStackIndex | None = None + quality_affects_module_slots: Boolean | None = None + allowed_effects: EffectTypeLimitation | None = None + allowed_module_categories: ( + list[ModuleCategoryID] | dict[str, Any] | None + ) = None + show_recipe_icon: Boolean | None = None + return_ingredients_on_change: Boolean | None = None + draw_entity_info_icon_background: Boolean | None = None + match_animation_speed_to_activity: Boolean | None = None + show_recipe_icon_on_map: Boolean | None = None + fast_transfer_modules_into_module_slots_only: Boolean | None = None + ignore_output_full: Boolean | None = None + graphics_set: CraftingMachineGraphicsSet | None = None + graphics_set_flipped: CraftingMachineGraphicsSet | None = None + perceived_performance: PerceivedPerformance | None = None + production_health_effect: ProductionHealthEffect | None = None + trash_inventory_size: ItemStackIndex | None = None + vector_to_place_result: Vector | None = None + forced_symmetry: Mirroring | None = None + crafting_speed_quality_multiplier: dict[QualityID, Double] | None = None + module_slots_quality_bonus: dict[QualityID, ItemStackIndex] | None = None + energy_usage_quality_multiplier: dict[QualityID, Double] | None = None + cant_insert_at_source_message_key: String | None = None + custom_input_slot_tooltip_key: String | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + circuit_connector_flipped: list[CircuitConnectorDefinition] | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + default_recipe_finished_signal: SignalIDConnector | None = None + default_working_signal: SignalIDConnector | None = None + + +@dataclass +class FusionGeneratorPrototype: + type: Literal["fusion-generator"] + name: String + energy_source: ElectricEnergySource + input_fluid_box: FluidBox + output_fluid_box: FluidBox + max_fluid_usage: FluidAmount + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + graphics_set: FusionGeneratorGraphicsSet | None = None + perceived_performance: PerceivedPerformance | None = None + burns_fluid: Boolean | None = None + effectivity: Double | None = None + + +@dataclass +class FusionReactorPrototype: + type: Literal["fusion-reactor"] + name: String + energy_source: ElectricEnergySource + burner: BurnerEnergySource + graphics_set: FusionReactorGraphicsSet + input_fluid_box: FluidBox + output_fluid_box: FluidBox + power_input: Energy + max_fluid_usage: FluidAmount + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + neighbour_connectable: NeighbourConnectable | None = None + two_direction_only: Boolean | None = None + neighbour_bonus: Float | None = None + target_temperature: Float | None = None + perceived_performance: PerceivedPerformance | None = None + + +@dataclass +class GatePrototype: + type: Literal["gate"] + name: String + opening_speed: Float + activation_distance: Double + timeout_to_close: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + vertical_animation: Animation | None = None + horizontal_animation: Animation | None = None + vertical_rail_animation_left: Animation | None = None + vertical_rail_animation_right: Animation | None = None + horizontal_rail_animation_left: Animation | None = None + horizontal_rail_animation_right: Animation | None = None + vertical_rail_base: Animation | None = None + horizontal_rail_base: Animation | None = None + wall_patch: Animation | None = None + opening_sound: Sound | None = None + closing_sound: Sound | None = None + fadeout_interval: Uint32 | None = None + opened_collision_mask: CollisionMaskConnector | None = None + + +@dataclass +class GeneratorPrototype: + type: Literal["generator"] + name: String + energy_source: ElectricEnergySource + fluid_box: FluidBox + fluid_usage_per_tick: FluidAmount + maximum_temperature: Float + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + horizontal_animation: Animation | None = None + vertical_animation: Animation | None = None + horizontal_frozen_patch: Sprite | None = None + vertical_frozen_patch: Sprite | None = None + effectivity: Double | None = None + smoke: list[SmokeSource] | dict[str, Any] | None = None + burns_fluid: Boolean | None = None + scale_fluid_usage: Boolean | None = None + destroy_non_fuel_fluid: Boolean | None = None + perceived_performance: PerceivedPerformance | None = None + max_power_output: Energy | None = None + + +@dataclass +class GunPrototype: + type: Literal["gun"] + name: String + stack_size: ItemCountType + attack_parameters: AttackParameters + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + + +@dataclass +class HalfDiagonalRailPrototype: + type: Literal["half-diagonal-rail"] + name: String + pictures: RailPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + walking_sound: Sound | None = None + fence_pictures: RailFenceGraphicsSet | None = None + extra_planner_penalty: Double | None = None + extra_planner_goal_penalty: Double | None = None + forced_fence_segment_count: Uint8 | None = None + ending_shifts: list[Vector] | dict[str, Any] | None = None + deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None + removes_soft_decoratives: Boolean | None = None + + +@dataclass +class HeatInterfacePrototype: + type: Literal["heat-interface"] + name: String + heat_buffer: HeatBuffer + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + picture: Sprite | None = None + gui_mode: GuiMode | None = None + heating_radius: Float | None = None + + +@dataclass +class HeatPipePrototype: + type: Literal["heat-pipe"] + name: String + heat_buffer: HeatBuffer + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + connection_sprites: ConnectableEntityGraphics | None = None + heat_glow_sprites: ConnectableEntityGraphics | None = None + heating_radius: Float | None = None + + +@dataclass +class HighlightBoxEntityPrototype: + type: Literal["highlight-box"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class InfinityCargoWagonPrototype: + type: Literal["infinity-cargo-wagon"] + name: String + weight: Double + energy_per_hit_point: Double + max_speed: Double + air_resistance: Double + joint_distance: Double + connection_distance: Double + vertical_selection_shift: Double + inventory_size: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + braking_power: Energy | Double | None = None + braking_force: Energy | Double | None = None + friction: Double | None = None + friction_force: Double | None = None + terrain_friction_modifier: Float | None = None + impact_speed_to_volume_ratio: Double | None = None + stop_trigger_speed: Double | None = None + crash_trigger: TriggerEffect | None = None + stop_trigger: TriggerEffect | None = None + equipment_grid: EquipmentGridID | None = None + minimap_representation: Sprite | None = None + selected_minimap_representation: Sprite | None = None + allow_passengers: Boolean | None = None + deliver_category: String | None = None + chunk_exploration_radius: Uint32 | None = None + allow_remote_driving: Boolean | None = None + pictures: RollingStockRotatedSlopedGraphics | None = None + wheels: RollingStockRotatedSlopedGraphics | None = None + drive_over_tie_trigger: TriggerEffect | None = None + drive_over_tie_trigger_minimal_speed: Double | None = None + tie_distance: Double | None = None + back_light: LightDefinition | None = None + stand_by_light: LightDefinition | None = None + horizontal_doors: Animation | None = None + vertical_doors: Animation | None = None + color: Color | None = None + allow_manual_color: Boolean | None = None + allow_robot_dispatch_in_automatic_mode: Boolean | None = None + default_copy_color_from_train_stop: Boolean | None = None + transition_collision_mask: CollisionMaskConnector | None = None + elevated_collision_mask: CollisionMaskConnector | None = None + elevated_selection_priority: Uint8 | None = None + elevated_rail_sound: MainSound | None = None + drive_over_elevated_tie_trigger: TriggerEffect | None = None + door_opening_sound: InterruptibleSound | None = None + door_closing_sound: InterruptibleSound | None = None + quality_affects_inventory_size: Boolean | None = None + erase_contents_when_mined: Boolean | None = None + preserve_contents_when_created: Boolean | None = None + gui_mode: GuiMode | None = None + + +@dataclass +class InfinityContainerPrototype: + type: Literal["infinity-container"] + name: String + inventory_size: ItemStackIndex + erase_contents_when_mined: Boolean + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + quality_affects_inventory_size: Boolean | None = None + picture: Sprite | None = None + inventory_type: InventoryType | None = None + inventory_properties: InventoryWithCustomStackSizeSpecification | None = ( + None + ) + inventory_weight_limit: Weight | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + default_status: EntityStatus | None = None + logistic_mode: LogisticMode | None = None + max_logistic_slots: Uint16 | None = None + trash_inventory_size: ItemStackIndex | None = None + render_not_in_network_icon: Boolean | None = None + opened_duration: Uint8 | None = None + animation: Animation | None = None + landing_location_offset: Vector | None = None + use_exact_mode: Boolean | None = None + animation_sound: Sound | None = None + preserve_contents_when_created: Boolean | None = None + gui_mode: GuiMode | None = None + + +@dataclass +class InfinityPipePrototype: + type: Literal["infinity-pipe"] + name: String + fluid_box: FluidBox + horizontal_window_bounding_box: BoundingBox + vertical_window_bounding_box: BoundingBox + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + pictures: PipePictures | None = None + gui_mode: GuiMode | None = None + + +@dataclass +class InserterPrototype: + type: Literal["inserter"] + name: String + extension_speed: Double + rotation_speed: Double + insert_position: Vector + pickup_position: Vector + energy_source: EnergySource + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + starting_distance: Double | None = None + platform_picture: Sprite4Way | None = None + platform_frozen: Sprite4Way | None = None + hand_base_picture: Sprite | None = None + hand_open_picture: Sprite | None = None + hand_closed_picture: Sprite | None = None + hand_base_frozen: Sprite | None = None + hand_open_frozen: Sprite | None = None + hand_closed_frozen: Sprite | None = None + hand_base_shadow: Sprite | None = None + hand_open_shadow: Sprite | None = None + hand_closed_shadow: Sprite | None = None + energy_per_movement: Energy | None = None + energy_per_rotation: Energy | None = None + bulk: Boolean | None = None + uses_inserter_stack_size_bonus: Boolean | None = None + allow_custom_vectors: Boolean | None = None + allow_burner_leech: Boolean | None = None + draw_held_item: Boolean | None = None + use_easter_egg: Boolean | None = None + grab_less_to_match_belt_stack: Boolean | None = None + wait_for_full_hand: Boolean | None = None + enter_drop_mode_if_held_stack_spoiled: Boolean | None = None + max_belt_stack_size: Uint8 | None = None + filter_count: Uint8 | None = None + hand_size: Double | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + default_stack_control_input_signal: SignalIDConnector | None = None + draw_inserter_arrow: Boolean | None = None + chases_belt_items: Boolean | None = None + stack_size_bonus: Uint8 | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + + +@dataclass +class ItemEntityPrototype: + type: Literal["item-entity"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class ItemPrototype: + type: Literal["item"] + name: String + stack_size: ItemCountType + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + + +@dataclass +class ItemRequestProxyPrototype: + type: Literal["item-request-proxy"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + use_target_entity_alert_icon_shift: Boolean | None = None + + +@dataclass +class ItemWithEntityDataPrototype: + type: Literal["item-with-entity-data"] + name: String + stack_size: ItemCountType + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + icon_tintable_masks: list[IconData] | dict[str, Any] | None = None + icon_tintable_mask: FileName | None = None + icon_tintable_mask_size: SpriteSizeType | None = None + icon_tintables: list[IconData] | dict[str, Any] | None = None + icon_tintable: FileName | None = None + icon_tintable_size: SpriteSizeType | None = None + + +@dataclass +class ItemWithInventoryPrototype: + type: Literal["item-with-inventory"] + name: String + stack_size: Literal[1] + inventory_size: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + default_label_color: Color | None = None + draw_label_for_cursor_render: Boolean | None = None + item_filters: list[ItemID] | dict[str, Any] | None = None + item_group_filters: list[ItemGroupID] | dict[str, Any] | None = None + item_subgroup_filters: list[ItemSubGroupID] | dict[str, Any] | None = None + filter_mode: FilterMode | None = None + filter_message_key: String | None = None + + +@dataclass +class ItemWithLabelPrototype: + type: Literal["item-with-label"] + name: String + stack_size: ItemCountType + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + default_label_color: Color | None = None + draw_label_for_cursor_render: Boolean | None = None + + +@dataclass +class ItemWithTagsPrototype: + type: Literal["item-with-tags"] + name: String + stack_size: ItemCountType + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + default_label_color: Color | None = None + draw_label_for_cursor_render: Boolean | None = None + + +@dataclass +class LabPrototype: + type: Literal["lab"] + name: String + energy_usage: Energy + energy_source: EnergySource + inputs: list[ItemID] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + on_animation: Animation | None = None + off_animation: Animation | None = None + frozen_patch: Sprite | None = None + researching_speed: Double | None = None + effect_receiver: EffectReceiver | None = None + module_slots: ItemStackIndex | None = None + quality_affects_module_slots: Boolean | None = None + uses_quality_drain_modifier: Boolean | None = None + science_pack_drain_rate_percent: Uint8 | None = None + allowed_effects: EffectTypeLimitation | None = None + allowed_module_categories: ( + list[ModuleCategoryID] | dict[str, Any] | None + ) = None + light: LightDefinition | None = None + trash_inventory_size: ItemStackIndex | None = None + + +@dataclass +class LampPrototype: + type: Literal["lamp"] + name: String + energy_usage_per_tick: Energy + energy_source: ElectricEnergySource | VoidEnergySource + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + picture_on: Sprite | None = None + picture_off: Sprite | None = None + light: LightDefinition | None = None + light_when_colored: LightDefinition | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + glow_size: Float | None = None + glow_color_intensity: Float | None = None + darkness_for_all_lamps_on: Float | None = None + darkness_for_all_lamps_off: Float | None = None + always_on: Boolean | None = None + signal_to_color_mapping: ( + list[SignalColorMapping] | dict[str, Any] | None + ) = None + glow_render_mode: GlowRenderMode | None = None + default_red_signal: SignalIDConnector | None = None + default_green_signal: SignalIDConnector | None = None + default_blue_signal: SignalIDConnector | None = None + default_rgb_signal: SignalIDConnector | None = None + + +@dataclass +class LandMinePrototype: + type: Literal["land-mine"] + name: String + trigger_radius: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + picture_safe: Sprite | None = None + picture_set: Sprite | None = None + picture_set_enemy: Sprite | None = None + timeout: Uint32 | None = None + trigger_interval: Uint32 | None = None + action: Trigger | None = None + ammo_category: AmmoCategoryID | None = None + force_die_on_attack: Boolean | None = None + trigger_force: ForceCondition | None = None + trigger_collision_mask: CollisionMaskConnector | None = None + + +@dataclass +class LaneSplitterPrototype: + type: Literal["lane-splitter"] + name: String + speed: Double + structure: Animation4Way + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + belt_animation_set: TransportBeltAnimationSet | None = None + animation_speed_coefficient: Double | None = None + structure_animation_speed_coefficient: Double | None = None + structure_animation_movement_cooldown: Uint32 | None = None + structure_patch: Animation4Way | None = None + + +@dataclass +class LegacyCurvedRailPrototype: + type: Literal["legacy-curved-rail"] + name: String + pictures: RailPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + walking_sound: Sound | None = None + fence_pictures: RailFenceGraphicsSet | None = None + extra_planner_penalty: Double | None = None + extra_planner_goal_penalty: Double | None = None + forced_fence_segment_count: Uint8 | None = None + ending_shifts: list[Vector] | dict[str, Any] | None = None + deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None + removes_soft_decoratives: Boolean | None = None + + +@dataclass +class LegacyStraightRailPrototype: + type: Literal["legacy-straight-rail"] + name: String + pictures: RailPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + walking_sound: Sound | None = None + fence_pictures: RailFenceGraphicsSet | None = None + extra_planner_penalty: Double | None = None + extra_planner_goal_penalty: Double | None = None + forced_fence_segment_count: Uint8 | None = None + ending_shifts: list[Vector] | dict[str, Any] | None = None + deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None + removes_soft_decoratives: Boolean | None = None + + +@dataclass +class LightningAttractorPrototype: + type: Literal["lightning-attractor"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + chargable_graphics: ChargableGraphics | None = None + lightning_strike_offset: MapPosition | None = None + efficiency: Double | None = None + range_elongation: Double | None = None + energy_source: ElectricEnergySource | None = None + + +@dataclass +class LightningPrototype: + type: Literal["lightning"] + name: String + effect_duration: Uint16 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + graphics_set: LightningGraphicsSet | None = None + sound: Sound | None = None + attracted_volume_modifier: Float | None = None + strike_effect: Trigger | None = None + attractor_hit_effect: Trigger | None = None + source_offset: Vector | None = None + source_variance: Vector | None = None + damage: Double | None = None + energy: Energy | None = None + time_to_damage: Uint16 | None = None + + +@dataclass +class LinkedBeltPrototype: + type: Literal["linked-belt"] + name: String + speed: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + belt_animation_set: TransportBeltAnimationSet | None = None + animation_speed_coefficient: Double | None = None + structure: Structure | None = None + structure_render_layer: RenderLayer | None = None + allow_clone_connection: Boolean | None = None + allow_blueprint_connection: Boolean | None = None + allow_side_loading: Boolean | None = None + + +@dataclass +class LinkedContainerPrototype: + type: Literal["linked-container"] + name: String + inventory_size: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + picture: Sprite | None = None + inventory_type: InventoryType | None = None + inventory_properties: InventoryWithCustomStackSizeSpecification | None = ( + None + ) + inventory_weight_limit: Weight | None = None + gui_mode: GuiMode | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + + +@dataclass +class Loader1x1Prototype: + type: Literal["loader-1x1"] + name: String + speed: Double + filter_count: Uint8 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + belt_animation_set: TransportBeltAnimationSet | None = None + animation_speed_coefficient: Double | None = None + structure: LoaderStructure | None = None + structure_render_layer: RenderLayer | None = None + circuit_connector_layer: RenderLayer | None = None + container_distance: Double | None = None + allow_rail_interaction: Boolean | None = None + allow_container_interaction: Boolean | None = None + per_lane_filters: Boolean | None = None + max_belt_stack_size: Uint8 | None = None + adjustable_belt_stack_size: Boolean | None = None + wait_for_full_stack: Boolean | None = None + respect_insert_limits: Boolean | None = None + belt_length: Double | None = None + energy_source: ( + ElectricEnergySource + | HeatEnergySource + | FluidEnergySource + | VoidEnergySource + | None + ) = None + energy_per_item: Energy | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: ( + list[CircuitConnectorDefinition] | dict[str, Any] | None + ) = None + + +@dataclass +class Loader1x2Prototype: + type: Literal["loader"] + name: String + speed: Double + filter_count: Uint8 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + belt_animation_set: TransportBeltAnimationSet | None = None + animation_speed_coefficient: Double | None = None + structure: LoaderStructure | None = None + structure_render_layer: RenderLayer | None = None + circuit_connector_layer: RenderLayer | None = None + container_distance: Double | None = None + allow_rail_interaction: Boolean | None = None + allow_container_interaction: Boolean | None = None + per_lane_filters: Boolean | None = None + max_belt_stack_size: Uint8 | None = None + adjustable_belt_stack_size: Boolean | None = None + wait_for_full_stack: Boolean | None = None + respect_insert_limits: Boolean | None = None + belt_length: Double | None = None + energy_source: ( + ElectricEnergySource + | HeatEnergySource + | FluidEnergySource + | VoidEnergySource + | None + ) = None + energy_per_item: Energy | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: ( + list[CircuitConnectorDefinition] | dict[str, Any] | None + ) = None + + +@dataclass +class LocomotivePrototype: + type: Literal["locomotive"] + name: String + weight: Double + energy_per_hit_point: Double + max_speed: Double + air_resistance: Double + joint_distance: Double + connection_distance: Double + vertical_selection_shift: Double + max_power: Energy + reversing_power_modifier: Double + energy_source: BurnerEnergySource | VoidEnergySource + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + braking_power: Energy | Double | None = None + braking_force: Energy | Double | None = None + friction: Double | None = None + friction_force: Double | None = None + terrain_friction_modifier: Float | None = None + impact_speed_to_volume_ratio: Double | None = None + stop_trigger_speed: Double | None = None + crash_trigger: TriggerEffect | None = None + stop_trigger: TriggerEffect | None = None + equipment_grid: EquipmentGridID | None = None + minimap_representation: Sprite | None = None + selected_minimap_representation: Sprite | None = None + allow_passengers: Boolean | None = None + deliver_category: String | None = None + chunk_exploration_radius: Uint32 | None = None + allow_remote_driving: Boolean | None = None + pictures: RollingStockRotatedSlopedGraphics | None = None + wheels: RollingStockRotatedSlopedGraphics | None = None + drive_over_tie_trigger: TriggerEffect | None = None + drive_over_tie_trigger_minimal_speed: Double | None = None + tie_distance: Double | None = None + back_light: LightDefinition | None = None + stand_by_light: LightDefinition | None = None + horizontal_doors: Animation | None = None + vertical_doors: Animation | None = None + color: Color | None = None + allow_manual_color: Boolean | None = None + allow_robot_dispatch_in_automatic_mode: Boolean | None = None + default_copy_color_from_train_stop: Boolean | None = None + transition_collision_mask: CollisionMaskConnector | None = None + elevated_collision_mask: CollisionMaskConnector | None = None + elevated_selection_priority: Uint8 | None = None + elevated_rail_sound: MainSound | None = None + drive_over_elevated_tie_trigger: TriggerEffect | None = None + door_opening_sound: InterruptibleSound | None = None + door_closing_sound: InterruptibleSound | None = None + front_light: LightDefinition | None = None + front_light_pictures: RollingStockRotatedSlopedGraphics | None = None + darkness_to_render_light_animation: Float | None = None + max_snap_to_train_stop_distance: Float | None = None + + +@dataclass +class LogisticContainerPrototype: + type: Literal["logistic-container"] + name: String + inventory_size: ItemStackIndex + logistic_mode: LogisticMode + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + quality_affects_inventory_size: Boolean | None = None + picture: Sprite | None = None + inventory_type: InventoryType | None = None + inventory_properties: InventoryWithCustomStackSizeSpecification | None = ( + None + ) + inventory_weight_limit: Weight | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + default_status: EntityStatus | None = None + max_logistic_slots: Uint16 | None = None + trash_inventory_size: ItemStackIndex | None = None + render_not_in_network_icon: Boolean | None = None + opened_duration: Uint8 | None = None + animation: Animation | None = None + landing_location_offset: Vector | None = None + use_exact_mode: Boolean | None = None + animation_sound: Sound | None = None + + +@dataclass +class LogisticRobotPrototype: + type: Literal["logistic-robot"] + name: String + speed: Double + max_payload_size: ItemCountType + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + max_speed: Double | None = None + max_energy: Energy | None = None + energy_per_move: Energy | None = None + energy_per_tick: Energy | None = None + min_to_charge: Float | None = None + max_to_charge: Float | None = None + speed_multiplier_when_out_of_energy: Float | None = None + max_payload_size_after_bonus: ItemCountType | None = None + idle: RotatedAnimation | None = None + in_motion: RotatedAnimation | None = None + shadow_idle: RotatedAnimation | None = None + shadow_in_motion: RotatedAnimation | None = None + destroy_action: Trigger | None = None + draw_cargo: Boolean | None = None + charging_sound: InterruptibleSound | None = None + idle_with_cargo: RotatedAnimation | None = None + in_motion_with_cargo: RotatedAnimation | None = None + shadow_idle_with_cargo: RotatedAnimation | None = None + shadow_in_motion_with_cargo: RotatedAnimation | None = None + + +@dataclass +class MarketPrototype: + type: Literal["market"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + picture: Sprite | None = None + allow_access_to_all_forces: Boolean | None = None + + +@dataclass +class MiningDrillPrototype: + type: Literal["mining-drill"] + name: String + vector_to_place_result: Vector + resource_searching_radius: Double + energy_usage: Energy + mining_speed: Double + energy_source: EnergySource + resource_categories: list[ResourceCategoryID] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + resource_searching_offset: Vector | None = None + output_fluid_box: FluidBox | None = None + input_fluid_box: FluidBox | None = None + graphics_set: MiningDrillGraphicsSet | None = None + wet_mining_graphics_set: MiningDrillGraphicsSet | None = None + perceived_performance: PerceivedPerformance | None = None + base_picture: Sprite4Way | None = None + effect_receiver: EffectReceiver | None = None + module_slots: ItemStackIndex | None = None + quality_affects_module_slots: Boolean | None = None + allowed_effects: EffectTypeLimitation | None = None + allowed_module_categories: ( + list[ModuleCategoryID] | dict[str, Any] | None + ) = None + radius_visualisation_picture: Sprite | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + base_render_layer: RenderLayer | None = None + resource_drain_rate_percent: Uint8 | None = None + shuffle_resources_to_mine: Boolean | None = None + drops_full_belt_stacks: Boolean | None = None + uses_force_mining_productivity_bonus: Boolean | None = None + quality_affects_mining_radius: Boolean | None = None + moving_sound: InterruptibleSound | None = None + drilling_sound: InterruptibleSound | None = None + drilling_sound_animation_start_frame: Uint16 | None = None + drilling_sound_animation_end_frame: Uint16 | None = None + monitor_visualization_tint: Color | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + filter_count: Uint8 | None = None + + +@dataclass +class ModulePrototype: + type: Literal["module"] + name: String + stack_size: ItemCountType + category: ModuleCategoryID + tier: Uint32 + effect: Effect6 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + requires_beacon_alt_mode: Boolean | None = None + art_style: String | None = None + beacon_tint: BeaconTint | None = None + + +@dataclass +class OffshorePumpPrototype: + type: Literal["offshore-pump"] + name: String + fluid_box: FluidBox + pumping_speed: FluidAmount + fluid_source_offset: Vector + energy_source: EnergySource + energy_usage: Energy + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + perceived_performance: PerceivedPerformance | None = None + graphics_set: OffshorePumpGraphicsSet | None = None + remove_on_tile_collision: Boolean | None = None + always_draw_fluid: Boolean | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + + +@dataclass +class ParticlePrototype: + type: Literal["optimized-particle"] + name: String + life_time: Uint16 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + pictures: AnimationVariations | None = None + shadows: AnimationVariations | None = None + draw_shadow_when_on_ground: Boolean | None = None + regular_trigger_effect: TriggerEffect | None = None + ended_in_water_trigger_effect: TriggerEffect | None = None + ended_on_ground_trigger_effect: TriggerEffect | None = None + render_layer: RenderLayer | None = None + render_layer_when_on_ground: RenderLayer | None = None + regular_trigger_effect_frequency: Uint32 | None = None + movement_modifier_when_on_ground: Float | None = None + movement_modifier: Float | None = None + vertical_acceleration: Float | None = None + mining_particle_frame_speed: Float | None = None + fade_away_duration: Uint16 | None = None + + +@dataclass +class ParticleSourcePrototype: + type: Literal["particle-source"] + name: String + time_to_live: Float + time_before_start: Float + height: Float + vertical_speed: Float + horizontal_speed: Float + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + particle: ParticleID | None = None + smoke: list[SmokeSource] | dict[str, Any] | None = None + time_to_live_deviation: Float | None = None + time_before_start_deviation: Float | None = None + height_deviation: Float | None = None + vertical_speed_deviation: Float | None = None + horizontal_speed_deviation: Float | None = None + + +@dataclass +class PipePrototype: + type: Literal["pipe"] + name: String + fluid_box: FluidBox + horizontal_window_bounding_box: BoundingBox + vertical_window_bounding_box: BoundingBox + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + pictures: PipePictures | None = None + + +@dataclass +class PipeToGroundPrototype: + type: Literal["pipe-to-ground"] + name: String + fluid_box: FluidBox + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + pictures: Sprite4Way | None = None + frozen_patch: Sprite4Way | None = None + visualization: Sprite4Way | None = None + disabled_visualization: Sprite4Way | None = None + draw_fluid_icon_override: Boolean | None = None + + +@dataclass +class PlanetPrototype: + type: Literal["planet"] + name: String + distance: Double + orientation: RealOrientation + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + gravity_pull: Double | None = None + magnitude: Double | None = None + parked_platforms_orientation: RealOrientation | None = None + label_orientation: RealOrientation | None = None + draw_orbit: Boolean | None = None + solar_power_in_space: Double | None = None + asteroid_spawn_influence: Double | None = None + fly_condition: Boolean | None = None + auto_save_on_first_trip: Boolean | None = None + procession_graphic_catalogue: ProcessionGraphicCatalogue | None = None + procession_audio_catalogue: ProcessionAudioCatalogue | None = None + platform_procession_set: ProcessionSet | None = None + planet_procession_set: ProcessionSet | None = None + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + starmap_icons: list[IconData] | dict[str, Any] | None = None + starmap_icon: FileName | None = None + starmap_icon_size: SpriteSizeType | None = None + starmap_icon_orientation: RealOrientation | None = None + asteroid_spawn_definitions: ( + list[SpaceLocationAsteroidSpawnDefinition] | dict[str, Any] | None + ) = None + map_seed_offset: Uint32 | None = None + entities_require_heating: Boolean | None = None + pollutant_type: AirbornePollutantID | None = None + persistent_ambient_sounds: PersistentWorldAmbientSoundsDefinition | None = ( + None + ) + surface_render_parameters: SurfaceRenderParameters | None = None + player_effects: Trigger | None = None + ticks_between_player_effects: MapTick | None = None + map_gen_settings: PlanetPrototypeMapGenSettings | None = None + surface_properties: dict[SurfacePropertyID, Double] | None = None + lightning_properties: LightningProperties | None = None + + +@dataclass +class PlantPrototype: + type: Literal["plant"] + name: String + growth_ticks: MapTick + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + variation_weights: list[Float] | dict[str, Any] | None = None + darkness_of_burnt_tree: Float | None = None + pictures: SpriteVariations | None = None + variations: list[TreeVariation] | dict[str, Any] | None = None + colors: list[Color] | dict[str, Any] | None = None + stateless_visualisation_variations: ( + list[ + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + ] + | dict[str, Any] + | None + ) = None + harvest_emissions: dict[AirbornePollutantID, Double] | None = None + agricultural_tower_tint: RecipeTints | None = None + + +@dataclass +class PlayerPortPrototype: + type: Literal["player-port"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + + +@dataclass +class PowerSwitchPrototype: + type: Literal["power-switch"] + name: String + overlay_start_delay: Uint8 + circuit_wire_connection_point: WireConnectionPoint + left_wire_connection_point: WireConnectionPoint + right_wire_connection_point: WireConnectionPoint + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + power_on_animation: Animation | None = None + overlay_start: Animation | None = None + overlay_loop: Animation | None = None + led_on: Sprite | None = None + led_off: Sprite | None = None + frozen_patch: Sprite | None = None + wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + + +@dataclass +class ProgrammableSpeakerPrototype: + type: Literal["programmable-speaker"] + name: String + energy_source: ElectricEnergySource | VoidEnergySource + energy_usage_per_tick: Energy + maximum_polyphony: Uint32 + instruments: list[Instrument] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + sprite: Sprite | None = None + audible_distance_modifier: Float | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + + +@dataclass +class ProjectilePrototype: + type: Literal["projectile"] + name: String + acceleration: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + animation: RotatedAnimationVariations | None = None + rotatable: Boolean | None = None + enable_drawing_with_mask: Boolean | None = None + direction_only: Boolean | None = None + hit_at_collision_position: Boolean | None = None + force_condition: ForceCondition | None = None + piercing_damage: Float | None = None + max_speed: Double | None = None + turn_speed: Float | None = None + speed_modifier: Vector | None = None + height: Double | None = None + action: Trigger | None = None + final_action: Trigger | None = None + light: LightDefinition | None = None + smoke: list[SmokeSource] | dict[str, Any] | None = None + hit_collision_mask: CollisionMaskConnector | None = None + turning_speed_increases_exponentially_with_projectile_speed: ( + Boolean | None + ) = None + shadow: RotatedAnimationVariations | None = None + + +@dataclass +class ProxyContainerPrototype: + type: Literal["proxy-container"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + picture: Sprite | None = None + draw_inventory_content: Boolean | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + + +@dataclass +class PumpPrototype: + type: Literal["pump"] + name: String + fluid_box: FluidBox + energy_source: EnergySource + energy_usage: Energy + pumping_speed: FluidAmount + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + animations: Animation4Way | None = None + fluid_wagon_connector_speed: Double | None = None + fluid_wagon_connector_alignment_tolerance: Double | None = None + fluid_wagon_connector_frame_count: Uint8 | None = None + flow_scaling: Boolean | None = None + fluid_animation: Animation4Way | None = None + glass_pictures: Sprite4Way | None = None + frozen_patch: Sprite4Way | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + fluid_wagon_connector_graphics: FluidWagonConnectorGraphics | None = None + + +@dataclass +class RadarPrototype: + type: Literal["radar"] + name: String + energy_usage: Energy + energy_per_sector: Energy + energy_per_nearby_scan: Energy + energy_source: EnergySource + max_distance_of_sector_revealed: Uint32 + max_distance_of_nearby_sector_revealed: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + pictures: RotatedSprite | None = None + frozen_patch: Sprite | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + radius_minimap_visualisation_color: Color | None = None + rotation_speed: Double | None = None + connects_to_other_radars: Boolean | None = None + reset_orientation_when_frozen: Boolean | None = None + energy_fraction_to_connect: Float | None = None + energy_fraction_to_disconnect: Float | None = None + + +@dataclass +class RailChainSignalPrototype: + type: Literal["rail-chain-signal"] + name: String + ground_picture_set: RailSignalPictureSet + elevated_picture_set: RailSignalPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + default_red_output_signal: SignalIDConnector | None = None + default_orange_output_signal: SignalIDConnector | None = None + default_green_output_signal: SignalIDConnector | None = None + default_blue_output_signal: SignalIDConnector | None = None + elevated_collision_mask: CollisionMaskConnector | None = None + elevated_selection_priority: Uint8 | None = None + + +@dataclass +class RailPlannerPrototype: + type: Literal["rail-planner"] + name: String + stack_size: ItemCountType + rails: list[EntityID] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + support: EntityID | None = None + manual_length_limit: Double | None = None + + +@dataclass +class RailRampPrototype: + type: Literal["rail-ramp"] + name: String + pictures: RailPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + walking_sound: Sound | None = None + fence_pictures: RailFenceGraphicsSet | None = None + extra_planner_penalty: Double | None = None + extra_planner_goal_penalty: Double | None = None + forced_fence_segment_count: Uint8 | None = None + ending_shifts: list[Vector] | dict[str, Any] | None = None + deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None + removes_soft_decoratives: Boolean | None = None + support_range: Float | None = None + collision_mask_allow_on_deep_oil_ocean: CollisionMaskConnector | None = None + + +@dataclass +class RailRemnantsPrototype: + type: Literal["rail-remnants"] + name: String + pictures: RailPictureSet + related_rail: EntityID + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + dying_speed: Float | None = None + splash_speed: Float | None = None + time_before_shading_off: Uint32 | None = None + time_before_removed: Uint32 | None = None + expires: Boolean | None = None + remove_on_entity_placement: Boolean | None = None + remove_on_tile_placement: Boolean | None = None + auto_setup_collision_box: Boolean | None = None + final_render_layer: RenderLayer | None = None + ground_patch_render_layer: RenderLayer | None = None + animation_render_layer: RenderLayer | None = None + splash_render_layer: RenderLayer | None = None + animation_overlay_render_layer: RenderLayer | None = None + animation_overlay_final_render_layer: RenderLayer | None = None + shuffle_directions_at_frame: Uint8 | None = None + use_tile_color_for_ground_patch_tint: Boolean | None = None + use_decay_layer: Boolean | None = None + underwater_layer_offset: Int8 | None = None + ground_patch_fade_in_delay: Float | None = None + ground_patch_fade_in_speed: Float | None = None + ground_patch_fade_out_start: Float | None = None + decay_frame_transition_duration: Float | None = None + animation: RotatedAnimationVariations | None = None + animation_overlay: RotatedAnimationVariations | None = None + decay_animation: RotatedAnimationVariations | None = None + splash: AnimationVariations | None = None + ground_patch: AnimationVariations | None = None + ground_patch_higher: AnimationVariations | None = None + ground_patch_decay: AnimationVariations | None = None + underwater_patch: RotatedSprite | None = None + ground_patch_fade_out_duration: Float | None = None + direction_shuffle: ( + list[list[Uint16] | dict[str, Any]] | dict[str, Any] | None + ) = None + secondary_collision_box: BoundingBox | None = None + + +@dataclass +class RailSignalPrototype: + type: Literal["rail-signal"] + name: String + ground_picture_set: RailSignalPictureSet + elevated_picture_set: RailSignalPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + default_red_output_signal: SignalIDConnector | None = None + default_orange_output_signal: SignalIDConnector | None = None + default_green_output_signal: SignalIDConnector | None = None + default_blue_output_signal: SignalIDConnector | None = None + elevated_collision_mask: CollisionMaskConnector | None = None + elevated_selection_priority: Uint8 | None = None + + +@dataclass +class RailSupportPrototype: + type: Literal["rail-support"] + name: String + graphics_set: GraphicsSet1 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + support_range: Float | None = None + not_buildable_if_no_rails: Boolean | None = None + snap_to_spots_distance: Float | None = None + collision_mask_allow_on_deep_oil_ocean: CollisionMaskConnector | None = None + elevated_selection_boxes: list[BoundingBox] | dict[str, Any] | None = None + + +@dataclass +class ReactorPrototype: + type: Literal["reactor"] + name: String + heat_buffer: HeatBuffer + energy_source: EnergySource + consumption: Energy + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + working_light_picture: Animation | None = None + heating_radius: Double | None = None + connection_patches_connected: SpriteVariations | None = None + connection_patches_disconnected: SpriteVariations | None = None + heat_connection_patches_connected: SpriteVariations | None = None + heat_connection_patches_disconnected: SpriteVariations | None = None + lower_layer_picture: Sprite | None = None + heat_lower_layer_picture: Sprite | None = None + picture: Sprite | None = None + light: LightDefinition | None = None + meltdown_action: Trigger | None = None + neighbour_bonus: Double | None = None + scale_energy_usage: Boolean | None = None + use_fuel_glow_color: Boolean | None = None + default_fuel_glow_color: Color | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + default_temperature_signal: SignalIDConnector | None = None + + +@dataclass +class RepairToolPrototype: + type: Literal["repair-tool"] + name: String + stack_size: ItemCountType + speed: Float + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + durability: Double | None = None + durability_description_key: String | None = None + durability_description_value: String | None = None + infinite: Boolean | None = None + + +@dataclass +class ResourceEntityPrototype: + type: Literal["resource"] + name: String + stage_counts: list[Uint32] | dict[str, Any] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + stages: AnimationVariations | None = None + infinite: Boolean | None = None + highlight: Boolean | None = None + randomize_visual_position: Boolean | None = None + map_grid: Boolean | None = None + draw_stateless_visualisation_under_building: Boolean | None = None + minimum: Uint32 | None = None + normal: Uint32 | None = None + infinite_depletion_amount: Uint32 | None = None + resource_patch_search_radius: Uint32 | None = None + category: ResourceCategoryID | None = None + walking_sound: Sound | None = None + driving_sound: InterruptibleSound | None = None + stages_effect: AnimationVariations | None = None + effect_animation_period: Float | None = None + effect_animation_period_deviation: Float | None = None + effect_darkness_multiplier: Float | None = None + min_effect_alpha: Float | None = None + max_effect_alpha: Float | None = None + tree_removal_probability: Double | None = None + cliff_removal_probability: Double | None = None + tree_removal_max_distance: Double | None = None + mining_visualisation_tint: Color | None = None + + +@dataclass +class RoboportPrototype: + type: Literal["roboport"] + name: String + energy_source: ElectricEnergySource | VoidEnergySource + energy_usage: Energy + recharge_minimum: Energy + robot_slots_count: ItemStackIndex + material_slots_count: ItemStackIndex + request_to_open_door_timeout: Uint32 + spawn_and_station_height: Float + charge_approach_distance: Float + logistics_radius: Float + construction_radius: Float + charging_energy: Energy + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + base: Sprite | None = None + base_patch: Sprite | None = None + frozen_patch: Sprite | None = None + base_animation: Animation | None = None + door_animation_up: Animation | None = None + door_animation_down: Animation | None = None + radar_range: Uint32 | None = None + radar_visualisation_color: Color | None = None + recharging_animation: Animation | None = None + open_door_trigger_effect: TriggerEffect | None = None + close_door_trigger_effect: TriggerEffect | None = None + default_available_logistic_output_signal: SignalIDConnector | None = None + default_total_logistic_output_signal: SignalIDConnector | None = None + default_available_construction_output_signal: SignalIDConnector | None = ( + None + ) + default_total_construction_output_signal: SignalIDConnector | None = None + default_roboport_count_output_signal: SignalIDConnector | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + render_recharge_icon: Boolean | None = None + max_logistic_slots: LogisticFilterIndex | None = None + spawn_and_station_shadow_height_offset: Float | None = None + stationing_render_layer_swap_height: Float | None = None + draw_logistic_radius_visualization: Boolean | None = None + draw_construction_radius_visualization: Boolean | None = None + recharging_light: LightDefinition | None = None + charging_station_count: Uint32 | None = None + charging_station_count_affected_by_quality: Boolean | None = None + charging_distance: Float | None = None + charging_station_shift: Vector | None = None + charging_threshold_distance: Float | None = None + robot_vertical_acceleration: Float | None = None + stationing_offset: Vector | None = None + robot_limit: ItemCountType | None = None + robots_shrink_when_entering_and_exiting: Boolean | None = None + charging_offsets: list[Vector] | dict[str, Any] | None = None + logistics_connection_distance: Float | None = None + + +@dataclass +class RocketSiloPrototype: + type: Literal["rocket-silo"] + name: String + energy_usage: Energy + crafting_speed: Double + crafting_categories: list[RecipeCategoryID] | dict[str, Any] + energy_source: EnergySource + active_energy_usage: Energy + lamp_energy_usage: Energy + rocket_entity: EntityID + hole_clipping_box: BoundingBox + door_back_open_offset: Vector + door_front_open_offset: Vector + silo_fade_out_start_distance: Double + silo_fade_out_end_distance: Double + times_to_blink: Uint8 + light_blinking_speed: Double + door_opening_speed: Double + rocket_parts_required: Uint32 + rocket_quick_relaunch_start_offset: Double + cargo_station_parameters: CargoStationParameters + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + quality_affects_energy_usage: Boolean | None = None + fluid_boxes: list[FluidBox] | dict[str, Any] | None = None + effect_receiver: EffectReceiver | None = None + module_slots: ItemStackIndex | None = None + quality_affects_module_slots: Boolean | None = None + allowed_effects: EffectTypeLimitation | None = None + allowed_module_categories: ( + list[ModuleCategoryID] | dict[str, Any] | None + ) = None + show_recipe_icon: Boolean | None = None + return_ingredients_on_change: Boolean | None = None + draw_entity_info_icon_background: Boolean | None = None + match_animation_speed_to_activity: Boolean | None = None + show_recipe_icon_on_map: Boolean | None = None + fast_transfer_modules_into_module_slots_only: Boolean | None = None + ignore_output_full: Boolean | None = None + graphics_set: CraftingMachineGraphicsSet | None = None + graphics_set_flipped: CraftingMachineGraphicsSet | None = None + perceived_performance: PerceivedPerformance | None = None + production_health_effect: ProductionHealthEffect | None = None + trash_inventory_size: ItemStackIndex | None = None + vector_to_place_result: Vector | None = None + forced_symmetry: Mirroring | None = None + crafting_speed_quality_multiplier: dict[QualityID, Double] | None = None + module_slots_quality_bonus: dict[QualityID, ItemStackIndex] | None = None + energy_usage_quality_multiplier: dict[QualityID, Double] | None = None + fixed_recipe: RecipeID | None = None + fixed_quality: QualityID | None = None + gui_title_key: String | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + default_recipe_finished_signal: SignalIDConnector | None = None + default_working_signal: SignalIDConnector | None = None + enable_logistic_control_behavior: Boolean | None = None + ingredient_count: Uint16 | None = None + max_item_product_count: Uint16 | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + circuit_connector_flipped: list[CircuitConnectorDefinition] | None = None + fluid_boxes_off_when_no_fluid_recipe: Boolean | None = None + disabled_when_recipe_not_researched: Boolean | None = None + arm_02_right_animation: Animation | None = None + arm_01_back_animation: Animation | None = None + arm_03_front_animation: Animation | None = None + shadow_sprite: Sprite | None = None + hole_sprite: Sprite | None = None + hole_light_sprite: Sprite | None = None + rocket_shadow_overlay_sprite: Sprite | None = None + rocket_glow_overlay_sprite: Sprite | None = None + door_back_sprite: Sprite | None = None + door_front_sprite: Sprite | None = None + base_day_sprite: Sprite | None = None + base_front_sprite: Sprite | None = None + red_lights_back_sprites: Sprite | None = None + red_lights_front_sprites: Sprite | None = None + base_frozen: Sprite | None = None + base_front_frozen: Sprite | None = None + hole_frozen: Sprite | None = None + door_back_frozen: Sprite | None = None + door_front_frozen: Sprite | None = None + satellite_animation: Animation | None = None + satellite_shadow_animation: Animation | None = None + base_night_sprite: Sprite | None = None + base_light: LightDefinition | None = None + base_engine_light: LightDefinition | None = None + rocket_rising_delay: Uint8 | None = None + launch_wait_time: Uint8 | None = None + render_not_in_network_icon: Boolean | None = None + rocket_parts_storage_cap: Uint32 | None = None + alarm_trigger: TriggerEffect | None = None + clamps_on_trigger: TriggerEffect | None = None + clamps_off_trigger: TriggerEffect | None = None + doors_trigger: TriggerEffect | None = None + raise_rocket_trigger: TriggerEffect | None = None + alarm_sound: Sound | None = None + quick_alarm_sound: Sound | None = None + clamps_on_sound: Sound | None = None + clamps_off_sound: Sound | None = None + doors_sound: Sound | None = None + raise_rocket_sound: Sound | None = None + to_be_inserted_to_rocket_inventory_size: ItemStackIndex | None = None + logistic_trash_inventory_size: ItemStackIndex | None = None + launch_to_space_platforms: Boolean | None = None + can_launch_without_landing_pads: Boolean | None = None + + +@dataclass +class RocketSiloRocketPrototype: + type: Literal["rocket-silo-rocket"] + name: String + cargo_pod_entity: EntityID + rocket_rise_offset: Vector + rocket_flame_left_rotation: Float + rocket_flame_right_rotation: Float + rocket_render_layer_switch_distance: Double + full_render_layer_switch_distance: Double + rocket_launch_offset: Vector + effects_fade_in_start_distance: Double + effects_fade_in_end_distance: Double + shadow_fade_out_start_ratio: Double + shadow_fade_out_end_ratio: Double + rocket_visible_distance_from_center: Float + rising_speed: Double + engine_starting_speed: Double + flying_speed: Double + flying_acceleration: Double + inventory_size: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + shadow_slave_entity: EntityID | None = None + dying_explosion: EntityID | None = None + glow_light: LightDefinition | None = None + rocket_sprite: Sprite | None = None + rocket_shadow_sprite: Sprite | None = None + rocket_glare_overlay_sprite: Sprite | None = None + rocket_smoke_bottom1_animation: Animation | None = None + rocket_smoke_bottom2_animation: Animation | None = None + rocket_smoke_top1_animation: Animation | None = None + rocket_smoke_top2_animation: Animation | None = None + rocket_smoke_top3_animation: Animation | None = None + rocket_flame_animation: Animation | None = None + rocket_flame_left_animation: Animation | None = None + rocket_flame_right_animation: Animation | None = None + rocket_initial_offset: Vector | None = None + cargo_attachment_offset: Vector | None = None + rocket_above_wires_slice_offset_from_center: Float | None = None + rocket_air_object_slice_offset_from_center: Float | None = None + rocket_fog_mask: FogMaskShapeDefinition | None = None + flying_trigger: TriggerEffect | None = None + flying_sound: Sound | None = None + + +@dataclass +class RocketSiloRocketShadowPrototype: + type: Literal["rocket-silo-rocket-shadow"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class SegmentPrototype: + type: Literal["segment"] + name: String + animation: RotatedAnimation + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + dying_sound: Sound | None = None + dying_sound_volume_modifier: Float | None = None + render_layer: RenderLayer | None = None + forward_overlap: Uint8 | None = None + backward_overlap: Uint8 | None = None + forward_padding: Double | None = None + backward_padding: Double | None = None + update_effects: list[TriggerEffectWithCooldown] | dict[str, Any] | None = ( + None + ) + update_effects_while_enraged: ( + list[TriggerEffectWithCooldown] | dict[str, Any] | None + ) = None + + +@dataclass +class SegmentedUnitPrototype: + type: Literal["segmented-unit"] + name: String + animation: RotatedAnimation + vision_distance: Double + territory_radius: Uint32 + enraged_duration: MapTick + patrolling_speed: Double + investigating_speed: Double + attacking_speed: Double + enraged_speed: Double + acceleration_rate: Double + turn_radius: Double + segment_engine: SegmentEngineSpecification + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + dying_sound: Sound | None = None + dying_sound_volume_modifier: Float | None = None + render_layer: RenderLayer | None = None + forward_overlap: Uint8 | None = None + backward_overlap: Uint8 | None = None + forward_padding: Double | None = None + backward_padding: Double | None = None + update_effects: list[TriggerEffectWithCooldown] | dict[str, Any] | None = ( + None + ) + update_effects_while_enraged: ( + list[TriggerEffectWithCooldown] | dict[str, Any] | None + ) = None + attack_parameters: AttackParameters | None = None + revenge_attack_parameters: AttackParameters | None = None + patrolling_turn_radius: Double | None = None + turn_smoothing: Double | None = None + ticks_per_scan: Uint32 | None = None + roar: Sound | None = None + roar_probability: Float | None = None + hurt_roar: Sound | None = None + hurt_thresholds: list[Float] | dict[str, Any] | None = None + + +@dataclass +class SelectionToolPrototype: + type: Literal["selection-tool"] + name: String + stack_size: ItemCountType + select: SelectionModeData + alt_select: SelectionModeData + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + default_label_color: Color | None = None + draw_label_for_cursor_render: Boolean | None = None + super_forced_select: SelectionModeData | None = None + reverse_select: SelectionModeData | None = None + alt_reverse_select: SelectionModeData | None = None + always_include_tiles: Boolean | None = None + mouse_cursor: MouseCursorID | None = None + skip_fog_of_war: Boolean | None = None + + +@dataclass +class SelectorCombinatorPrototype: + type: Literal["selector-combinator"] + name: String + energy_source: ElectricEnergySource | VoidEnergySource + active_energy_usage: Energy + input_connection_bounding_box: BoundingBox + output_connection_bounding_box: BoundingBox + activity_led_light_offsets: list[Vector] + screen_light_offsets: list[Vector] + input_connection_points: list[WireConnectionPoint] + output_connection_points: list[WireConnectionPoint] + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + sprites: Sprite4Way | None = None + frozen_patch: Sprite4Way | None = None + activity_led_sprites: Sprite4Way | None = None + activity_led_light: LightDefinition | None = None + screen_light: LightDefinition | None = None + activity_led_hold_time: Uint8 | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + max_symbol_sprites: Sprite4Way | None = None + min_symbol_sprites: Sprite4Way | None = None + count_symbol_sprites: Sprite4Way | None = None + random_symbol_sprites: Sprite4Way | None = None + stack_size_sprites: Sprite4Way | None = None + rocket_capacity_sprites: Sprite4Way | None = None + quality_symbol_sprites: Sprite4Way | None = None + + +@dataclass +class SimpleEntityPrototype: + type: Literal["simple-entity"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + count_as_rock_for_filtered_deconstruction: Boolean | None = None + render_layer: RenderLayer | None = None + secondary_draw_order: Int8 | None = None + random_animation_offset: Boolean | None = None + random_variation_on_create: Boolean | None = None + pictures: SpriteVariations | None = None + picture: Sprite4Way | None = None + animations: AnimationVariations | None = None + lower_render_layer: RenderLayer | None = None + lower_pictures: SpriteVariations | None = None + stateless_visualisation_variations: ( + list[ + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + ] + | dict[str, Any] + | None + ) = None + + +@dataclass +class SimpleEntityWithForcePrototype: + type: Literal["simple-entity-with-force"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + render_layer: RenderLayer | None = None + secondary_draw_order: Int8 | None = None + random_animation_offset: Boolean | None = None + random_variation_on_create: Boolean | None = None + pictures: SpriteVariations | None = None + picture: Sprite4Way | None = None + animations: AnimationVariations | None = None + lower_render_layer: RenderLayer | None = None + lower_pictures: SpriteVariations | None = None + stateless_visualisation_variations: ( + list[ + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + ] + | dict[str, Any] + | None + ) = None + force_visibility: ForceCondition | None = None + + +@dataclass +class SimpleEntityWithOwnerPrototype: + type: Literal["simple-entity-with-owner"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + render_layer: RenderLayer | None = None + secondary_draw_order: Int8 | None = None + random_animation_offset: Boolean | None = None + random_variation_on_create: Boolean | None = None + pictures: SpriteVariations | None = None + picture: Sprite4Way | None = None + animations: AnimationVariations | None = None + lower_render_layer: RenderLayer | None = None + lower_pictures: SpriteVariations | None = None + stateless_visualisation_variations: ( + list[ + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + ] + | dict[str, Any] + | None + ) = None + force_visibility: ForceCondition | None = None + + +@dataclass +class SmokeWithTriggerPrototype: + type: Literal["smoke-with-trigger"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + animation: Animation | None = None + cyclic: Boolean | None = None + duration: Uint32 | None = None + spread_duration: Uint32 | None = None + fade_away_duration: Uint32 | None = None + fade_in_duration: Uint32 | None = None + start_scale: Double | None = None + end_scale: Double | None = None + color: Color | None = None + affected_by_wind: Boolean | None = None + show_when_smoke_off: Boolean | None = None + render_layer: RenderLayer | None = None + movement_slow_down_factor: Double | None = None + glow_fade_away_duration: Uint32 | None = None + glow_animation: Animation | None = None + action: Trigger | None = None + action_cooldown: Uint32 | None = None + particle_count: Uint8 | None = None + particle_distance_scale_factor: Float | None = None + spread_duration_variation: Uint32 | None = None + particle_duration_variation: Uint32 | None = None + particle_spread: Vector | None = None + particle_scale_factor: Vector | None = None + wave_distance: Vector | None = None + wave_speed: Vector | None = None + attach_to_target: Boolean | None = None + fade_when_attachment_is_destroyed: Boolean | None = None + + +@dataclass +class SolarPanelPrototype: + type: Literal["solar-panel"] + name: String + energy_source: ElectricEnergySource + production: Energy + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + picture: SpriteVariations | None = None + overlay: SpriteVariations | None = None + performance_at_day: Double | None = None + performance_at_night: Double | None = None + solar_coefficient_property: SurfacePropertyID | None = None + + +@dataclass +class SpacePlatformHubPrototype: + type: Literal["space-platform-hub"] + name: String + inventory_size: ItemStackIndex + dump_container: EntityID + cargo_station_parameters: CargoStationParameters + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[256] = 256 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + graphics_set: CargoBayConnectableGraphicsSet | None = None + persistent_ambient_sounds: PersistentWorldAmbientSoundsDefinition | None = ( + None + ) + surface_render_parameters: SurfaceRenderParameters | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + default_speed_signal: SignalIDConnector | None = None + default_damage_taken_signal: SignalIDConnector | None = None + platform_repair_speed_modifier: Float | None = None + weight: Weight | None = None + + +@dataclass +class SpacePlatformStarterPackPrototype: + type: Literal["space-platform-starter-pack"] + name: String + stack_size: ItemCountType + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + trigger: Trigger | None = None + surface: SurfaceID | None = None + create_electric_network: Boolean | None = None + tiles: list[SpacePlatformTileDefinition] | dict[str, Any] | None = None + initial_items: list[ItemProductPrototype] | dict[str, Any] | None = None + + +@dataclass +class SpeechBubblePrototype: + type: Literal["speech-bubble"] + name: String + style: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + wrapper_flow_style: String | None = None + y_offset: Double | None = None + fade_in_out_ticks: Uint32 | None = None + + +@dataclass +class SpiderLegPrototype: + type: Literal["spider-leg"] + name: String + knee_height: Double + knee_distance_factor: Double + initial_movement_speed: Double + movement_acceleration: Double + target_position_randomisation_distance: Double + minimal_step_size: Double + base_position_selection_distance: Double + movement_based_position_selection_distance: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + stretch_force_scalar: Double | None = None + hip_flexibility: Double | None = None + ankle_height: Double | None = None + graphics_set: GraphicsSet2 | None = None + walking_sound_volume_modifier: Float | None = None + walking_sound_speed_modifier: Float | None = None + upper_leg_dying_trigger_effects: ( + list[SpiderLegTriggerEffect] | dict[str, Any] | None + ) = None + lower_leg_dying_trigger_effects: ( + list[SpiderLegTriggerEffect] | dict[str, Any] | None + ) = None + + +@dataclass +class SpiderUnitPrototype: + type: Literal["spider-unit"] + name: String + spider_engine: SpiderEngineSpecification + height: Float + attack_parameters: AttackParameters + vision_distance: Double + distraction_cooldown: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + torso_bob_speed: Float | None = None + torso_rotation_speed: Float | None = None + graphics_set: SpiderTorsoGraphicsSet | None = None + absorptions_to_join_attack: dict[AirbornePollutantID, Float] | None = None + spawning_time_modifier: Double | None = None + radar_range: Uint32 | None = None + dying_sound: Sound | None = None + warcry: Sound | None = None + min_pursue_time: Uint32 | None = None + max_pursue_distance: Double | None = None + ai_settings: UnitAISettings | None = None + + +@dataclass +class SpiderVehiclePrototype: + type: Literal["spider-vehicle"] + name: String + weight: Double + energy_per_hit_point: Double + energy_source: BurnerEnergySource | VoidEnergySource + inventory_size: ItemStackIndex + spider_engine: SpiderEngineSpecification + height: Float + movement_energy_consumption: Energy + automatic_weapon_cycling: Boolean + chain_shooting_cooldown_modifier: Float + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + braking_power: Energy | Double | None = None + braking_force: Energy | Double | None = None + friction: Double | None = None + friction_force: Double | None = None + terrain_friction_modifier: Float | None = None + impact_speed_to_volume_ratio: Double | None = None + stop_trigger_speed: Double | None = None + crash_trigger: TriggerEffect | None = None + stop_trigger: TriggerEffect | None = None + equipment_grid: EquipmentGridID | None = None + minimap_representation: Sprite | None = None + selected_minimap_representation: Sprite | None = None + allow_passengers: Boolean | None = None + deliver_category: String | None = None + chunk_exploration_radius: Uint32 | None = None + allow_remote_driving: Boolean | None = None + graphics_set: SpiderVehicleGraphicsSet | None = None + torso_rotation_speed: Float | None = None + torso_bob_speed: Float | None = None + trash_inventory_size: ItemStackIndex | None = None + guns: list[ItemID] | dict[str, Any] | None = None + + +@dataclass +class SpidertronRemotePrototype: + type: Literal["spidertron-remote"] + name: String + stack_size: Literal[1] + select: SelectionModeData + alt_select: SelectionModeData + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + default_label_color: Color | None = None + draw_label_for_cursor_render: Boolean | None = None + super_forced_select: SelectionModeData | None = None + reverse_select: SelectionModeData | None = None + alt_reverse_select: SelectionModeData | None = None + always_include_tiles: Boolean | None = None + mouse_cursor: MouseCursorID | None = None + skip_fog_of_war: Boolean | None = None + icon_color_indicator_mask: FileName | None = None + + +@dataclass +class SplitterPrototype: + type: Literal["splitter"] + name: String + speed: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + belt_animation_set: TransportBeltAnimationSet | None = None + animation_speed_coefficient: Double | None = None + structure: Animation4Way | None = None + structure_patch: Animation4Way | None = None + frozen_patch: Sprite4Way | None = None + structure_animation_speed_coefficient: Double | None = None + structure_animation_movement_cooldown: Uint32 | None = None + related_transport_belt: EntityID | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + default_input_left_condition: CircuitConditionConnector | None = None + default_input_right_condition: CircuitConditionConnector | None = None + default_output_left_condition: CircuitConditionConnector | None = None + default_output_right_condition: CircuitConditionConnector | None = None + + +@dataclass +class StickerPrototype: + type: Literal["sticker"] + name: String + duration_in_ticks: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Literal[True] = True + hidden_in_factoriopedia: Literal[True] = True + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + animation: Animation | None = None + render_layer: RenderLayer | None = None + damage_interval: Uint32 | None = None + spread_fire_entity: EntityID | None = None + fire_spread_cooldown: Uint8 | None = None + fire_spread_radius: Float | None = None + stickers_per_square_meter: Float | None = None + force_visibility: ForceCondition | None = None + single_particle: Boolean | None = None + use_damage_substitute: Boolean | None = None + damage_per_tick: DamageParameters | None = None + target_movement_modifier: Float | None = None + target_movement_modifier_from: Float | None = None + target_movement_modifier_to: Float | None = None + target_movement_max: Float | None = None + target_movement_max_from: Float | None = None + target_movement_max_to: Float | None = None + ground_target: Boolean | None = None + vehicle_speed_modifier: Float | None = None + vehicle_speed_modifier_from: Float | None = None + vehicle_speed_modifier_to: Float | None = None + vehicle_speed_max: Float | None = None + vehicle_speed_max_from: Float | None = None + vehicle_speed_max_to: Float | None = None + vehicle_friction_modifier: Float | None = None + vehicle_friction_modifier_from: Float | None = None + vehicle_friction_modifier_to: Float | None = None + selection_box_type: CursorBoxType | None = None + update_effects: list[TriggerEffectWithCooldown] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class StorageTankPrototype: + type: Literal["storage-tank"] + name: String + fluid_box: FluidBox + window_bounding_box: BoundingBox + flow_length_in_ticks: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + pictures: Pictures1 | None = None + two_direction_only: Boolean | None = None + show_fluid_icon: Boolean | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + + +@dataclass +class StraightRailPrototype: + type: Literal["straight-rail"] + name: String + pictures: RailPictureSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + walking_sound: Sound | None = None + fence_pictures: RailFenceGraphicsSet | None = None + extra_planner_penalty: Double | None = None + extra_planner_goal_penalty: Double | None = None + forced_fence_segment_count: Uint8 | None = None + ending_shifts: list[Vector] | dict[str, Any] | None = None + deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None + removes_soft_decoratives: Boolean | None = None + + +@dataclass +class TemporaryContainerPrototype: + type: Literal["temporary-container"] + name: String + inventory_size: ItemStackIndex + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + quality_affects_inventory_size: Boolean | None = None + picture: Sprite | None = None + inventory_type: InventoryType | None = None + inventory_properties: InventoryWithCustomStackSizeSpecification | None = ( + None + ) + inventory_weight_limit: Weight | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + default_status: EntityStatus | None = None + destroy_on_empty: Boolean | None = None + time_to_live: Uint32 | None = None + alert_after_time: Uint32 | None = None + + +@dataclass +class ThrusterPrototype: + type: Literal["thruster"] + name: String + min_performance: ThrusterPerformancePoint + max_performance: ThrusterPerformancePoint + fuel_fluid_box: FluidBox + oxidizer_fluid_box: FluidBox + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + graphics_set: ThrusterGraphicsSet | None = None + plumes: PlumesSpecification | None = None + + +@dataclass +class TileGhostPrototype: + type: Literal["tile-ghost"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class TilePrototype: + type: Literal["tile"] + name: String + collision_mask: CollisionMaskConnector + layer: Uint8 + variants: TileTransitionsVariants + map_color: Color + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + build_animations: Animation4Way | None = None + build_animations_background: Animation4Way | None = None + built_animation_frame: Uint32 | None = None + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + lowland_fog: Boolean | None = None + transition_overlay_layer_offset: Int8 | None = None + sprite_usage_surface: SpriteUsageSurfaceHint | None = None + layer_group: TileRenderLayer | None = None + transition_merges_with_tile: TileID | None = None + effect_color: Color | None = None + tint: Color | None = None + particle_tints: TileBasedParticleTints | None = None + walking_sound: Sound | None = None + landing_steps_sound: Sound | None = None + driving_sound: InterruptibleSound | None = None + build_sound: Sound | BuildSound | None = None + mined_sound: Sound | None = None + walking_speed_modifier: Double | None = None + vehicle_friction_modifier: Double | None = None + decorative_removal_probability: Float | None = None + allowed_neighbors: list[TileID] | dict[str, Any] | None = None + needs_correction: Boolean | None = None + minable: MinableProperties | None = None + fluid: FluidID | None = None + next_direction: TileID | None = None + can_be_part_of_blueprint: Boolean | None = None + is_foundation: Boolean | None = None + destroys_dropped_items: Boolean | None = None + allows_being_covered: Boolean | None = None + searchable: Boolean | None = None + max_health: Float | None = None + weight: Weight | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + absorptions_per_second: dict[AirbornePollutantID, Double] | None = None + default_cover_tile: TileID | None = None + frozen_variant: TileID | None = None + thawed_variant: TileID | None = None + effect: TileEffectDefinitionID | None = None + trigger_effect: TriggerEffect | None = None + default_destroyed_dropped_item_trigger: Trigger | None = None + scorch_mark_color: Color | None = None + check_collision_with_entities: Boolean | None = None + effect_color_secondary: Color | None = None + effect_is_opaque: Boolean | None = None + transitions: list[TileTransitionsToTiles] | dict[str, Any] | None = None + transitions_between_transitions: ( + list[TileTransitionsBetweenTransitions] | dict[str, Any] | None + ) = None + autoplace: AutoplaceSpecification | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + bound_decoratives: ( + DecorativeID | list[DecorativeID] | dict[str, Any] | None + ) = None + ambient_sounds_group: TileID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + + +@dataclass +class TipsAndTricksItem: + type: Literal["tips-and-tricks-item"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + image: FileName | None = None + simulation: SimulationDefinition | None = None + tag: String | None = None + category: String | None = None + indent: Uint8 | None = None + is_title: Boolean | None = None + trigger: TipTrigger | None = None + skip_trigger: TipTrigger | None = None + tutorial: String | None = None + starting_status: TipStatus | None = None + dependencies: list[String] | dict[str, Any] | None = None + player_input_method_filter: PlayerInputMethodFilter | None = None + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + + +@dataclass +class ToolPrototype: + type: Literal["tool"] + name: String + stack_size: ItemCountType + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + durability: Double | None = None + durability_description_key: String | None = None + durability_description_value: String | None = None + infinite: Boolean | None = None + + +@dataclass +class TrainStopPrototype: + type: Literal["train-stop"] + name: String + animation_ticks_per_frame: Uint32 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Literal[2] = 2 + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + rail_overlay_animations: Animation4Way | None = None + animations: Animation4Way | None = None + top_animations: Animation4Way | None = None + default_train_stopped_signal: SignalIDConnector | None = None + default_trains_count_signal: SignalIDConnector | None = None + default_trains_limit_signal: SignalIDConnector | None = None + default_priority_signal: SignalIDConnector | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + color: Color | None = None + chart_name: Boolean | None = None + light1: TrainStopLight | None = None + light2: TrainStopLight | None = None + drawing_boxes: DrawingBoxes | None = None + circuit_connector: list[CircuitConnectorDefinition] | None = None + + +@dataclass +class TransportBeltPrototype: + type: Literal["transport-belt"] + name: String + speed: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + belt_animation_set: TransportBeltAnimationSetWithCorners | None = None + animation_speed_coefficient: Double | None = None + connector_frame_sprites: TransportBeltConnectorFrame | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: ( + list[CircuitConnectorDefinition] | dict[str, Any] | None + ) = None + related_underground_belt: EntityID | None = None + + +@dataclass +class TreePrototype: + type: Literal["tree"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + variation_weights: list[Float] | dict[str, Any] | None = None + darkness_of_burnt_tree: Float | None = None + pictures: SpriteVariations | None = None + variations: list[TreeVariation] | dict[str, Any] | None = None + colors: list[Color] | dict[str, Any] | None = None + stateless_visualisation_variations: ( + list[ + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + ] + | dict[str, Any] + | None + ) = None + + +@dataclass +class TurretPrototype: + type: Literal["turret"] + name: String + attack_parameters: AttackParameters + folded_animation: RotatedAnimation8Way + call_for_help_radius: Double + graphics_set: TurretGraphicsSet + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + attack_target_mask: TriggerTargetMask | None = None + ignore_target_mask: TriggerTargetMask | None = None + shoot_in_prepare_state: Boolean | None = None + start_attacking_only_when_can_shoot: Boolean | None = None + turret_base_has_direction: Boolean | None = None + random_animation_offset: Boolean | None = None + attack_from_start_frame: Boolean | None = None + allow_turning_when_starting_attack: Boolean | None = None + gun_animation_secondary_draw_order: Uint8 | None = None + gun_animation_render_layer: RenderLayer | None = None + preparing_animation: RotatedAnimation8Way | None = None + prepared_animation: RotatedAnimation8Way | None = None + prepared_alternative_animation: RotatedAnimation8Way | None = None + starting_attack_animation: RotatedAnimation8Way | None = None + attacking_animation: RotatedAnimation8Way | None = None + energy_glow_animation: RotatedAnimation8Way | None = None + resource_indicator_animation: RotatedAnimation8Way | None = None + ending_attack_animation: RotatedAnimation8Way | None = None + folding_animation: RotatedAnimation8Way | None = None + integration: Sprite | None = None + special_effect: TurretSpecialEffect | None = None + glow_light_intensity: Float | None = None + energy_glow_animation_flicker_strength: Float | None = None + starting_attack_sound: Sound | None = None + dying_sound: Sound | None = None + preparing_sound: Sound | None = None + folding_sound: Sound | None = None + prepared_sound: Sound | None = None + prepared_alternative_sound: Sound | None = None + rotating_sound: InterruptibleSound | None = None + default_speed: Float | None = None + default_speed_secondary: Float | None = None + default_speed_when_killed: Float | None = None + default_starting_progress_when_killed: Float | None = None + rotation_speed: Float | None = None + rotation_speed_secondary: Float | None = None + rotation_speed_when_killed: Float | None = None + rotation_starting_progress_when_killed: Float | None = None + preparing_speed: Float | None = None + preparing_speed_secondary: Float | None = None + preparing_speed_when_killed: Float | None = None + preparing_starting_progress_when_killed: Float | None = None + folded_speed: Float | None = None + folded_speed_secondary: Float | None = None + folded_speed_when_killed: Float | None = None + folded_starting_progress_when_killed: Float | None = None + prepared_speed: Float | None = None + prepared_speed_secondary: Float | None = None + prepared_speed_when_killed: Float | None = None + prepared_starting_progress_when_killed: Float | None = None + prepared_alternative_speed: Float | None = None + prepared_alternative_speed_secondary: Float | None = None + prepared_alternative_speed_when_killed: Float | None = None + prepared_alternative_starting_progress_when_killed: Float | None = None + prepared_alternative_chance: Float | None = None + starting_attack_speed: Float | None = None + starting_attack_speed_secondary: Float | None = None + starting_attack_speed_when_killed: Float | None = None + starting_attack_starting_progress_when_killed: Float | None = None + attacking_speed: Float | None = None + ending_attack_speed: Float | None = None + ending_attack_speed_secondary: Float | None = None + ending_attack_speed_when_killed: Float | None = None + ending_attack_starting_progress_when_killed: Float | None = None + folding_speed: Float | None = None + folding_speed_secondary: Float | None = None + folding_speed_when_killed: Float | None = None + folding_starting_progress_when_killed: Float | None = None + prepare_range: Double | None = None + alert_when_attacking: Boolean | None = None + spawn_decorations_on_expansion: Boolean | None = None + folded_animation_is_stateless: Boolean | None = None + unfolds_before_dying: Boolean | None = None + spawn_decoration: ( + list[CreateDecorativesTriggerEffectItem] | dict[str, Any] | None + ) = None + folded_state_corpse: EntityID | list[EntityID] | dict[str, Any] | None = ( + None + ) + can_retarget_while_starting_attack: Boolean | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: ( + list[CircuitConnectorDefinition] | dict[str, Any] | None + ) = None + + +@dataclass +class UndergroundBeltPrototype: + type: Literal["underground-belt"] + name: String + speed: Double + max_distance: Uint8 + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + belt_animation_set: TransportBeltAnimationSet | None = None + animation_speed_coefficient: Double | None = None + structure: Structure1 | None = None + underground_sprite: Sprite | None = None + underground_remove_belts_sprite: Sprite | None = None + max_distance_underground_remove_belts_sprite: Sprite | None = None + underground_collision_mask: CollisionMaskConnector | None = None + max_distance_tint: Color | None = None + + +@dataclass +class UnitPrototype: + type: Literal["unit"] + name: String + run_animation: RotatedAnimation + attack_parameters: AttackParameters + movement_speed: Float + distance_per_frame: Float + distraction_cooldown: Uint32 + vision_distance: Double + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Literal[True] = True + allow_run_time_change_of_is_military_target: Literal[False] = False + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + warcry: Sound | None = None + rotation_speed: Float | None = None + dying_sound: Sound | None = None + min_pursue_time: Uint32 | None = None + has_belt_immunity: Boolean | None = None + max_pursue_distance: Double | None = None + radar_range: Uint32 | None = None + ai_settings: UnitAISettings | None = None + move_while_shooting: Boolean | None = None + can_open_gates: Boolean | None = None + affected_by_tiles: Boolean | None = None + render_layer: RenderLayer | None = None + light: LightDefinition | None = None + absorptions_to_join_attack: dict[AirbornePollutantID, Float] | None = None + spawning_time_modifier: Double | None = None + walking_sound: Sound | None = None + alternative_attacking_frame_sequence: ( + UnitAlternativeFrameSequence | None + ) = None + running_sound_animation_positions: list[Float] | dict[str, Any] | None = ( + None + ) + + +@dataclass +class UpgradeItemPrototype: + type: Literal["upgrade-item"] + name: String + stack_size: Literal[1] + select: SelectionModeData + alt_select: SelectionModeData + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + dark_background_icons: list[IconData] | dict[str, Any] | None = None + dark_background_icon: FileName | None = None + dark_background_icon_size: SpriteSizeType | None = None + place_result: EntityID | None = None + place_as_equipment_result: EquipmentID | None = None + fuel_category: FuelCategoryID | None = None + burnt_result: ItemID | None = None + spoil_result: ItemID | None = None + plant_result: EntityID | None = None + place_as_tile: PlaceAsTile | None = None + pictures: SpriteVariations | None = None + flags: ItemPrototypeFlags | None = None + spoil_ticks: Uint32 | None = None + fuel_value: Energy | None = None + fuel_acceleration_multiplier: Double | None = None + fuel_top_speed_multiplier: Double | None = None + fuel_emissions_multiplier: Double | None = None + fuel_acceleration_multiplier_quality_bonus: Double | None = None + fuel_top_speed_multiplier_quality_bonus: Double | None = None + weight: Weight | None = None + ingredient_to_weight_coefficient: Double | None = None + fuel_glow_color: Color | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + pick_sound: Sound | None = None + drop_sound: Sound | None = None + inventory_move_sound: Sound | None = None + default_import_location: SpaceLocationID | None = None + color_hint: ColorHintSpecification | None = None + has_random_tint: Boolean | None = None + spoil_to_trigger_result: SpoilToTriggerResult | None = None + destroyed_by_dropping_trigger: Trigger | None = None + rocket_launch_products: ( + list[ItemProductPrototype] | dict[str, Any] | None + ) = None + send_to_orbit_mode: SendToOrbitMode | None = None + moved_to_hub_when_building: Boolean | None = None + random_tint_color: Color | None = None + spoil_level: Uint8 | None = None + auto_recycle: Boolean | None = None + default_label_color: Color | None = None + draw_label_for_cursor_render: Boolean | None = None + super_forced_select: SelectionModeData | None = None + reverse_select: SelectionModeData | None = None + alt_reverse_select: SelectionModeData | None = None + always_include_tiles: Boolean | None = None + mouse_cursor: MouseCursorID | None = None + skip_fog_of_war: Boolean | None = None + + +@dataclass +class ValvePrototype: + type: Literal["valve"] + name: String + mode: ValveMode + fluid_box: FluidBox + flow_rate: FluidAmount + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + threshold: Float | None = None + animations: Animation4Way | None = None + frozen_patch: Sprite4Way | None = None + + +@dataclass +class WallPrototype: + type: Literal["wall"] + name: String + order: Order | None = None + localised_name: LocalisedString | None = None + localised_description: LocalisedString | None = None + factoriopedia_description: LocalisedString | None = None + subgroup: ItemSubGroupID | None = None + hidden: Boolean | None = None + hidden_in_factoriopedia: Boolean | None = None + parameter: Boolean | None = None + factoriopedia_simulation: SimulationDefinition | None = None + factoriopedia_alternative: String | None = None + custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = ( + None + ) + icons: list[IconData] | dict[str, Any] | None = None + icon: FileName | None = None + icon_size: SpriteSizeType | None = None + collision_box: BoundingBox | None = None + collision_mask: CollisionMaskConnector | None = None + map_generator_bounding_box: BoundingBox | None = None + selection_box: BoundingBox | None = None + drawing_box_vertical_extension: Double | None = None + sticker_box: BoundingBox | None = None + hit_visualization_box: BoundingBox | None = None + trigger_target_mask: TriggerTargetMask | None = None + flags: EntityPrototypeFlags | None = None + tile_buildability_rules: ( + list[TileBuildabilityRule] | dict[str, Any] | None + ) = None + minable: MinableProperties | None = None + surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None + deconstruction_alternative: EntityID | None = None + selection_priority: Uint8 | None = None + build_grid_size: Uint8 | None = None + remove_decoratives: RemoveDecoratives | None = None + emissions_per_second: dict[AirbornePollutantID, Double] | None = None + shooting_cursor_size: Double | None = None + created_smoke: CreateTrivialSmokeEffectItem | None = None + working_sound: WorkingSound | None = None + created_effect: Trigger | None = None + build_sound: Sound | None = None + mined_sound: Sound | None = None + mining_sound: Sound | None = None + rotated_sound: Sound | None = None + impact_category: String | None = None + open_sound: Sound | None = None + close_sound: Sound | None = None + placeable_position_visualization: Sprite | None = None + radius_visualisation_specification: ( + RadiusVisualisationSpecification | None + ) = None + stateless_visualisation: ( + StatelessVisualisation + | list[StatelessVisualisation] + | dict[str, Any] + | None + ) = None + draw_stateless_visualisations_in_ghost: Boolean | None = None + build_base_evolution_requirement: Double | None = None + alert_icon_shift: Vector | None = None + alert_icon_scale: Float | None = None + fast_replaceable_group: String | None = None + next_upgrade: EntityID | None = None + protected_from_tile_building: Boolean | None = None + heating_energy: Energy | None = None + allow_copy_paste: Boolean | None = None + selectable_in_game: Boolean | None = None + placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None + remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None + additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None + tile_width: Int32 | None = None + tile_height: Int32 | None = None + diagonal_tile_grid_size: TilePosition | None = None + autoplace: AutoplaceSpecification | None = None + map_color: Color | None = None + friendly_map_color: Color | None = None + enemy_map_color: Color | None = None + water_reflection: WaterReflectionDefinition | None = None + ambient_sounds_group: EntityID | None = None + ambient_sounds: ( + WorldAmbientSoundDefinition + | list[WorldAmbientSoundDefinition] + | dict[str, Any] + | None + ) = None + icon_draw_specification: IconDrawSpecification | None = None + icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = ( + None + ) + max_health: Float | None = None + healing_per_tick: Float | None = None + repair_speed_modifier: Float | None = None + dying_explosion: ( + ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None + ) = None + dying_trigger_effect: TriggerEffect | None = None + damaged_trigger_effect: TriggerEffect | None = None + loot: list[LootItem] | dict[str, Any] | None = None + resistances: list[Resistance] | dict[str, Any] | None = None + attack_reaction: ( + AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None + ) = None + repair_sound: Sound | None = None + alert_when_damaged: Boolean | None = None + hide_resistances: Boolean | None = None + create_ghost_on_death: Boolean | None = None + random_corpse_variation: Boolean | None = None + integration_patch_render_layer: RenderLayer | None = None + corpse: EntityID | list[EntityID] | dict[str, Any] | None = None + integration_patch: Sprite4Way | None = None + overkill_fraction: Float | None = None + is_military_target: Boolean | None = None + allow_run_time_change_of_is_military_target: Boolean | None = None + quality_indicator_shift: Vector | None = None + quality_indicator_scale: Double | None = None + pictures: Pictures2 | None = None + visual_merge_group: Uint32 | None = None + circuit_wire_max_distance: Double | None = None + draw_copper_wires: Boolean | None = None + draw_circuit_wires: Boolean | None = None + circuit_connector: CircuitConnectorDefinition | None = None + default_output_signal: SignalIDConnector | None = None + wall_diode_green: Sprite4Way | None = None + wall_diode_red: Sprite4Way | None = None + wall_diode_green_light_top: LightDefinition | None = None + wall_diode_green_light_right: LightDefinition | None = None + wall_diode_green_light_bottom: LightDefinition | None = None + wall_diode_green_light_left: LightDefinition | None = None + wall_diode_red_light_top: LightDefinition | None = None + wall_diode_red_light_right: LightDefinition | None = None + wall_diode_red_light_bottom: LightDefinition | None = None + wall_diode_red_light_left: LightDefinition | None = None + connected_gate_visualization: Sprite | None = None diff --git a/src/private/app/factorio-cycle-calculator/pyproject.toml b/src/private/app/factorio-cycle-calculator/pyproject.toml index a1cefb9..e700259 100644 --- a/src/private/app/factorio-cycle-calculator/pyproject.toml +++ b/src/private/app/factorio-cycle-calculator/pyproject.toml @@ -8,3 +8,6 @@ requires-python = ">=3.12" license = "GPL-3.0-or-later" classifiers = ["Private :: Do Not Upload"] dependencies = ["ortools>=9.11.4210", "pillow>=10.3.0", "streamlit>=1.42.0"] + +[dependency-groups] +dev = ["datamodel-code-generator[ruff]>=0.53.0"] diff --git a/src/private/app/factorio-cycle-calculator/schema/.gitkeep b/src/private/app/factorio-cycle-calculator/schema/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/uv.lock b/uv.lock index 380f957..c7ef783 100644 --- a/uv.lock +++ b/uv.lock @@ -173,6 +173,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, ] +[[package]] +name = "argcomplete" +version = "3.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/38/61/0b9ae6399dd4a58d8c1b1dc5a27d6f2808023d0b5dd3104bb99f45a33ff6/argcomplete-3.6.3.tar.gz", hash = "sha256:62e8ed4fd6a45864acc8235409461b72c9a28ee785a2011cc5eb78318786c89c", size = 73754, upload-time = "2025-10-20T03:33:34.741Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl", hash = "sha256:f5007b3a600ccac5d25bbce33089211dfd49eab4a7718da3f10e3082525a92ce", size = 43846, upload-time = "2025-10-20T03:33:33.021Z" }, +] + [[package]] name = "asttokens" version = "3.0.0" @@ -336,6 +345,33 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, ] +[[package]] +name = "black" +version = "26.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, + { name = "pytokens" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/13/88/560b11e521c522440af991d46848a2bde64b5f7202ec14e1f46f9509d328/black-26.1.0.tar.gz", hash = "sha256:d294ac3340eef9c9eb5d29288e96dc719ff269a88e27b396340459dd85da4c58", size = 658785, upload-time = "2026-01-18T04:50:11.993Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/04/fa2f4784f7237279332aa735cdfd5ae2e7730db0072fb2041dadda9ae551/black-26.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ba1d768fbfb6930fc93b0ecc32a43d8861ded16f47a40f14afa9bb04ab93d304", size = 1877781, upload-time = "2026-01-18T04:59:39.054Z" }, + { url = "https://files.pythonhosted.org/packages/cf/ad/5a131b01acc0e5336740a039628c0ab69d60cf09a2c87a4ec49f5826acda/black-26.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2b807c240b64609cb0e80d2200a35b23c7df82259f80bef1b2c96eb422b4aac9", size = 1699670, upload-time = "2026-01-18T04:59:41.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/7c/b05f22964316a52ab6b4265bcd52c0ad2c30d7ca6bd3d0637e438fc32d6e/black-26.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1de0f7d01cc894066a1153b738145b194414cc6eeaad8ef4397ac9abacf40f6b", size = 1775212, upload-time = "2026-01-18T04:59:42.545Z" }, + { url = "https://files.pythonhosted.org/packages/a6/a3/e8d1526bea0446e040193185353920a9506eab60a7d8beb062029129c7d2/black-26.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:91a68ae46bf07868963671e4d05611b179c2313301bd756a89ad4e3b3db2325b", size = 1409953, upload-time = "2026-01-18T04:59:44.357Z" }, + { url = "https://files.pythonhosted.org/packages/c7/5a/d62ebf4d8f5e3a1daa54adaab94c107b57be1b1a2f115a0249b41931e188/black-26.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:be5e2fe860b9bd9edbf676d5b60a9282994c03fbbd40fe8f5e75d194f96064ca", size = 1217707, upload-time = "2026-01-18T04:59:45.719Z" }, + { url = "https://files.pythonhosted.org/packages/6a/83/be35a175aacfce4b05584ac415fd317dd6c24e93a0af2dcedce0f686f5d8/black-26.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:9dc8c71656a79ca49b8d3e2ce8103210c9481c57798b48deeb3a8bb02db5f115", size = 1871864, upload-time = "2026-01-18T04:59:47.586Z" }, + { url = "https://files.pythonhosted.org/packages/a5/f5/d33696c099450b1274d925a42b7a030cd3ea1f56d72e5ca8bbed5f52759c/black-26.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b22b3810451abe359a964cc88121d57f7bce482b53a066de0f1584988ca36e79", size = 1701009, upload-time = "2026-01-18T04:59:49.443Z" }, + { url = "https://files.pythonhosted.org/packages/1b/87/670dd888c537acb53a863bc15abbd85b22b429237d9de1b77c0ed6b79c42/black-26.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:53c62883b3f999f14e5d30b5a79bd437236658ad45b2f853906c7cbe79de00af", size = 1767806, upload-time = "2026-01-18T04:59:50.769Z" }, + { url = "https://files.pythonhosted.org/packages/fe/9c/cd3deb79bfec5bcf30f9d2100ffeec63eecce826eb63e3961708b9431ff1/black-26.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:f016baaadc423dc960cdddf9acae679e71ee02c4c341f78f3179d7e4819c095f", size = 1433217, upload-time = "2026-01-18T04:59:52.218Z" }, + { url = "https://files.pythonhosted.org/packages/4e/29/f3be41a1cf502a283506f40f5d27203249d181f7a1a2abce1c6ce188035a/black-26.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:66912475200b67ef5a0ab665011964bf924745103f51977a78b4fb92a9fc1bf0", size = 1245773, upload-time = "2026-01-18T04:59:54.457Z" }, + { url = "https://files.pythonhosted.org/packages/e4/3d/51bdb3ecbfadfaf825ec0c75e1de6077422b4afa2091c6c9ba34fbfc0c2d/black-26.1.0-py3-none-any.whl", hash = "sha256:1054e8e47ebd686e078c0bb0eaf31e6ce69c966058d122f2c0c950311f9f3ede", size = 204010, upload-time = "2026-01-18T04:50:09.978Z" }, +] + [[package]] name = "blinker" version = "1.9.0" @@ -609,6 +645,31 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, ] +[[package]] +name = "datamodel-code-generator" +version = "0.53.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argcomplete" }, + { name = "black" }, + { name = "genson" }, + { name = "inflect" }, + { name = "isort" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pydantic" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/40/65/3802abca0291263862a16e032e984e61e4d0d30a344d9be97815721d64ff/datamodel_code_generator-0.53.0.tar.gz", hash = "sha256:af46b57ad78e6435873132c52843ef0ec7b768a591d3b9917d3409dfc1ab1c90", size = 809949, upload-time = "2026-01-12T18:14:05.459Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/43/5dbb6fe09842e10062f94016ccb48c9613f2443253866de3d7b815713b4d/datamodel_code_generator-0.53.0-py3-none-any.whl", hash = "sha256:d1cc2abe79f99b8208c363f5f4b603c29290327ff4e3219a08c0fff45f42aff4", size = 258912, upload-time = "2026-01-12T18:14:02.737Z" }, +] + +[package.optional-dependencies] +ruff = [ + { name = "ruff" }, +] + [[package]] name = "debugpy" version = "1.8.15" @@ -708,6 +769,11 @@ dependencies = [ { name = "streamlit" }, ] +[package.dev-dependencies] +dev = [ + { name = "datamodel-code-generator", extra = ["ruff"] }, +] + [package.metadata] requires-dist = [ { name = "ortools", specifier = ">=9.11.4210" }, @@ -715,6 +781,9 @@ requires-dist = [ { name = "streamlit", specifier = ">=1.42.0" }, ] +[package.metadata.requires-dev] +dev = [{ name = "datamodel-code-generator", extras = ["ruff"], specifier = ">=0.53.0" }] + [[package]] name = "fastavro" version = "1.12.1" @@ -842,6 +911,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/4b/e0cfc1a6f17e990f3e64b7d941ddc4acdc7b19d6edd51abf495f32b1a9e4/fsspec-2025.3.2-py3-none-any.whl", hash = "sha256:2daf8dc3d1dfa65b6aa37748d112773a7a08416f6c70d96b264c96476ecaf711", size = 194435, upload-time = "2025-03-31T15:27:07.028Z" }, ] +[[package]] +name = "genson" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c5/cf/2303c8ad276dcf5ee2ad6cf69c4338fd86ef0f471a5207b069adf7a393cf/genson-1.3.0.tar.gz", hash = "sha256:e02db9ac2e3fd29e65b5286f7135762e2cd8a986537c075b06fc5f1517308e37", size = 34919, upload-time = "2024-05-15T22:08:49.123Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/5c/e226de133afd8bb267ec27eead9ae3d784b95b39a287ed404caab39a5f50/genson-1.3.0-py3-none-any.whl", hash = "sha256:468feccd00274cc7e4c09e84b08704270ba8d95232aa280f65b986139cec67f7", size = 21470, upload-time = "2024-05-15T22:08:47.056Z" }, +] + [[package]] name = "git-commit-heatmap" version = "0.0.0.dev0" @@ -1100,6 +1178,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/58/17/6c49e68e6b1824ba03483fd1adcdebad7f8a261bb332ae8d4f0aae9d448a/immutabledict-4.3.0-py3-none-any.whl", hash = "sha256:998d43d1dbc3a0e733ce4135c1c948aa7866c256761d3fa63d8627366502ca00", size = 4923, upload-time = "2026-02-10T18:15:00.378Z" }, ] +[[package]] +name = "inflect" +version = "7.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "more-itertools" }, + { name = "typeguard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/c6/943357d44a21fd995723d07ccaddd78023eace03c1846049a2645d4324a3/inflect-7.5.0.tar.gz", hash = "sha256:faf19801c3742ed5a05a8ce388e0d8fe1a07f8d095c82201eb904f5d27ad571f", size = 73751, upload-time = "2024-12-28T17:11:18.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/eb/427ed2b20a38a4ee29f24dbe4ae2dafab198674fe9a85e3d6adf9e5f5f41/inflect-7.5.0-py3-none-any.whl", hash = "sha256:2aea70e5e70c35d8350b8097396ec155ffd68def678c7ff97f51aa69c1d92344", size = 35197, upload-time = "2024-12-28T17:11:15.931Z" }, +] + [[package]] name = "iniconfig" version = "2.3.0" @@ -1175,6 +1266,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" }, ] +[[package]] +name = "isort" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/63/53/4f3c058e3bace40282876f9b553343376ee687f3c35a525dc79dbd450f88/isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187", size = 805049, upload-time = "2025-10-11T13:30:59.107Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/ed/e3705d6d02b4f7aea715a353c8ce193efd0b5db13e204df895d38734c244/isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1", size = 94672, upload-time = "2025-10-11T13:30:57.665Z" }, +] + [[package]] name = "jaraco-classes" version = "3.4.0" @@ -1801,6 +1901,15 @@ requires-dist = [{ name = "ninja-syntax", specifier = ">=1.7.2" }] [package.metadata.requires-dev] dev = [] +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + [[package]] name = "narwhals" version = "1.37.1" @@ -2070,11 +2179,11 @@ wheels = [ [[package]] name = "pathspec" -version = "0.12.1" +version = "1.0.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fa/36/e27608899f9b8d4dff0617b2d9ab17ca5608956ca44461ac14ac48b44015/pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645", size = 131200, upload-time = "2026-01-27T03:59:46.938Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, + { url = "https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723", size = 55206, upload-time = "2026-01-27T03:59:45.137Z" }, ] [[package]] @@ -2609,6 +2718,30 @@ unidecode = [ { name = "unidecode" }, ] +[[package]] +name = "pytokens" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/34/b4e015b99031667a7b960f888889c5bd34ef585c85e1cb56a594b92836ac/pytokens-0.4.1.tar.gz", hash = "sha256:292052fe80923aae2260c073f822ceba21f3872ced9a68bb7953b348e561179a", size = 23015, upload-time = "2026-01-30T01:03:45.924Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/dc/08b1a080372afda3cceb4f3c0a7ba2bde9d6a5241f1edb02a22a019ee147/pytokens-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8bdb9d0ce90cbf99c525e75a2fa415144fd570a1ba987380190e8b786bc6ef9b", size = 160720, upload-time = "2026-01-30T01:03:13.843Z" }, + { url = "https://files.pythonhosted.org/packages/64/0c/41ea22205da480837a700e395507e6a24425151dfb7ead73343d6e2d7ffe/pytokens-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5502408cab1cb18e128570f8d598981c68a50d0cbd7c61312a90507cd3a1276f", size = 254204, upload-time = "2026-01-30T01:03:14.886Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d2/afe5c7f8607018beb99971489dbb846508f1b8f351fcefc225fcf4b2adc0/pytokens-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29d1d8fb1030af4d231789959f21821ab6325e463f0503a61d204343c9b355d1", size = 268423, upload-time = "2026-01-30T01:03:15.936Z" }, + { url = "https://files.pythonhosted.org/packages/68/d4/00ffdbd370410c04e9591da9220a68dc1693ef7499173eb3e30d06e05ed1/pytokens-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:970b08dd6b86058b6dc07efe9e98414f5102974716232d10f32ff39701e841c4", size = 266859, upload-time = "2026-01-30T01:03:17.458Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c9/c3161313b4ca0c601eeefabd3d3b576edaa9afdefd32da97210700e47652/pytokens-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:9bd7d7f544d362576be74f9d5901a22f317efc20046efe2034dced238cbbfe78", size = 103520, upload-time = "2026-01-30T01:03:18.652Z" }, + { url = "https://files.pythonhosted.org/packages/8f/a7/b470f672e6fc5fee0a01d9e75005a0e617e162381974213a945fcd274843/pytokens-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4a14d5f5fc78ce85e426aa159489e2d5961acf0e47575e08f35584009178e321", size = 160821, upload-time = "2026-01-30T01:03:19.684Z" }, + { url = "https://files.pythonhosted.org/packages/80/98/e83a36fe8d170c911f864bfded690d2542bfcfacb9c649d11a9e6eb9dc41/pytokens-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f50fd18543be72da51dd505e2ed20d2228c74e0464e4262e4899797803d7fa", size = 254263, upload-time = "2026-01-30T01:03:20.834Z" }, + { url = "https://files.pythonhosted.org/packages/0f/95/70d7041273890f9f97a24234c00b746e8da86df462620194cef1d411ddeb/pytokens-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc74c035f9bfca0255c1af77ddd2d6ae8419012805453e4b0e7513e17904545d", size = 268071, upload-time = "2026-01-30T01:03:21.888Z" }, + { url = "https://files.pythonhosted.org/packages/da/79/76e6d09ae19c99404656d7db9c35dfd20f2086f3eb6ecb496b5b31163bad/pytokens-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f66a6bbe741bd431f6d741e617e0f39ec7257ca1f89089593479347cc4d13324", size = 271716, upload-time = "2026-01-30T01:03:23.633Z" }, + { url = "https://files.pythonhosted.org/packages/79/37/482e55fa1602e0a7ff012661d8c946bafdc05e480ea5a32f4f7e336d4aa9/pytokens-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:b35d7e5ad269804f6697727702da3c517bb8a5228afa450ab0fa787732055fc9", size = 104539, upload-time = "2026-01-30T01:03:24.788Z" }, + { url = "https://files.pythonhosted.org/packages/30/e8/20e7db907c23f3d63b0be3b8a4fd1927f6da2395f5bcc7f72242bb963dfe/pytokens-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8fcb9ba3709ff77e77f1c7022ff11d13553f3c30299a9fe246a166903e9091eb", size = 168474, upload-time = "2026-01-30T01:03:26.428Z" }, + { url = "https://files.pythonhosted.org/packages/d6/81/88a95ee9fafdd8f5f3452107748fd04c24930d500b9aba9738f3ade642cc/pytokens-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79fc6b8699564e1f9b521582c35435f1bd32dd06822322ec44afdeba666d8cb3", size = 290473, upload-time = "2026-01-30T01:03:27.415Z" }, + { url = "https://files.pythonhosted.org/packages/cf/35/3aa899645e29b6375b4aed9f8d21df219e7c958c4c186b465e42ee0a06bf/pytokens-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d31b97b3de0f61571a124a00ffe9a81fb9939146c122c11060725bd5aea79975", size = 303485, upload-time = "2026-01-30T01:03:28.558Z" }, + { url = "https://files.pythonhosted.org/packages/52/a0/07907b6ff512674d9b201859f7d212298c44933633c946703a20c25e9d81/pytokens-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:967cf6e3fd4adf7de8fc73cd3043754ae79c36475c1c11d514fc72cf5490094a", size = 306698, upload-time = "2026-01-30T01:03:29.653Z" }, + { url = "https://files.pythonhosted.org/packages/39/2a/cbbf9250020a4a8dd53ba83a46c097b69e5eb49dd14e708f496f548c6612/pytokens-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:584c80c24b078eec1e227079d56dc22ff755e0ba8654d8383b2c549107528918", size = 116287, upload-time = "2026-01-30T01:03:30.912Z" }, + { url = "https://files.pythonhosted.org/packages/c6/78/397db326746f0a342855b81216ae1f0a32965deccfd7c830a2dbc66d2483/pytokens-0.4.1-py3-none-any.whl", hash = "sha256:26cef14744a8385f35d0e095dc8b3a7583f6c953c2e3d269c7f82484bf5ad2de", size = 13729, upload-time = "2026-01-30T01:03:45.029Z" }, +] + [[package]] name = "pytz" version = "2025.2" @@ -3275,6 +3408,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e1/85/a4ff8758c66f1fc32aa5e9a145908394bf9cf1c79ffd1113cfdeb77e74e4/trove_classifiers-2025.9.11.17-py3-none-any.whl", hash = "sha256:5d392f2d244deb1866556457d6f3516792124a23d1c3a463a2e8668a5d1c15dd", size = 14158, upload-time = "2025-09-11T17:07:49.886Z" }, ] +[[package]] +name = "typeguard" +version = "4.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/68/71c1a15b5f65f40e91b65da23b8224dad41349894535a97f63a52e462196/typeguard-4.4.4.tar.gz", hash = "sha256:3a7fd2dffb705d4d0efaed4306a704c89b9dee850b688f060a8b1615a79e5f74", size = 75203, upload-time = "2025-06-18T09:56:07.624Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/a9/e3aee762739c1d7528da1c3e06d518503f8b6c439c35549b53735ba52ead/typeguard-4.4.4-py3-none-any.whl", hash = "sha256:b5f562281b6bfa1f5492470464730ef001646128b180769880468bd84b68b09e", size = 34874, upload-time = "2025-06-18T09:56:05.999Z" }, +] + [[package]] name = "typer" version = "0.16.0"