// This is an auto-generated file. Do not edit directly! /** @noSelfInFile */ import type { CustomInputName } from "factorio:common" /** * @noResolution */ declare module "factorio:prototype" { /** * Entity with energy source with specialised animation for charging/discharging. Used for the {@linkplain https://wiki.factorio.com/Accumulator accumulator} entity. * @example * { * type = "accumulator", * name = "accumulator", * icon = "__base__/graphics/icons/accumulator.png", * flags = {"placeable-neutral", "player-creation"}, * minable = {mining_time = 0.1, result = "accumulator"}, * fast_replaceable_group = "accumulator", * max_health = 150, * corpse = "accumulator-remnants", * collision_box = {{-0.9, -0.9}, {0.9, 0.9}}, * selection_box = {{-1, -1}, {1, 1}}, * energy_source = * { * type = "electric", * buffer_capacity = "5MJ", * usage_priority = "tertiary", * input_flow_limit = "300kW", * output_flow_limit = "300kW" * }, * chargable_graphics = * { * picture = accumulator_picture(), * charge_animation = accumulator_charge(), * charge_cooldown = 30, * discharge_animation = accumulator_discharge(), * discharge_cooldown = 60 * }, * water_reflection = accumulator_reflection(), * working_sound = * { * main_sounds = * { * { * sound = {filename = "__base__/sound/accumulator-working.ogg", volume = 0.4, modifiers = volume_multiplier("main-menu", 1.44)}, * match_volume_to_activity = true, * activity_to_volume_modifiers = {offset = 2, inverted = true}, * fade_in_ticks = 4, * fade_out_ticks = 20 * }, * { * sound = {filename = "__base__/sound/accumulator-discharging.ogg", volume = 0.4, modifiers = volume_multiplier("main-menu", 1.44)}, * match_volume_to_activity = true, * activity_to_volume_modifiers = {offset = 1}, * fade_in_ticks = 4, * fade_out_ticks = 20 * } * }, * idle_sound = {filename = "__base__/sound/accumulator-idle.ogg", volume = 0.35}, * max_sounds_per_prototype = 3, * audible_distance_modifier = 0.5 * }, * * circuit_connector = circuit_connector_definitions["accumulator"], * circuit_wire_max_distance = default_circuit_wire_max_distance, * * default_output_signal = {type = "virtual", name = "signal-A"} * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AccumulatorPrototype.html Online documentation} */ export interface AccumulatorPrototype extends EntityWithOwnerPrototype { type: "accumulator" /** * The capacity of the energy source buffer specifies the capacity of the accumulator. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AccumulatorPrototype.html#energy_source Online documentation} */ energy_source: ElectricEnergySource chargable_graphics?: ChargableGraphics /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AccumulatorPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AccumulatorPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AccumulatorPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition /** * The name of the signal that is the default for when an accumulator is connected to the circuit network. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AccumulatorPrototype.html#default_output_signal Online documentation} */ default_output_signal?: SignalIDConnector } /** * This prototype definition is used for the in-game achievements. * @example * { * type = "achievement", * name = "so-long-and-thanks-for-all-the-fish", * order = "g[secret]-a[so-long-and-thanks-for-all-the-fish]", * icon = "__base__/graphics/achievement/so-long-and-thanks-for-all-the-fish.png", * icon_size = 128 * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AchievementPrototype.html Online documentation} */ export interface AchievementPrototype extends Prototype { type: | "achievement" | "build-entity-achievement" | "change-surface-achievement" | "combat-robot-count-achievement" | "complete-objective-achievement" | "construct-with-robots-achievement" | "create-platform-achievement" | "deconstruct-with-robots-achievement" | "deliver-by-robots-achievement" | "deplete-resource-achievement" | "destroy-cliff-achievement" | "dont-build-entity-achievement" | "dont-craft-manually-achievement" | "dont-kill-manually-achievement" | "dont-research-before-researching-achievement" | "dont-use-entity-in-energy-production-achievement" | "equip-armor-achievement" | "group-attack-achievement" | "kill-achievement" | "module-transfer-achievement" | "place-equipment-achievement" | "player-damaged-achievement" | "produce-achievement" | "produce-per-hour-achievement" | "research-achievement" | "research-with-science-pack-achievement" | "shoot-achievement" | "space-connection-distance-traveled-achievement" | "train-path-achievement" | "use-entity-in-energy-production-achievement" | "use-item-achievement" /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AchievementPrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AchievementPrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * The base game uses 128px icons for achievements. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AchievementPrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * **Default:** `""` * * Unusable by mods, as this refers to unlocking the achievement through Steam. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AchievementPrototype.html#steam_stats_name Online documentation} */ steam_stats_name?: string /** * **Default:** `true` * * If this is set to `false`, it is not possible to complete the achievement on the peaceful difficulty setting or when the enemy base generation settings have been changed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AchievementPrototype.html#allowed_without_fight Online documentation} */ allowed_without_fight?: boolean } export interface AchievementPrototypeWithCondition extends AchievementPrototype { type: | "complete-objective-achievement" | "dont-build-entity-achievement" | "dont-craft-manually-achievement" | "dont-kill-manually-achievement" | "dont-research-before-researching-achievement" | "dont-use-entity-in-energy-production-achievement" /** * The condition that needs to be met to receive the achievement. Required for `"complete-objective-achievement"`, `"dont-build-entity-achievement"`, and `"dont-craft-manually-achievement"`. Not allowed for `"dont-kill-manually-achievement"` and `"dont-research-before-researching-achievement"`. Only allowed for `"dont-use-entity-in-energy-production-achievement"` if `"last_hour_only"` is `false`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AchievementPrototypeWithCondition.html#objective_condition Online documentation} */ objective_condition?: "game-finished" | "rocket-launched" | "late-research" } /** * Used by {@linkplain https://wiki.factorio.com/Discharge_defense discharge defense} and {@linkplain https://wiki.factorio.com/Personal_laser_defense personal laser defense}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ActiveDefenseEquipmentPrototype.html Online documentation} */ export interface ActiveDefenseEquipmentPrototype extends EquipmentPrototype { type: "active-defense-equipment" automatic: boolean attack_parameters: AttackParameters } /** * The abstract base of all active trigger prototypes. Active triggers are a special type of trigger delivery mechanism that function of a period of time and do not result in the creation or deletion of entities to function. They are intended to be short-lived objects associated with a surface and cannot be cancelled until they self-destruct. Active triggers support migrations and prototype changes, but require their own named prototype to function. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ActiveTriggerPrototype.html Online documentation} */ export interface ActiveTriggerPrototype extends Prototype { type: "chain-active-trigger" | "delayed-active-trigger" } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html Online documentation} */ export interface AgriculturalTowerPrototype extends EntityWithOwnerPrototype { type: "agricultural-tower" graphics_set?: CraftingMachineGraphicsSet crane: AgriculturalCraneProperties energy_source: EnergySource input_inventory_size: ItemStackIndex /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#output_inventory_size Online documentation} */ output_inventory_size?: ItemStackIndex /** * The amount of energy this agricultural tower uses for each planted or harvested {@link PlantPrototype plant}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#energy_usage Online documentation} */ energy_usage: Energy /** * The amount of energy this agricultural tower uses while the crane is moving. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#crane_energy_usage Online documentation} */ crane_energy_usage: Energy /** * The radius represents {@link AgriculturalTowerPrototype#growth_grid_tile_size grid tiles} which are created around the agricultural tower from its {@link EntityPrototype#collision_box collision box}. * * Must be positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#radius Online documentation} */ radius: double /** * **Default:** `3` * * The size of one grid tile a {@link PlantPrototype plant} is planted into. * * Must be positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#growth_grid_tile_size Online documentation} */ growth_grid_tile_size?: uint32 /** * **Default:** `0.95` * * The minimum radius of empty space a {@link PlantPrototype plant} requires around it to be planted. * * Must be >= 0 and <= growth_grid_tile_size / 2 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#growth_area_radius Online documentation} */ growth_area_radius?: double /** * **Default:** `0.25` * * The maximum offset from the grid tile center which will be applied to the planting spot selected by this agricultural tower. * * Must be >= 0 and < 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#random_growth_offset Online documentation} */ random_growth_offset?: double /** * **Default:** `true` * * Whether the agricultural tower will start from a random grid tile when given a planting task. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#randomize_planting_tile Online documentation} */ randomize_planting_tile?: boolean radius_visualisation_picture?: Sprite central_orienting_sound?: InterruptibleSound arm_extending_sound?: InterruptibleSound grappler_orienting_sound?: InterruptibleSound grappler_extending_sound?: InterruptibleSound planting_sound?: Sound harvesting_sound?: Sound central_orienting_sound_source?: string arm_extending_sound_source?: string grappler_orienting_sound_source?: string grappler_extending_sound_source?: string planting_procedure_points?: readonly Vector3D[] harvesting_procedure_points?: readonly Vector3D[] /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition /** * When missing, all items with {@link ItemPrototype#plant_result plant result} will be accepted. When provided, only items on this list that have plant result will be accepted. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AgriculturalTowerPrototype.html#accepted_seeds Online documentation} */ accepted_seeds?: readonly ItemID[] } /** * A type of pollution that can spread throughout the chunks of a map. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AirbornePollutantPrototype.html Online documentation} */ export interface AirbornePollutantPrototype extends Prototype { type: "airborne-pollutant" /** * **Default:** `"airborne-pollutant-name-with-amount."` * * The translated plural string key to use when displaying this pollution's name with an amount. See {@linkplain https://wiki.factorio.com/Tutorial:Localisation Tutorial:Localisation}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AirbornePollutantPrototype.html#localised_name_with_amount Online documentation} */ localised_name_with_amount?: string chart_color: Color icon: Sprite affects_evolution: boolean /** * If true, large amounts of this pollution will cause water tiles to turn a sickly green. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AirbornePollutantPrototype.html#affects_water_tint Online documentation} */ affects_water_tint: boolean /** * **Default:** `true` * * If true, trees will occasionally take damage from this pollutant type. When they do, some amount of pollution is removed from the chunk equal to the map's `pollution_restored_per_tree_damage` setting. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AirbornePollutantPrototype.html#damages_trees Online documentation} */ damages_trees?: boolean } /** * This prototype is used to make sound while playing the game. This includes the game's {@linkplain https://store.steampowered.com/app/436090/Factorio__Soundtrack/ music}, composed by Daniel James Taylor. * @example * { * type = "ambient-sound", * name = "world-ambience-4", * track_type = "interlude", * sound = * { * filename = "__base__/sound/ambient/world-ambience-4.ogg", * volume = 1.2 * } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmbientSound.html Online documentation} */ export interface AmbientSound { /** * Specification of the type of the prototype. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmbientSound.html#type Online documentation} */ readonly type: "ambient-sound" /** * Unique textual identification of the prototype. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmbientSound.html#name Online documentation} */ name: string /** * **Default:** `1` * * Cannot be less than zero. * * Cannot be defined if `track_type` is `"hero-track"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmbientSound.html#weight Online documentation} */ weight?: double track_type: AmbientSoundType /** * Track without a planet is bound to space platforms. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmbientSound.html#planet Online documentation} */ planet?: SpaceLocationID /** * Static music track. * * One of `sound` or `variable_sound` must be defined. Both cannot be defined together. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmbientSound.html#sound Online documentation} */ sound?: Sound /** * Variable music track. * * One of `sound` or `variable_sound` must be defined. Both cannot be defined together. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmbientSound.html#variable_sound Online documentation} */ variable_sound?: VariableAmbientSoundVariableSound } /** * An ammo category. Each weapon has an ammo category, and can use any ammo with the same ammo category. Ammo categories can also be upgraded by technologies. * * _Prototype limited to **255** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoCategory.html Online documentation} */ export interface AmmoCategory extends Prototype { type: "ammo-category" /** * **Default:** `""` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoCategory.html#bonus_gui_order Online documentation} */ bonus_gui_order?: Order /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoCategory.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoCategory.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoCategory.html#icon_size Online documentation} */ icon_size?: SpriteSizeType } /** * Ammo used for a gun. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoItemPrototype.html Online documentation} */ export interface AmmoItemPrototype extends ItemPrototype { type: "ammo" /** * When using a plain {@link AmmoType} (no array), the ammo type applies to everything (`"default"`). * * When using an array of AmmoTypes, they have the additional {@link AmmoType#source_type AmmoType::source_type} property. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoItemPrototype.html#ammo_type Online documentation} */ ammo_type: AmmoType | readonly AmmoType[] /** * **Default:** `1` * * Number of shots before ammo item is consumed. Must be >= `1`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoItemPrototype.html#magazine_size Online documentation} */ magazine_size?: float /** * **Default:** `0` * * Amount of extra time (in ticks) it takes to reload the weapon after depleting the magazine. Must be >= `0`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoItemPrototype.html#reload_time Online documentation} */ reload_time?: float ammo_category: AmmoCategoryID /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoItemPrototype.html#shoot_protected Online documentation} */ shoot_protected?: boolean } /** * A turret that consumes {@link AmmoItemPrototype ammo items}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoTurretPrototype.html Online documentation} */ export interface AmmoTurretPrototype extends TurretPrototype { type: "ammo-turret" energy_source?: ElectricEnergySource energy_per_shot?: Energy /** * Size of the ammo inventory. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoTurretPrototype.html#inventory_size Online documentation} */ inventory_size: ItemStackIndex /** * The amount of ammo that inserters automatically insert into this turret. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoTurretPrototype.html#automated_ammo_count Online documentation} */ automated_ammo_count: ItemCountType /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AmmoTurretPrototype.html#prepare_with_no_ammo Online documentation} */ prepare_with_no_ammo?: boolean } /** * Specifies an animation that can be used with {@link import("factorio:runtime").LuaRendering#draw_animation LuaRendering::draw_animation} at runtime. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html Online documentation} */ export interface AnimationPrototype { readonly type: "animation" /** * Name of the animation. Can be used with {@link import("factorio:runtime").LuaRendering#draw_animation LuaRendering::draw_animation} at runtime. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#name Online documentation} */ name: string /** * If this property is present, all Animation definitions have to be placed as entries in the array, and they will all be loaded from there. `layers` may not be an empty table. Each definition in the array may also have the `layers` property. * * `animation_speed` and `max_advance` of the first layer are used for all layers. All layers will run at the same speed. * * If this property is present, all other properties besides `name` and `type` are ignored. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#layers Online documentation} */ layers?: readonly Animation[] /** * Only loaded if `layers` is not defined. Mandatory if neither `stripes` nor `filenames` are defined. * * The path to the sprite file to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#filename Online documentation} */ filename?: FileName /** * **Default:** `"medium"` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#priority Online documentation} */ priority?: SpritePriority /** * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#flags Online documentation} */ flags?: SpriteFlags /** * Only loaded if `layers` is not defined. * * The width and height of one frame. If this is a tuple, the first member of the tuple is the width and the second is the height. Otherwise the size is both width and height. Width and height may only be in the range of 0-4096. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#size Online documentation} */ size?: SpriteSizeType | readonly [SpriteSizeType, SpriteSizeType] /** * Only loaded if `layers` is not defined. Mandatory if `size` is not defined. * * Width of one frame in pixels, from 0-4096. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#width Online documentation} */ width?: SpriteSizeType /** * Only loaded if `layers` is not defined. Mandatory if `size` is not defined. * * Height of one frame in pixels, from 0-4096. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#height Online documentation} */ height?: SpriteSizeType /** * **Default:** `0` * * Only loaded if `layers` is not defined. * * Horizontal position of the animation in the source file in pixels. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#x Online documentation} */ x?: SpriteSizeType /** * **Default:** `0` * * Only loaded if `layers` is not defined. * * Vertical position of the animation in the source file in pixels. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#y Online documentation} */ y?: SpriteSizeType /** * Only loaded if `layers` is not defined. * * Loaded only when `x` and `y` are both `0`. The first member of the tuple is `x` and the second is `y`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#position Online documentation} */ position?: readonly [SpriteSizeType, SpriteSizeType] /** * **Default:** ``{0, 0}`` * * Only loaded if `layers` is not defined. * * The shift in tiles. `util.by_pixel()` can be used to divide the shift by 32 which is the usual pixel height/width of 1 tile in normal resolution. Note that 32 pixel tile height/width is not enforced anywhere - any other tile height or width is also possible. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#shift Online documentation} */ shift?: Vector /** * **Default:** `false` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#rotate_shift Online documentation} */ rotate_shift?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#apply_special_effect Online documentation} */ apply_special_effect?: boolean /** * **Default:** `1` * * Only loaded if `layers` is not defined. * * Values other than `1` specify the scale of the sprite on default zoom. A scale of `2` means that the picture will be two times bigger on screen (and thus more pixelated). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#scale Online documentation} */ scale?: double /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * Only one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. This takes precedence over `draw_as_glow` and `draw_as_light`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#draw_as_shadow Online documentation} */ draw_as_shadow?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * Only one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. This takes precedence over `draw_as_light`. * * Draws first as a normal sprite, then again as a light layer. See {@linkplain https://forums.factorio.com/91682}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#draw_as_glow Online documentation} */ draw_as_glow?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * Only one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#draw_as_light Online documentation} */ draw_as_light?: boolean /** * **Default:** `0` * * Only loaded if `layers` is not defined. * * Only loaded if this is an icon, that is it has the flag `"group=icon"` or `"group=gui"`. * * Note that `mipmap_count` doesn't make sense in an animation, as it is not possible to layout mipmaps in a way that would load both the animation and the mipmaps correctly (besides animations with just one frame). See {@linkplain https://forums.factorio.com/viewtopic.php?p=549058#p549058 here}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#mipmap_count Online documentation} */ mipmap_count?: uint8 /** * **Default:** `false` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#apply_runtime_tint Online documentation} */ apply_runtime_tint?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#tint_as_overlay Online documentation} */ tint_as_overlay?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#invert_colors Online documentation} */ invert_colors?: boolean /** * **Default:** ``{r=1, g=1, b=1, a=1}`` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#tint Online documentation} */ tint?: Color /** * **Default:** `"normal"` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#blend_mode Online documentation} */ blend_mode?: BlendMode /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * Minimal mode is entered when mod loading fails. You are in it when you see the gray box after (part of) the loading screen that tells you a mod error. Modders can ignore this property. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#load_in_minimal_mode Online documentation} */ load_in_minimal_mode?: boolean /** * **Default:** `true` * * Only loaded if `layers` is not defined. * * Whether alpha should be pre-multiplied. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#premul_alpha Online documentation} */ premul_alpha?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * If `true`, the sprite may be downsampled to half its size on load even when 'Sprite quality' graphics setting is set to 'High'. Whether downsampling happens depends on detected hardware and other graphics settings. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#allow_forced_downscale Online documentation} */ allow_forced_downscale?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * Unused. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#generate_sdf Online documentation} */ generate_sdf?: boolean /** * **Default:** `"any"` * * Only loaded if `layers` is not defined. * * Provides hint to sprite atlas system, so it can try to put sprites that are intended to be used at the same locations to the same sprite atlas. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#surface Online documentation} */ surface?: SpriteUsageSurfaceHint /** * **Default:** `"any"` * * Only loaded if `layers` is not defined. * * Provides hint to sprite atlas system, so it can pack sprites that are related to each other to the same sprite atlas. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#usage Online documentation} */ usage?: SpriteUsageHint /** * **Default:** `"forward"` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#run_mode Online documentation} */ run_mode?: AnimationRunMode /** * **Default:** `1` * * Only loaded if `layers` is not defined. * * Can't be `0`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#frame_count Online documentation} */ frame_count?: uint32 /** * **Default:** `0` * * Only loaded if `layers` is not defined. * * Once the specified number of pictures is loaded, other pictures are loaded on other line. This is to allow having longer animations in matrix, to input files with too high width. The game engine limits the width of any input files to 8192px, so it is compatible with most graphics cards. `0` means that all the pictures are in one horizontal line. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#line_length Online documentation} */ line_length?: uint32 /** * **Default:** `1` * * Only loaded if `layers` is not defined. * * Modifier of the animation playing speed, the default of `1` means one animation frame per tick (60 fps). The speed of playing can often vary depending on the usage (output of steam engine for example). Has to be greater than `0`. * * If `layers` are used, the `animation_speed` only has to be defined in one layer. All layers will run at the same speed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#animation_speed Online documentation} */ animation_speed?: float /** * **Default:** `MAX_FLOAT` * * Only loaded if `layers` is not defined. * * If `layers` are used, `max_advance` of the first layer is used for all layers. * * Maximum amount of frames the animation can move forward in one update. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#max_advance Online documentation} */ max_advance?: float /** * **Default:** `1` * * Only loaded if `layers` is not defined. * * How many times to repeat the animation to complete an animation cycle. E.g. if one layer is 10 frames, a second layer of 1 frame would need `repeat_count = 10` to match the complete cycle. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#repeat_count Online documentation} */ repeat_count?: uint8 /** * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#dice Online documentation} */ dice?: uint8 /** * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#dice_x Online documentation} */ dice_x?: uint8 /** * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#dice_y Online documentation} */ dice_y?: uint8 /** * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#frame_sequence Online documentation} */ frame_sequence?: AnimationFrameSequence /** * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#stripes Online documentation} */ stripes?: readonly Stripe[] /** * Only loaded if neither `layers` nor `stripes` are defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#filenames Online documentation} */ filenames?: readonly FileName[] /** * **Default:** `Value of `frame_count`` * * Only loaded if `layers` is not defined and if `filenames` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#slice Online documentation} */ slice?: uint32 /** * Only loaded if `layers` is not defined. Mandatory if `filenames` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AnimationPrototype.html#lines_per_file Online documentation} */ lines_per_file?: uint32 } /** * An {@linkplain https://wiki.factorio.com/Arithmetic_combinator arithmetic combinator}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArithmeticCombinatorPrototype.html Online documentation} */ export interface ArithmeticCombinatorPrototype extends CombinatorPrototype { type: "arithmetic-combinator" plus_symbol_sprites?: Sprite4Way minus_symbol_sprites?: Sprite4Way multiply_symbol_sprites?: Sprite4Way divide_symbol_sprites?: Sprite4Way modulo_symbol_sprites?: Sprite4Way power_symbol_sprites?: Sprite4Way left_shift_symbol_sprites?: Sprite4Way right_shift_symbol_sprites?: Sprite4Way and_symbol_sprites?: Sprite4Way or_symbol_sprites?: Sprite4Way xor_symbol_sprites?: Sprite4Way } /** * Armor to wear on your in-game {@link CharacterPrototype character} for defense and buffs. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArmorPrototype.html Online documentation} */ export interface ArmorPrototype extends ToolPrototype { type: "armor" /** * Name of the {@link EquipmentGridPrototype} that this armor has. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArmorPrototype.html#equipment_grid Online documentation} */ equipment_grid?: EquipmentGridID /** * What amount of damage the armor takes on what type of damage is incoming. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArmorPrototype.html#resistances Online documentation} */ resistances?: readonly Resistance[] /** * By how many slots the inventory of the player is expanded when the armor is worn. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArmorPrototype.html#inventory_size_bonus Online documentation} */ inventory_size_bonus?: ItemStackIndex /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArmorPrototype.html#provides_flight Online documentation} */ provides_flight?: boolean collision_box?: BoundingBox drawing_box?: BoundingBox /** * Only loaded if `provides_flight` is `true`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArmorPrototype.html#takeoff_sound Online documentation} */ takeoff_sound?: Sound /** * Only loaded if `provides_flight` is `true`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArmorPrototype.html#flight_sound Online documentation} */ flight_sound?: InterruptibleSound /** * Only loaded if `provides_flight` is `true`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArmorPrototype.html#landing_sound Online documentation} */ landing_sound?: Sound steps_sound?: Sound moving_sound?: Sound } /** * The arrows used for example in the campaign, they are literally just arrows. * @example * { * type = "arrow", * name = "orange-arrow-with-circle", * flags = { "placeable-off-grid", "not-on-map" }, * blinking = true, * arrow_picture = * { * filename = "__core__/graphics/arrows/gui-arrow-medium.png", * priority = "low", * width = 58, * height = 62 * }, * circle_picture = * { * filename = "__core__/graphics/arrows/gui-arrow-circle.png", * priority = "low", * width = 50, * height = 50 * } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArrowPrototype.html Online documentation} */ export interface ArrowPrototype extends EntityPrototype { type: "arrow" arrow_picture: Sprite circle_picture?: Sprite /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArrowPrototype.html#blinking Online documentation} */ blinking?: boolean } /** * The entity spawned by the {@linkplain https://wiki.factorio.com/Artillery_targeting_remote artillery targeting remote}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html Online documentation} */ export interface ArtilleryFlarePrototype extends EntityPrototype { type: "artillery-flare" /** * Picture variation count and individual frame count must be equal to shadow variation count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#pictures Online documentation} */ pictures?: AnimationVariations life_time: uint16 /** * Shadow variation variation count and individual frame count must be equal to picture variation count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#shadows Online documentation} */ shadows?: AnimationVariations /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * **Default:** `"lower-object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#render_layer_when_on_ground Online documentation} */ render_layer_when_on_ground?: RenderLayer regular_trigger_effect?: TriggerEffect /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#regular_trigger_effect_frequency Online documentation} */ regular_trigger_effect_frequency?: uint32 ended_in_water_trigger_effect?: TriggerEffect /** * **Default:** `0.8` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#movement_modifier_when_on_ground Online documentation} */ movement_modifier_when_on_ground?: double /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#movement_modifier Online documentation} */ movement_modifier?: double creation_shift?: Vector initial_speed?: Vector /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#initial_height Online documentation} */ initial_height?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#initial_vertical_speed Online documentation} */ initial_vertical_speed?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#initial_frame_speed Online documentation} */ initial_frame_speed?: float /** * **Default:** `1` * * How many artillery shots should be fired at the position of this flare. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#shots_per_flare Online documentation} */ shots_per_flare?: uint32 /** * **Default:** `180` * * How long this flare stays alive after `shots_per_flare` amount of shots have been shot at it. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#early_death_ticks Online documentation} */ early_death_ticks?: uint32 /** * Only artillery turrets/wagons whose ammo's {@link AmmoItemPrototype#ammo_category ammo_category} matches this category will shoot at this flare. Defaults to all ammo categories being able to shoot at this flare. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#shot_category Online documentation} */ shot_category?: AmmoCategoryID map_color: Color /** * **Default:** `48` * * The entity with the higher number is selectable before the entity with the lower number. * * The value `0` will be treated the same as `nil`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryFlarePrototype.html#selection_priority Online documentation} */ selection_priority?: uint8 } /** * The projectile shot by {@linkplain https://wiki.factorio.com/Artillery artillery}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryProjectilePrototype.html Online documentation} */ export interface ArtilleryProjectilePrototype extends EntityPrototype { type: "artillery-projectile" reveal_map: boolean picture?: Sprite shadow?: Sprite chart_picture?: Sprite action?: Trigger final_action?: Trigger /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryProjectilePrototype.html#height_from_ground Online documentation} */ height_from_ground?: float /** * **Default:** `true` * * Whether the picture of the projectile is rotated to match the direction of travel. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryProjectilePrototype.html#rotatable Online documentation} */ rotatable?: boolean map_color: Color /** * **Default:** `Empty = `{{0, 0}, {0, 0}}`` * * Must have a collision box size of zero. * @example * collision_box = {{0, 0}, {0, 0}} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryProjectilePrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } /** * An {@linkplain https://wiki.factorio.com/Artillery_turret artillery turret}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html Online documentation} */ export interface ArtilleryTurretPrototype extends EntityWithOwnerPrototype { type: "artillery-turret" /** * Name of a {@link GunPrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#gun Online documentation} */ gun: ItemID /** * Must be > 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#inventory_size Online documentation} */ inventory_size: ItemStackIndex /** * Must be > 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#ammo_stack_limit Online documentation} */ ammo_stack_limit: ItemCountType /** * Must be > 0. The amount of ammo that inserters automatically insert into this artillery turret. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#automated_ammo_count Online documentation} */ automated_ammo_count?: ItemCountType turret_rotation_speed: double /** * Must be positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#manual_range_modifier Online documentation} */ manual_range_modifier: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#alert_when_attacking Online documentation} */ alert_when_attacking?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#disable_automatic_firing Online documentation} */ disable_automatic_firing?: boolean /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#base_picture_secondary_draw_order Online documentation} */ base_picture_secondary_draw_order?: uint8 /** * **Default:** `"lower-object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#base_picture_render_layer Online documentation} */ base_picture_render_layer?: RenderLayer base_picture?: Animation4Way cannon_base_shift: Vector3D cannon_base_pictures?: RotatedSprite cannon_barrel_pictures?: RotatedSprite rotating_sound?: InterruptibleSound /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#turn_after_shooting_cooldown Online documentation} */ turn_after_shooting_cooldown?: uint16 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#cannon_parking_frame_count Online documentation} */ cannon_parking_frame_count?: uint16 /** * **Default:** `1` * * Must be positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#cannon_parking_speed Online documentation} */ cannon_parking_speed?: float /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition cannon_barrel_recoil_shiftings?: readonly Vector3D[] /** * Only loaded if `cannon_barrel_recoil_shiftings` is loaded. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#cannon_barrel_recoil_shiftings_load_correction_matrix Online documentation} */ cannon_barrel_recoil_shiftings_load_correction_matrix?: readonly Vector3D[] /** * Only loaded if `cannon_barrel_recoil_shiftings` is loaded. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#cannon_barrel_light_direction Online documentation} */ cannon_barrel_light_direction?: Vector3D /** * **Default:** `true` * * Whether this prototype should be a high priority target for enemy forces. See {@linkplain https://wiki.factorio.com/Military_units_and_structures Military units and structures}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryTurretPrototype.html#is_military_target Online documentation} */ is_military_target?: boolean } /** * An {@linkplain https://wiki.factorio.com/Artillery_wagon artillery wagon}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html Online documentation} */ export interface ArtilleryWagonPrototype extends RollingStockPrototype { type: "artillery-wagon" /** * Name of a {@link GunPrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#gun Online documentation} */ gun: ItemID /** * Must be > 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#inventory_size Online documentation} */ inventory_size: ItemStackIndex /** * Must be > 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#ammo_stack_limit Online documentation} */ ammo_stack_limit: ItemCountType /** * Must be > 0. The amount of ammo that inserters automatically insert into this artillery wagon. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#automated_ammo_count Online documentation} */ automated_ammo_count?: ItemCountType turret_rotation_speed: double /** * Must be > 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#manual_range_modifier Online documentation} */ manual_range_modifier: double /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#disable_automatic_firing Online documentation} */ disable_automatic_firing?: boolean cannon_base_pictures?: RollingStockRotatedSlopedGraphics /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#cannon_base_height Online documentation} */ cannon_base_height?: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#cannon_base_shift_when_vertical Online documentation} */ cannon_base_shift_when_vertical?: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#cannon_base_shift_when_horizontal Online documentation} */ cannon_base_shift_when_horizontal?: double cannon_barrel_pictures?: RollingStockRotatedSlopedGraphics rotating_sound?: InterruptibleSound /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#turn_after_shooting_cooldown Online documentation} */ turn_after_shooting_cooldown?: uint16 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#cannon_parking_frame_count Online documentation} */ cannon_parking_frame_count?: uint16 /** * **Default:** `1` * * Must be positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#cannon_parking_speed Online documentation} */ cannon_parking_speed?: float cannon_barrel_recoil_shiftings?: readonly Vector3D[] /** * Only loaded if `cannon_barrel_recoil_shiftings` is loaded. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#cannon_barrel_recoil_shiftings_load_correction_matrix Online documentation} */ cannon_barrel_recoil_shiftings_load_correction_matrix?: readonly Vector3D[] /** * Only loaded if `cannon_barrel_recoil_shiftings` is loaded. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ArtilleryWagonPrototype.html#cannon_barrel_light_direction Online documentation} */ cannon_barrel_light_direction?: Vector3D } /** * An assembling machine - like the assembling machines 1/2/3 in the game, but you can use your own recipe categories. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html Online documentation} */ export interface AssemblingMachinePrototype extends CraftingMachinePrototype { type: "assembling-machine" | "rocket-silo" /** * **Default:** `""` * * The preset recipe of this machine. This machine does not show a recipe selection if this is set. The base game uses this for the {@linkplain https://wiki.factorio.com/Rocket_silo rocket silo}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html#fixed_recipe Online documentation} */ fixed_recipe?: RecipeID /** * Only loaded when fixed_recipe is provided. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html#fixed_quality Online documentation} */ fixed_quality?: QualityID /** * **Default:** `""` * * The locale key of the title of the GUI that is shown when the player opens the assembling machine. May not be longer than 200 characters. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html#gui_title_key Online documentation} */ gui_title_key?: string /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean default_recipe_finished_signal?: SignalIDConnector default_working_signal?: SignalIDConnector /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html#enable_logistic_control_behavior Online documentation} */ enable_logistic_control_behavior?: boolean /** * **Default:** `65535` * * Sets the maximum number of ingredients this machine can craft with. Any recipe with more ingredients than this will be unavailable in this machine. * * This only counts item ingredients, not fluid ingredients! This means if ingredient count is 2, and the recipe has 2 item ingredients and 1 fluid ingredient, it can still be crafted in the machine. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html#ingredient_count Online documentation} */ ingredient_count?: uint16 /** * **Default:** `65535` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html#max_item_product_count Online documentation} */ max_item_product_count?: uint16 circuit_connector?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] circuit_connector_flipped?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html#fluid_boxes_off_when_no_fluid_recipe Online documentation} */ fluid_boxes_off_when_no_fluid_recipe?: boolean /** * Defaults to true if `fixed_recipe` is not given. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AssemblingMachinePrototype.html#disabled_when_recipe_not_researched Online documentation} */ disabled_when_recipe_not_researched?: boolean } export interface AsteroidChunkPrototype extends Prototype { type: "asteroid-chunk" minable?: MinableProperties dying_trigger_effect?: TriggerEffect graphics_set?: AsteroidGraphicsSet /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidChunkPrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidChunkPrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidChunkPrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * **Default:** `unset` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidChunkPrototype.html#hide_from_signal_gui Online documentation} */ hide_from_signal_gui?: boolean } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html Online documentation} */ export interface AsteroidCollectorPrototype extends EntityWithOwnerPrototype { type: "asteroid-collector" /** * **Default:** `5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#arm_inventory_size Online documentation} */ arm_inventory_size?: ItemStackIndex /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#arm_inventory_size_quality_increase Online documentation} */ arm_inventory_size_quality_increase?: ItemStackIndex /** * **Default:** `39` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#inventory_size Online documentation} */ inventory_size?: ItemStackIndex /** * **Default:** `5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#inventory_size_quality_increase Online documentation} */ inventory_size_quality_increase?: ItemStackIndex /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#graphics_set Online documentation} */ graphics_set: AsteroidCollectorGraphicsSet passive_energy_usage: Energy arm_energy_usage: Energy /** * If `arm_energy_usage` is not met, attempts to move slower at the cost of `arm_slow_energy_usage`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#arm_slow_energy_usage Online documentation} */ arm_slow_energy_usage: Energy /** * **Default:** `0.1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#energy_usage_quality_scaling Online documentation} */ energy_usage_quality_scaling?: float /** * **Default:** `3` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#arm_count_base Online documentation} */ arm_count_base?: uint32 /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#arm_count_quality_scaling Online documentation} */ arm_count_quality_scaling?: uint32 /** * **Default:** `0.6` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#head_collection_radius Online documentation} */ head_collection_radius?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#collection_box_offset Online documentation} */ collection_box_offset?: float /** * **Default:** `1.5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#deposit_radius Online documentation} */ deposit_radius?: float /** * **Default:** `0.1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#arm_speed_base Online documentation} */ arm_speed_base?: float /** * **Default:** `0.1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#arm_speed_quality_scaling Online documentation} */ arm_speed_quality_scaling?: float /** * **Default:** `0.1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#arm_angular_speed_cap_base Online documentation} */ arm_angular_speed_cap_base?: float /** * **Default:** `0.1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#arm_angular_speed_cap_quality_scaling Online documentation} */ arm_angular_speed_cap_quality_scaling?: float /** * **Default:** `0.4` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#tether_size Online documentation} */ tether_size?: float /** * **Default:** `0.3` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#unpowered_arm_speed_scale Online documentation} */ unpowered_arm_speed_scale?: float /** * **Default:** `6` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#minimal_arm_swing_segment_retraction Online documentation} */ minimal_arm_swing_segment_retraction?: uint32 /** * **Default:** `0.1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#held_items_offset Online documentation} */ held_items_offset?: float /** * **Default:** `0.15` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#held_items_spread Online documentation} */ held_items_spread?: float /** * **Default:** `5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#held_items_display_count Online documentation} */ held_items_display_count?: uint8 munch_sound?: Sound deposit_sound?: Sound arm_extend_sound?: Sound arm_retract_sound?: Sound energy_source: ElectricEnergySource | VoidEnergySource /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean radius_visualisation_picture?: Sprite /** * Must be positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#collection_radius Online documentation} */ collection_radius: double circuit_connector?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] /** * **Default:** `{{1, 1, 1}}` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidCollectorPrototype.html#arm_color_gradient Online documentation} */ arm_color_gradient?: readonly Color[] } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidPrototype.html Online documentation} */ export interface AsteroidPrototype extends EntityWithOwnerPrototype { type: "asteroid" /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidPrototype.html#mass Online documentation} */ mass?: double graphics_set?: AsteroidGraphicsSet /** * Emissions cannot be larger than zero, asteroids cannot produce pollution. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AsteroidPrototype.html#emissions_per_second Online documentation} */ emissions_per_second?: Record } /** * A setting in the map creation GUI. Used by the {@link AutoplaceSpecification#control autoplace system}. * * _Prototype limited to **255** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AutoplaceControl.html Online documentation} */ export interface AutoplaceControl extends Prototype { type: "autoplace-control" /** * Controls in what tab the autoplace is shown in the map generator GUI. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AutoplaceControl.html#category Online documentation} */ category: "resource" | "terrain" | "cliff" | "enemy" /** * **Default:** `false` * * Sets whether this control's richness can be changed. The map generator GUI will only show the richness slider when the `category` is `"resource"`. * * If the autoplace control is used to generate ores, you probably want this to be true. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AutoplaceControl.html#richness Online documentation} */ richness?: boolean /** * **Default:** `true` * * Whether there is an "enable" checkbox for the autoplace control in the map generator GUI. If this is false, the autoplace control cannot be disabled from the GUI. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AutoplaceControl.html#can_be_disabled Online documentation} */ can_be_disabled?: boolean /** * **Default:** `false` * * Whether this settings being lower than default disables fight related achievements. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AutoplaceControl.html#related_to_fight_achievements Online documentation} */ related_to_fight_achievements?: boolean /** * **Default:** `false` * * Hides the autoplace control from the map generation screen. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/AutoplaceControl.html#hidden Online documentation} */ hidden?: boolean } /** * Used by {@linkplain https://wiki.factorio.com/Personal_battery personal battery}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BatteryEquipmentPrototype.html Online documentation} */ export interface BatteryEquipmentPrototype extends EquipmentPrototype { type: "battery-equipment" } /** * Entity with the ability to transfer {@link ModulePrototype module} effects to its neighboring entities. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html Online documentation} */ export interface BeaconPrototype extends EntityWithOwnerPrototype { type: "beacon" /** * The constant power usage of this beacon. * @example * energy_usage = "480kW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#energy_usage Online documentation} */ energy_usage: Energy energy_source: ElectricEnergySource | VoidEnergySource /** * The maximum distance that this beacon can supply its neighbors with its module's effects. Max distance is 64. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#supply_area_distance Online documentation} */ supply_area_distance: uint32 /** * The multiplier of the module's effects, when shared between neighbors. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#distribution_effectivity Online documentation} */ distribution_effectivity: double /** * Must be 0 or positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#distribution_effectivity_bonus_per_quality_level Online documentation} */ distribution_effectivity_bonus_per_quality_level?: double /** * The number of module slots in this beacon. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#module_slots Online documentation} */ module_slots: ItemStackIndex /** * **Default:** `false` * * If set, {@link QualityPrototype#beacon_module_slots_bonus QualityPrototype::beacon_module_slots_bonus} will be added to module slots count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#quality_affects_module_slots Online documentation} */ quality_affects_module_slots?: boolean /** * **Default:** `false` * * If set, {@link QualityPrototype#beacon_supply_area_distance_bonus QualityPrototype::beacon_supply_area_distance_bonus} will be added to supply_area_distance. Total value will be clamped to be within range `[0, 64]`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#quality_affects_supply_area_distance Online documentation} */ quality_affects_supply_area_distance?: boolean /** * The graphics for the beacon. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#graphics_set Online documentation} */ graphics_set?: BeaconGraphicsSet /** * Only loaded if `graphics_set` is not defined. * * The animation for the beacon, when in use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#animation Online documentation} */ animation?: Animation /** * Only loaded if `graphics_set` is not defined. * * The picture of the beacon when it is not on. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#base_picture Online documentation} */ base_picture?: Animation /** * Affects animation speed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#perceived_performance Online documentation} */ perceived_performance?: PerceivedPerformance radius_visualisation_picture?: Sprite /** * **Default:** `No effects are allowed` * * The types of {@link ModulePrototype modules} that a player can place inside of the beacon. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#allowed_effects Online documentation} */ allowed_effects?: EffectTypeLimitation /** * **Default:** `All module categories are allowed` * * Sets the {@link ModuleCategory module categories} that are allowed to be inserted into this machine. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#allowed_module_categories Online documentation} */ allowed_module_categories?: readonly ModuleCategoryID[] /** * Extra multiplier applied to the effects received from beacon by the effect receiver based on amount of beacons that are in range of that effect receiver. * * If there are more beacons that reach the effect receiver than there are entries in this array, then the last entry in the array is used for the multiplier. * * If this is not defined, then an implicit profile of `{1}` will be used. * @example * profile = {1, 0} -- entities do not receive any effects when they are in range of more than one beacon * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#profile Online documentation} */ profile?: readonly double[] /** * **Default:** `"total"` * * The beacon counter used by effect receiver when deciding which sample to take from `profile`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeaconPrototype.html#beacon_counter Online documentation} */ beacon_counter?: "total" | "same_type" } /** * Used as a laser beam. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeamPrototype.html Online documentation} */ export interface BeamPrototype extends EntityPrototype { type: "beam" action?: Trigger width: float /** * Damage interval can't be 0. A value of 1 will cause the attack to be applied each tick. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeamPrototype.html#damage_interval Online documentation} */ damage_interval: uint32 target_offset?: Vector /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeamPrototype.html#random_target_offset Online documentation} */ random_target_offset?: boolean /** * **Default:** `false` * * Whether this beams should trigger its action every `damage_interval`. If false, the action is instead triggered when its owner triggers shooting. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeamPrototype.html#action_triggered_automatically Online documentation} */ action_triggered_automatically?: boolean graphics_set: BeamGraphicsSet } /** * Used by {@linkplain https://wiki.factorio.com/Belt_immunity_equipment belt immunity equipment}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeltImmunityEquipmentPrototype.html Online documentation} */ export interface BeltImmunityEquipmentPrototype extends EquipmentPrototype { type: "belt-immunity-equipment" /** * The continuous power consumption of the belt immunity equipment. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BeltImmunityEquipmentPrototype.html#energy_consumption Online documentation} */ energy_consumption: Energy } /** * A {@linkplain https://wiki.factorio.com/Blueprint_book blueprint book}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BlueprintBookPrototype.html Online documentation} */ export interface BlueprintBookPrototype extends Omit { type: "blueprint-book" /** * The inventory size of the item. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BlueprintBookPrototype.html#inventory_size Online documentation} */ inventory_size: ItemStackIndex | "dynamic" /** * Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `"not-stackable"` flag is set. * @example * stack_size = 1 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BlueprintBookPrototype.html#stack_size Online documentation} */ stack_size: 1 /** * **Default:** `true` * * If the item will draw its label when held in the cursor in place of the item count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BlueprintBookPrototype.html#draw_label_for_cursor_render Online documentation} */ draw_label_for_cursor_render?: boolean } /** * A {@linkplain https://wiki.factorio.com/Blueprint blueprint}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BlueprintItemPrototype.html Online documentation} */ export interface BlueprintItemPrototype extends SelectionToolPrototype { type: "blueprint" /** * Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `"not-stackable"` flag is set. * @example * stack_size = 1 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BlueprintItemPrototype.html#stack_size Online documentation} */ stack_size: 1 /** * **Default:** `true` * * Whether the item will draw its label when held in the cursor in place of the item count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BlueprintItemPrototype.html#draw_label_for_cursor_render Online documentation} */ draw_label_for_cursor_render?: boolean /** * The {@link SelectionModeData#mode SelectionModeData::mode} is hardcoded to `"blueprint"`. * * The filters are parsed, but then ignored and forced to be empty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BlueprintItemPrototype.html#select Online documentation} */ select: SelectionModeData /** * The {@link SelectionModeData#mode SelectionModeData::mode} is hardcoded to `"blueprint"`. * * The filters are parsed, but then ignored and forced to be empty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BlueprintItemPrototype.html#alt_select Online documentation} */ alt_select: SelectionModeData /** * **Default:** `false` * * This property is hardcoded to `false`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BlueprintItemPrototype.html#always_include_tiles Online documentation} */ always_include_tiles?: boolean } /** * A {@linkplain https://wiki.factorio.com/Boiler boiler}. It heats fluid and optionally outputs it as a different fluid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BoilerPrototype.html Online documentation} */ export interface BoilerPrototype extends EntityWithOwnerPrototype { type: "boiler" /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BoilerPrototype.html#pictures Online documentation} */ pictures?: BoilerPictureSet energy_source: EnergySource /** * The input fluid box. * * If `mode` is `"heat-fluid-inside"`, the fluid is heated up directly in this fluidbox. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BoilerPrototype.html#fluid_box Online documentation} */ fluid_box: FluidBox /** * The output fluid box. * * If `mode` is `"output-to-separate-pipe"` and this has a {@link FluidBox#filter filter}, the heated input fluid is converted to the output fluid that is set in the filter. The conversion ratio is based on the {@link FluidPrototype#heat_capacity heat capacity} of the fluids: `output_fluid_amount = input_fluid_amount * (output_fluid_heat_capacity / input_fluid_heat_capacity)` * * If `mode` is `"heat-fluid-inside"`, this fluidbox is unused. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BoilerPrototype.html#output_fluid_box Online documentation} */ output_fluid_box: FluidBox energy_consumption: Energy /** * Controls for how many ticks the boiler will show the fire and fire_glow after the energy source runs out of energy. * * Note that `fire` and `fire_glow` alpha is set to the light intensity of the energy source, so 0 light intensity means the fire is invisible. For burner energy sources, the light intensity will reach zero rather quickly after the boiler runs out of fuel, effectively capping the time that `fire` and `fire_glow` will be shown after the boiler runs out of fuel. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BoilerPrototype.html#burning_cooldown Online documentation} */ burning_cooldown: uint16 /** * Only loaded, and mandatory if `mode` is `"output-to-separate-pipe"`. This is the temperature that the input fluid must reach to be moved to the output fluid box. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BoilerPrototype.html#target_temperature Online documentation} */ target_temperature?: float /** * **Default:** `false` * * If this is set to false, `fire_glow` alpha is always 1 instead of being controlled by the light intensity of the energy source. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BoilerPrototype.html#fire_glow_flicker_enabled Online documentation} */ fire_glow_flicker_enabled?: boolean /** * **Default:** `false` * * If this is set to false, `fire` alpha is always 1 instead of being controlled by the light intensity of the energy source. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BoilerPrototype.html#fire_flicker_enabled Online documentation} */ fire_flicker_enabled?: boolean /** * **Default:** `"heat-fluid-inside"` * * In the `"output-to-separate-pipe"` mode, fluid is transferred from the `fluid_box` to the `output_fluid_box` when enough energy is available to {@link FluidPrototype#heat_capacity heat} the input fluid to the `target_temperature`. Setting a filter on the `output_fluid_box` means that instead of the heated input fluid getting moved to the output, it is converted to the filtered fluid in a ratio based on the heat capacity of the fluids: `output_fluid_amount = input_fluid_amount * (output_fluid_heat_capacity / input_fluid_heat_capacity)` * * In the `"heat-fluid-inside"` mode, fluid in the `fluid_box` is continuously heated from the input temperature up to its {@link FluidPrototype#max_temperature FluidPrototype::max_temperature}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BoilerPrototype.html#mode Online documentation} */ mode?: "heat-fluid-inside" | "output-to-separate-pipe" } /** * This prototype is used for receiving an achievement when the player builds an entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BuildEntityAchievementPrototype.html Online documentation} */ export interface BuildEntityAchievementPrototype extends AchievementPrototype { type: "build-entity-achievement" /** * This will trigger the achievement, if this entity is placed. * @example * to_build = "locomotive" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BuildEntityAchievementPrototype.html#to_build Online documentation} */ to_build: EntityID /** * **Default:** `1` * * How many entities need to be built. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BuildEntityAchievementPrototype.html#amount Online documentation} */ amount?: uint32 /** * **Default:** `false` * * If this is false, the player carries over their statistics from this achievement through all their saves. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BuildEntityAchievementPrototype.html#limited_to_one_game Online documentation} */ limited_to_one_game?: boolean /** * **Default:** ``math.huge`` * * The achievement must be completed within this time limit. * @example * within = 60 * 60 * 60 * 8 -- 8 hours * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BuildEntityAchievementPrototype.html#within Online documentation} */ within?: MapTick } /** * An entity that produces power from a burner energy source. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BurnerGeneratorPrototype.html Online documentation} */ export interface BurnerGeneratorPrototype extends EntityWithOwnerPrototype { type: "burner-generator" /** * The output energy source of the generator. Any emissions specified on this energy source are ignored, they must be specified on `burner`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BurnerGeneratorPrototype.html#energy_source Online documentation} */ energy_source: ElectricEnergySource /** * The input energy source of the generator. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BurnerGeneratorPrototype.html#burner Online documentation} */ burner: BurnerEnergySource /** * Plays when the generator is active. `idle_animation` must have the same frame count as animation. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BurnerGeneratorPrototype.html#animation Online documentation} */ animation?: Animation4Way /** * How much energy this generator can produce. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BurnerGeneratorPrototype.html#max_power_output Online documentation} */ max_power_output: Energy /** * Plays when the generator is inactive. Idle animation must have the same frame count as `animation`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BurnerGeneratorPrototype.html#idle_animation Online documentation} */ idle_animation?: Animation4Way /** * **Default:** `false` * * Whether the `idle_animation` should also play when the generator is active. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BurnerGeneratorPrototype.html#always_draw_idle_animation Online documentation} */ always_draw_idle_animation?: boolean /** * Affects animation speed and working sound. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BurnerGeneratorPrototype.html#perceived_performance Online documentation} */ perceived_performance?: PerceivedPerformance } /** * Set of data affecting tooltips, looks of gui slots etc when {@link BurnerEnergySource burner} is not supposed to be burning items but eating them. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/BurnerUsagePrototype.html Online documentation} */ export interface BurnerUsagePrototype extends Prototype { type: "burner-usage" empty_slot_sprite: Sprite empty_slot_caption: LocalisedString empty_slot_description?: LocalisedString icon: Sprite no_fuel_status?: LocalisedString accepted_fuel_key: string burned_in_key: string } /** * A capsule, for example a {@linkplain https://wiki.factorio.com/Combat_robot_capsules combat robot capsule} or the {@linkplain https://wiki.factorio.com/Raw_fish raw fish}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CapsulePrototype.html Online documentation} */ export interface CapsulePrototype extends ItemPrototype { type: "capsule" capsule_action: CapsuleAction /** * Color of the range radius that is shown around the player when they hold the capsule. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CapsulePrototype.html#radius_color Online documentation} */ radius_color?: Color } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CaptureRobotPrototype.html Online documentation} */ export interface CaptureRobotPrototype extends FlyingRobotPrototype { type: "capture-robot" /** * **Default:** `1` * * Must be >= 0.001. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CaptureRobotPrototype.html#capture_speed Online documentation} */ capture_speed?: double /** * **Default:** `1` * * Must be >= 0.0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CaptureRobotPrototype.html#search_radius Online documentation} */ search_radius?: double destroy_action?: Trigger capture_animation?: Animation } /** * Entity with specialized properties for acceleration, braking, and turning. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html Online documentation} */ export interface CarPrototype extends VehiclePrototype { type: "car" /** * Animation speed 1 means 1 frame per tile. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#animation Online documentation} */ animation?: RotatedAnimation /** * Modifies the efficiency of energy transfer from burner output to wheels. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#effectivity Online documentation} */ effectivity: double consumption: Energy rotation_speed: double /** * Vehicle will snap the vertical, horizontal or diagonal axis if it's within this angle * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#rotation_snap_angle Online documentation} */ rotation_snap_angle: double energy_source: BurnerEnergySource | VoidEnergySource /** * Animation speed 1 means 1 frame per tile. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#turret_animation Online documentation} */ turret_animation?: RotatedAnimation /** * Must have the same frame count as `animation`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#light_animation Online documentation} */ light_animation?: RotatedAnimation /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * **Default:** `false` * * If this car prototype uses tank controls to drive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#tank_driving Online documentation} */ tank_driving?: boolean /** * **Default:** `false` * * If this car prototype keeps the trunk inventory sorted. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#auto_sort_inventory Online documentation} */ auto_sort_inventory?: boolean /** * **Default:** `false` * * If this car is immune to movement by belts. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#has_belt_immunity Online documentation} */ has_belt_immunity?: boolean /** * **Default:** `false` * * If this car gets damaged by driving over/against {@link TreePrototype trees}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#immune_to_tree_impacts Online documentation} */ immune_to_tree_impacts?: boolean /** * **Default:** `false` * * If this car gets damaged by driving over/against {@link SimpleEntityPrototype#count_as_rock_for_filtered_deconstruction rocks}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#immune_to_rock_impacts Online documentation} */ immune_to_rock_impacts?: boolean /** * **Default:** `true` * * If this car gets damaged by driving against {@link CliffPrototype cliffs}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#immune_to_cliff_impacts Online documentation} */ immune_to_cliff_impacts?: boolean /** * **Default:** `0.01` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#turret_rotation_speed Online documentation} */ turret_rotation_speed?: float /** * **Default:** `60` * * Timeout in ticks specifying how long the turret must be inactive to return to the default position. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#turret_return_timeout Online documentation} */ turret_return_timeout?: uint32 /** * Size of the car inventory. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#inventory_size Online documentation} */ inventory_size: ItemStackIndex /** * **Default:** `0` * * If set to 0 then the car will not have a Logistics tab. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#trash_inventory_size Online documentation} */ trash_inventory_size?: ItemStackIndex light?: LightDefinition sound_no_fuel?: Sound /** * **Default:** `0.3` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#darkness_to_render_light_animation Online documentation} */ darkness_to_render_light_animation?: float track_particle_triggers?: FootstepTriggerEffectList /** * The names of the {@link GunPrototype}s this car prototype uses. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CarPrototype.html#guns Online documentation} */ guns?: readonly ItemID[] } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoBayPrototype.html Online documentation} */ export interface CargoBayPrototype extends EntityWithOwnerPrototype { type: "cargo-bay" graphics_set?: CargoBayConnectableGraphicsSet /** * A special variant which renders on space platforms. If not specified, the game will fall back to the regular graphics set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoBayPrototype.html#platform_graphics_set Online documentation} */ platform_graphics_set?: CargoBayConnectableGraphicsSet /** * Cannot be 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoBayPrototype.html#inventory_size_bonus Online documentation} */ inventory_size_bonus: ItemStackIndex hatch_definitions?: readonly CargoHatchDefinition[] /** * **Default:** `2` * * Has to be 2 for 2x2 grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoBayPrototype.html#build_grid_size Online documentation} */ build_grid_size?: 2 } export interface CargoLandingPadPrototype extends EntityWithOwnerPrototype { type: "cargo-landing-pad" graphics_set?: CargoBayConnectableGraphicsSet inventory_size: ItemStackIndex /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoLandingPadPrototype.html#trash_inventory_size Online documentation} */ trash_inventory_size?: ItemStackIndex /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoLandingPadPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoLandingPadPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoLandingPadPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition cargo_station_parameters: CargoStationParameters /** * Drawn when a robot brings/takes items from this landing pad. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoLandingPadPrototype.html#robot_animation Online documentation} */ robot_animation?: Animation /** * The offset from the center of this landing pad where a robot visually brings/takes items. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoLandingPadPrototype.html#robot_landing_location_offset Online documentation} */ robot_landing_location_offset?: Vector /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoLandingPadPrototype.html#robot_opened_duration Online documentation} */ robot_opened_duration?: uint8 /** * Played when a robot brings/takes items from this landing pad. Only loaded if `robot_animation` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoLandingPadPrototype.html#robot_animation_sound Online documentation} */ robot_animation_sound?: Sound /** * **Default:** `0` * * In chunks. The radius of how many chunks this cargo landing pad charts around itself. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoLandingPadPrototype.html#radar_range Online documentation} */ radar_range?: uint32 radar_visualisation_color?: Color } export interface CargoPodPrototype extends EntityWithOwnerPrototype { type: "cargo-pod" /** * Has to be of type 'pod-catalogue'. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoPodPrototype.html#default_graphic Online documentation} */ default_graphic?: ProcessionGraphic /** * Has to be of type 'pod-catalogue'. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoPodPrototype.html#default_shadow_graphic Online documentation} */ default_shadow_graphic?: ProcessionGraphic procession_graphic_catalogue?: ProcessionGraphicCatalogue procession_audio_catalogue?: ProcessionAudioCatalogue shadow_slave_entity?: EntityID inventory_size: ItemStackIndex spawned_container: EntityID impact_trigger?: Trigger } /** * A {@linkplain https://wiki.factorio.com/Cargo_wagon cargo wagon}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoWagonPrototype.html Online documentation} */ export interface CargoWagonPrototype extends RollingStockPrototype { type: "cargo-wagon" | "infinity-cargo-wagon" /** * Size of the inventory of the wagon. The inventory can be limited using the red bar and filtered. This functionality cannot be turned off. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoWagonPrototype.html#inventory_size Online documentation} */ inventory_size: ItemStackIndex /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CargoWagonPrototype.html#quality_affects_inventory_size Online documentation} */ quality_affects_inventory_size?: boolean } /** * Jumps between targets and applies a {@link Trigger} to them. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChainActiveTriggerPrototype.html Online documentation} */ export interface ChainActiveTriggerPrototype extends ActiveTriggerPrototype { type: "chain-active-trigger" /** * The trigger to apply when jumping to a new target. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChainActiveTriggerPrototype.html#action Online documentation} */ action?: Trigger /** * **Default:** `5` * * Max number of jumps per trigger. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChainActiveTriggerPrototype.html#max_jumps Online documentation} */ max_jumps?: uint32 /** * **Default:** `5` * * Max length of jumps. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChainActiveTriggerPrototype.html#max_range_per_jump Online documentation} */ max_range_per_jump?: double /** * **Default:** `infinity` * * Max distance jumps are allowed to travel away from the original target. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChainActiveTriggerPrototype.html#max_range Online documentation} */ max_range?: double /** * **Default:** `0` * * Tick delay between each jump. `0` means that all jumps are instantaneous. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChainActiveTriggerPrototype.html#jump_delay_ticks Online documentation} */ jump_delay_ticks?: MapTick /** * **Default:** `0` * * Chance that a new fork will spawn after each jump. `0` for 0% chance and `1` for 100% chance. * * Must be between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChainActiveTriggerPrototype.html#fork_chance Online documentation} */ fork_chance?: double /** * **Default:** `0.1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChainActiveTriggerPrototype.html#fork_chance_increase_per_quality_level Online documentation} */ fork_chance_increase_per_quality_level?: double /** * **Default:** `1` * * Maximum number of forks that can spawn from a single jump. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChainActiveTriggerPrototype.html#max_forks_per_jump Online documentation} */ max_forks_per_jump?: uint32 /** * **Default:** `max uint32` * * Maximum number of forks allowed to spawn for the entire chain. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChainActiveTriggerPrototype.html#max_forks Online documentation} */ max_forks?: uint32 } /** * This prototype is used for receiving an achievement when the player changes to a surface. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChangedSurfaceAchievementPrototype.html Online documentation} */ export interface ChangedSurfaceAchievementPrototype extends AchievementPrototype { type: "change-surface-achievement" /** * This will trigger the achievement, if the player changes to this surface. * @example * surface = "fulgora" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ChangedSurfaceAchievementPrototype.html#surface Online documentation} */ surface?: string } /** * The corpse of a {@link CharacterPrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterCorpsePrototype.html Online documentation} */ export interface CharacterCorpsePrototype extends EntityPrototype { type: "character-corpse" /** * 0 for infinite. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterCorpsePrototype.html#time_to_live Online documentation} */ time_to_live: uint32 /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterCorpsePrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * Mandatory if `picture` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterCorpsePrototype.html#pictures Online documentation} */ pictures?: AnimationVariations /** * Mandatory if `pictures` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterCorpsePrototype.html#picture Online documentation} */ picture?: Animation /** * Table of key value pairs, the keys are armor names and the values are numbers. The number is the Animation that is associated with the armor, e.g. using `1` will associate the armor with the first Animation in the pictures table. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterCorpsePrototype.html#armor_picture_mapping Online documentation} */ armor_picture_mapping?: Record } /** * Entity that you move around on the screen during the campaign and freeplay. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html Online documentation} */ export interface CharacterPrototype extends EntityWithOwnerPrototype { type: "character" /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#crafting_speed Online documentation} */ crafting_speed?: double mining_speed: double running_speed: double distance_per_frame: double maximum_corner_sliding_distance: double /** * The sound played when the character's health is low. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#heartbeat Online documentation} */ heartbeat?: Sound /** * Number of slots in the main inventory. May be 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#inventory_size Online documentation} */ inventory_size: ItemStackIndex /** * **Default:** `3` * * Must be between 1 and 15. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#guns_inventory_size Online documentation} */ guns_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 /** * List of positions in the mining with tool animation when the mining sound and mining particles are created. * @example * mining_with_tool_particles_animation_positions = {28} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#mining_with_tool_particles_animation_positions Online documentation} */ mining_with_tool_particles_animation_positions: readonly float[] /** * List of positions in the running animation when the walking sound is played. * @example * running_sound_animation_positions = {14, 29} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#running_sound_animation_positions Online documentation} */ running_sound_animation_positions: readonly float[] moving_sound_animation_positions: readonly float[] animations: readonly CharacterArmorAnimation[] /** * Names of the crafting categories the character can craft recipes from. The built-in categories can be found {@linkplain https://wiki.factorio.com/Data.raw#recipe-category here}. See also {@link RecipeCategory}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#crafting_categories Online documentation} */ crafting_categories?: readonly RecipeCategoryID[] /** * Names of the resource categories the character can mine resources from. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#mining_categories Online documentation} */ mining_categories?: readonly ResourceCategoryID[] light?: LightDefinition /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#flying_bob_speed Online documentation} */ flying_bob_speed?: float /** * **Default:** `0` * * The search radius for a non-colliding position to move the player to if they are grounded mid-flight. Must be >= 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#grounded_landing_search_radius Online documentation} */ grounded_landing_search_radius?: double /** * **Default:** `3` * * Must be >= 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#enter_vehicle_distance Online documentation} */ enter_vehicle_distance?: double /** * **Default:** `1.5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#tool_attack_distance Online documentation} */ tool_attack_distance?: double /** * **Default:** `10` * * Time in seconds. Must be positive * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#respawn_time Online documentation} */ respawn_time?: uint32 /** * **Default:** `false` * * Whether this character is moved by belts when standing on them. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#has_belt_immunity Online documentation} */ has_belt_immunity?: boolean /** * Name of the character corpse that is spawned when this character dies. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#character_corpse Online documentation} */ character_corpse?: EntityID /** * This collision mask is used when the character is flying. * * Defaults to the mask from {@link UtilityConstants#default_collision_masks UtilityConstants::default_collision_masks} when indexed by `"character/flying"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#flying_collision_mask Online documentation} */ flying_collision_mask?: CollisionMaskConnector tool_attack_result?: Trigger /** * Triggered every tick of the running animation. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#footstep_particle_triggers Online documentation} */ footstep_particle_triggers?: FootstepTriggerEffectList /** * Triggered when the running animation (`animations`) rolls over the frames defined in `right_footprint_frames` and `left_footprint_frames`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#synced_footstep_particle_triggers Online documentation} */ synced_footstep_particle_triggers?: FootstepTriggerEffectList /** * Triggered when the running animation (`animations`) rolls over the frames defined in `right_footprint_frames` and `left_footprint_frames`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#footprint_particles Online documentation} */ footprint_particles?: readonly FootprintParticle[] /** * Offset from the center of the entity for the left footprint. Used by `footprint_particles`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#left_footprint_offset Online documentation} */ left_footprint_offset?: Vector /** * Offset from the center of the entity for the right footprint. Used by `footprint_particles`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#right_footprint_offset Online documentation} */ right_footprint_offset?: Vector /** * The frames in the running animation (`animations`) where the right foot touches the ground. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#right_footprint_frames Online documentation} */ right_footprint_frames?: readonly float[] /** * The frames in the running animation (`animations`) where the left foot touches the ground. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#left_footprint_frames Online documentation} */ left_footprint_frames?: readonly float[] /** * **Default:** `true` * * Whether this prototype should be a high priority target for enemy forces. See {@linkplain https://wiki.factorio.com/Military_units_and_structures Military units and structures}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CharacterPrototype.html#is_military_target Online documentation} */ is_military_target?: boolean } /** * A {@linkplain https://wiki.factorio.com/Cliff cliff}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CliffPrototype.html Online documentation} */ export interface CliffPrototype extends EntityPrototype { type: "cliff" /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CliffPrototype.html#orientations Online documentation} */ orientations: OrientedCliffPrototypeSet grid_size: Vector grid_offset: Vector /** * Name of a capsule that has a robot_action to explode cliffs. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CliffPrototype.html#cliff_explosive Online documentation} */ cliff_explosive?: ItemID place_as_crater?: CraterPlacementDefinition } /** * A collision layer. Used for {@link CollisionMaskConnector collision masks}. * * It's recommend to use underscores instead of dashes in `name` so that the name can easily be used as a table key when defining collision masks. * * _Prototype limited to **55** total instances_ * @example * { * type = "collision-layer", * name = "is_lower_object" * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CollisionLayerPrototype.html Online documentation} */ export interface CollisionLayerPrototype extends Prototype { type: "collision-layer" } /** * This prototype is used for receiving an achievement when the player has a certain robot follower count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombatRobotCountAchievementPrototype.html Online documentation} */ export interface CombatRobotCountAchievementPrototype extends AchievementPrototype { type: "combat-robot-count-achievement" /** * **Default:** `1` * * This will trigger the achievement, if player's current robot count is over this amount. * @example * count = 100 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombatRobotCountAchievementPrototype.html#count Online documentation} */ count?: uint32 } /** * A combat robot. Can attack enemies. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombatRobotPrototype.html Online documentation} */ export interface CombatRobotPrototype extends FlyingRobotPrototype { type: "combat-robot" time_to_live: uint32 attack_parameters: AttackParameters idle?: RotatedAnimation shadow_idle?: RotatedAnimation in_motion?: RotatedAnimation shadow_in_motion?: RotatedAnimation /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombatRobotPrototype.html#range_from_player Online documentation} */ range_from_player?: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombatRobotPrototype.html#friction Online documentation} */ friction?: double /** * Applied when the combat robot expires (runs out of `time_to_live`). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombatRobotPrototype.html#destroy_action Online documentation} */ destroy_action?: Trigger /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombatRobotPrototype.html#follows_player Online documentation} */ follows_player?: boolean light?: LightDefinition } /** * Abstract base type for decider and arithmetic combinators. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombinatorPrototype.html Online documentation} */ export interface CombinatorPrototype extends EntityWithOwnerPrototype { type: "arithmetic-combinator" | "decider-combinator" | "selector-combinator" /** * Defines how this combinator gets energy. The emissions set on the energy source are ignored so combinators cannot produce pollution. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombinatorPrototype.html#energy_source Online documentation} */ energy_source: ElectricEnergySource | VoidEnergySource /** * @example * active_energy_usage = "1kW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombinatorPrototype.html#active_energy_usage Online documentation} */ active_energy_usage: Energy sprites?: Sprite4Way frozen_patch?: Sprite4Way activity_led_sprites?: Sprite4Way input_connection_bounding_box: BoundingBox output_connection_bounding_box: BoundingBox activity_led_light_offsets: readonly [Vector, Vector, Vector, Vector] screen_light_offsets: readonly [Vector, Vector, Vector, Vector] input_connection_points: readonly [ WireConnectionPoint, WireConnectionPoint, WireConnectionPoint, WireConnectionPoint, ] output_connection_points: readonly [ WireConnectionPoint, WireConnectionPoint, WireConnectionPoint, WireConnectionPoint, ] activity_led_light?: LightDefinition screen_light?: LightDefinition /** * **Default:** `5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombinatorPrototype.html#activity_led_hold_time Online documentation} */ activity_led_hold_time?: uint8 /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombinatorPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombinatorPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombinatorPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean /** * Emissions cannot be larger than zero, combinators cannot produce pollution. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CombinatorPrototype.html#emissions_per_second Online documentation} */ emissions_per_second?: Record } export interface CompleteObjectiveAchievementPrototype extends AchievementPrototypeWithCondition { type: "complete-objective-achievement" /** * **Default:** ``math.huge`` * * The achievement must be completed within this time limit. * @example * within = 60 * 60 * 60 * 8 -- 8 hours * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CompleteObjectiveAchievementPrototype.html#within Online documentation} */ within?: MapTick } /** * A {@linkplain https://wiki.factorio.com/Constant_combinator constant combinator}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstantCombinatorPrototype.html Online documentation} */ export interface ConstantCombinatorPrototype extends EntityWithOwnerPrototype { type: "constant-combinator" sprites?: Sprite4Way activity_led_sprites?: Sprite4Way activity_led_light_offsets: readonly [Vector, Vector, Vector, Vector] circuit_wire_connection_points: readonly [ WireConnectionPoint, WireConnectionPoint, WireConnectionPoint, WireConnectionPoint, ] activity_led_light?: LightDefinition /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstantCombinatorPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstantCombinatorPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstantCombinatorPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean /** * **Default:** `0` * * When not zero, toggle entity will enable constant combinator for that amount of ticks and then turn it off. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstantCombinatorPrototype.html#pulse_duration Online documentation} */ pulse_duration?: uint32 } /** * This prototype is used for receiving an achievement when the player constructs enough entities with construction robots. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstructWithRobotsAchievementPrototype.html Online documentation} */ export interface ConstructWithRobotsAchievementPrototype extends AchievementPrototype { type: "construct-with-robots-achievement" /** * If this is false, the player carries over their statistics from this achievement through all their saves. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstructWithRobotsAchievementPrototype.html#limited_to_one_game Online documentation} */ limited_to_one_game: boolean /** * **Default:** `0` * * This will trigger the achievement, if enough entities were placed using construction robots. * @example * amount = 100 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstructWithRobotsAchievementPrototype.html#amount Online documentation} */ amount?: uint32 /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstructWithRobotsAchievementPrototype.html#more_than_manually Online documentation} */ more_than_manually?: boolean } /** * A {@linkplain https://wiki.factorio.com/Construction_robot construction robot}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstructionRobotPrototype.html Online documentation} */ export interface ConstructionRobotPrototype extends RobotWithLogisticInterfacePrototype { type: "construction-robot" construction_vector: Vector working?: RotatedAnimation shadow_working?: RotatedAnimation smoke?: Animation sparks?: AnimationVariations repairing_sound?: Sound /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstructionRobotPrototype.html#mined_sound_volume_modifier Online documentation} */ mined_sound_volume_modifier?: float working_light?: LightDefinition /** * **Default:** `Empty = `{{0, 0}, {0, 0}}`` * * Must have a collision box size of zero. * @example * collision_box = {{0, 0}, {0, 0}} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ConstructionRobotPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } /** * A generic container, such as a chest. Cannot be rotated. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ContainerPrototype.html Online documentation} */ export interface ContainerPrototype extends EntityWithOwnerPrototype { type: "container" | "infinity-container" | "logistic-container" | "temporary-container" /** * The number of slots in this container. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ContainerPrototype.html#inventory_size Online documentation} */ inventory_size: ItemStackIndex /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ContainerPrototype.html#quality_affects_inventory_size Online documentation} */ quality_affects_inventory_size?: boolean /** * The picture displayed for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ContainerPrototype.html#picture Online documentation} */ picture?: Sprite /** * **Default:** `"with_bar"` * * Determines the type of inventory that this container has. Whether the inventory has a limiter bar, can be filtered (like cargo wagons), uses a custom stack size for contained item stacks (like artillery wagon), or uses a weight limit (like space age rocket silo). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ContainerPrototype.html#inventory_type Online documentation} */ inventory_type?: "normal" | "with_bar" | "with_filters_and_bar" | "with_custom_stack_size" | "with_weight_limit" /** * Only used when `inventory_type` is `"with_custom_stack_size"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ContainerPrototype.html#inventory_properties Online documentation} */ inventory_properties?: InventoryWithCustomStackSizeSpecification /** * **Default:** `0` * * Only used when `inventory_type` is `"with_weight_limit"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ContainerPrototype.html#inventory_weight_limit Online documentation} */ inventory_weight_limit?: Weight /** * **Default:** `0` * * The maximum circuit wire distance for this container. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ContainerPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ContainerPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ContainerPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition /** * **Default:** `"normal"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ContainerPrototype.html#default_status Online documentation} */ default_status?: EntityStatus } /** * A copy-paste or cut-paste tool. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CopyPasteToolPrototype.html Online documentation} */ export interface CopyPasteToolPrototype extends SelectionToolPrototype { type: "copy-paste-tool" /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CopyPasteToolPrototype.html#cuts Online documentation} */ cuts?: boolean /** * Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `"not-stackable"` flag is set. * @example * stack_size = 1 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CopyPasteToolPrototype.html#stack_size Online documentation} */ stack_size: 1 /** * **Default:** `false` * * This property is hardcoded to `false`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CopyPasteToolPrototype.html#always_include_tiles Online documentation} */ always_include_tiles?: boolean /** * The filters are parsed, but then ignored and forced to be empty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CopyPasteToolPrototype.html#select Online documentation} */ select: SelectionModeData /** * The filters are parsed, but then ignored and forced to be empty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CopyPasteToolPrototype.html#alt_select Online documentation} */ alt_select: SelectionModeData } /** * Used for corpses, for example the remnants when destroying buildings. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html Online documentation} */ export interface CorpsePrototype extends EntityPrototype { type: "corpse" | "rail-remnants" /** * **Default:** `1` * * Multiplier for `time_before_shading_off` and `time_before_removed`. Must be positive. * * Controls the speed of the animation: `1 ÷ dying_speed = duration of the animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#dying_speed Online documentation} */ dying_speed?: float /** * **Default:** `1` * * Controls the speed of the splash animation: `1 ÷ splash_speed = duration of the splash animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#splash_speed Online documentation} */ splash_speed?: float /** * **Default:** `60 * 15 (15 seconds)` * * Controls how long the corpse takes to fade, as in how long it takes to get from no transparency to full transparency/removed. This time is *not* added to `time_before_removed`, it is instead subtracted from it. So by default, the corpse starts fading about 15 seconds before it gets removed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#time_before_shading_off Online documentation} */ time_before_shading_off?: uint32 /** * **Default:** `60 * 120 (120 seconds)` * * Time in ticks this corpse lasts. May not be 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#time_before_removed Online documentation} */ time_before_removed?: uint32 /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#expires Online documentation} */ expires?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#protected_from_tile_building Online documentation} */ protected_from_tile_building?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#remove_on_entity_placement Online documentation} */ remove_on_entity_placement?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#remove_on_tile_placement Online documentation} */ remove_on_tile_placement?: boolean /** * **Default:** `true` * * If true, and the collision box is unset, this will take the collision box of the first entity that uses this corpse. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#auto_setup_collision_box Online documentation} */ auto_setup_collision_box?: boolean /** * **Default:** `"corpse"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#final_render_layer Online documentation} */ final_render_layer?: RenderLayer /** * **Default:** `"ground-patch"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#ground_patch_render_layer Online documentation} */ ground_patch_render_layer?: RenderLayer /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#animation_render_layer Online documentation} */ animation_render_layer?: RenderLayer /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#splash_render_layer Online documentation} */ splash_render_layer?: RenderLayer /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#animation_overlay_render_layer Online documentation} */ animation_overlay_render_layer?: RenderLayer /** * **Default:** `"corpse"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#animation_overlay_final_render_layer Online documentation} */ animation_overlay_final_render_layer?: RenderLayer /** * **Default:** `1` * * Defines after which frame in the `animation` the `direction_shuffle` should be applied. Can be set to `0`, frames are 1-indexed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#shuffle_directions_at_frame Online documentation} */ shuffle_directions_at_frame?: uint8 /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#use_tile_color_for_ground_patch_tint Online documentation} */ use_tile_color_for_ground_patch_tint?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#use_decay_layer Online documentation} */ use_decay_layer?: boolean /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#underwater_layer_offset Online documentation} */ underwater_layer_offset?: int8 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#ground_patch_fade_in_delay Online documentation} */ ground_patch_fade_in_delay?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#ground_patch_fade_in_speed Online documentation} */ ground_patch_fade_in_speed?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#ground_patch_fade_out_start Online documentation} */ ground_patch_fade_out_start?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#decay_frame_transition_duration Online documentation} */ decay_frame_transition_duration?: float /** * The dying animation. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#animation Online documentation} */ animation?: RotatedAnimationVariations /** * Variation count must be the same as `animation` variation count. Direction count must be the same as `animation` direction count. Frame count must be the same as `animation` frame count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#animation_overlay Online documentation} */ animation_overlay?: RotatedAnimationVariations decay_animation?: RotatedAnimationVariations splash?: AnimationVariations ground_patch?: AnimationVariations ground_patch_higher?: AnimationVariations ground_patch_decay?: AnimationVariations underwater_patch?: RotatedSprite /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#ground_patch_fade_out_duration Online documentation} */ ground_patch_fade_out_duration?: float /** * **Default:** `No direction shuffle` * * May not be an empty array. May not be used if there is no `animation` defined. * * The inner arrays are called "groups" and must all have the same size. * * The indices map to the directions of `animation` and they are 1-indexed. After the `shuffle_directions_at_frame` frame of the `animation`, these indices are used as the direction when choosing which frame to render. The chosen shuffled direction can be any direction in the same group as the non-shuffled direction. Which direction is chosen from the group depends on the shuffle variation which is `dying_graphics_variation % group_size`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CorpsePrototype.html#direction_shuffle Online documentation} */ direction_shuffle?: readonly (readonly uint16[])[] } /** * The abstract basis of the assembling machines and furnaces. Contains the properties that both of them have. * * Note that a crafting machine cannot be rotated unless it has at least one of the following: a fluid box, a heat energy source, a fluid energy source, or a non-square collision box. Crafting machines with non-square collision boxes can only be rotated before placement, not after. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html Online documentation} */ export interface CraftingMachinePrototype extends EntityWithOwnerPrototype { type: "assembling-machine" | "furnace" | "rocket-silo" /** * **Default:** `false` * * When set, {@link QualityPrototype#crafting_machine_energy_usage_multiplier QualityPrototype::crafting_machine_energy_usage_multiplier} will be applied to energy_usage. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#quality_affects_energy_usage Online documentation} */ quality_affects_energy_usage?: boolean /** * Sets how much energy this machine uses while crafting. Energy usage has to be positive. * @example * energy_usage = "90kW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#energy_usage Online documentation} */ energy_usage: Energy /** * How fast this crafting machine can craft. 1 means that for example a 1 second long recipe take 1 second to craft. 0.5 means it takes 2 seconds, and 2 means it takes 0.5 seconds. * * Crafting speed has to be positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#crafting_speed Online documentation} */ crafting_speed: double /** * A list of {@link RecipeCategory recipe categories} this crafting machine can use. * @example * crafting_categories = {"crafting", "smelting"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#crafting_categories Online documentation} */ crafting_categories: readonly RecipeCategoryID[] /** * Defines how the crafting machine is powered. * * When using an electric energy source and `drain` is not specified, it will be set to `energy_usage ÷ 30` automatically. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#energy_source Online documentation} */ energy_source: EnergySource /** * The crafting machine's fluid boxes. If an assembling machine has fluid boxes *and* {@link AssemblingMachinePrototype#fluid_boxes_off_when_no_fluid_recipe AssemblingMachinePrototype::fluid_boxes_off_when_no_fluid_recipe} is true, the assembling machine can only be rotated when a recipe consuming or producing fluid is set, or if it has one of the other properties listed at the top of this page. * * For assembling machines, any {@link FluidBox#filter filters} set on the fluidboxes are ignored. * @example * fluid_boxes = * { * { * production_type = "input", * pipe_picture = assembler2pipepictures(), * pipe_covers = pipecoverspictures(), * volume = 1000, * pipe_connections = {{ flow_direction = "input", direction = defines.direction.north, position = {0, -1} }}, * secondary_draw_orders = { north = -1 } * }, * { * production_type = "output", * pipe_picture = assembler2pipepictures(), * pipe_covers = pipecoverspictures(), * volume = 1000, * pipe_connections = {{ flow_direction = "output", direction = defines.direction.south, position = {0, 1} }}, * secondary_draw_orders = { north = -1 } * }, * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#fluid_boxes Online documentation} */ fluid_boxes?: readonly FluidBox[] effect_receiver?: EffectReceiver /** * **Default:** `0` * * The number of module slots in this machine. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#module_slots Online documentation} */ module_slots?: ItemStackIndex /** * **Default:** `false` * * If set, {@link QualityPrototype#crafting_machine_module_slots_bonus QualityPrototype::crafting_machine_module_slots_bonus} will be added to module slots count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#quality_affects_module_slots Online documentation} */ quality_affects_module_slots?: boolean /** * **Default:** `No effects are allowed` * * Sets the {@link ModulePrototype modules} and {@link BeaconPrototype beacon} effects that are allowed to be used on this machine. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#allowed_effects Online documentation} */ allowed_effects?: EffectTypeLimitation /** * **Default:** `All module categories are allowed` * * Sets the {@link ModuleCategory module categories} that are allowed to be inserted into this machine. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#allowed_module_categories Online documentation} */ allowed_module_categories?: readonly ModuleCategoryID[] /** * **Default:** `true` * * Whether the "alt-mode icon" should be drawn at all. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#show_recipe_icon Online documentation} */ show_recipe_icon?: boolean /** * **Default:** `true` * * Controls whether the ingredients of an in-progress recipe are destroyed when mining the machine/changing the recipe. If set to true, the ingredients do not get destroyed. This affects only the ingredients of the recipe that is currently in progress, so those that visually have already been consumed while their resulting product has not yet been produced. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#return_ingredients_on_change Online documentation} */ return_ingredients_on_change?: boolean /** * **Default:** `true` * * Whether the "alt-mode icon" should have a black background. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#draw_entity_info_icon_background Online documentation} */ draw_entity_info_icon_background?: boolean /** * **Default:** `true` * * Whether the speed of the animation and working visualization should be based on the machine's speed (boosted or slowed by modules). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#match_animation_speed_to_activity Online documentation} */ match_animation_speed_to_activity?: boolean /** * **Default:** `true` * * Whether the recipe icon should be shown on the map. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#show_recipe_icon_on_map Online documentation} */ show_recipe_icon_on_map?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#fast_transfer_modules_into_module_slots_only Online documentation} */ fast_transfer_modules_into_module_slots_only?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#ignore_output_full Online documentation} */ ignore_output_full?: boolean graphics_set?: CraftingMachineGraphicsSet graphics_set_flipped?: CraftingMachineGraphicsSet /** * Affects animation speed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#perceived_performance Online documentation} */ perceived_performance?: PerceivedPerformance production_health_effect?: ProductionHealthEffect trash_inventory_size?: ItemStackIndex vector_to_place_result?: Vector /** * **Default:** `none` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#forced_symmetry Online documentation} */ forced_symmetry?: Mirroring /** * Each value must be >= 0.01. * * If value is not provided for a quality, then {@link QualityPrototype#crafting_machine_speed_multiplier QualityPrototype::crafting_machine_speed_multiplier} will be used as a speed multiplier instead. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#crafting_speed_quality_multiplier Online documentation} */ crafting_speed_quality_multiplier?: Record /** * If value is not provided for a quality, then {@link QualityPrototype#crafting_machine_module_slots_bonus QualityPrototype::crafting_machine_module_slots_bonus} will be used as a module slots bonus instead. * * Does nothing if {@link CraftingMachinePrototype#quality_affects_module_slots CraftingMachinePrototype::quality_affects_module_slots} is not set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#module_slots_quality_bonus Online documentation} */ module_slots_quality_bonus?: Record /** * Each value must be >= 0.01. * * If value is not provided for a quality, then {@link QualityPrototype#crafting_machine_energy_usage_multiplier QualityPrototype::crafting_machine_energy_usage_multiplier} will be used as an energy usage multiplier instead. * * Does nothing if {@link CraftingMachinePrototype#quality_affects_energy_usage CraftingMachinePrototype::quality_affects_energy_usage} is not set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CraftingMachinePrototype.html#energy_usage_quality_multiplier Online documentation} */ energy_usage_quality_multiplier?: Record } /** * This prototype is used for receiving an achievement when the player creates a space platform. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CreatePlatformAchievementPrototype.html Online documentation} */ export interface CreatePlatformAchievementPrototype extends AchievementPrototype { type: "create-platform-achievement" /** * **Default:** `1` * * How many space platforms need to be created. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CreatePlatformAchievementPrototype.html#amount Online documentation} */ amount?: uint32 } /** * A curved-A rail. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CurvedRailAPrototype.html Online documentation} */ export interface CurvedRailAPrototype extends RailPrototype { type: "curved-rail-a" | "elevated-curved-rail-a" /** * **Default:** ``{{-0.7, -2.516}, {0.7, 2.516}}`` * * The {@link EntityPrototype#collision_box collision_box} of straight rail is hardcoded to `{{-0.7, -2.516}, {0.7, 2.516}}`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CurvedRailAPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } /** * A curved-B rail. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CurvedRailBPrototype.html Online documentation} */ export interface CurvedRailBPrototype extends RailPrototype { type: "curved-rail-b" | "elevated-curved-rail-b" /** * **Default:** ``{{-0.7, -2.441}, {0.7, 2.441}}`` * * The {@link EntityPrototype#collision_box collision_box} of straight rail is hardcoded to `{{-0.7, -2.441}, {0.7, 2.441}}`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CurvedRailBPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } /** * Custom events share the same namespace as custom inputs and built-in events for subscribing to and raising them. * @example * { * type = "custom-event", * name = "potato-custom-event" * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomEventPrototype.html Online documentation} */ export interface CustomEventPrototype extends Prototype { type: "custom-event" } /** * Used for custom keyboard shortcuts/key bindings in mods. The key associated with the custom input can be changed in the options. This means that `key_sequence` is simply the default key binding. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html Online documentation} */ export interface CustomInputPrototype extends Prototype { type: "custom-input" /** * Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters. * * For a list of all names used in vanilla, see {@linkplain https://wiki.factorio.com/Data.raw data.raw}. * * It is also the name for the event that is raised when they key (combination) is pressed and action is `"lua"`, see {@linkplain https://wiki.factorio.com/Tutorial:Script_interfaces#Custom_input Tutorial:Script interfaces}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#name Online documentation} */ name: CustomInputName /** * The default key sequence for this custom input. Use `""` (empty string) for unassigned. * * As modifier keys, these names are used: `"CONTROL"`, `"SHIFT"`, `"COMMAND"`, `"ALT"`. Note that `"COMMAND"` is loaded as `"CONTROL"` on Windows and Linux. * * `" + "` is used to separate modifier keys from normal keys, like so: `"ALT + G"`. A key binding can contain any amount of individual modifier keys, but only a single normal mouse button or keyboard key (listed below). * * {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#key_sequence > Available names for the normal mouse button} * * {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#key_sequence > Available names for the normal keyboard keys} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#key_sequence Online documentation} */ key_sequence: string /** * The alternative key binding for this control. See `key_sequence` for the format. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#alternative_key_sequence Online documentation} */ alternative_key_sequence?: string /** * The controller (game pad) keybinding for this control. Use `""` (empty string) for unassigned. * * As modifier buttons, these names are used: `"controller-righttrigger"`, `"controller-lefttrigger"`. * * `" + "` is used to separate modifier buttons from normal buttons, like so: `"controller-righttrigger + controller-a"`. A key binding can contain any amount of individual modifier buttons, but only a single normal button (listed below). * * {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#controller_key_sequence > Available names for the normal controller buttons} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#controller_key_sequence Online documentation} */ controller_key_sequence?: string /** * The alternative controller (game pad) keybinding for this control. See `controller_key_sequence` for the format. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#controller_alternative_key_sequence Online documentation} */ controller_alternative_key_sequence?: string /** * **Default:** `""` * * When a custom-input is linked to a game control it won't show up in the control-settings GUI and will fire when the linked control is pressed. * @example * key_sequence = "", * linked_game_control = "clear-cursor" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#linked_game_control Online documentation} */ linked_game_control?: LinkedGameControl /** * **Default:** `"none"` * * Sets whether internal game events associated with the same key sequence should be fired or blocked. If they are fired ("none"), then the custom input event will happen before the internal game event. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#consuming Online documentation} */ consuming?: ConsumingType /** * **Default:** `true` * * If this custom input is enabled. Disabled custom inputs exist but are not used by the game. If disabled, no event is raised when the input is used. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#enabled Online documentation} */ enabled?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#enabled_while_spectating Online documentation} */ enabled_while_spectating?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#enabled_while_in_cutscene Online documentation} */ enabled_while_in_cutscene?: boolean /** * **Default:** `false` * * If true, the type and name of the currently selected prototype will be provided as "selected_prototype" in the raised {@link import("factorio:runtime").CustomInputEvent Lua event}. {@linkplain https://forums.factorio.com/96125 This also works in GUIs}, not just the game world. * * This will also return an item in the cursor such as copper-wire or rail-planner, if nothing is beneath the cursor. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#include_selected_prototype Online documentation} */ include_selected_prototype?: boolean /** * The item will be created when this input is pressed and action is set to "spawn-item". The item must have the {@link ItemPrototypeFlags#spawnable spawnable} flag set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#item_to_spawn Online documentation} */ item_to_spawn?: ItemID /** * **Default:** `"lua"` * * A {@link import("factorio:runtime").CustomInputEvent Lua event} is only raised if the action is "lua". * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#action Online documentation} */ action?: | "lua" | "spawn-item" | "toggle-personal-roboport" | "toggle-personal-logistic-requests" | "toggle-equipment-movement-bonus" /** * **Default:** `false` * * If `true`, when the shortcut is activated, the modifiers used for this shortcut can't be re-used to press something else until unpressed. The example where this is useful is ALT+A to activate spidertron remote, where ALT is consumed, so pressing right mouse button before the ALT is unpressed will not trigger pin creation (ALT + right mouse button), but send the selected unit instead. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/CustomInputPrototype.html#block_modifiers Online documentation} */ block_modifiers?: boolean } /** * A damage type. This is used in the {@linkplain https://wiki.factorio.com/Damage damage system}. {@linkplain https://wiki.factorio.com/Damage#Damage_types A list of built-in damage types can be found here}. * * _Prototype limited to **255** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DamageType.html Online documentation} */ export interface DamageType extends Prototype { type: "damage-type" } /** * A {@linkplain https://wiki.factorio.com/Decider_combinator decider combinator}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeciderCombinatorPrototype.html Online documentation} */ export interface DeciderCombinatorPrototype extends CombinatorPrototype { type: "decider-combinator" equal_symbol_sprites?: Sprite4Way greater_symbol_sprites?: Sprite4Way less_symbol_sprites?: Sprite4Way not_equal_symbol_sprites?: Sprite4Way greater_or_equal_symbol_sprites?: Sprite4Way less_or_equal_symbol_sprites?: Sprite4Way } /** * This prototype is used for receiving an achievement when the player deconstructs enough entities with construction robots. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeconstructWithRobotsAchievementPrototype.html Online documentation} */ export interface DeconstructWithRobotsAchievementPrototype extends AchievementPrototype { type: "deconstruct-with-robots-achievement" /** * This will trigger the achievement, if enough entities were deconstructed using construction robots. * @example * amount = 100 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeconstructWithRobotsAchievementPrototype.html#amount Online documentation} */ amount: uint32 } /** * Entity used to signify that the tile below it should be deconstructed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeconstructibleTileProxyPrototype.html Online documentation} */ export interface DeconstructibleTileProxyPrototype extends EntityPrototype { type: "deconstructible-tile-proxy" } /** * A {@linkplain https://wiki.factorio.com/Deconstruction_planner deconstruction planner}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeconstructionItemPrototype.html Online documentation} */ export interface DeconstructionItemPrototype extends SelectionToolPrototype { type: "deconstruction-item" /** * **Default:** `0` * * Can't be > 255. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeconstructionItemPrototype.html#entity_filter_count Online documentation} */ entity_filter_count?: ItemStackIndex /** * **Default:** `0` * * Can't be > 255. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeconstructionItemPrototype.html#tile_filter_count Online documentation} */ tile_filter_count?: ItemStackIndex /** * Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `"not-stackable"` flag is set. * @example * stack_size = 1 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeconstructionItemPrototype.html#stack_size Online documentation} */ stack_size: 1 /** * The {@link SelectionModeData#mode SelectionModeData::mode} is hardcoded to `"deconstruct"`. * * The filters are parsed, but then ignored and forced to be empty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeconstructionItemPrototype.html#select Online documentation} */ select: SelectionModeData /** * The {@link SelectionModeData#mode SelectionModeData::mode} is hardcoded to `"cancel-deconstruct"`. * * The filters are parsed, but then ignored and forced to be empty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeconstructionItemPrototype.html#alt_select Online documentation} */ alt_select: SelectionModeData /** * **Default:** `false` * * This property is hardcoded to `false`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeconstructionItemPrototype.html#always_include_tiles Online documentation} */ always_include_tiles?: boolean } /** * Simple decorative purpose objects on the map, they have no health and some of them are removed when the player builds over. Usually used for grass patches, roots, small plants etc. * * _Prototype limited to **65535** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html Online documentation} */ export interface DecorativePrototype extends Prototype { type: "optimized-decorative" /** * Must contain at least 1 picture. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#pictures Online documentation} */ pictures: SpriteVariations /** * Can be defined only when decorative is not "decal" (see `render_layer`). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#stateless_visualisation Online documentation} */ stateless_visualisation?: StatelessVisualisation | readonly StatelessVisualisation[] /** * Only loaded if `stateless_visualisation` is not defined. Can be defined only when decorative is not "decal" (see `render_layer`). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#stateless_visualisation_variations Online documentation} */ stateless_visualisation_variations?: readonly (StatelessVisualisation | readonly StatelessVisualisation[])[] /** * Must contain the [0,0] point. Max radius of the collision box is 8. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox /** * **Default:** `"decorative"` * * When "decals" render layer is used, the decorative is treated as decal. That means it will be rendered within tile layers instead of normal sprite layers. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#grows_through_rail_path Online documentation} */ grows_through_rail_path?: boolean /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * **Default:** `1` * * Loaded only if `render_layer` = "decals". Value lower than 1 enables masking by water for decals with `tile_layer` greater or equal to {@link UtilityConstants#capture_water_mask_at_layer UtilityConstants::capture_water_mask_at_layer}. Water tiles must use water `tile-effect` with {@link WaterTileEffectParameters#lightmap_alpha WaterTileEffectParameters::lightmap_alpha} set to 0 or value less than 1. Graphics option `Occlude light sprites` must be enabled, as water mask is captured into terrain lightmap alpha channel. Tiles rendered in layer between {@link UtilityConstants#capture_water_mask_at_layer UtilityConstants::capture_water_mask_at_layer} and decal's `tile_layer` will likely also mask decals in some way, as water mask will likely be 0 at their position, but this is considered undefined behavior. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#opacity_over_water Online documentation} */ opacity_over_water?: float /** * **Default:** `0` * * Mandatory if `render_layer` = "decals". This int16 is converted to a {@link TileRenderLayer} internally. It is offset from `ground-natural`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#tile_layer Online documentation} */ tile_layer?: int16 /** * **Default:** `0` * * Loaded only if `render_layer` = "decals". When decoratives are being spawned by {@link EnemySpawnerPrototype#spawn_decoration EnemySpawnerPrototype::spawn_decoration} or {@link TurretPrototype#spawn_decoration TurretPrototype::spawn_decoration}, decals with `decal_overdraw_priority` greater than 0 will be filtered such that they don't overlap too much. If two or more decals would overlap, only the one with the largest value of `decal_overdraw_priority` is placed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#decal_overdraw_priority Online documentation} */ decal_overdraw_priority?: uint16 /** * Defaults to the mask from {@link UtilityConstants#default_collision_masks UtilityConstants::default_collision_masks} when indexed by `"decorative"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#collision_mask Online documentation} */ collision_mask?: CollisionMaskConnector walking_sound?: Sound /** * Called by {@link DestroyDecorativesTriggerEffectItem}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#trigger_effect Online documentation} */ trigger_effect?: TriggerEffect /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#minimal_separation Online documentation} */ minimal_separation?: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DecorativePrototype.html#target_count Online documentation} */ target_count?: uint16 placed_effect?: TriggerEffect autoplace?: AutoplaceSpecification } /** * Delays the delivery of triggered effect by some number of ticks. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DelayedActiveTriggerPrototype.html Online documentation} */ export interface DelayedActiveTriggerPrototype extends ActiveTriggerPrototype { type: "delayed-active-trigger" /** * The trigger to apply after `delay` has elapsed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DelayedActiveTriggerPrototype.html#action Online documentation} */ action: Trigger /** * The number of ticks to delay the delivery of the triggered effect. Must be greater than 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DelayedActiveTriggerPrototype.html#delay Online documentation} */ delay: uint32 /** * **Default:** `0` * * The number of times to repeat the delayed trigger. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DelayedActiveTriggerPrototype.html#repeat_count Online documentation} */ repeat_count?: uint32 /** * **Default:** `Value of `delay`` * * The number of ticks between repeat deliveries of the triggered effect. Must be greater than 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DelayedActiveTriggerPrototype.html#repeat_delay Online documentation} */ repeat_delay?: uint32 /** * **Default:** `false` * * If true, the delayed trigger is cancelled if the source entity is destroyed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DelayedActiveTriggerPrototype.html#cancel_when_source_is_destroyed Online documentation} */ cancel_when_source_is_destroyed?: boolean } /** * This prototype is used for receiving an achievement, when the player requests and receives enough items using logistic robots. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeliverByRobotsAchievementPrototype.html Online documentation} */ export interface DeliverByRobotsAchievementPrototype extends AchievementPrototype { type: "deliver-by-robots-achievement" /** * This will trigger the achievement, when the player receives enough items through logistic robots. * @example * amount = 10000 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeliverByRobotsAchievementPrototype.html#amount Online documentation} */ amount: uint32 } /** * @example * { * type = "deliver-category", * name = "bullet" * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeliverCategory.html Online documentation} */ export interface DeliverCategory { readonly type: "deliver-category" /** * Name of the deliver category. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeliverCategory.html#name Online documentation} */ name: string } /** * @example * { * type = "deliver-impact-combination", * name = "bullet-organic", * deliver_category = "bullet", * impact_category = "organic", * trigger_effect_item = * { * type = "play-sound", * sound = * { * category = "weapon", * variations = sound_variations("__base__/sound/bullets/bullet-impact-organic", 5, 0.3), * aggregation = {max_count = 4, remove = true, count_already_playing = true} * } * } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeliverImpactCombination.html Online documentation} */ export interface DeliverImpactCombination { readonly type: "deliver-impact-combination" /** * Name of the deliver impact combination. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DeliverImpactCombination.html#name Online documentation} */ name: string impact_category: string deliver_category: string trigger_effect_item: TriggerEffect } /** * This prototype is used for receiving an achievement when a resource entity is depleted. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DepleteResourceAchievementPrototype.html Online documentation} */ export interface DepleteResourceAchievementPrototype extends AchievementPrototype { type: "deplete-resource-achievement" /** * **Default:** `1` * * How many resource entities need to be depleted. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DepleteResourceAchievementPrototype.html#amount Online documentation} */ amount?: uint32 /** * **Default:** `false` * * If this is false, the player carries over their statistics from this achievement through all their saves. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DepleteResourceAchievementPrototype.html#limited_to_one_game Online documentation} */ limited_to_one_game?: boolean } export interface DestroyCliffAchievementPrototype extends AchievementPrototype { type: "destroy-cliff-achievement" /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DestroyCliffAchievementPrototype.html#amount Online documentation} */ amount?: uint32 /** * **Default:** `false` * * If this is false, the player carries over their statistics from this achievement through all their saves. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DestroyCliffAchievementPrototype.html#limited_to_one_game Online documentation} */ limited_to_one_game?: boolean } /** * Entity that display a signal icon and some text, either configured directly in the entity or through the circuit network. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DisplayPanelPrototype.html Online documentation} */ export interface DisplayPanelPrototype extends EntityWithOwnerPrototype { type: "display-panel" /** * The display panel's graphics. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DisplayPanelPrototype.html#sprites Online documentation} */ sprites?: Sprite4Way /** * **Default:** `400` * * The maximum display width of the text on the display panel. If the text exceeds this width it will be wrapped so that it continues on the next line. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DisplayPanelPrototype.html#max_text_width Online documentation} */ max_text_width?: uint32 /** * The shift of the text on the display panel. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DisplayPanelPrototype.html#text_shift Online documentation} */ text_shift?: Vector /** * The color of the text on the display panel. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DisplayPanelPrototype.html#text_color Online documentation} */ text_color?: Color /** * The background color of the display panel text. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DisplayPanelPrototype.html#background_color Online documentation} */ background_color?: Color /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DisplayPanelPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DisplayPanelPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DisplayPanelPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] } /** * This prototype is used for receiving an achievement when the player finishes the game without building a specific entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontBuildEntityAchievementPrototype.html Online documentation} */ export interface DontBuildEntityAchievementPrototype extends AchievementPrototypeWithCondition { type: "dont-build-entity-achievement" /** * This will disable the achievement, if this entity is placed. If you finish the game without building this entity, you receive the achievement. * @example * dont_build = {"bulk-inserter", "fluid-wagon"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontBuildEntityAchievementPrototype.html#dont_build Online documentation} */ dont_build: EntityID | readonly EntityID[] /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontBuildEntityAchievementPrototype.html#amount Online documentation} */ amount?: uint32 /** * If you research technology using one of specified items before building entity, you receive the achievement. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontBuildEntityAchievementPrototype.html#research_with Online documentation} */ research_with?: ItemID | readonly ItemID[] } /** * This prototype is used for receiving an achievement when the player finishes the game without crafting more than a set amount. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontCraftManuallyAchievementPrototype.html Online documentation} */ export interface DontCraftManuallyAchievementPrototype extends AchievementPrototypeWithCondition { type: "dont-craft-manually-achievement" /** * This will disable the achievement, if the player crafts more than this. * @example * amount = 111 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontCraftManuallyAchievementPrototype.html#amount Online documentation} */ amount: uint32 } /** * This prototype is used for receiving an achievement when the player kill first entity using artillery. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontKillManuallyAchievementPrototype.html Online documentation} */ export interface DontKillManuallyAchievementPrototype extends AchievementPrototypeWithCondition { type: "dont-kill-manually-achievement" /** * This will disable the achievement, if this entity is killed manually. If you kill this entity with artillery first, you receive the achievement. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontKillManuallyAchievementPrototype.html#to_kill Online documentation} */ to_kill?: EntityID /** * This will disable the achievement, if this entity type is killed manually. If you kill this entity type with artillery first, you receive the achievement. * @example * type_not_to_kill = "unit-spawner" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontKillManuallyAchievementPrototype.html#type_not_to_kill Online documentation} */ type_not_to_kill?: string } /** * This prototype is used for receiving an achievement when the player researches with a specific science pack before unlocking another. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontResearchBeforeResearchingAchievementPrototype.html Online documentation} */ export interface DontResearchBeforeResearchingAchievementPrototype extends AchievementPrototypeWithCondition { type: "dont-research-before-researching-achievement" /** * This will disable the achievement, if technology unlocking this item is researched before meeting requirements. * @example * dont_research = {"production-science-pack", "utility-science-pack"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontResearchBeforeResearchingAchievementPrototype.html#dont_research Online documentation} */ dont_research: ItemID | readonly ItemID[] /** * If you research technology using one of specified items, you receive the achievement. * @example * research_with = {"metallurgic-science-pack", "electromagnetic-science-pack", "agricultural-science-pack"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontResearchBeforeResearchingAchievementPrototype.html#research_with Online documentation} */ research_with: ItemID | readonly ItemID[] } /** * This prototype is used for receiving an achievement when the player finishes the game without receiving energy from a specific energy source. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontUseEntityInEnergyProductionAchievementPrototype.html Online documentation} */ export interface DontUseEntityInEnergyProductionAchievementPrototype extends AchievementPrototypeWithCondition { type: "dont-use-entity-in-energy-production-achievement" /** * This will **not** disable the achievement, if this entity is placed, and you have received any amount of power from it. * @example * excluded = {"steam-engine", "steam-turbine"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontUseEntityInEnergyProductionAchievementPrototype.html#excluded Online documentation} */ excluded: EntityID | readonly EntityID[] /** * This will disable the achievement, if this entity is placed, and you have received any amount of power from it. If you finish the game without receiving power from this entity, you receive the achievement. * @example * included = "solar-panel" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontUseEntityInEnergyProductionAchievementPrototype.html#included Online documentation} */ included?: EntityID | readonly EntityID[] /** * **Default:** `false` * * If `true`, the achievements will only be checked for the last hour of the game, independently of finishing the game. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontUseEntityInEnergyProductionAchievementPrototype.html#last_hour_only Online documentation} */ last_hour_only?: boolean /** * **Default:** `"0J"` * * The minimum amount of energy that needs to be produced by the allowed entities to trigger the achievement. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/DontUseEntityInEnergyProductionAchievementPrototype.html#minimum_energy_produced Online documentation} */ minimum_energy_produced?: Energy } /** * Properties of the editor controller. * * _Prototype limited to **1** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EditorControllerPrototype.html Online documentation} */ export interface EditorControllerPrototype { readonly type: "editor-controller" /** * Name of the editor controller. Base game uses "default". * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EditorControllerPrototype.html#name Online documentation} */ name: string inventory_size: ItemStackIndex gun_inventory_size: ItemStackIndex /** * Must be >= 0.34375. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EditorControllerPrototype.html#movement_speed Online documentation} */ 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 } /** * Entity with electric energy source with that can have some of its values changed runtime. Useful for modding in energy consumers/producers. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricEnergyInterfacePrototype.html Online documentation} */ export interface ElectricEnergyInterfacePrototype extends EntityWithOwnerPrototype { type: "electric-energy-interface" energy_source: ElectricEnergySource /** * **Default:** `0` * @example * energy_production = "500GW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricEnergyInterfacePrototype.html#energy_production Online documentation} */ energy_production?: Energy /** * **Default:** `0` * @example * energy_usage = "10kW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricEnergyInterfacePrototype.html#energy_usage Online documentation} */ energy_usage?: Energy /** * **Default:** `"none"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricEnergyInterfacePrototype.html#gui_mode Online documentation} */ gui_mode?: "all" | "none" | "admins" /** * **Default:** `false` * * Whether the electric energy interface animation always runs instead of being scaled to activity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricEnergyInterfacePrototype.html#continuous_animation Online documentation} */ continuous_animation?: boolean /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricEnergyInterfacePrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * The light that this electric energy interface emits. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricEnergyInterfacePrototype.html#light Online documentation} */ light?: LightDefinition picture?: Sprite /** * Only loaded if `picture` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricEnergyInterfacePrototype.html#pictures Online documentation} */ pictures?: Sprite4Way /** * Only loaded if both `picture` and `pictures` are not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricEnergyInterfacePrototype.html#animation Online documentation} */ animation?: Animation /** * Only loaded if `picture`, `pictures`, and `animation` are not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricEnergyInterfacePrototype.html#animations Online documentation} */ animations?: Animation4Way /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricEnergyInterfacePrototype.html#allow_copy_paste Online documentation} */ allow_copy_paste?: boolean } /** * An electric pole - part of the {@linkplain https://wiki.factorio.com/Electric_system electric system}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricPolePrototype.html Online documentation} */ export interface ElectricPolePrototype extends EntityWithOwnerPrototype { type: "electric-pole" pictures?: RotatedSprite /** * The "radius" of this pole's supply area. Corresponds to *half* of the "supply area" in the item tooltip. If this is 3.5, the pole will have a 7x7 supply area. * * Max value is 64. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricPolePrototype.html#supply_area_distance Online documentation} */ supply_area_distance: double connection_points: readonly WireConnectionPoint[] radius_visualisation_picture?: Sprite /** * Drawn above the `pictures` when the electric pole is connected to an electric network. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricPolePrototype.html#active_picture Online documentation} */ active_picture?: Sprite /** * **Default:** `0` * * The maximum distance between this pole and any other connected pole - if two poles are farther apart than this, they cannot be connected together directly. Corresponds to "wire reach" in the item tooltip. * * Max value is 64. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricPolePrototype.html#maximum_wire_distance Online documentation} */ maximum_wire_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricPolePrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricPolePrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean /** * Drawn when the electric pole is connected to an electric network. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricPolePrototype.html#light Online documentation} */ light?: LightDefinition /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricPolePrototype.html#track_coverage_during_drag_building Online documentation} */ track_coverage_during_drag_building?: boolean /** * **Default:** `5` * * `0` means disable auto-connect. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricPolePrototype.html#auto_connect_up_to_n_wires Online documentation} */ auto_connect_up_to_n_wires?: uint8 /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricPolePrototype.html#rewire_neighbours_when_destroying Online documentation} */ rewire_neighbours_when_destroying?: boolean } /** * A turret that uses electricity as ammunition. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElectricTurretPrototype.html Online documentation} */ export interface ElectricTurretPrototype extends TurretPrototype { type: "electric-turret" energy_source: ElectricEnergySource | VoidEnergySource } /** * An elevated curved-A rail. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElevatedCurvedRailAPrototype.html Online documentation} */ export interface ElevatedCurvedRailAPrototype extends CurvedRailAPrototype { type: "elevated-curved-rail-a" /** * Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters. * * Requires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElevatedCurvedRailAPrototype.html#name Online documentation} */ name: string } /** * An elevated curved-B rail. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElevatedCurvedRailBPrototype.html Online documentation} */ export interface ElevatedCurvedRailBPrototype extends CurvedRailBPrototype { type: "elevated-curved-rail-b" /** * Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters. * * Requires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElevatedCurvedRailBPrototype.html#name Online documentation} */ name: string } /** * An elevated half diagonal rail. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElevatedHalfDiagonalRailPrototype.html Online documentation} */ export interface ElevatedHalfDiagonalRailPrototype extends HalfDiagonalRailPrototype { type: "elevated-half-diagonal-rail" /** * Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters. * * Requires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElevatedHalfDiagonalRailPrototype.html#name Online documentation} */ name: string } /** * An elevated straight rail. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElevatedStraightRailPrototype.html Online documentation} */ export interface ElevatedStraightRailPrototype extends StraightRailPrototype { type: "elevated-straight-rail" /** * Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters. * * Requires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ElevatedStraightRailPrototype.html#name Online documentation} */ name: string } /** * Can spawn entities. Used for biter/spitter nests. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html Online documentation} */ export interface EnemySpawnerPrototype extends EntityWithOwnerPrototype { type: "unit-spawner" graphics_set: EnemySpawnerGraphicsSet /** * Count of enemies this spawner can sustain. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#max_count_of_owned_units Online documentation} */ max_count_of_owned_units: uint32 /** * **Default:** `Value of `max_count_of_owned_units`` * * Count of defensive enemies this spawner can sustain. Defensive units are units with {@link UnitAISettings#join_attacks UnitAISettings::join_attacks} set to false. If set below {@link EnemySpawnerPrototype#max_count_of_owned_units EnemySpawnerPrototype::max_count_of_owned_units}, the difference will be the space reserved for non-defensive units. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#max_count_of_owned_defensive_units Online documentation} */ max_count_of_owned_defensive_units?: uint32 /** * How many friendly units are required within the {@link EnemySpawnerPrototype#spawning_radius EnemySpawnerPrototype::spawning_radius} of this spawner for it to stop producing more units. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#max_friends_around_to_spawn Online documentation} */ max_friends_around_to_spawn: uint32 /** * **Default:** `Value of `max_friends_around_to_spawn`` * * How many friendly defensive units are required within the {@link EnemySpawnerPrototype#spawning_radius EnemySpawnerPrototype::spawning_radius} of this spawner for it to stop producing more units. Defensive units are units with {@link UnitAISettings#join_attacks UnitAISettings::join_attacks} set to false. If set below {@link EnemySpawnerPrototype#max_friends_around_to_spawn EnemySpawnerPrototype::max_friends_around_to_spawn}, the difference will be the space reserved for non-defensive units. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#max_defensive_friends_around_to_spawn Online documentation} */ max_defensive_friends_around_to_spawn?: uint32 /** * Ticks for cooldown after unit is spawned. The first member of the tuple is min, the second member of the tuple is max. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#spawning_cooldown Online documentation} */ spawning_cooldown: readonly [double, double] /** * How far from the spawner can the units be spawned. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#spawning_radius Online documentation} */ spawning_radius: double /** * What spaces should be between the spawned units. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#spawning_spacing Online documentation} */ spawning_spacing: double /** * Max richness to determine spawn shift. Spawn shift is linear interpolation between 0 and max_spawn_shift. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#max_richness_for_spawn_shift Online documentation} */ max_richness_for_spawn_shift: double /** * Caps how much richness can be added on top of evolution when spawning units. {@linkplain https://www.reddit.com/r/factorio/comments/8pjscm/friday_facts_246_the_gui_update_part_3/e0bttnp/ See also} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#max_spawn_shift Online documentation} */ max_spawn_shift: double call_for_help_radius: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#time_to_capture Online documentation} */ time_to_capture?: uint32 /** * Array of the {@link EntityPrototype entities} that this spawner can spawn and their spawn probabilities. The sum of probabilities is expected to be 1.0. The array must not be empty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#result_units Online documentation} */ result_units: readonly UnitSpawnDefinition[] dying_sound?: Sound absorptions_per_second?: Record /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#min_darkness_to_spawn Online documentation} */ min_darkness_to_spawn?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#max_darkness_to_spawn Online documentation} */ max_darkness_to_spawn?: float /** * **Default:** `false` * * Whether `spawn_decoration` should be spawned when enemies {@linkplain https://wiki.factorio.com/Enemies#Expansions expand}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#spawn_decorations_on_expansion Online documentation} */ spawn_decorations_on_expansion?: boolean /** * Decoratives to be created when the spawner is created by the {@linkplain https://wiki.factorio.com/Map_generator map generator}. Placed when enemies expand if `spawn_decorations_on_expansion` is set to true. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#spawn_decoration Online documentation} */ spawn_decoration?: readonly CreateDecorativesTriggerEffectItem[] captured_spawner_entity?: EntityID /** * **Default:** `true` * * Whether this prototype should be a high priority target for enemy forces. See {@linkplain https://wiki.factorio.com/Military_units_and_structures Military units and structures}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#is_military_target Online documentation} */ is_military_target?: true /** * **Default:** `false` * * If this is true, this entities `is_military_target property` can be changed runtime (on the entity, not on the prototype itself). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnemySpawnerPrototype.html#allow_run_time_change_of_is_military_target Online documentation} */ allow_run_time_change_of_is_military_target?: false } /** * Used by {@linkplain https://wiki.factorio.com/Energy_shield energy shield}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EnergyShieldEquipmentPrototype.html Online documentation} */ export interface EnergyShieldEquipmentPrototype extends EquipmentPrototype { type: "energy-shield-equipment" max_shield_value: float energy_per_shield: Energy } /** * The entity used for ghosts of entities. In-game, the inner entity (the entity this is a ghost of) is rendered with a {@link UtilityConstants#ghost_tint UtilityConstants::ghost_tint}. * @example * { * type = "entity-ghost", * name = "entity-ghost", * icon = "__core__/graphics/icons/mip/ghost-entity.png", * icon_size = 64, * build_sound = { { filename = "__core__/sound/build-ghost-small.ogg", volume = 0.6 } }, * medium_build_sound = { { filename = "__core__/sound/build-ghost-medium.ogg", volume = 0.7 } }, * large_build_sound = { { filename = "__core__/sound/build-ghost-large.ogg", volume = 0.7 } }, * minable = { mining_time = 0, results = {} }, * mined_sound = { { filename = "__core__/sound/deconstruct-ghost.ogg", volume = 0.4 } } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityGhostPrototype.html Online documentation} */ export interface EntityGhostPrototype extends EntityPrototype { type: "entity-ghost" medium_build_sound?: Sound large_build_sound?: Sound huge_build_sound?: Sound small_build_animated_sound?: Sound medium_build_animated_sound?: Sound large_build_animated_sound?: Sound huge_build_animated_sound?: Sound } /** * Abstract base of all entities in the game. Entity is nearly everything that can be on the map (except tiles). * * For in game script access to entity, take a look at {@link import("factorio:runtime").LuaEntity LuaEntity}. * @example * { * type = "container", * name = "wooden-chest", * icon = "__base__/graphics/icons/wooden-chest.png", * flags = { "placeable-neutral", "player-creation" }, * minable = { mining_time = 1, result = "wooden-chest" }, * max_health = 100, * corpse = "small-remnants", * collision_box = { {-0.35, -0.35}, {0.35, 0.35} }, * fast_replaceable_group = "container", * selection_box = { {-0.5, -0.5}, {0.5, 0.5} }, * inventory_size = 16, * open_sound = { filename = "__base__/sound/wooden-chest-open.ogg" }, * close_sound = { filename = "__base__/sound/wooden-chest-close.ogg" }, * picture = * { * filename = "__base__/graphics/entity/wooden-chest/wooden-chest.png", * priority = "extra-high", * width = 46, * height = 33, * shift = {0.25, 0.015625} * } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html Online documentation} */ export interface EntityPrototype extends Prototype { type: | "accumulator" | "agricultural-tower" | "ammo-turret" | "arithmetic-combinator" | "arrow" | "artillery-flare" | "artillery-projectile" | "artillery-turret" | "artillery-wagon" | "assembling-machine" | "asteroid-collector" | "asteroid" | "beacon" | "beam" | "boiler" | "burner-generator" | "capture-robot" | "car" | "cargo-bay" | "cargo-landing-pad" | "cargo-pod" | "cargo-wagon" | "character-corpse" | "character" | "cliff" | "combat-robot" | "constant-combinator" | "construction-robot" | "container" | "corpse" | "curved-rail-a" | "curved-rail-b" | "decider-combinator" | "deconstructible-tile-proxy" | "display-panel" | "electric-energy-interface" | "electric-pole" | "electric-turret" | "elevated-curved-rail-a" | "elevated-curved-rail-b" | "elevated-half-diagonal-rail" | "elevated-straight-rail" | "unit-spawner" | "entity-ghost" | "explosion" | "fire" | "fish" | "stream" | "fluid-turret" | "fluid-wagon" | "furnace" | "fusion-generator" | "fusion-reactor" | "gate" | "generator" | "half-diagonal-rail" | "heat-interface" | "heat-pipe" | "highlight-box" | "infinity-cargo-wagon" | "infinity-container" | "infinity-pipe" | "inserter" | "item-entity" | "item-request-proxy" | "lab" | "lamp" | "land-mine" | "lane-splitter" | "legacy-curved-rail" | "legacy-straight-rail" | "lightning-attractor" | "lightning" | "linked-belt" | "linked-container" | "loader-1x1" | "loader" | "locomotive" | "logistic-container" | "logistic-robot" | "market" | "mining-drill" | "offshore-pump" | "particle-source" | "pipe" | "pipe-to-ground" | "plant" | "player-port" | "power-switch" | "programmable-speaker" | "projectile" | "proxy-container" | "pump" | "radar" | "rail-chain-signal" | "rail-ramp" | "rail-remnants" | "rail-signal" | "rail-support" | "reactor" | "resource" | "roboport" | "rocket-silo" | "rocket-silo-rocket" | "rocket-silo-rocket-shadow" | "segment" | "segmented-unit" | "selector-combinator" | "simple-entity" | "simple-entity-with-force" | "simple-entity-with-owner" | "smoke-with-trigger" | "solar-panel" | "space-platform-hub" | "speech-bubble" | "spider-leg" | "spider-unit" | "spider-vehicle" | "splitter" | "sticker" | "storage-tank" | "straight-rail" | "temporary-container" | "thruster" | "tile-ghost" | "train-stop" | "transport-belt" | "tree" | "turret" | "underground-belt" | "unit" | "valve" | "wall" /** * This will be used in the electric network statistics, editor building selection, and the bonus gui. Can't be an empty array. * * Either this or `icon` is mandatory for entities that have at least one of these flags active: `"placeable-neutral"`, `"placeable-player`", `"placeable-enemy"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Either this or `icons` is mandatory for entities that have at least one of these flags active: `"placeable-neutral"`, `"placeable-player`", `"placeable-enemy"`. * * Only loaded if `icons` is not defined. * @example * icon = "__base__/graphics/icons/wooden-chest.png" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * **Default:** `Empty = `{{0, 0}, {0, 0}}`` * * Specification of the entity collision boundaries. Empty collision box means no collision and is used for smoke, projectiles, particles, explosions etc. * * The `{0,0}` coordinate in the collision box will match the entity position. It should be near the center of the collision box, to keep correct entity drawing order. The bounding box must include the `{0,0}` coordinate. * * Note, that for buildings, it is customary to leave 0.1 wide border between the edge of the tile and the edge of the building, this lets the player move between the building and electric poles/inserters etc. * @example * collision_box = {{-0.4, -0.4}, {0.4, 0.4}} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox /** * Defaults to the mask from {@link UtilityConstants#default_collision_masks UtilityConstants::default_collision_masks} when indexed by the entity type. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#collision_mask Online documentation} */ collision_mask?: CollisionMaskConnector /** * **Default:** `The value of collision_box.` * * Used instead of the collision box during map generation. Allows space entities differently during map generation, for example if the box is bigger, the entities will be placed farther apart. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#map_generator_bounding_box Online documentation} */ map_generator_bounding_box?: BoundingBox /** * **Default:** `Empty = `{{0, 0}, {0, 0}}`` * * Specification of the entity selection area. When empty the entity will have no selection area (and thus is not selectable). * * The selection box is usually a little bit bigger than the collision box. For tileable entities (like buildings) it should match the tile size of the building. * @example * selection_box = {{-0.5, -0.5}, {0.5, 0.5}} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#selection_box Online documentation} */ selection_box?: BoundingBox /** * **Default:** `0` * * Specification of extra vertical space needed to see the whole entity in GUIs. This is used to calculate the correct zoom and positioning in the entity info gui, for example in the entity tooltip. * @example * drawing_box_vertical_extension = 0.5 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#drawing_box_vertical_extension Online documentation} */ drawing_box_vertical_extension?: double /** * **Default:** `The value of collision_box.` * * Used to specify the area where the {@link StickerPrototype sticker} animation can appear for entities that can have stickers on them. * @example * sticker_box = {{-0.5, -0.5}, {0.5, 0.5}} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#sticker_box Online documentation} */ sticker_box?: BoundingBox /** * **Default:** `Empty = `{{0, 0}, {0, 0}}`` * * Where beams should hit the entity. Useful if the bounding box only covers part of the entity (e.g. feet of the character) and beams only hitting there would look weird. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#hit_visualization_box Online documentation} */ hit_visualization_box?: BoundingBox /** * Defaults to the mask from {@link UtilityConstants#default_trigger_target_mask_by_type UtilityConstants::default_trigger_target_mask_by_type}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#trigger_target_mask Online documentation} */ trigger_target_mask?: TriggerTargetMask flags?: EntityPrototypeFlags tile_buildability_rules?: readonly TileBuildabilityRule[] /** * **Default:** `not minable` * * The item given to the player when they mine the entity and other properties relevant to mining this entity. * @example * minable = {mining_time = 0.2, result = "boiler"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#minable Online documentation} */ minable?: MinableProperties /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#surface_conditions Online documentation} */ surface_conditions?: readonly SurfaceCondition[] /** * Used to merge multiple entities into one entry in the deconstruction planner. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#deconstruction_alternative Online documentation} */ deconstruction_alternative?: EntityID /** * **Default:** `50` * * The entity with the higher number is selectable before the entity with the lower number. * * The value `0` will be treated the same as `nil`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#selection_priority Online documentation} */ selection_priority?: uint8 /** * **Default:** `1` * * Supported values are 1 (for 1x1 grid) and 2 (for 2x2 grid, like rails). * * Internally forced to be `2` for {@link RailPrototype}, {@link RailRemnantsPrototype}, {@link TrainStopPrototype}, {@link RailSupportPrototype} and {@link CargoBayPrototype}. * * Internally forced to be `256` for {@link SpacePlatformHubPrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#build_grid_size Online documentation} */ build_grid_size?: uint8 /** * **Default:** `"automatic"` * * Whether this entity should remove decoratives that collide with it when this entity is built. When set to "automatic", if the entity type is considered {@link import("factorio:runtime").LuaEntityPrototype#is_building a building} (e.g. an assembling machine or a wall) it will remove decoratives. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#remove_decoratives Online documentation} */ remove_decoratives?: "automatic" | "true" | "false" /** * Amount of emissions created (positive number) or cleaned (negative number) every second by the entity. This is passive and currently used just for trees and fires. This is independent of the {@link BaseEnergySource#emissions_per_minute emissions of energy sources} used by machines, which are created actively depending on the power consumption. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#emissions_per_second Online documentation} */ emissions_per_second?: Record /** * The cursor size used when shooting at this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#shooting_cursor_size Online documentation} */ shooting_cursor_size?: double /** * **Default:** `The "smoke-building"-smoke` * * The smoke that is shown when the entity is placed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#created_smoke Online documentation} */ created_smoke?: CreateTrivialSmokeEffectItem /** * Will also work on entities that don't actually do work. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#working_sound Online documentation} */ working_sound?: WorkingSound /** * The effect/trigger that happens when the entity is placed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#created_effect Online documentation} */ created_effect?: Trigger build_sound?: Sound mined_sound?: Sound mining_sound?: Sound rotated_sound?: Sound /** * **Default:** `"default"` * * Name of a {@link ImpactCategory}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#impact_category Online documentation} */ impact_category?: string open_sound?: Sound close_sound?: Sound placeable_position_visualization?: Sprite radius_visualisation_specification?: RadiusVisualisationSpecification stateless_visualisation?: StatelessVisualisation | readonly StatelessVisualisation[] /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#draw_stateless_visualisations_in_ghost Online documentation} */ draw_stateless_visualisations_in_ghost?: boolean /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#build_base_evolution_requirement Online documentation} */ build_base_evolution_requirement?: double alert_icon_shift?: Vector alert_icon_scale?: float /** * **Default:** `""` * * This allows you to replace an entity that's already placed, with a different one in your inventory. For example, replacing a burner inserter with a fast inserter. The replacement entity can be a different rotation to the replaced entity and you can replace an entity with the same type. * * This is simply a string, so any string can be used here. The entity that should be replaced simply has to use the same string here. * * Entities with the same fast replaceable group can be configured as upgrades for each other in the upgrade planner. Refer to the {@link UpgradeItemPrototype upgrade planner prototype's page} the full requirements for entities to be shown in the upgrade planner. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#fast_replaceable_group Online documentation} */ fast_replaceable_group?: string /** * Name of the entity that will be automatically selected as the upgrade of this entity when using the {@link UpgradeItemPrototype upgrade planner} without configuration. * * This entity may not have "not-upgradable" flag set and must be minable. This entity mining result must not contain item product with {@link ItemPrototype#hidden hidden} set to `true`. Mining results with no item products are allowed. This entity may not be a {@link RollingStockPrototype}. * * The upgrade target entity needs to have the same bounding box, collision mask, and fast replaceable group as this entity. The upgrade target entity must have least 1 item that builds it that isn't hidden. * @example * next_upgrade = "fast-inserter" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#next_upgrade Online documentation} */ next_upgrade?: EntityID /** * **Default:** `true` * * When this is true, this entity prototype should be included during tile collision checks with tiles that have {@link TilePrototype#check_collision_with_entities TilePrototype::check_collision_with_entities} set to true. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#protected_from_tile_building Online documentation} */ protected_from_tile_building?: boolean /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * **Default:** `"0W"` * * This entity can freeze if heating_energy is larger than zero. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#heating_energy Online documentation} */ heating_energy?: Energy /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#allow_copy_paste Online documentation} */ allow_copy_paste?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#selectable_in_game Online documentation} */ selectable_in_game?: boolean /** * Item that when placed creates this entity. Determines which item is picked when "Q" (smart pipette) is used on this entity. Determines which item and item amount is needed in a blueprint of this entity and to revive a ghost of this entity. * * The item count specified here can't be larger than the stack size of that item. * @example * placeable_by = {item = "rail", count = 4} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#placeable_by Online documentation} */ placeable_by?: ItemToPlace | readonly ItemToPlace[] /** * The entity that remains when this one is mined, deconstructed or fast-replaced. The entity wont actually be spawned if it would collide with the entity that is in the process of being mined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#remains_when_mined Online documentation} */ remains_when_mined?: EntityID | readonly EntityID[] /** * Names of the entity prototypes this entity prototype can be pasted on to in addition to the standard supported types. * * This is used to allow copying between types that aren't compatible on the C++ code side, by allowing mods to receive the {@link import("factorio:runtime").on_entity_settings_pasted on_entity_settings_pasted} event for the given entity and do the setting pasting via script. * @example * additional_pastable_entities = {"steel-chest", "iron-chest"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#additional_pastable_entities Online documentation} */ additional_pastable_entities?: readonly EntityID[] /** * **Default:** `calculated by the collision box width rounded up.` * * Used to determine how the center of the entity should be positioned when building (unless the off-grid {@link EntityPrototypeFlags flag} is specified). * * When the tile width is odd, the center will be in the center of the tile, when it is even, the center is on the tile transition. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#tile_width Online documentation} */ tile_width?: int32 /** * **Default:** `calculated by the collision box height rounded up.` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#tile_height Online documentation} */ tile_height?: int32 diagonal_tile_grid_size?: TilePosition /** * **Default:** `nil (entity is not autoplacable)` * * Used to specify the rules for placing this entity during map generation. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#autoplace Online documentation} */ autoplace?: AutoplaceSpecification map_color?: Color friendly_map_color?: Color enemy_map_color?: Color /** * May also be defined inside `graphics_set` instead of directly in the entity prototype. This is useful for entities that use a `graphics_set` property to define their graphics, because then all graphics can be defined in one place. * * {@linkplain https://forums.factorio.com/100703 Currently only renders} for {@link EntityWithHealthPrototype} and {@link CorpsePrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#water_reflection Online documentation} */ water_reflection?: WaterReflectionDefinition ambient_sounds_group?: EntityID ambient_sounds?: WorldAmbientSoundDefinition | readonly WorldAmbientSoundDefinition[] /** * Used to specify where and how the alt-mode icons should be drawn. * @example * icon_draw_specification = {shift = {0, 0.5}, scale = 0.75, scale_for_many = 0.5, render_layer = "entity-info-icon"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#icon_draw_specification Online documentation} */ icon_draw_specification?: IconDrawSpecification /** * @example * icons_positioning = * { * {inventory_index = defines.inventory.lab_modules, shift = {0, 0.9}}, * {inventory_index = defines.inventory.lab_input, shift = {0, 0.0}, max_icons_per_row = 6, separation_multiplier = 0.9} * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#icons_positioning Online documentation} */ icons_positioning?: readonly IconSequencePositioning[] /** * Used to order prototypes in inventory, recipes and GUIs. May not exceed a length of 200 characters. * * The order string is taken from the items in `placeable_by` if they exist, or from an item that has its {@link ItemPrototype#place_result place_result} set to this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityPrototype.html#order Online documentation} */ order?: Order } /** * Abstract base of all entities with health in the game. * @example * { * type = "container", * name = "wooden-chest", * icon = "__base__/graphics/icons/wooden-chest.png", * flags = { "placeable-neutral", "player-creation" }, * minable = { mining_time = 1, result = "wooden-chest" }, * max_health = 100, * corpse = "small-remnants", * collision_box = { {-0.35, -0.35}, {0.35, 0.35} }, * fast_replaceable_group = "container", * selection_box = { {-0.5, -0.5}, {0.5, 0.5} }, * inventory_size = 16, * open_sound = { filename = "__base__/sound/wooden-chest-open.ogg" }, * close_sound = { filename = "__base__/sound/wooden-chest-close.ogg" }, * picture = * { * filename = "__base__/graphics/entity/wooden-chest/wooden-chest.png", * priority = "extra-high", * width = 46, * height = 33, * shift = {0.25, 0.015625} * } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html Online documentation} */ export interface EntityWithHealthPrototype extends EntityPrototype { type: | "accumulator" | "agricultural-tower" | "ammo-turret" | "arithmetic-combinator" | "artillery-turret" | "artillery-wagon" | "assembling-machine" | "asteroid-collector" | "asteroid" | "beacon" | "boiler" | "burner-generator" | "capture-robot" | "car" | "cargo-bay" | "cargo-landing-pad" | "cargo-pod" | "cargo-wagon" | "character" | "combat-robot" | "constant-combinator" | "construction-robot" | "container" | "curved-rail-a" | "curved-rail-b" | "decider-combinator" | "display-panel" | "electric-energy-interface" | "electric-pole" | "electric-turret" | "elevated-curved-rail-a" | "elevated-curved-rail-b" | "elevated-half-diagonal-rail" | "elevated-straight-rail" | "unit-spawner" | "fish" | "fluid-turret" | "fluid-wagon" | "furnace" | "fusion-generator" | "fusion-reactor" | "gate" | "generator" | "half-diagonal-rail" | "heat-interface" | "heat-pipe" | "infinity-cargo-wagon" | "infinity-container" | "infinity-pipe" | "inserter" | "lab" | "lamp" | "land-mine" | "lane-splitter" | "legacy-curved-rail" | "legacy-straight-rail" | "lightning-attractor" | "linked-belt" | "linked-container" | "loader-1x1" | "loader" | "locomotive" | "logistic-container" | "logistic-robot" | "market" | "mining-drill" | "offshore-pump" | "pipe" | "pipe-to-ground" | "plant" | "player-port" | "power-switch" | "programmable-speaker" | "proxy-container" | "pump" | "radar" | "rail-chain-signal" | "rail-ramp" | "rail-signal" | "rail-support" | "reactor" | "roboport" | "rocket-silo" | "segment" | "segmented-unit" | "selector-combinator" | "simple-entity" | "simple-entity-with-force" | "simple-entity-with-owner" | "solar-panel" | "space-platform-hub" | "spider-leg" | "spider-unit" | "spider-vehicle" | "splitter" | "storage-tank" | "straight-rail" | "temporary-container" | "thruster" | "train-stop" | "transport-belt" | "tree" | "turret" | "underground-belt" | "unit" | "valve" | "wall" /** * **Default:** `10` * * The unit health can never go over the maximum. Default health of units on creation is set to max. Must be greater than 0. * @example * max_health = 50 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#max_health Online documentation} */ max_health?: float /** * **Default:** `0` * * The amount of health automatically regenerated per tick. The entity must be active for this to work. * @example * healing_per_tick = 0.01 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#healing_per_tick Online documentation} */ healing_per_tick?: float /** * **Default:** `1` * * Multiplier of {@link RepairToolPrototype#speed RepairToolPrototype::speed} for this entity prototype. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#repair_speed_modifier Online documentation} */ repair_speed_modifier?: float /** * The entities that are spawned in place of this one when it dies. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#dying_explosion Online documentation} */ dying_explosion?: ExplosionDefinition | readonly ExplosionDefinition[] dying_trigger_effect?: TriggerEffect damaged_trigger_effect?: TriggerEffect /** * The loot is dropped on the ground when the entity is killed. * @example * loot = * { * { * count_max = 10, * count_min = 2, * item = "stone", * probability = 1 * } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#loot Online documentation} */ loot?: readonly LootItem[] /** * See {@linkplain https://wiki.factorio.com/Damage damage}. * @example * resistances = * { * { * type = "fire", * percent = 80 * }, * { * type = "explosion", * percent = 30 * } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#resistances Online documentation} */ resistances?: readonly Resistance[] /** * **Default:** `Empty` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#attack_reaction Online documentation} */ attack_reaction?: AttackReactionItem | readonly AttackReactionItem[] /** * **Default:** `Utility sound defaultManualRepair` * * Played when this entity is repaired with a {@link RepairToolPrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#repair_sound Online documentation} */ repair_sound?: Sound /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#alert_when_damaged Online documentation} */ alert_when_damaged?: boolean /** * **Default:** `true` * * Whether the resistances of this entity should be hidden in the entity tooltip. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#hide_resistances Online documentation} */ hide_resistances?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#create_ghost_on_death Online documentation} */ create_ghost_on_death?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#random_corpse_variation Online documentation} */ random_corpse_variation?: boolean /** * **Default:** `"lower-object"` * * May also be defined inside `graphics_set` instead of directly in the entity prototype. This is useful for entities that use a `graphics_set` property to define their graphics, because then all graphics can be defined in one place. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#integration_patch_render_layer Online documentation} */ integration_patch_render_layer?: RenderLayer /** * **Default:** `Empty` * * Specifies the names of the {@link CorpsePrototype} to be used when this entity dies. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#corpse Online documentation} */ corpse?: EntityID | readonly EntityID[] /** * May also be defined inside `graphics_set` instead of directly in the entity prototype. This is useful for entities that use a `graphics_set` property to define their graphics, because then all graphics can be defined in one place. * * Sprite drawn on ground under the entity to make it feel more integrated into the ground. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#integration_patch Online documentation} */ integration_patch?: Sprite4Way /** * **Default:** `0.05` * * Fraction of health by which predicted damage must be exceeded before entity is considered as "predicted to die" causing turrets (and others) to stop shooting more projectiles. If entity is healing it is better to keep larger margin to avoid cases where not enough projectiles goes towards a target and it heals causing it to survive all the incoming projectiles. If entity does not heal, margin may be reduced. Must be >= 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithHealthPrototype.html#overkill_fraction Online documentation} */ overkill_fraction?: float } /** * Abstract base of all entities with a force in the game. These entities have a {@link import("factorio:runtime").LuaEntity#unit_number LuaEntity::unit_number} during runtime. Can be high priority {@linkplain https://wiki.factorio.com/Military_units_and_structures military targets}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithOwnerPrototype.html Online documentation} */ export interface EntityWithOwnerPrototype extends EntityWithHealthPrototype { type: | "accumulator" | "agricultural-tower" | "ammo-turret" | "arithmetic-combinator" | "artillery-turret" | "artillery-wagon" | "assembling-machine" | "asteroid-collector" | "asteroid" | "beacon" | "boiler" | "burner-generator" | "capture-robot" | "car" | "cargo-bay" | "cargo-landing-pad" | "cargo-pod" | "cargo-wagon" | "character" | "combat-robot" | "constant-combinator" | "construction-robot" | "container" | "curved-rail-a" | "curved-rail-b" | "decider-combinator" | "display-panel" | "electric-energy-interface" | "electric-pole" | "electric-turret" | "elevated-curved-rail-a" | "elevated-curved-rail-b" | "elevated-half-diagonal-rail" | "elevated-straight-rail" | "unit-spawner" | "fluid-turret" | "fluid-wagon" | "furnace" | "fusion-generator" | "fusion-reactor" | "gate" | "generator" | "half-diagonal-rail" | "heat-interface" | "heat-pipe" | "infinity-cargo-wagon" | "infinity-container" | "infinity-pipe" | "inserter" | "lab" | "lamp" | "land-mine" | "lane-splitter" | "legacy-curved-rail" | "legacy-straight-rail" | "lightning-attractor" | "linked-belt" | "linked-container" | "loader-1x1" | "loader" | "locomotive" | "logistic-container" | "logistic-robot" | "market" | "mining-drill" | "offshore-pump" | "pipe" | "pipe-to-ground" | "player-port" | "power-switch" | "programmable-speaker" | "proxy-container" | "pump" | "radar" | "rail-chain-signal" | "rail-ramp" | "rail-signal" | "rail-support" | "reactor" | "roboport" | "rocket-silo" | "segment" | "segmented-unit" | "selector-combinator" | "simple-entity-with-force" | "simple-entity-with-owner" | "solar-panel" | "space-platform-hub" | "spider-leg" | "spider-unit" | "spider-vehicle" | "splitter" | "storage-tank" | "straight-rail" | "temporary-container" | "thruster" | "train-stop" | "transport-belt" | "turret" | "underground-belt" | "unit" | "valve" | "wall" /** * **Default:** `false` * * Whether this prototype should be a high priority target for enemy forces. See {@linkplain https://wiki.factorio.com/Military_units_and_structures Military units and structures}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithOwnerPrototype.html#is_military_target Online documentation} */ is_military_target?: boolean /** * **Default:** `false` * * If this is true, this entity's `is_military_target` property can be changed during runtime (on the entity, not on the prototype itself). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithOwnerPrototype.html#allow_run_time_change_of_is_military_target Online documentation} */ allow_run_time_change_of_is_military_target?: boolean /** * The shift from the bottom left corner of the selection box. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithOwnerPrototype.html#quality_indicator_shift Online documentation} */ quality_indicator_shift?: Vector /** * **Default:** `Calculated based on entity tile_width and height` * * The default scale is based on the tile distance of the shorter dimension. Where size 3 results into scale 1. The default minimum is 0.5 and maximum 1.0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EntityWithOwnerPrototype.html#quality_indicator_scale Online documentation} */ quality_indicator_scale?: double } /** * This prototype is used for receiving an achievement when the player equips armor. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipArmorAchievementPrototype.html Online documentation} */ export interface EquipArmorAchievementPrototype extends AchievementPrototype { type: "equip-armor-achievement" /** * The achievement will trigger if this armor or the alternative armor is equipped. * @example * armor = "power-armor-mk2" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipArmorAchievementPrototype.html#armor Online documentation} */ armor: ItemID /** * The achievement will trigger if this armor or the other armor is equipped. * @example * alternative_armor = "mech-armor" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipArmorAchievementPrototype.html#alternative_armor Online documentation} */ alternative_armor: ItemID limit_quality: QualityID /** * **Default:** `1` * * How many armors need to be equipped. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipArmorAchievementPrototype.html#amount Online documentation} */ amount?: uint32 /** * **Default:** `false` * * If this is false, the player carries over their statistics from this achievement through all their saves. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipArmorAchievementPrototype.html#limited_to_one_game Online documentation} */ limited_to_one_game?: boolean } /** * Defines a category to be available to {@link EquipmentPrototype equipment} and {@link EquipmentGridPrototype equipment grids}. * * _Prototype limited to **255** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentCategory.html Online documentation} */ export interface EquipmentCategory extends Prototype { type: "equipment-category" } /** * The equipment used for ghosts of equipment. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentGhostPrototype.html Online documentation} */ export interface EquipmentGhostPrototype extends Omit { type: "equipment-ghost" /** * Not loaded for equipment ghosts. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentGhostPrototype.html#energy_source Online documentation} */ energy_source?: ElectricEnergySource /** * Not loaded for equipment ghosts. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentGhostPrototype.html#shape Online documentation} */ shape?: EquipmentShape /** * Not loaded for equipment ghosts. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentGhostPrototype.html#categories Online documentation} */ categories?: readonly EquipmentCategoryID[] /** * Not loaded for equipment ghosts. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentGhostPrototype.html#take_result Online documentation} */ take_result?: ItemID } /** * The prototype of an equipment grid, for example the one used in a {@linkplain https://wiki.factorio.com/Power_armor power armor}. * * _Prototype limited to **255** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentGridPrototype.html Online documentation} */ export interface EquipmentGridPrototype extends Prototype { type: "equipment-grid" /** * Only {@link EquipmentPrototype equipment} with at least one of these {@link EquipmentCategory categories} can be inserted into the grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentGridPrototype.html#equipment_categories Online documentation} */ equipment_categories: readonly EquipmentCategoryID[] width: uint32 height: uint32 /** * **Default:** `false` * * Whether this locked from user interaction which means that the user cannot put equipment into or take equipment from this equipment grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentGridPrototype.html#locked Online documentation} */ locked?: boolean } /** * Abstract base of all equipment modules. Equipment modules can be inserted into {@link EquipmentGridPrototype equipment grids}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentPrototype.html Online documentation} */ export interface EquipmentPrototype extends Prototype { type: | "active-defense-equipment" | "battery-equipment" | "belt-immunity-equipment" | "energy-shield-equipment" | "equipment-ghost" | "generator-equipment" | "inventory-bonus-equipment" | "movement-bonus-equipment" | "night-vision-equipment" | "roboport-equipment" | "solar-panel-equipment" /** * The graphics to use when this equipment is shown inside an equipment grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentPrototype.html#sprite Online documentation} */ sprite: Sprite /** * How big this equipment should be in the grid and whether it should be one solid rectangle or of a custom shape. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentPrototype.html#shape Online documentation} */ shape: EquipmentShape /** * Sets the categories of the equipment. It can only be inserted into {@link EquipmentGridPrototype#equipment_categories grids} with at least one matching category. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentPrototype.html#categories Online documentation} */ categories: readonly EquipmentCategoryID[] energy_source: ElectricEnergySource /** * **Default:** ``name` of this prototype` * * Name of the item prototype that should be returned to the player when they remove this equipment from an equipment grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentPrototype.html#take_result Online documentation} */ take_result?: ItemID /** * **Default:** `equipment_default_background_color in utility constants` * * The color that the background of this equipment should have when shown inside an equipment grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentPrototype.html#background_color Online documentation} */ background_color?: Color /** * **Default:** `equipment_default_background_border_color in utility constants` * * The color that the border of the background of this equipment should have when shown inside an equipment grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentPrototype.html#background_border_color Online documentation} */ background_border_color?: Color /** * **Default:** `equipment_default_grabbed_background_color in utility constants` * * The color that the background of this equipment should have when held in the players hand and hovering over an equipment grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/EquipmentPrototype.html#grabbed_background_color Online documentation} */ grabbed_background_color?: Color } /** * Used to play an animation and a sound. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html Online documentation} */ export interface ExplosionPrototype extends EntityPrototype { type: "explosion" animations: AnimationVariations sound?: Sound /** * Mandatory if `smoke_count` > 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#smoke Online documentation} */ smoke?: TrivialSmokeID /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#height Online documentation} */ height?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#smoke_slow_down_factor Online documentation} */ smoke_slow_down_factor?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#smoke_count Online documentation} */ smoke_count?: uint16 /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#rotate Online documentation} */ rotate?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#beam Online documentation} */ beam?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#correct_rotation Online documentation} */ correct_rotation?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#scale_animation_speed Online documentation} */ scale_animation_speed?: boolean /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#fade_in_duration Online documentation} */ fade_in_duration?: uint8 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#fade_out_duration Online documentation} */ fade_out_duration?: uint8 /** * **Default:** `"explosion"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#scale_in_duration Online documentation} */ scale_in_duration?: uint8 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#scale_out_duration Online documentation} */ scale_out_duration?: uint8 /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#scale_end Online documentation} */ scale_end?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#scale_increment_per_tick Online documentation} */ scale_increment_per_tick?: float /** * **Default:** `0` * * Silently clamped to be between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#light_intensity_factor_initial Online documentation} */ light_intensity_factor_initial?: float /** * **Default:** `0` * * Silently clamped to be between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#light_intensity_factor_final Online documentation} */ light_intensity_factor_final?: float /** * **Default:** `0.05` * * Silently clamped to be between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#light_size_factor_initial Online documentation} */ light_size_factor_initial?: float /** * **Default:** `0.1` * * Silently clamped to be between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#light_size_factor_final Online documentation} */ light_size_factor_final?: float light?: LightDefinition /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#light_intensity_peak_start_progress Online documentation} */ light_intensity_peak_start_progress?: float /** * **Default:** `0.9` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#light_intensity_peak_end_progress Online documentation} */ light_intensity_peak_end_progress?: float /** * **Default:** `0.1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#light_size_peak_start_progress Online documentation} */ light_size_peak_start_progress?: float /** * **Default:** `0.5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#light_size_peak_end_progress Online documentation} */ light_size_peak_end_progress?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#scale_initial Online documentation} */ scale_initial?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#scale_initial_deviation Online documentation} */ scale_initial_deviation?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#scale Online documentation} */ scale?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#scale_deviation Online documentation} */ scale_deviation?: float /** * **Default:** `0` * * Number of ticks to delay the explosion effects by. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#delay Online documentation} */ delay?: MapTick /** * **Default:** `0` * * The maximum number of ticks to randomly delay the explosion effects by. In addition to the number of ticks defined by `delay`, the explosion will be delayed by a random number of ticks between 0 and `delay_deviation` (inclusive). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#delay_deviation Online documentation} */ delay_deviation?: MapTick /** * The effect/trigger that happens when the explosion effect triggers after the initial delay as defined by `delay` and `delay_deviation`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ExplosionPrototype.html#explosion_effect Online documentation} */ explosion_effect?: Trigger } /** * A fire. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html Online documentation} */ export interface FireFlamePrototype extends EntityPrototype { type: "fire" damage_per_tick: DamageParameters spread_delay: uint32 spread_delay_deviation: uint32 /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#initial_render_layer Online documentation} */ initial_render_layer?: RenderLayer /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#secondary_render_layer Online documentation} */ secondary_render_layer?: RenderLayer small_tree_fire_pictures?: AnimationVariations pictures?: AnimationVariations smoke_source_pictures?: AnimationVariations secondary_pictures?: AnimationVariations burnt_patch_pictures?: SpriteVariations /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#secondary_picture_fade_out_start Online documentation} */ secondary_picture_fade_out_start?: uint32 /** * **Default:** `30` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#secondary_picture_fade_out_duration Online documentation} */ secondary_picture_fade_out_duration?: uint32 spawn_entity?: EntityID smoke?: readonly SmokeSource[] /** * **Default:** `200` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#maximum_spread_count Online documentation} */ maximum_spread_count?: uint16 /** * **Default:** `0` * * Spawns this many `secondary_pictures` around the entity when it first spawns. It waits `delay_between_initial_flames` between each spawned `secondary_pictures`. This can be used to make fires look less repetitive. * * For example, spitters use this to make several smaller splashes around the main one. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#initial_flame_count Online documentation} */ initial_flame_count?: uint8 /** * **Default:** `false` * * If `false`, then all animations loop. If `true`, they run once and stay on the final frame. Also changes the behavior of several other fire properties as mentioned in their descriptions. * * For example, spitters use alternate behavior, flamethrower flames don't. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#uses_alternative_behavior Online documentation} */ uses_alternative_behavior?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#limit_overlapping_particles Online documentation} */ limit_overlapping_particles?: boolean /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#tree_dying_factor Online documentation} */ tree_dying_factor?: float /** * **Default:** `30` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#fade_in_duration Online documentation} */ fade_in_duration?: uint32 /** * **Default:** `30` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#fade_out_duration Online documentation} */ fade_out_duration?: uint32 /** * **Default:** `300` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#initial_lifetime Online documentation} */ initial_lifetime?: uint32 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#damage_multiplier_decrease_per_tick Online documentation} */ damage_multiplier_decrease_per_tick?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#damage_multiplier_increase_per_added_fuel Online documentation} */ damage_multiplier_increase_per_added_fuel?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#maximum_damage_multiplier Online documentation} */ maximum_damage_multiplier?: float /** * **Default:** `20` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#lifetime_increase_by Online documentation} */ lifetime_increase_by?: uint32 /** * **Default:** `10` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#lifetime_increase_cooldown Online documentation} */ lifetime_increase_cooldown?: uint32 /** * **Default:** `Max uint32` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#maximum_lifetime Online documentation} */ maximum_lifetime?: uint32 /** * **Default:** `10` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#add_fuel_cooldown Online documentation} */ add_fuel_cooldown?: uint32 /** * **Default:** `10` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#delay_between_initial_flames Online documentation} */ delay_between_initial_flames?: uint32 /** * **Default:** `30` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#smoke_fade_in_duration Online documentation} */ smoke_fade_in_duration?: uint32 /** * **Default:** `30` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#smoke_fade_out_duration Online documentation} */ smoke_fade_out_duration?: uint32 on_fuel_added_action?: Trigger on_damage_tick_effect?: Trigger light?: LightDefinition /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#light_size_modifier_per_flame Online documentation} */ light_size_modifier_per_flame?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#light_size_modifier_maximum Online documentation} */ light_size_modifier_maximum?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#particle_alpha_blend_duration Online documentation} */ particle_alpha_blend_duration?: uint16 /** * **Default:** `1800` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#burnt_patch_lifetime Online documentation} */ burnt_patch_lifetime?: uint32 /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#burnt_patch_alpha_default Online documentation} */ burnt_patch_alpha_default?: float /** * **Default:** `1` * * Only loaded if `uses_alternative_behavior` is true. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#particle_alpha Online documentation} */ particle_alpha?: float /** * **Default:** `0` * * Only loaded if `uses_alternative_behavior` is true. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#particle_alpha_deviation Online documentation} */ particle_alpha_deviation?: float /** * **Default:** `1` * * Only loaded if `uses_alternative_behavior` is false. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#flame_alpha Online documentation} */ flame_alpha?: float /** * **Default:** `0` * * Only loaded if `uses_alternative_behavior` is false. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#flame_alpha_deviation Online documentation} */ flame_alpha_deviation?: float /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FireFlamePrototype.html#burnt_patch_alpha_variations Online documentation} */ burnt_patch_alpha_variations?: readonly TileAndAlpha[] } /** * Entity that spawns in water tiles, which can be mined. Moves around unless deactivated with {@link import("factorio:runtime").LuaEntity#active LuaEntity::active} = false. * @example * { * type = "fish", * name = "fish", * icon = "__base__/graphics/icons/fish.png", * icon_size = 64, * flags = { "placeable-neutral", "not-on-map" }, * minable = { mining_time = 1, result = "raw-fish", count = 5 }, * max_health = 20, * subgroup = "creatures", * order = "b-a", * collision_box = { {-0.75, -0.75}, {0.75, 0.75} }, * selection_box = { {-0.5, -0.3}, {0.5, 0.3} }, * pictures = * { * { * filename = "__base__/graphics/entity/fish/fish-1.png", * priority = "extra-high", * width = 22, * height = 36 * }, * { * filename = "__base__/graphics/entity/fish/fish-2.png", * priority = "extra-high", * width = 32, * height = 32 * } * }, * autoplace = { influence = 0.01 }, * protected_from_tile_building = false * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FishPrototype.html Online documentation} */ export interface FishPrototype extends EntityWithHealthPrototype { type: "fish" pictures?: SpriteVariations } /** * A fluid. * @example * { * type = "fluid", * name = "water", * default_temperature = 15, * max_temperature = 100, * heat_capacity = "0.2kJ", * base_color = { r = 0, g = 0.34, b = 0.6 }, * flow_color = { r = 0.7, g = 0.7, b = 0.7 }, * icon = "__base__/graphics/icons/fluid/water.png", * icon_size = 64, * order = "a[fluid]-a[water]" * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html Online documentation} */ export interface FluidPrototype extends Prototype { type: "fluid" /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * Also the minimum temperature of the fluid. Has to be lower than `max_temperature`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#default_temperature Online documentation} */ default_temperature: float /** * Used by bars that show the fluid color, like the flamethrower turret fill bar in the tooltip, or the fill bar for the fluid wagon tooltip; and for the pipe windows and storage tank fill gauges. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#base_color Online documentation} */ base_color: Color /** * Used only for pipe windows or storage tank fill gauges. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#flow_color Online documentation} */ flow_color: Color /** * Color to use for visualization. This color should be vibrant and easily distinguished. * * If not specified, this will be auto-generated from `base_color` by converting to HSV, decreasing saturation by 10% and setting value to 80%. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#visualization_color Online documentation} */ visualization_color?: Color /** * **Default:** `value of `default_temperature`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#max_temperature Online documentation} */ max_temperature?: float /** * **Default:** `"1kJ"` * * Joule needed to heat 1 Unit by 1 °C. * @example * heat_capacity = "0.2kJ" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#heat_capacity Online documentation} */ heat_capacity?: Energy /** * **Default:** `"0J"` * @example * fuel_value = "3MJ" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#fuel_value Online documentation} */ fuel_value?: Energy /** * **Default:** `1` * * Scales pollution generated when the fluid is consumed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#emissions_multiplier Online documentation} */ emissions_multiplier?: double /** * **Default:** `max value of float` * * Above this temperature the `gas_flow` animation is used to display the fluid inside storage tanks and pipes. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#gas_temperature Online documentation} */ gas_temperature?: float /** * **Default:** `true` * * Whether the fluid should be included in the barrel recipes automatically generated by the base mod. * * This property is not read by the game engine itself, but the base mod's data-updates.lua file. This means it is discarded by the game engine after loading finishes. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#auto_barrel Online documentation} */ auto_barrel?: boolean /** * **Default:** `false` * * Hides the fluid from the signal selection screen. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidPrototype.html#hidden Online documentation} */ hidden?: boolean } /** * Used for example for the handheld flamethrower. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html Online documentation} */ export interface FluidStreamPrototype extends EntityPrototype { type: "stream" /** * The stream will spawn one particle every `particle_spawn_interval` ticks until the `particle_spawn_timeout` is reached. The first particle will trigger an `initial_action` upon landing. Each particle triggers an `action` upon landing. Particles spawned within a single `particle_spawn_timeout` interval will be connected by a stretched `spine_animation`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_spawn_interval Online documentation} */ particle_spawn_interval: uint16 /** * Must be larger than 0. `particle_horizontal_speed` has to be greater than `particle_horizontal_speed_deviation`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_horizontal_speed Online documentation} */ particle_horizontal_speed: float particle_horizontal_speed_deviation: float particle_vertical_acceleration: float /** * Action that is triggered when the first particle lands. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#initial_action Online documentation} */ initial_action?: Trigger /** * Action that is triggered every time a particle lands. Not triggered for the first particle if `initial_action` is non-empty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#action Online documentation} */ action?: Trigger special_neutral_target_damage?: DamageParameters /** * **Default:** `0.5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#width Online documentation} */ width?: float /** * **Default:** `20` * * Number of spawned child particles of the stream. Must be greater than 0 and less than 256. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_buffer_size Online documentation} */ particle_buffer_size?: uint32 /** * **Default:** `4 * `particle_spawn_interval`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_spawn_timeout Online documentation} */ particle_spawn_timeout?: uint16 /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_start_alpha Online documentation} */ particle_start_alpha?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_end_alpha Online documentation} */ particle_end_alpha?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_start_scale Online documentation} */ particle_start_scale?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_alpha_per_part Online documentation} */ particle_alpha_per_part?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_scale_per_part Online documentation} */ particle_scale_per_part?: float /** * **Default:** `1` * * Value between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_fade_out_threshold Online documentation} */ particle_fade_out_threshold?: float /** * **Default:** `0` * * Value between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_loop_exit_threshold Online documentation} */ particle_loop_exit_threshold?: float /** * **Default:** `1` * * Will be set to 1 by the game if less than 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_loop_frame_count Online documentation} */ particle_loop_frame_count?: uint16 /** * **Default:** `65535` * * Will be set to 1 by the game if less than 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#particle_fade_out_duration Online documentation} */ particle_fade_out_duration?: uint16 spine_animation?: Animation particle?: Animation shadow?: Animation /** * Smoke spawning is controlled by `progress_to_create_smoke`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#smoke_sources Online documentation} */ smoke_sources?: readonly SmokeSource[] /** * **Default:** `0.5` * * The point in the particles projectile arc to start spawning smoke. 0.5 (the default) starts spawning smoke at the halfway point between the source and target. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#progress_to_create_smoke Online documentation} */ progress_to_create_smoke?: float stream_light?: LightDefinition ground_light?: LightDefinition /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#target_position_deviation Online documentation} */ target_position_deviation?: double /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#oriented_particle Online documentation} */ oriented_particle?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#shadow_scale_enabled Online documentation} */ shadow_scale_enabled?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidStreamPrototype.html#target_initial_position_only Online documentation} */ target_initial_position_only?: boolean } /** * A turret that uses {@link FluidPrototype fluid} as ammunition. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidTurretPrototype.html Online documentation} */ export interface FluidTurretPrototype extends TurretPrototype { type: "fluid-turret" fluid_buffer_size: FluidAmount fluid_buffer_input_flow: FluidAmount /** * Before an turret that was out of fluid ammunition is able to fire again, the `fluid_buffer_size` must fill to this proportion. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidTurretPrototype.html#activation_buffer_ratio Online documentation} */ activation_buffer_ratio: FluidAmount fluid_box: FluidBox muzzle_light?: LightDefinition enough_fuel_indicator_light?: LightDefinition not_enough_fuel_indicator_light?: LightDefinition muzzle_animation?: Animation folded_muzzle_animation_shift?: AnimatedVector preparing_muzzle_animation_shift?: AnimatedVector prepared_muzzle_animation_shift?: AnimatedVector starting_attack_muzzle_animation_shift?: AnimatedVector attacking_muzzle_animation_shift?: AnimatedVector ending_attack_muzzle_animation_shift?: AnimatedVector folding_muzzle_animation_shift?: AnimatedVector enough_fuel_indicator_picture?: Sprite4Way not_enough_fuel_indicator_picture?: Sprite4Way /** * The sprite will be drawn on top of fluid turrets that are out of fluid ammunition. If the `out_of_ammo_alert_icon` is not set, {@link UtilitySprites#fluid_icon UtilitySprites::fluid_icon} will be used instead. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidTurretPrototype.html#out_of_ammo_alert_icon Online documentation} */ out_of_ammo_alert_icon?: Sprite /** * Always `true`, forcing the turret's collision box to be affected by its rotation. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidTurretPrototype.html#turret_base_has_direction Online documentation} */ turret_base_has_direction: true /** * Requires ammo_type in attack_parameters. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidTurretPrototype.html#attack_parameters Online documentation} */ attack_parameters: StreamAttackParameters } /** * A {@linkplain https://wiki.factorio.com/Fluid_wagon fluid wagon}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidWagonPrototype.html Online documentation} */ export interface FluidWagonPrototype extends RollingStockPrototype { type: "fluid-wagon" capacity: FluidAmount /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidWagonPrototype.html#quality_affects_capacity Online documentation} */ quality_affects_capacity?: boolean /** * **Default:** `3` * * Must be 1, 2 or 3. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidWagonPrototype.html#tank_count Online documentation} */ tank_count?: uint8 /** * **Default:** `"default"` * * Pumps are only allowed to connect to this fluid wagon if the pump's {@link PipeConnectionDefinition fluid box connection} and this fluid wagon share a connection category. Pump may have different connection categories on the input and output side, connection categories will be taken from the connection that is facing towards fluid wagon. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FluidWagonPrototype.html#connection_category Online documentation} */ connection_category?: string | readonly string[] } /** * Abstract base for construction/logistics and combat robots. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FlyingRobotPrototype.html Online documentation} */ export interface FlyingRobotPrototype extends EntityWithOwnerPrototype { type: "capture-robot" | "combat-robot" | "construction-robot" | "logistic-robot" /** * The flying speed of the robot, in tiles/tick. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FlyingRobotPrototype.html#speed Online documentation} */ speed: double /** * **Default:** `max double` * * The maximum flying speed of the robot, including bonuses, in tiles/tick. Useful to limit the impact of {@link WorkerRobotSpeedModifier worker robot speed research}. * * Must be >= speed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FlyingRobotPrototype.html#max_speed Online documentation} */ max_speed?: double /** * **Default:** `0` * * How much energy can be stored in the batteries. * * Used only by {@link RobotWithLogisticInterfacePrototype robots with logistic interface}. * @example * max_energy = "1.5MJ" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FlyingRobotPrototype.html#max_energy Online documentation} */ max_energy?: Energy /** * **Default:** `0` * * How much energy does it cost to move 1 tile. * * Used only by {@link RobotWithLogisticInterfacePrototype robots with logistic interface}. * @example * energy_per_move = "5kJ" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FlyingRobotPrototype.html#energy_per_move Online documentation} */ energy_per_move?: Energy /** * **Default:** `0` * * How much energy does it cost to fly for 1 tick. * * Used only by {@link RobotWithLogisticInterfacePrototype robots with logistic interface}. * @example * energy_per_tick = "0.05kJ" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FlyingRobotPrototype.html#energy_per_tick Online documentation} */ energy_per_tick?: Energy /** * **Default:** `0.2` * * The robot will go to charge when its battery fill ratio is less than this. * * Used only by {@link RobotWithLogisticInterfacePrototype robots with logistic interface}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FlyingRobotPrototype.html#min_to_charge Online documentation} */ min_to_charge?: float /** * **Default:** `0.95` * * If the robot's battery fill ratio is more than this, it does not need to charge before stationing. * * Used only by {@link RobotWithLogisticInterfacePrototype robots with logistic interface}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FlyingRobotPrototype.html#max_to_charge Online documentation} */ max_to_charge?: float /** * **Default:** `0` * * Some robots simply crash, some slowdown but keep going. 0 means crash. * * Used only by {@link RobotWithLogisticInterfacePrototype robots with logistic interface}. * @example * speed_multiplier_when_out_of_energy = 0.2 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FlyingRobotPrototype.html#speed_multiplier_when_out_of_energy Online documentation} */ speed_multiplier_when_out_of_energy?: float /** * **Default:** `true` * * Whether this prototype should be a high priority target for enemy forces. See {@linkplain https://wiki.factorio.com/Military_units_and_structures Military units and structures}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FlyingRobotPrototype.html#is_military_target Online documentation} */ is_military_target?: boolean } /** * Fonts are used in all GUIs in the game. * @example * { * type = "font", * name = "default-button", * from = "default-bold", * size = 18 * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FontPrototype.html Online documentation} */ export interface FontPrototype { readonly type: "font" /** * Name of the font. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FontPrototype.html#name Online documentation} */ name: string /** * Size of the font. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FontPrototype.html#size Online documentation} */ size: int32 /** * The name of the fonts .ttf descriptor. This descriptor must be defined in the locale info.json. Refer to `data/core/locale/_language_/info.json` for examples. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FontPrototype.html#from Online documentation} */ from: string /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FontPrototype.html#spacing Online documentation} */ spacing?: float /** * **Default:** `false` * * Whether the font has a border. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FontPrototype.html#border Online documentation} */ border?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FontPrototype.html#filtered Online documentation} */ filtered?: boolean /** * The color of the border, if enabled. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FontPrototype.html#border_color Online documentation} */ border_color?: Color } /** * Each item which has a fuel_value must have a fuel category. The fuel categories are used to allow only certain fuels to be used in {@link EnergySource}. * * _Prototype limited to **255** total instances_ * @example * { * type = "fuel-category", * name = "best-fuel" * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FuelCategory.html Online documentation} */ export interface FuelCategory extends Prototype { type: "fuel-category" /** * **Default:** ``{"description.fuel-value"}`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FuelCategory.html#fuel_value_type Online documentation} */ fuel_value_type?: LocalisedString } /** * A furnace. Normal furnaces only process "smelting" category recipes, but you can make furnaces that process other {@link RecipeCategory recipe categories}. The difference to assembling machines is that furnaces automatically choose their recipe based on input. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FurnacePrototype.html Online documentation} */ export interface FurnacePrototype extends CraftingMachinePrototype { type: "furnace" /** * The number of output slots. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FurnacePrototype.html#result_inventory_size Online documentation} */ result_inventory_size: ItemStackIndex /** * The number of input slots, but not more than 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FurnacePrototype.html#source_inventory_size Online documentation} */ source_inventory_size: ItemStackIndex /** * **Default:** `"inventory-restriction.cant-be-smelted"` * * The locale key of the message shown when the player attempts to insert an item into the furnace that cannot be processed by that furnace. In-game, the locale is provided the `__1__` parameter, which is the localised name of the item. * * The locale key is also used with an `_until` suffix for items that cannot be processed until they recipe is unlocked by a technology. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FurnacePrototype.html#cant_insert_at_source_message_key Online documentation} */ cant_insert_at_source_message_key?: string /** * **Default:** `""` * * The locale key of the tooltip to be shown in the input slot instead of the automatically generated list of items that fit there * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FurnacePrototype.html#custom_input_slot_tooltip_key Online documentation} */ custom_input_slot_tooltip_key?: string circuit_connector?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] circuit_connector_flipped?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FurnacePrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FurnacePrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FurnacePrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean default_recipe_finished_signal?: SignalIDConnector default_working_signal?: SignalIDConnector } /** * Consumes a fluid to generate electricity and create another fluid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionGeneratorPrototype.html Online documentation} */ export interface FusionGeneratorPrototype extends EntityWithOwnerPrototype { type: "fusion-generator" /** * `output_flow_limit` is mandatory and must be positive. `output_flow_limit` is the maximum power output of the generator. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionGeneratorPrototype.html#energy_source Online documentation} */ energy_source: ElectricEnergySource graphics_set?: FusionGeneratorGraphicsSet /** * {@link FluidBox#filter filter} is mandatory. The temperature (or fuel value if `burns_fluid` is true) of this fluid is used to calculate the available power output. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionGeneratorPrototype.html#input_fluid_box Online documentation} */ input_fluid_box: FluidBox /** * {@link FluidBox#filter filter} is mandatory. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionGeneratorPrototype.html#output_fluid_box Online documentation} */ output_fluid_box: FluidBox /** * Must be positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionGeneratorPrototype.html#max_fluid_usage Online documentation} */ max_fluid_usage: FluidAmount /** * Affects animation speed and working sound. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionGeneratorPrototype.html#perceived_performance Online documentation} */ perceived_performance?: PerceivedPerformance /** * **Default:** `false` * * If set to `true`, the available power output is based on the {@link FluidPrototype#fuel_value FluidPrototype::fuel_value}. Otherwise, the available power output will be based on the fluid temperature and {@link FluidPrototype#heat_capacity FluidPrototype::heat_capacity}: `energy = fluid_amount * fluid_temperature * fluid_heat_capacity * effectivity` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionGeneratorPrototype.html#burns_fluid Online documentation} */ burns_fluid?: boolean /** * **Default:** `1` * * `1` means 100% effectivity. Must be greater than `0`. Multiplier of the energy output. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionGeneratorPrototype.html#effectivity Online documentation} */ effectivity?: double } /** * Fusion reactor. Consumes fluid, fuel and additional energy to produce other fluid. Kind of advanced boiler. Can also have neighbour bonus. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html Online documentation} */ export interface FusionReactorPrototype extends EntityWithOwnerPrototype { type: "fusion-reactor" /** * First energy source for the process: provides energy * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html#energy_source Online documentation} */ energy_source: ElectricEnergySource /** * Second energy source for the process: provides fuel * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html#burner Online documentation} */ burner: BurnerEnergySource graphics_set: FusionReactorGraphicsSet /** * The input fluid box. * * {@link FluidBox#filter filter} is mandatory. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html#input_fluid_box Online documentation} */ input_fluid_box: FluidBox /** * The output fluid box. * * {@link FluidBox#filter filter} is mandatory. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html#output_fluid_box Online documentation} */ output_fluid_box: FluidBox /** * Defines connection points to neighbours used to compute neighbour bonus. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html#neighbour_connectable Online documentation} */ neighbour_connectable?: NeighbourConnectable /** * **Default:** `false` * * If set to true, only North and East direction will be buildable. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html#two_direction_only Online documentation} */ two_direction_only?: boolean /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html#neighbour_bonus Online documentation} */ neighbour_bonus?: float /** * Power input consumed from first energy source at full performance. * * Cannot be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html#power_input Online documentation} */ power_input: Energy /** * Maximum amount of fluid converted from `input_fluid_box` to `output_fluid_box` within a single tick. * * Must be positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html#max_fluid_usage Online documentation} */ max_fluid_usage: FluidAmount /** * The temperature of the fluid to output. If not defined, the default temperature of the output fluid will be used. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html#target_temperature Online documentation} */ target_temperature?: float /** * Affects working sound. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/FusionReactorPrototype.html#perceived_performance Online documentation} */ perceived_performance?: PerceivedPerformance } /** * A {@linkplain https://wiki.factorio.com/Gate gate}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GatePrototype.html Online documentation} */ export interface GatePrototype extends EntityWithOwnerPrototype { type: "gate" vertical_animation?: Animation horizontal_animation?: Animation vertical_rail_animation_left?: Animation vertical_rail_animation_right?: Animation horizontal_rail_animation_left?: Animation horizontal_rail_animation_right?: Animation vertical_rail_base?: Animation horizontal_rail_base?: Animation wall_patch?: Animation opening_speed: float activation_distance: double timeout_to_close: uint32 /** * Played when the gate opens. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GatePrototype.html#opening_sound Online documentation} */ opening_sound?: Sound /** * Played when the gate closes. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GatePrototype.html#closing_sound Online documentation} */ closing_sound?: Sound /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GatePrototype.html#fadeout_interval Online documentation} */ fadeout_interval?: uint32 /** * This collision mask is used when the gate is open. * * Defaults to the mask from {@link UtilityConstants#default_collision_masks UtilityConstants::default_collision_masks} when indexed by `"gate/opened"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GatePrototype.html#opened_collision_mask Online documentation} */ opened_collision_mask?: CollisionMaskConnector } /** * Used by {@linkplain https://wiki.factorio.com/Portable_fusion_reactor portable fusion reactor}. Provides power in equipment grids. Can produce power for free or use a burner energy source. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorEquipmentPrototype.html Online documentation} */ export interface GeneratorEquipmentPrototype extends EquipmentPrototype { type: "generator-equipment" /** * The power output of this equipment. * @example * power = "750kW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorEquipmentPrototype.html#power Online documentation} */ power: Energy /** * If not defined, this equipment produces power for free. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorEquipmentPrototype.html#burner Online documentation} */ burner?: BurnerEnergySource } /** * An entity that produces power from fluids, for example a {@linkplain https://wiki.factorio.com/Steam_engine steam engine}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorPrototype.html Online documentation} */ export interface GeneratorPrototype extends EntityWithOwnerPrototype { type: "generator" energy_source: ElectricEnergySource /** * This must have a filter if `max_power_output` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorPrototype.html#fluid_box Online documentation} */ fluid_box: FluidBox horizontal_animation?: Animation vertical_animation?: Animation horizontal_frozen_patch?: Sprite vertical_frozen_patch?: Sprite /** * **Default:** `1` * * How much energy the generator produces compared to how much energy it consumes. For example, an effectivity of 0.5 means that half of the consumed energy is output as power. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorPrototype.html#effectivity Online documentation} */ effectivity?: double /** * The number of fluid units the generator uses per tick. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorPrototype.html#fluid_usage_per_tick Online documentation} */ fluid_usage_per_tick: FluidAmount /** * The maximum temperature to which the efficiency can increase. At this temperature the generator will run at 100% efficiency. Note: Higher temperature fluid can still be consumed. * * Used to calculate the `max_power_output` if it is not defined and `burns_fluid` is false. Then, the max power output is `(min(fluid_max_temp, maximum_temperature) - fluid_default_temp) × fluid_usage_per_tick × fluid_heat_capacity × effectivity`, the fluid is the filter specified on the `fluid_box`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorPrototype.html#maximum_temperature Online documentation} */ maximum_temperature: float smoke?: readonly SmokeSource[] /** * **Default:** `false` * * If set to `true`, the available power output is based on the {@link FluidPrototype#fuel_value FluidPrototype::fuel_value}. Otherwise, the available power output will be based on the fluid temperature and {@link FluidPrototype#heat_capacity FluidPrototype::heat_capacity}: `energy = fluid_amount * (fluid_temperature - fluid_default_temperature) * fluid_heat_capacity * effectivity` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorPrototype.html#burns_fluid Online documentation} */ burns_fluid?: boolean /** * **Default:** `false` * * Scales the generator's fluid usage to its maximum power output. * * Setting this to true prevents the generator from overconsuming fluid, for example when higher than`maximum_temperature` fluid is fed to the generator. * * If scale_fluid_usage is false, the generator consumes the full `fluid_usage_per_tick` and any of the extra energy in the fluid (in the form of higher temperature) is wasted. The {@linkplain https://wiki.factorio.com/Steam_engine steam engine} exhibits this behavior when fed steam from {@linkplain https://wiki.factorio.com/Heat_exchanger heat exchangers}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorPrototype.html#scale_fluid_usage Online documentation} */ scale_fluid_usage?: boolean /** * **Default:** `true` * * This property is used when `burns_fluid` is true and the fluid has a {@link FluidPrototype#fuel_value fuel_value} of 0. * * This property is also used when `burns_fluid` is false and the fluid is at default temperature. * * In these cases, this property determines whether the fluid should be destroyed, meaning that the fluid is consumed at the rate of `fluid_usage_per_tick`, without producing any power. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorPrototype.html#destroy_non_fuel_fluid Online documentation} */ destroy_non_fuel_fluid?: boolean /** * Affects animation speed and working sound. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorPrototype.html#perceived_performance Online documentation} */ perceived_performance?: PerceivedPerformance /** * The power production of the generator is capped to this value. This is also the value that is shown as the maximum power output in the tooltip of the generator. * * `fluid_box` must have a filter if this is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GeneratorPrototype.html#max_power_output Online documentation} */ max_power_output?: Energy } /** * Properties of the god controller. * * _Prototype limited to **1** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GodControllerPrototype.html Online documentation} */ export interface GodControllerPrototype { readonly type: "god-controller" /** * Name of the god-controller. Base game uses "default". * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GodControllerPrototype.html#name Online documentation} */ name: string inventory_size: ItemStackIndex /** * Must be >= 0.34375. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GodControllerPrototype.html#movement_speed Online documentation} */ movement_speed: double item_pickup_distance: double loot_pickup_distance: double mining_speed: double /** * Names of the crafting categories the player can craft recipes from. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GodControllerPrototype.html#crafting_categories Online documentation} */ crafting_categories?: readonly RecipeCategoryID[] /** * Names of the resource categories the player can mine resources from. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GodControllerPrototype.html#mining_categories Online documentation} */ mining_categories?: readonly ResourceCategoryID[] } /** * This prototype is used for receiving an achievement when the player gets attacked due to pollution. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GroupAttackAchievementPrototype.html Online documentation} */ export interface GroupAttackAchievementPrototype extends AchievementPrototype { type: "group-attack-achievement" /** * **Default:** `1` * * This will trigger the achievement, if the player receives this amount of attacks. **Note**: The default achievement "it stinks and they don't like it" uses the amount of 1. (As in getting attacked once.) * @example * amount = 10 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GroupAttackAchievementPrototype.html#amount Online documentation} */ amount?: uint32 /** * The achievement is only triggered if the attacking group of enemies contains at least one of the entities listed here. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GroupAttackAchievementPrototype.html#entities Online documentation} */ entities?: readonly EntityID[] /** * The type of attack that triggers this achievement. "autonomous" attacks are triggered in response to pollution or a territory disturbance. "distraction" attacks are in response to taking damage or seeing a nearby enemy. "scripted" attacks are triggered from mods. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GroupAttackAchievementPrototype.html#attack_type Online documentation} */ attack_type?: "autonomous" | "distraction" | "scripted" } export interface GuiStyleMembers extends PrototypeBase { type: "gui-style" /** * **Default:** `""` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GuiStyle.html#default_tileset Online documentation} */ default_tileset?: FileName /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GuiStyle.html#default_sprite_scale Online documentation} */ default_sprite_scale?: double /** * **Default:** `"medium"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GuiStyle.html#default_sprite_priority Online documentation} */ default_sprite_priority?: SpritePriority } export interface GuiStyleCustomProperties { /** * Styles are defined as uniquely named {@link StyleSpecification} properties of the prototype. * * Styles with certain names are mandatory, as they are used by the base game GUI. A list is found below. * * {@link https://lua-api.factorio.com/2.0.75/prototypes/GuiStyle.html#custom_properties > Mandatory styles:} * @example * -- Adding a custom frame_style-type style * data.raw["gui-style"]["default"]["custom_style_for_a_frame"] = * { * type = "frame_style", * parent = "frame", * use_header_filler = false, * drag_by_title = false * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GuiStyle.html#custom_properties Online documentation} */ [key: string]: StyleSpecification } /** * The available GUI styles. * * _Prototype limited to **1** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GuiStyle.html Online documentation} */ export type GuiStyle = GuiStyleMembers & GuiStyleCustomProperties /** * A gun. A weapon to deal damage to entities. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GunPrototype.html Online documentation} */ export interface GunPrototype extends ItemPrototype { type: "gun" /** * The information the item needs to know in order to know what ammo it requires, the sounds, and range. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/GunPrototype.html#attack_parameters Online documentation} */ attack_parameters: AttackParameters } /** * A half diagonal rail. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/HalfDiagonalRailPrototype.html Online documentation} */ export interface HalfDiagonalRailPrototype extends RailPrototype { type: "elevated-half-diagonal-rail" | "half-diagonal-rail" /** * **Default:** ``{{-0.75, -1.9}, {0.75, 1.9}}`` * * The {@link EntityPrototype#collision_box collision_box} of straight rail is hardcoded to `{{-0.75, -1.9}, {0.75, 1.9}}`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/HalfDiagonalRailPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } /** * This entity produces or consumes heat. Its heat settings can be changed runtime. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/HeatInterfacePrototype.html Online documentation} */ export interface HeatInterfacePrototype extends EntityWithOwnerPrototype { type: "heat-interface" heat_buffer: HeatBuffer picture?: Sprite /** * **Default:** `"all"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/HeatInterfacePrototype.html#gui_mode Online documentation} */ gui_mode?: "all" | "none" | "admins" /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/HeatInterfacePrototype.html#heating_radius Online documentation} */ heating_radius?: float } /** * A {@linkplain https://wiki.factorio.com/Heat_pipe heat pipe}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/HeatPipePrototype.html Online documentation} */ export interface HeatPipePrototype extends EntityWithOwnerPrototype { type: "heat-pipe" connection_sprites?: ConnectableEntityGraphics heat_glow_sprites?: ConnectableEntityGraphics heat_buffer: HeatBuffer /** * **Default:** `1` * * Must be >= 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/HeatPipePrototype.html#heating_radius Online documentation} */ heating_radius?: float } /** * Used to attach graphics for {@link CursorBoxType cursor boxes} to entities during runtime. HighlightBoxEntity can also be independent from entities so it is simply drawn somewhere in the world. See {@link import("factorio:runtime").LuaSurface#create_entity LuaSurface::create_entity} for the available options for type "highlight-box". * * The {@link EntityPrototype#collision_box collision_box} of the highlight box prototype is ignored during runtime, instead the "bounding_box" given in create_entity() or the selection box of the target entity is used. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/HighlightBoxEntityPrototype.html Online documentation} */ export interface HighlightBoxEntityPrototype extends EntityPrototype { type: "highlight-box" } /** * @example * { * type = "impact-category", * name = "metal" * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ImpactCategory.html Online documentation} */ export interface ImpactCategory { readonly type: "impact-category" /** * Name of the impact category. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ImpactCategory.html#name Online documentation} */ name: string } /** * A cargo wagon that can spawn or void items at will. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityCargoWagonPrototype.html Online documentation} */ export interface InfinityCargoWagonPrototype extends CargoWagonPrototype { type: "infinity-cargo-wagon" /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityCargoWagonPrototype.html#erase_contents_when_mined Online documentation} */ erase_contents_when_mined?: boolean /** * **Default:** `true` * * When true, items created inside the infinity cargo wagon will not start to spoil until they have been removed from the wagon. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityCargoWagonPrototype.html#preserve_contents_when_created Online documentation} */ preserve_contents_when_created?: boolean /** * **Default:** `"all"` * * Controls which players can control what the chest spawns. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityCargoWagonPrototype.html#gui_mode Online documentation} */ gui_mode?: "all" | "none" | "admins" } /** * A generic container, such as a chest, that can spawn or void items and interact with the logistics network. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityContainerPrototype.html Online documentation} */ export interface InfinityContainerPrototype extends Omit { type: "infinity-container" erase_contents_when_mined: boolean /** * **Default:** `true` * * When true, items created inside the infinity chest will not start to spoil until they have been removed from the chest. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityContainerPrototype.html#preserve_contents_when_created Online documentation} */ preserve_contents_when_created?: boolean /** * **Default:** `"all"` * * Controls which players can control what the chest spawns. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityContainerPrototype.html#gui_mode Online documentation} */ gui_mode?: "all" | "none" | "admins" /** * The way this chest interacts with the logistic network. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityContainerPrototype.html#logistic_mode Online documentation} */ logistic_mode?: "active-provider" | "passive-provider" | "requester" | "storage" | "buffer" /** * **Default:** `false` * * Whether the "no network" icon should be rendered on this entity if the entity is not within a logistics network. * * ![](https://lua-api.factorio.com/2.0.75/static/images/too-far-from-roboport-icon.png) * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityContainerPrototype.html#render_not_in_network_icon Online documentation} */ render_not_in_network_icon?: boolean /** * The number of slots in this container. May not be zero. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityContainerPrototype.html#inventory_size Online documentation} */ inventory_size: ItemStackIndex } /** * This entity produces or consumes fluids. Its fluid settings can be changed runtime. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityPipePrototype.html Online documentation} */ export interface InfinityPipePrototype extends PipePrototype { type: "infinity-pipe" /** * **Default:** `"all"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InfinityPipePrototype.html#gui_mode Online documentation} */ gui_mode?: "all" | "none" | "admins" } /** * An {@linkplain https://wiki.factorio.com/Inserter inserter}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html Online documentation} */ export interface InserterPrototype extends EntityWithOwnerPrototype { type: "inserter" extension_speed: double rotation_speed: double /** * **Default:** `0.7` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#starting_distance Online documentation} */ starting_distance?: double insert_position: Vector pickup_position: Vector platform_picture?: Sprite4Way platform_frozen?: Sprite4Way hand_base_picture?: Sprite hand_open_picture?: Sprite hand_closed_picture?: Sprite hand_base_frozen?: Sprite hand_open_frozen?: Sprite hand_closed_frozen?: Sprite hand_base_shadow?: Sprite hand_open_shadow?: Sprite hand_closed_shadow?: Sprite /** * Defines how this inserter gets energy. The emissions set on the energy source are ignored so inserters cannot produce pollution. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#energy_source Online documentation} */ energy_source: EnergySource /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#energy_per_movement Online documentation} */ energy_per_movement?: Energy /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#energy_per_rotation Online documentation} */ energy_per_rotation?: Energy /** * **Default:** `false` * * Whether this inserter is considered a bulk inserter. Relevant for determining how {@linkplain https://wiki.factorio.com/Inserter_capacity_bonus_(research inserter capacity bonus (research)}) applies to the inserter. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#bulk Online documentation} */ bulk?: boolean /** * **Default:** `true` * * When set to false, then relevant value of inserter stack size bonus ({@link import("factorio:runtime").LuaForce#inserter_stack_size_bonus LuaForce::inserter_stack_size_bonus} or {@link import("factorio:runtime").LuaForce#bulk_inserter_capacity_bonus LuaForce::bulk_inserter_capacity_bonus}) will not affect inserter stack size. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#uses_inserter_stack_size_bonus Online documentation} */ uses_inserter_stack_size_bonus?: boolean /** * **Default:** `false` * * Whether pickup and insert position can be set run-time. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#allow_custom_vectors Online documentation} */ allow_custom_vectors?: boolean /** * **Default:** `false` * * Whether this burner inserter can fuel itself from the fuel inventory of the entity it is picking up items from. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#allow_burner_leech Online documentation} */ allow_burner_leech?: boolean /** * **Default:** `true` * * Whether the item that the inserter is holding should be drawn. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#draw_held_item Online documentation} */ draw_held_item?: boolean /** * **Default:** `true` * * Whether the inserter should be able to fish {@linkplain https://wiki.factorio.com/Raw_fish fish}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#use_easter_egg Online documentation} */ use_easter_egg?: boolean /** * **Default:** `false` * * If drop target is belt, inserter may grab less so that it does not drop partial stacks unless it is forced to drop partial. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#grab_less_to_match_belt_stack Online documentation} */ grab_less_to_match_belt_stack?: boolean /** * **Default:** `false` * * Inserter will wait until its hand is full. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#wait_for_full_hand Online documentation} */ wait_for_full_hand?: boolean /** * **Default:** `false` * * If inserter waits for full hand it could become stuck when item in hand changed because of spoiling. If this flag is set then inserter will start dropping held stack even if it was waiting for full hand. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#enter_drop_mode_if_held_stack_spoiled Online documentation} */ enter_drop_mode_if_held_stack_spoiled?: boolean /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * **Default:** `1` * * This inserter will not create stacks on belt with more than this amount of items. Must be >= 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#max_belt_stack_size Online documentation} */ max_belt_stack_size?: uint8 /** * **Default:** `0` * * How many filters this inserter has. Maximum count of filtered items in inserter is 5. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#filter_count Online documentation} */ filter_count?: uint8 /** * **Default:** `0.75` * * Used to determine how long the arm of the inserter is when drawing it. Does not affect gameplay. The lower the value, the straighter the arm. Increasing the value will give the inserter a bigger bend due to its longer parts. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#hand_size Online documentation} */ hand_size?: double /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean default_stack_control_input_signal?: SignalIDConnector /** * **Default:** `true` * * Whether the yellow arrow that indicates the drop point of the inserter and the line that indicates the pickup position should be drawn. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#draw_inserter_arrow Online documentation} */ draw_inserter_arrow?: boolean /** * **Default:** `true` * * Whether the inserter hand should move to the items it picks up from belts, leading to item chasing behaviour. If this is off, the inserter hand will stay in the center of the belt and any items picked up from the edges of the belt "teleport" to the inserter hand. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#chases_belt_items Online documentation} */ chases_belt_items?: boolean /** * **Default:** `0` * * Stack size bonus that is inherent to the prototype without having to be researched. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/InserterPrototype.html#stack_size_bonus Online documentation} */ stack_size_bonus?: uint8 circuit_connector?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] } export interface InventoryBonusEquipmentPrototype extends Omit { type: "inventory-bonus-equipment" inventory_size_bonus: ItemStackIndex energy_source?: ElectricEnergySource } /** * The entity used for items on the ground. * @example * { * type = "item-entity", * name = "item-on-ground", * flags = { "placeable-off-grid", "not-on-map" }, * collision_box = { {-0.14, -0.14}, {0.14, 0.14} }, * selection_box = { {-0.17, -0.17}, {0.17, 0.17} }, * minable = { mining_time = 0.025 } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemEntityPrototype.html Online documentation} */ export interface ItemEntityPrototype extends EntityPrototype { type: "item-entity" /** * **Default:** `Empty = `{{0, 0}, {0, 0}}`` * * Item entity collision box has to have same width as height. * * Specification of the entity collision boundaries. Empty collision box means no collision and is used for smoke, projectiles, particles, explosions etc. * * The `{0,0}` coordinate in the collision box will match the entity position. It should be near the center of the collision box, to keep correct entity drawing order. The bounding box must include the `{0,0}` coordinate. * * Note, that for buildings, it is customary to leave 0.1 wide border between the edge of the tile and the edge of the building, this lets the player move between the building and electric poles/inserters etc. * @example * collision_box = {{-0.4, -0.4}, {0.4, 0.4}} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemEntityPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } /** * An item group. Item groups are the tabs shown above the list of craftable items in the player's inventory GUI. The built-in groups are "logistics", "production", "intermediate-products" and "combat" but mods can define their own. * * Items are sorted into item groups by sorting them into a {@link ItemPrototype#subgroup subgroup} which then belongs to an {@link ItemSubGroup#group item group}. * * _Prototype limited to **255** total instances_ * @example * { * type = "item-group", * name = "logistics", * order = "a", * icon = "__base__/graphics/item-group/logistics.png", * icon_size = 128, * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemGroup.html Online documentation} */ export interface ItemGroup extends Prototype { type: "item-group" /** * The icon that is shown to represent this item group. Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemGroup.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon that is shown to represent this item group. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemGroup.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * The base game uses 128px icons for item groups. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemGroup.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * **Default:** `The `order` of this item group.` * * Item ingredients in recipes are ordered by item group. The `order_in_recipe` property can be used to specify the ordering in recipes without affecting the inventory order. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemGroup.html#order_in_recipe Online documentation} */ order_in_recipe?: Order } /** * Possible configuration for all items. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html Online documentation} */ export interface ItemPrototype extends Prototype { type: | "ammo" | "armor" | "blueprint-book" | "blueprint" | "capsule" | "copy-paste-tool" | "deconstruction-item" | "gun" | "item" | "item-with-entity-data" | "item-with-inventory" | "item-with-label" | "item-with-tags" | "module" | "rail-planner" | "repair-tool" | "selection-tool" | "space-platform-starter-pack" | "spidertron-remote" | "tool" | "upgrade-item" /** * Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `"not-stackable"` flag is set. * @example * stack_size = 64 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#stack_size Online documentation} */ stack_size: ItemCountType /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#dark_background_icons Online documentation} */ dark_background_icons?: readonly IconData[] /** * If this is set, it is used to show items in alt-mode instead of the normal item icon. This can be useful to increase the contrast of the icon with the dark alt-mode {@link UtilityConstants#item_outline_color icon outline}. * * Path to the icon file. * * Only loaded if `dark_background_icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#dark_background_icon Online documentation} */ dark_background_icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `dark_background_icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#dark_background_icon_size Online documentation} */ dark_background_icon_size?: SpriteSizeType /** * **Default:** `""` * * Name of the {@link EntityPrototype} that can be built using this item. If this item should be the one that construction bots use to build the specified `place_result`, set the `"primary-place-result"` {@link ItemPrototypeFlags item flag}. * * The localised name of the entity will be used as the in-game item name. This behavior can be overwritten by specifying `localised_name` on this item, it will be used instead. * @example * place_result = "wooden-chest" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#place_result Online documentation} */ place_result?: EntityID /** * **Default:** `""` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#place_as_equipment_result Online documentation} */ place_as_equipment_result?: EquipmentID /** * **Default:** `""` * * Must exist when a nonzero fuel_value is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#fuel_category Online documentation} */ fuel_category?: FuelCategoryID /** * **Default:** `""` * * The item that is the result when this item gets burned as fuel. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#burnt_result Online documentation} */ burnt_result?: ItemID /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#spoil_result Online documentation} */ spoil_result?: ItemID plant_result?: EntityID /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#place_as_tile Online documentation} */ place_as_tile?: PlaceAsTile /** * Used to give the item multiple different icons so that they look less uniform on belts. For inventory icons and similar, `icon/icons` will be used. Maximum number of variations is 16. * * When using sprites of size `64` (same as base game icons), the `scale` should be set to 0.5. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#pictures Online documentation} */ pictures?: SpriteVariations /** * Specifies some properties of the item. * @example * flags = { "hide-from-bonus-gui" } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#flags Online documentation} */ flags?: ItemPrototypeFlags /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#spoil_ticks Online documentation} */ spoil_ticks?: uint32 /** * **Default:** `"0J"` * * Amount of energy the item gives when used as fuel. * * Mandatory if `fuel_acceleration_multiplier`, `fuel_top_speed_multiplier` or `fuel_emissions_multiplier` or `fuel_glow_color` are used. * @example * fuel_value = "12MJ" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#fuel_value Online documentation} */ fuel_value?: Energy /** * **Default:** `1` * * Must be 0 or positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#fuel_acceleration_multiplier Online documentation} */ fuel_acceleration_multiplier?: double /** * **Default:** `1` * * Must be 0 or positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#fuel_top_speed_multiplier Online documentation} */ fuel_top_speed_multiplier?: double /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#fuel_emissions_multiplier Online documentation} */ fuel_emissions_multiplier?: double /** * Additional fuel acceleration multiplier per quality level. Defaults to 30% of `fuel_acceleration_multiplier - 1` if `fuel_acceleration_multiplier` is larger than 1. Otherwise defaults to 0. * * Must be 0 or positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#fuel_acceleration_multiplier_quality_bonus Online documentation} */ fuel_acceleration_multiplier_quality_bonus?: double /** * Additional fuel top speed multiplier per quality level. Defaults to 30% of `fuel_top_speed_multiplier - 1` if `fuel_top_speed_multiplier` is larger than 1. Otherwise defaults to 0. * * Must be 0 or positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#fuel_top_speed_multiplier_quality_bonus Online documentation} */ fuel_top_speed_multiplier_quality_bonus?: double /** * The default weight is calculated automatically from recipes and falls back to {@link UtilityConstants#default_item_weight UtilityConstants::default_item_weight}. * * More information on how item weight is determined can be found on its {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/item-weight.html auxiliary page}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#weight Online documentation} */ weight?: Weight /** * **Default:** `0.5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#ingredient_to_weight_coefficient Online documentation} */ ingredient_to_weight_coefficient?: double /** * Colors the glow of the burner energy source when this fuel is burned. Can also be used to color the glow of reactors burning the fuel, see {@link ReactorPrototype#use_fuel_glow_color ReactorPrototype::use_fuel_glow_color}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#fuel_glow_color Online documentation} */ fuel_glow_color?: Color open_sound?: Sound close_sound?: Sound pick_sound?: Sound drop_sound?: Sound inventory_move_sound?: Sound /** * **Default:** `"nauvis"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#default_import_location Online documentation} */ default_import_location?: SpaceLocationID /** * Only used by hidden setting, support may be limited. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#color_hint Online documentation} */ color_hint?: ColorHintSpecification /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#has_random_tint Online documentation} */ has_random_tint?: boolean /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#spoil_to_trigger_result Online documentation} */ spoil_to_trigger_result?: SpoilToTriggerResult /** * The effect/trigger that happens when an item is destroyed by being dropped on a {@link TilePrototype} marked as destroying dropped items. * * This overrides the {@link TilePrototype#default_destroyed_dropped_item_trigger TilePrototype::default_destroyed_dropped_item_trigger} from the tile. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#destroyed_by_dropping_trigger Online documentation} */ destroyed_by_dropping_trigger?: Trigger rocket_launch_products?: readonly ItemProductPrototype[] /** * **Default:** `"not-sendable"` * * The way this item works when we try to send it to the orbit on its own. * * When "manual" is set, it can only be launched by pressing the launch button in the rocket silo. * * When "automated" is set, it will force the existence of "launch to orbit automatically" checkbox in the rocket silo which will then force the silo to automatically send the item to orbit when present. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#send_to_orbit_mode Online documentation} */ send_to_orbit_mode?: SendToOrbitMode /** * Whether this item should be moved to the hub when space platform performs building, upgrade or deconstruction and is left with this item. The following items are considered valuable and moved to hub by default: {@link ModulePrototype Modules}, {@link ItemPrototype#place_result items that build entities}, {@link ItemPrototype#place_as_tile items that build tiles} and items {@link AsteroidChunkPrototype#minable not obtainable from asteroid chunks} that have {@link PrototypeBase#subgroup subgroup} from a {@link ItemSubGroup#group group} other than `"intermediate-products"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#moved_to_hub_when_building Online documentation} */ moved_to_hub_when_building?: boolean /** * **Default:** `Value of UtilityConstants::item_default_random_tint_strength` * * Randomly tints item instances on belts and in the world. 0 no tinting. 1 full tint. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#random_tint_color Online documentation} */ random_tint_color?: Color /** * **Default:** `0` * * Used by Inserters with spoil priority. Item with higher spoil level is considered more spoiled than item with lower spoil level regardless of progress of spoiling. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#spoil_level Online documentation} */ spoil_level?: uint8 /** * **Default:** `true` * * Whether the item should be included in the self-recycling recipes automatically generated by the quality mod. * * This property is not read by the game engine itself, but the quality mod's data-updates.lua file. This means it is discarded by the game engine after loading finishes. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#auto_recycle Online documentation} */ auto_recycle?: boolean /** * **Default:** `false` * * Item will not appear in lists of all items such as those for logistics requests, filters, etc. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemPrototype.html#hidden Online documentation} */ hidden?: boolean } /** * Entity used to signify that an entity is requesting items, for example modules for an assembling machine after it was blueprinted with modules inside. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemRequestProxyPrototype.html Online documentation} */ export interface ItemRequestProxyPrototype extends EntityPrototype { type: "item-request-proxy" /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemRequestProxyPrototype.html#use_target_entity_alert_icon_shift Online documentation} */ use_target_entity_alert_icon_shift?: boolean } /** * An item subgroup. Item subgroups are the rows in the recipe list in the player's inventory GUI. The subgroup of a prototype also determines its item {@link ItemGroup#group group} (tab in the recipe list). * * The built-in subgroups can be found {@linkplain https://wiki.factorio.com/Data.raw#item-subgroup here}. See {@link ItemPrototype#subgroup ItemPrototype::subgroup} for setting the subgroup of an item. * @example * { * type = "item-subgroup", * name = "train-transport", * group = "logistics", * order = "e" * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemSubGroup.html Online documentation} */ export interface ItemSubGroup extends Prototype { type: "item-subgroup" /** * The item group this subgroup is located in. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemSubGroup.html#group Online documentation} */ group: ItemGroupID } /** * ItemWithEntityData saves data associated with the entity that it represents, for example the content of the equipment grid of a car. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithEntityDataPrototype.html Online documentation} */ export interface ItemWithEntityDataPrototype extends ItemPrototype { type: "item-with-entity-data" /** * Can't be an empty array. * * Only loaded if `icon_tintable` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithEntityDataPrototype.html#icon_tintable_masks Online documentation} */ icon_tintable_masks?: readonly IconData[] /** * Path to the icon file. * * Only loaded if `icon_tintable_masks` is not defined and `icon_tintable` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithEntityDataPrototype.html#icon_tintable_mask Online documentation} */ icon_tintable_mask?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icon_tintable_masks` is not defined and `icon_tintable` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithEntityDataPrototype.html#icon_tintable_mask_size Online documentation} */ icon_tintable_mask_size?: SpriteSizeType /** * Can't be an empty array. * * Only loaded if `icon_tintable` is defined (`icon_tintables` takes precedence over `icon_tintable`). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithEntityDataPrototype.html#icon_tintables Online documentation} */ icon_tintables?: readonly IconData[] /** * Path to the icon file. * * Only loaded if `icon_tintables` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithEntityDataPrototype.html#icon_tintable Online documentation} */ icon_tintable?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icon_tintables` is not defined and `icon_tintable` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithEntityDataPrototype.html#icon_tintable_size Online documentation} */ icon_tintable_size?: SpriteSizeType } /** * The inventory allows setting player defined filters similar to cargo wagon inventories. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithInventoryPrototype.html Online documentation} */ export interface ItemWithInventoryPrototype extends ItemWithLabelPrototype { type: "blueprint-book" | "item-with-inventory" /** * The inventory size of the item. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithInventoryPrototype.html#inventory_size Online documentation} */ inventory_size: ItemStackIndex /** * A list of explicit item names to be used as filters. * @example * item_filters = {"iron-ore", "copper-ore", "coal", "stone"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithInventoryPrototype.html#item_filters Online documentation} */ item_filters?: readonly ItemID[] /** * A list of explicit item group names to be used as filters. * @example * item_group_filters = {"logistics", "fluids"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithInventoryPrototype.html#item_group_filters Online documentation} */ item_group_filters?: readonly ItemGroupID[] /** * A list of explicit {@link ItemSubGroup item subgroup} names to be used as filters. * @example * item_subgroup_filters = {"military-equipment", "tool"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithInventoryPrototype.html#item_subgroup_filters Online documentation} */ item_subgroup_filters?: readonly ItemSubGroupID[] /** * **Default:** `"whitelist"` * * This determines how filters are applied. If no filters are defined this is automatically set to "none". * @example * filter_mode = "blacklist" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithInventoryPrototype.html#filter_mode Online documentation} */ filter_mode?: "blacklist" | "whitelist" /** * **Default:** `"item-limitation.item-not-allowed-in-this-container-item"` * * The locale key used when the player attempts to put an item that doesn't match the filter rules into the item-with-inventory. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithInventoryPrototype.html#filter_message_key Online documentation} */ filter_message_key?: string /** * Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `"not-stackable"` flag is set. * @example * stack_size = 1 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithInventoryPrototype.html#stack_size Online documentation} */ stack_size: 1 } /** * Like a normal item but with the ability to have a colored label. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithLabelPrototype.html Online documentation} */ export interface ItemWithLabelPrototype extends ItemPrototype { type: | "blueprint-book" | "blueprint" | "copy-paste-tool" | "deconstruction-item" | "item-with-inventory" | "item-with-label" | "item-with-tags" | "selection-tool" | "spidertron-remote" | "upgrade-item" /** * **Default:** `Default item text color` * * The default label color the item will use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithLabelPrototype.html#default_label_color Online documentation} */ default_label_color?: Color /** * **Default:** `false` * * If the item will draw its label when held in the cursor in place of the item count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithLabelPrototype.html#draw_label_for_cursor_render Online documentation} */ draw_label_for_cursor_render?: boolean } /** * Item type that can store any basic arbitrary Lua data, see {@link import("factorio:runtime").LuaItemStack#tags LuaItemStack::tags}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ItemWithTagsPrototype.html Online documentation} */ export interface ItemWithTagsPrototype extends ItemWithLabelPrototype { type: "item-with-tags" } /** * This prototype is used for receiving an achievement when the player destroys a certain amount of an entity, with a specific damage type. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/KillAchievementPrototype.html Online documentation} */ export interface KillAchievementPrototype extends AchievementPrototype { type: "kill-achievement" /** * This defines which entity needs to be destroyed in order to receive the achievement. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/KillAchievementPrototype.html#to_kill Online documentation} */ to_kill?: EntityID | readonly EntityID[] /** * This defines what entity type needs to be destroyed in order to receive the achievement. * @example * type_to_kill = "inserter" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/KillAchievementPrototype.html#type_to_kill Online documentation} */ type_to_kill?: string /** * This defines how the player needs to destroy the specific entity. * @example * damage_type = "impact" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/KillAchievementPrototype.html#damage_type Online documentation} */ damage_type?: DamageTypeID /** * The killer of the entity must be one of these entities. * @example * damage_dealer = "artillery-turret" * @example * damage_dealer = {"artillery-turret", "artillery-wagon"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/KillAchievementPrototype.html#damage_dealer Online documentation} */ damage_dealer?: EntityID | readonly EntityID[] /** * **Default:** `1` * * This is the amount of entity of the specified type the player needs to destroy to receive the achievement. * @example * amount = 100 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/KillAchievementPrototype.html#amount Online documentation} */ amount?: uint32 /** * **Default:** `false` * * This defines if the player needs to be in a vehicle. * @example * in_vehicle = true * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/KillAchievementPrototype.html#in_vehicle Online documentation} */ in_vehicle?: boolean /** * **Default:** `false` * * This defines to make sure you are the one driving, for instance, in a tank rather than an automated train. * @example * personally = true * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/KillAchievementPrototype.html#personally Online documentation} */ personally?: boolean } /** * A {@linkplain https://wiki.factorio.com/Lab lab}. It consumes {@link ToolPrototype science packs} to research {@link TechnologyPrototype technologies}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html Online documentation} */ export interface LabPrototype extends EntityWithOwnerPrototype { type: "lab" /** * The amount of energy this lab uses. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#energy_usage Online documentation} */ energy_usage: Energy /** * Defines how this lab gets energy. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#energy_source Online documentation} */ energy_source: EnergySource /** * The animation that plays when the lab is active. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#on_animation Online documentation} */ on_animation?: Animation /** * The animation that plays when the lab is idle. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#off_animation Online documentation} */ off_animation?: Animation frozen_patch?: Sprite /** * A list of the names of science packs that can be used in this lab. * * If a technology requires other types of science packs, it cannot be researched in this lab. * @example * inputs = {"automation-science-pack", "logistic-science-pack", "chemical-science-pack", "military-science-pack", "production-science-pack", "utility-science-pack", "space-science-pack"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#inputs Online documentation} */ inputs: readonly ItemID[] /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#researching_speed Online documentation} */ researching_speed?: double effect_receiver?: EffectReceiver /** * The number of module slots in this lab. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#module_slots Online documentation} */ module_slots?: ItemStackIndex /** * **Default:** `false` * * If set, {@link QualityPrototype#lab_module_slots_bonus QualityPrototype::lab_module_slots_bonus} will be added to module slots count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#quality_affects_module_slots Online documentation} */ quality_affects_module_slots?: boolean /** * **Default:** `false` * * Whether the {@link QualityPrototype#science_pack_drain_multiplier QualityPrototype::science_pack_drain_multiplier} of the quality of this lab should affect how much science is consumed to research one unit of technology. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#uses_quality_drain_modifier Online documentation} */ uses_quality_drain_modifier?: boolean /** * **Default:** `100` * * May not be `0` or larger than `100`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#science_pack_drain_rate_percent Online documentation} */ science_pack_drain_rate_percent?: uint8 /** * **Default:** `All effects except quality are allowed` * * Sets the {@link ModulePrototype modules} and {@link BeaconPrototype beacon} effects that are allowed to be used on this lab. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#allowed_effects Online documentation} */ allowed_effects?: EffectTypeLimitation /** * **Default:** `All module categories are allowed` * * Sets the {@link ModuleCategory module categories} that are allowed to be inserted into this machine. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LabPrototype.html#allowed_module_categories Online documentation} */ allowed_module_categories?: readonly ModuleCategoryID[] light?: LightDefinition trash_inventory_size?: ItemStackIndex } /** * A {@linkplain https://wiki.factorio.com/Lamp lamp} to provide light, using energy. * @example * { * type = "lamp", * name = "small-lamp", * icon = "__base__/graphics/icons/small-lamp.png", * flags = {"placeable-neutral", "player-creation"}, * fast_replaceable_group = "lamp", * minable = {mining_time = 0.1, result = "small-lamp"}, * max_health = 100, * corpse = "lamp-remnants", * dying_explosion = "lamp-explosion", * collision_box = {{-0.15, -0.15}, {0.15, 0.15}}, * selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, * damaged_trigger_effect = hit_effects.entity(), * impact_category = "glass", * open_sound = {filename = "__base__/sound/open-close/electric-small-open.ogg", volume = 0.7}, * close_sound = {filename = "__base__/sound/open-close/electric-small-close.ogg", volume = 0.7}, * energy_source = * { * type = "electric", * usage_priority = "lamp" * }, * energy_usage_per_tick = "5kW", * darkness_for_all_lamps_on = 0.5, * darkness_for_all_lamps_off = 0.3, * light = {intensity = 0.9, size = 40, color = {1, 1, 0.75}}, * light_when_colored = {intensity = 0, size = 6, color = {1, 1, 0.75}}, * glow_size = 6, * glow_color_intensity = 1, * glow_render_mode = "multiplicative", * picture_off = * { * layers = * { * { * filename = "__base__/graphics/entity/small-lamp/lamp.png", * priority = "high", * width = 83, * height = 70, * shift = util.by_pixel(0.25,3), * scale = 0.5 * }, * { * filename = "__base__/graphics/entity/small-lamp/lamp-shadow.png", * priority = "high", * width = 76, * height = 47, * shift = util.by_pixel(4, 4.75), * draw_as_shadow = true, * scale = 0.5 * } * } * }, * picture_on = * { * filename = "__base__/graphics/entity/small-lamp/lamp-light.png", * priority = "high", * width = 90, * height = 78, * shift = util.by_pixel(0, -7), * scale = 0.5 * }, * signal_to_color_mapping = * { * {type = "virtual", name = "signal-red", color = {1, 0, 0}}, * {type = "virtual", name = "signal-green", color = {0, 1, 0}}, * {type = "virtual", name = "signal-blue", color = {0, 0, 1}}, * {type = "virtual", name = "signal-yellow", color = {1, 1, 0}}, * {type = "virtual", name = "signal-pink", color = {1, 0, 1}}, * {type = "virtual", name = "signal-cyan", color = {0, 1, 1}}, * {type = "virtual", name = "signal-white", color = {1, 1, 1}}, * {type = "virtual", name = "signal-grey", color = {0.5, 0.5, 0.5}}, * {type = "virtual", name = "signal-black", color = {0, 0, 0}} * }, * default_red_signal = { type = "virtual", name = "signal-red" }, * default_green_signal = { type = "virtual", name = "signal-green" }, * default_blue_signal = { type = "virtual", name = "signal-blue" }, * default_rgb_signal = { type = "virtual", name = "signal-white" }, * * circuit_connector = circuit_connector_definitions["lamp"], * circuit_wire_max_distance = default_circuit_wire_max_distance * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html Online documentation} */ export interface LampPrototype extends EntityWithOwnerPrototype { type: "lamp" /** * The lamps graphics when it's on. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#picture_on Online documentation} */ picture_on?: Sprite /** * The lamps graphics when it's off. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#picture_off Online documentation} */ picture_off?: Sprite /** * The amount of energy the lamp uses. Must be greater than > 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#energy_usage_per_tick Online documentation} */ energy_usage_per_tick: Energy /** * The emissions set on the energy source are ignored so lamps cannot produce pollution. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#energy_source Online documentation} */ energy_source: ElectricEnergySource | VoidEnergySource /** * What color the lamp will be when it is on, and receiving power. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#light Online documentation} */ light?: LightDefinition /** * This refers to when the light is in a circuit network, and is lit a certain color based on a signal value. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#light_when_colored Online documentation} */ light_when_colored?: LightDefinition /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#glow_size Online documentation} */ glow_size?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#glow_color_intensity Online documentation} */ glow_color_intensity?: float /** * **Default:** `0.5` * * darkness_for_all_lamps_on must be > darkness_for_all_lamps_off. Values must be between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#darkness_for_all_lamps_on Online documentation} */ darkness_for_all_lamps_on?: float /** * **Default:** `0.3` * * darkness_for_all_lamps_on must be > darkness_for_all_lamps_off. Values must be between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#darkness_for_all_lamps_off Online documentation} */ darkness_for_all_lamps_off?: float /** * **Default:** `false` * * Whether the lamp should always be on. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#always_on Online documentation} */ always_on?: boolean signal_to_color_mapping?: readonly SignalColorMapping[] /** * **Default:** `"additive"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LampPrototype.html#glow_render_mode Online documentation} */ glow_render_mode?: "additive" | "multiplicative" default_red_signal?: SignalIDConnector default_green_signal?: SignalIDConnector default_blue_signal?: SignalIDConnector default_rgb_signal?: SignalIDConnector } /** * A {@linkplain https://wiki.factorio.com/Land_mine land mine}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LandMinePrototype.html Online documentation} */ export interface LandMinePrototype extends EntityWithOwnerPrototype { type: "land-mine" /** * The sprite of the landmine before it is armed (just after placing). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LandMinePrototype.html#picture_safe Online documentation} */ picture_safe?: Sprite /** * The sprite of the landmine of a friendly force when it is armed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LandMinePrototype.html#picture_set Online documentation} */ picture_set?: Sprite trigger_radius: double /** * The sprite of the landmine of an enemy force when it is armed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LandMinePrototype.html#picture_set_enemy Online documentation} */ picture_set_enemy?: Sprite /** * **Default:** `120` * * Time between placing and the landmine being armed, in ticks. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LandMinePrototype.html#timeout Online documentation} */ timeout?: uint32 /** * **Default:** `10` * * Time between checks to detonate due to nearby enemies, in ticks. A larger time will be more performant. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LandMinePrototype.html#trigger_interval Online documentation} */ trigger_interval?: uint32 action?: Trigger ammo_category?: AmmoCategoryID /** * **Default:** `true` * * Force the landmine to kill itself when exploding. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LandMinePrototype.html#force_die_on_attack Online documentation} */ force_die_on_attack?: boolean /** * **Default:** `"enemy"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LandMinePrototype.html#trigger_force Online documentation} */ trigger_force?: ForceCondition /** * **Default:** `Value of UtilityConstants::building_collision_mask` * * Collision mask that another entity must collide with to make this landmine blow up. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LandMinePrototype.html#trigger_collision_mask Online documentation} */ trigger_collision_mask?: CollisionMaskConnector /** * **Default:** `true` * * Whether this prototype should be a high priority target for enemy forces. See {@linkplain https://wiki.factorio.com/Military_units_and_structures Military units and structures}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LandMinePrototype.html#is_military_target Online documentation} */ is_military_target?: boolean } export interface LaneSplitterPrototype extends TransportBeltConnectablePrototype { type: "lane-splitter" /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LaneSplitterPrototype.html#structure_animation_speed_coefficient Online documentation} */ structure_animation_speed_coefficient?: double /** * **Default:** `10` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LaneSplitterPrototype.html#structure_animation_movement_cooldown Online documentation} */ structure_animation_movement_cooldown?: uint32 structure: Animation4Way structure_patch?: Animation4Way } /** * A legacy curved rail. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LegacyCurvedRailPrototype.html Online documentation} */ export interface LegacyCurvedRailPrototype extends RailPrototype { type: "legacy-curved-rail" /** * **Default:** ``{{-0.75, -0.55}, {0.75, 1.6}}`` * * The {@link EntityPrototype#collision_box collision_box} of legacy curved rail is hardcoded to `{{-0.75, -0.55}, {0.75, 1.6}}`. * * The secondary collision box of legacy curved rail is hardcoded to `{{-0.68, -2.7}, {0.68, 2.7}}`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LegacyCurvedRailPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } /** * A legacy straight rail. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LegacyStraightRailPrototype.html Online documentation} */ export interface LegacyStraightRailPrototype extends RailPrototype { type: "legacy-straight-rail" /** * **Default:** ``{{-0.7, -0.99}, {0.7, 0.99}}`` * * The {@link EntityPrototype#collision_box collision_box} of legacy straight rail is hardcoded to `{{-0.7, -0.99}, {0.7, 0.99}}`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LegacyStraightRailPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * Absorbs {@link LightningPrototype lightning} and optionally converts it into electricity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LightningAttractorPrototype.html Online documentation} */ export interface LightningAttractorPrototype extends EntityWithOwnerPrototype { type: "lightning-attractor" chargable_graphics?: ChargableGraphics lightning_strike_offset?: MapPosition /** * **Default:** `0` * * Cannot be less than 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LightningAttractorPrototype.html#efficiency Online documentation} */ efficiency?: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LightningAttractorPrototype.html#range_elongation Online documentation} */ range_elongation?: double /** * Mandatory if `efficiency` is larger than 0. May not be defined if `efficiency` is 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LightningAttractorPrototype.html#energy_source Online documentation} */ energy_source?: ElectricEnergySource } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * Lightning randomly hits entities on planets with {@link PlanetPrototype#lightning_properties lightning_properties}. * * If a {@link LightningAttractorPrototype lightning attractor} is hit by lightning it will absorb the lightning hit for energy. * * If a something that is not an attractor is hit by lightning it will be damaged by the strike. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LightningPrototype.html Online documentation} */ export interface LightningPrototype extends EntityPrototype { type: "lightning" graphics_set?: LightningGraphicsSet sound?: Sound /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LightningPrototype.html#attracted_volume_modifier Online documentation} */ attracted_volume_modifier?: float /** * Effect that is triggered when lightning strikes something that is not a lightning attractor. Triggered before `damage` is applied. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LightningPrototype.html#strike_effect Online documentation} */ strike_effect?: Trigger /** * Effect that is triggered when lightning hits a {@link LightningAttractorPrototype lightning attractor}. Triggered after the attractor is charged by the lightning hit. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LightningPrototype.html#attractor_hit_effect Online documentation} */ attractor_hit_effect?: Trigger source_offset?: Vector source_variance?: Vector /** * **Default:** `100` * * When lightning strikes something that is not a lightning attractor, this damage is applied to the target. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LightningPrototype.html#damage Online documentation} */ damage?: double /** * **Default:** `Max double` * * When lightning hits a {@link LightningAttractorPrototype lightning attractor}, this amount of energy is transferred to the lightning attractor. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LightningPrototype.html#energy Online documentation} */ energy?: Energy /** * **Default:** `0` * * Must be less than or equal to `effect_duration`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LightningPrototype.html#time_to_damage Online documentation} */ time_to_damage?: uint16 effect_duration: uint16 } /** * A belt that can be connected to a belt anywhere else, including on a different surface. The linked belts have to be {@linkplain https://wiki.factorio.com/Console#Connect_linked_belts connected with console commands} or runtime scripting in mods or scenarios. {@link import("factorio:runtime").LuaEntity#connect_linked_belts LuaEntity::connect_linked_belts} and other runtime functions. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedBeltPrototype.html Online documentation} */ export interface LinkedBeltPrototype extends TransportBeltConnectablePrototype { type: "linked-belt" /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedBeltPrototype.html#structure Online documentation} */ structure?: LinkedBeltStructure /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedBeltPrototype.html#structure_render_layer Online documentation} */ structure_render_layer?: RenderLayer /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedBeltPrototype.html#allow_clone_connection Online documentation} */ allow_clone_connection?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedBeltPrototype.html#allow_blueprint_connection Online documentation} */ allow_blueprint_connection?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedBeltPrototype.html#allow_side_loading Online documentation} */ allow_side_loading?: boolean } /** * A container that shares its inventory with containers with the same {@link import("factorio:runtime").LuaEntity#link_id link_id}, which can be set via the GUI. The link IDs are per prototype and force, so only containers with the **same ID**, **same prototype name** and **same force** will share inventories. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedContainerPrototype.html Online documentation} */ export interface LinkedContainerPrototype extends EntityWithOwnerPrototype { type: "linked-container" /** * Must be > 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedContainerPrototype.html#inventory_size Online documentation} */ inventory_size: ItemStackIndex picture?: Sprite /** * **Default:** `"with_bar"` * * Determines the type of inventory that this linked container has. Whether the inventory has a limiter bar, can be filtered (like cargo wagons), uses a custom stack size for contained item stacks (like artillery wagon), or uses a weight limit (like space age rocket silo). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedContainerPrototype.html#inventory_type Online documentation} */ inventory_type?: "normal" | "with_bar" | "with_filters_and_bar" | "with_custom_stack_size" | "with_weight_limit" /** * Only used when `inventory_type` is `"with_custom_stack_size"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedContainerPrototype.html#inventory_properties Online documentation} */ inventory_properties?: InventoryWithCustomStackSizeSpecification /** * **Default:** `0` * * Only used when `inventory_type` is `"with_weight_limit"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedContainerPrototype.html#inventory_weight_limit Online documentation} */ inventory_weight_limit?: Weight /** * **Default:** `"all"` * * Players that can access the GUI to change the link ID. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedContainerPrototype.html#gui_mode Online documentation} */ gui_mode?: "all" | "none" | "admins" /** * **Default:** `0` * * The maximum circuit wire distance for this linked container. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedContainerPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedContainerPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LinkedContainerPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition } /** * Continuously loads and unloads machines, as an alternative to inserters. * * This loader type is identical to {@link Loader1x2Prototype} with the exception of its hardcoded belt_distance. The belt_distance of the loader determines the distance between the position of this loader and the tile of the loader's belt target. * * This loader type always has a belt_distance of 0, meaning by default it is 1 tile long in total. For a loader type with a belt_distance of 0.5, see {@link Loader1x2Prototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/Loader1x1Prototype.html Online documentation} */ export interface Loader1x1Prototype extends LoaderPrototype { type: "loader-1x1" } /** * Continuously loads and unloads machines, as an alternative to inserters. * * This loader type is identical to {@link Loader1x1Prototype} with the exception of its hardcoded belt_distance. The belt_distance of the loader determines the distance between the position of this loader and the tile of the loader's belt target. * * This loader type always has a belt_distance of 0.5, meaning by default it is 2 tiles long in total. For a loader type with a belt_distance of 0, see {@link Loader1x1Prototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/Loader1x2Prototype.html Online documentation} */ export interface Loader1x2Prototype extends LoaderPrototype { type: "loader" } /** * Continuously loads and unloads machines, as an alternative to inserters. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html Online documentation} */ export interface LoaderPrototype extends TransportBeltConnectablePrototype { type: "loader-1x1" | "loader" structure?: LoaderStructure /** * How many item filters this loader has. Maximum count of filtered items in loader is 5. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#filter_count Online documentation} */ filter_count: uint8 /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#structure_render_layer Online documentation} */ structure_render_layer?: RenderLayer /** * **Default:** `"object"` * * Render layer for all directions of the circuit connectors. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#circuit_connector_layer Online documentation} */ circuit_connector_layer?: RenderLayer /** * **Default:** `1.5` * * The distance between the position of this loader and the tile of the loader's container target. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#container_distance Online documentation} */ container_distance?: double /** * **Default:** `true` * * Whether this loader can load and unload {@link RollingStockPrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#allow_rail_interaction Online documentation} */ allow_rail_interaction?: boolean /** * **Default:** `true` * * Whether this loader can load and unload stationary inventories such as containers and crafting machines. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#allow_container_interaction Online documentation} */ allow_container_interaction?: boolean /** * **Default:** `false` * * If filters are per lane. Can only be set to true if filter_count is equal to 2. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#per_lane_filters Online documentation} */ per_lane_filters?: boolean /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * **Default:** `1` * * Loader will not create stacks on belt that are larger than this value. Must be >= 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#max_belt_stack_size Online documentation} */ max_belt_stack_size?: uint8 /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * **Default:** `false` * * Loader belt stack size can be adjusted at runtime. Requires {@link LoaderPrototype#max_belt_stack_size LoaderPrototype::max_belt_stack_size} to be > 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#adjustable_belt_stack_size Online documentation} */ adjustable_belt_stack_size?: boolean /** * **Default:** `false` * * When set, this loader will ignore items for which there is not enough to create a full belt stack. Relevant only when loader can create belt stacks. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#wait_for_full_stack Online documentation} */ wait_for_full_stack?: boolean /** * **Default:** `false` * * When set, this loader will respect the same automated insertion limits as inserters do, instead of inserting up to the full ingredient stack capacity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#respect_insert_limits Online documentation} */ respect_insert_limits?: boolean /** * **Default:** `0.5` * * How long this loader's belt is. Should be the same as belt_distance, which is hardcoded to `0.5` for {@link Loader1x2Prototype} and to 0 for {@link Loader1x1Prototype}. See the linked prototypes for an explanation of belt_distance. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#belt_length Online documentation} */ belt_length?: double energy_source?: ElectricEnergySource | HeatEnergySource | FluidEnergySource | VoidEnergySource /** * **Default:** `0` * * Energy in Joules. Can't be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#energy_per_item Online documentation} */ energy_per_item?: Energy /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean /** * First the four cardinal directions for `direction_out`, followed by the four directions for `direction_in`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LoaderPrototype.html#circuit_connector Online documentation} */ circuit_connector?: readonly CircuitConnectorDefinition[] } /** * A {@linkplain https://wiki.factorio.com/Locomotive locomotive}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LocomotivePrototype.html Online documentation} */ export interface LocomotivePrototype extends RollingStockPrototype { type: "locomotive" max_power: Energy reversing_power_modifier: double energy_source: BurnerEnergySource | VoidEnergySource front_light?: LightDefinition front_light_pictures?: RollingStockRotatedSlopedGraphics /** * **Default:** `0.3` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LocomotivePrototype.html#darkness_to_render_light_animation Online documentation} */ darkness_to_render_light_animation?: float /** * **Default:** `3` * * In tiles. A locomotive will snap to a nearby train stop when the player places it within this distance to the stop. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LocomotivePrototype.html#max_snap_to_train_stop_distance Online documentation} */ max_snap_to_train_stop_distance?: float } /** * A generic container, such as a chest, that interacts with the logistics network. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticContainerPrototype.html Online documentation} */ export interface LogisticContainerPrototype extends ContainerPrototype { type: "infinity-container" | "logistic-container" /** * The way this chest interacts with the logistic network. * * ## Union members * - `"active-provider"` * - `"passive-provider"` * - `"requester"` * - `"storage"` * - `"buffer"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticContainerPrototype.html#logistic_mode Online documentation} */ logistic_mode: "active-provider" | "passive-provider" | "requester" | "storage" | "buffer" /** * The number of request slots this logistics container has. Requester-type containers must have > 0 slots and can have a maximum of {@link UtilityConstants#max_logistic_filter_count UtilityConstants::max_logistic_filter_count} slots. Storage-type containers must have <= 1 slot. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticContainerPrototype.html#max_logistic_slots Online documentation} */ max_logistic_slots?: uint16 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticContainerPrototype.html#trash_inventory_size Online documentation} */ trash_inventory_size?: ItemStackIndex /** * **Default:** `true` * * Whether the "no network" icon should be rendered on this entity if the entity is not within a logistics network. * * ![](https://lua-api.factorio.com/2.0.75/static/images/too-far-from-roboport-icon.png) * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticContainerPrototype.html#render_not_in_network_icon Online documentation} */ render_not_in_network_icon?: boolean /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticContainerPrototype.html#opened_duration Online documentation} */ opened_duration?: uint8 /** * Drawn when a robot brings/takes items from this container. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticContainerPrototype.html#animation Online documentation} */ animation?: Animation /** * The offset from the center of this container where a robot visually brings/takes items. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticContainerPrototype.html#landing_location_offset Online documentation} */ landing_location_offset?: Vector /** * **Default:** `false` * * Whether logistic robots have to deliver the exact amount of items requested to this logistic container instead of over-delivering (within their cargo size). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticContainerPrototype.html#use_exact_mode Online documentation} */ use_exact_mode?: boolean /** * Played when a robot brings/takes items from this container. Only loaded if `animation` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticContainerPrototype.html#animation_sound Online documentation} */ animation_sound?: Sound } /** * A {@linkplain https://wiki.factorio.com/Logistic_robot logistic robot}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticRobotPrototype.html Online documentation} */ export interface LogisticRobotPrototype extends RobotWithLogisticInterfacePrototype { type: "logistic-robot" /** * Only the first frame of the animation is drawn. This means that the graphics for the idle state cannot be animated. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticRobotPrototype.html#idle_with_cargo Online documentation} */ idle_with_cargo?: RotatedAnimation /** * Only the first frame of the animation is drawn. This means that the graphics for the in_motion state cannot be animated. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticRobotPrototype.html#in_motion_with_cargo Online documentation} */ in_motion_with_cargo?: RotatedAnimation /** * Only the first frame of the animation is drawn. This means that the graphics for the idle state cannot be animated. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticRobotPrototype.html#shadow_idle_with_cargo Online documentation} */ shadow_idle_with_cargo?: RotatedAnimation /** * Only the first frame of the animation is drawn. This means that the graphics for the in_motion state cannot be animated. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticRobotPrototype.html#shadow_in_motion_with_cargo Online documentation} */ shadow_in_motion_with_cargo?: RotatedAnimation /** * **Default:** `Empty = `{{0, 0}, {0, 0}}`` * * Must have a collision box size of zero. * @example * collision_box = {{0, 0}, {0, 0}} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/LogisticRobotPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } export interface MapGenPresetsMembers { readonly type: "map-gen-presets" /** * Name of the map gen presets. Base game uses "default". * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MapGenPresets.html#name Online documentation} */ name: string } export interface MapGenPresetsCustomProperties { /** * Presets are defined as uniquely named {@link MapGenPreset} properties of the prototype. Zero or more named presets can be specified within the prototype. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MapGenPresets.html#custom_properties Online documentation} */ [key: string]: MapGenPreset } /** * The available map gen presets. * * _Prototype limited to **1** total instances_ * @example * { * type = "map-gen-presets", * name = "default", * ["marathon"] = * { * order = "c", * basic_settings = * { * property_expression_names = {}, * }, * advanced_settings = * { * difficulty_settings = * { * technology_price_multiplier = 4 * } * } * }, * ["island"] = * { * order = "h", * basic_settings = * { * property_expression_names = * { * elevation = "elevation_island", * moisture = "moisture_basic", * aux = "aux_basic", * cliffiness = "cliffiness_basic", * cliff_elevation = "cliff_elevation_from_elevation", * trees_forest_path_cutout = 1 * }, * cliff_settings = * { * cliff_smoothing = 1 * }, * autoplace_controls = * { * ["trees"] = * { * frequency = 1, * size = 0.5 * } * } * } * } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MapGenPresets.html Online documentation} */ export type MapGenPresets = MapGenPresetsMembers & MapGenPresetsCustomProperties /** * The default map settings. * * _Prototype limited to **1** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MapSettings.html Online documentation} */ export interface MapSettings { readonly type: "map-settings" /** * Name of the map-settings. Base game uses "map-settings". * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MapSettings.html#name Online documentation} */ name: string pollution: PollutionSettings /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MapSettings.html#steering Online documentation} */ steering: SteeringSettings enemy_evolution: EnemyEvolutionSettings enemy_expansion: EnemyExpansionSettings unit_group: UnitGroupSettings path_finder: PathFinderSettings /** * If a behavior fails this many times, the enemy (or enemy group) is destroyed. This solves biters stuck within their own base. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MapSettings.html#max_failed_behavior_count Online documentation} */ max_failed_behavior_count: uint32 difficulty_settings: DifficultySettings asteroids: AsteroidSettings } /** * Offers can be added to a market and they are shown when opening the entity. Offers allow to spend items to get research bonuses or items. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MarketPrototype.html Online documentation} */ export interface MarketPrototype extends EntityWithOwnerPrototype { type: "market" picture?: Sprite /** * **Default:** `true` * * Whether all forces are allowed to open this market. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MarketPrototype.html#allow_access_to_all_forces Online documentation} */ allow_access_to_all_forces?: boolean } /** * A mining drill for automatically extracting resources from {@link ResourceEntityPrototype resource entities}. This prototype type is used by {@linkplain https://wiki.factorio.com/Burner_mining_drill burner mining drill}, {@linkplain https://wiki.factorio.com/Electric_mining_drill electric mining drill} and {@linkplain https://wiki.factorio.com/Pumpjack pumpjack} in vanilla. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html Online documentation} */ export interface MiningDrillPrototype extends EntityWithOwnerPrototype { type: "mining-drill" /** * The position where any item results are placed, when the mining drill is facing north (default direction). If the drill does not produce any solid items but uses a fluidbox output instead (e.g. pumpjacks), a vector of `{0,0}` disables the yellow arrow alt-mode indicator for the placed item location. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#vector_to_place_result Online documentation} */ vector_to_place_result: Vector /** * The distance from the center of the mining drill to search for resources in. * * This is 2.49 for electric mining drills (a 5x5 area) and 0.99 for burner mining drills (a 2x2 area). The drill searches resource outside its natural boundary box, which is 0.01 (the middle of the entity); making it 2.5 and 1.0 gives it another block radius. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#resource_searching_radius Online documentation} */ resource_searching_radius: double /** * **Default:** ``{0, 0}`` * * Offset of the `resource_searching_radius` from the entity center when the mining drill is facing north. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#resource_searching_offset Online documentation} */ resource_searching_offset?: Vector /** * The amount of energy used by the drill while mining. Can't be less than or equal to 0. * @example * energy_usage = "150kW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#energy_usage Online documentation} */ energy_usage: Energy /** * The speed of this drill. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#mining_speed Online documentation} */ mining_speed: double /** * The energy source of this mining drill. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#energy_source Online documentation} */ energy_source: EnergySource /** * The names of the {@link ResourceCategory} that can be mined by this drill. For a list of built-in categories, see {@linkplain https://wiki.factorio.com/Data.raw#resource-category here}. * * Note: Categories containing resources which produce items, fluids, or items+fluids may be combined on the same entity, but may not work as expected. Examples: Miner does not rotate fluid-resulting resources until depletion. Fluid isn't output (fluid resource change and fluidbox matches previous fluid). Miner with no `vector_to_place_result` can't output an item result and halts. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#resource_categories Online documentation} */ resource_categories: readonly ResourceCategoryID[] output_fluid_box?: FluidBox input_fluid_box?: FluidBox graphics_set?: MiningDrillGraphicsSet wet_mining_graphics_set?: MiningDrillGraphicsSet /** * Affects animation speed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#perceived_performance Online documentation} */ perceived_performance?: PerceivedPerformance /** * Used by the {@linkplain https://wiki.factorio.com/Pumpjack pumpjack} to have a static 4 way sprite. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#base_picture Online documentation} */ base_picture?: Sprite4Way effect_receiver?: EffectReceiver /** * The number of module slots in this machine. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#module_slots Online documentation} */ module_slots?: ItemStackIndex /** * **Default:** `false` * * If set, {@link QualityPrototype#mining_drill_module_slots_bonus QualityPrototype::mining_drill_module_slots_bonus} will be added to module slots count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#quality_affects_module_slots Online documentation} */ quality_affects_module_slots?: boolean /** * **Default:** `All effects are allowed` * * Sets the {@link ModulePrototype modules} and {@link BeaconPrototype beacon} effects that are allowed to be used on this mining drill. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#allowed_effects Online documentation} */ allowed_effects?: EffectTypeLimitation /** * **Default:** `All module categories are allowed` * * Sets the {@link ModuleCategory module categories} that are allowed to be inserted into this machine. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#allowed_module_categories Online documentation} */ allowed_module_categories?: readonly ModuleCategoryID[] /** * The sprite used to show the range of the mining drill. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#radius_visualisation_picture Online documentation} */ radius_visualisation_picture?: Sprite /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean /** * **Default:** `"lower-object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#base_render_layer Online documentation} */ base_render_layer?: RenderLayer /** * **Default:** `100` * * May not be `0` or larger than `100`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#resource_drain_rate_percent Online documentation} */ resource_drain_rate_percent?: uint8 /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#shuffle_resources_to_mine Online documentation} */ shuffle_resources_to_mine?: boolean /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#drops_full_belt_stacks Online documentation} */ drops_full_belt_stacks?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#uses_force_mining_productivity_bonus Online documentation} */ uses_force_mining_productivity_bonus?: boolean /** * **Default:** `false` * * If set, {@link QualityPrototype#mining_drill_mining_radius_bonus QualityPrototype::mining_drill_mining_radius_bonus} will be added to resource_searching_radius. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#quality_affects_mining_radius Online documentation} */ quality_affects_mining_radius?: boolean moving_sound?: InterruptibleSound drilling_sound?: InterruptibleSound /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#drilling_sound_animation_start_frame Online documentation} */ drilling_sound_animation_start_frame?: uint16 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#drilling_sound_animation_end_frame Online documentation} */ drilling_sound_animation_end_frame?: uint16 /** * When this mining drill is connected to the circuit network, the resource that it is reading (either the entire resource patch, or the resource in the mining area of the drill, depending on circuit network setting), is tinted in this color when mousing over the mining drill. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#monitor_visualization_tint Online documentation} */ monitor_visualization_tint?: Color circuit_connector?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] /** * **Default:** `0` * * How many filters this mining drill has. Maximum count of filtered resources in a mining drill is 5. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MiningDrillPrototype.html#filter_count Online documentation} */ filter_count?: uint8 } /** * Block of arbitrary data set by mods in data stage. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModData.html Online documentation} */ export interface ModData extends Prototype { type: "mod-data" /** * Arbitrary string that mods can use to declare type of data. Can be used for mod compatibility when one mod declares block of data that is expected to be discovered by another mod. * @example * data_type = "my-mod.my_structure" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModData.html#data_type Online documentation} */ data_type?: string data: Record } /** * A module category. The built-in categories can be found {@linkplain https://wiki.factorio.com/Data.raw#module-category here}. See {@link ModulePrototype#category ModulePrototype::category}. * * _Prototype limited to **255** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModuleCategory.html Online documentation} */ export interface ModuleCategory extends Prototype { type: "module-category" } /** * A {@linkplain https://wiki.factorio.com/Module module}. They are used to affect the capabilities of existing machines, for example by increasing the crafting speed of a {@link CraftingMachinePrototype crafting machine}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModulePrototype.html Online documentation} */ export interface ModulePrototype extends ItemPrototype { type: "module" /** * Used when upgrading modules: Ctrl + click modules into an entity and it will replace lower tier modules of the same category with higher tier modules. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModulePrototype.html#category Online documentation} */ category: ModuleCategoryID /** * Tier of the module inside its category. Used when upgrading modules: Ctrl + click modules into an entity and it will replace lower tier modules with higher tier modules if they have the same category. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModulePrototype.html#tier Online documentation} */ tier: uint32 /** * The effect of the module on the machine it's inserted in, such as increased pollution. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModulePrototype.html#effect Online documentation} */ effect: Effect /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModulePrototype.html#requires_beacon_alt_mode Online documentation} */ requires_beacon_alt_mode?: boolean /** * Chooses with what art style the module is shown inside {@link BeaconPrototype beacons}. See {@link BeaconModuleVisualizations#art_style BeaconModuleVisualizations::art_style}. Vanilla uses `"vanilla"` here. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModulePrototype.html#art_style Online documentation} */ art_style?: string /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModulePrototype.html#beacon_tint Online documentation} */ beacon_tint?: BeaconVisualizationTints } /** * This prototype is used for receiving an achievement when the player moves a module with the cursor. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModuleTransferAchievementPrototype.html Online documentation} */ export interface ModuleTransferAchievementPrototype extends AchievementPrototype { type: "module-transfer-achievement" /** * This will trigger the achievement, if this module is transferred. * @example * module = "quality-module" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModuleTransferAchievementPrototype.html#module Online documentation} */ module: ItemID | readonly ItemID[] /** * **Default:** `1` * * How many modules need to be transferred. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModuleTransferAchievementPrototype.html#amount Online documentation} */ amount?: uint32 /** * **Default:** `false` * * If this is false, the player carries over their statistics from this achievement through all their saves. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ModuleTransferAchievementPrototype.html#limited_to_one_game Online documentation} */ limited_to_one_game?: boolean } /** * Used by {@link SelectionToolPrototype#mouse_cursor SelectionToolPrototype::mouse_cursor}. * @example * { * type = "mouse-cursor", * name = "selection-tool-cursor", * filename = "__core__/graphics/cross-select-x32.png", * hot_pixel_x = 16, * hot_pixel_y = 16 * } * @example * { * type = "mouse-cursor", * name = "system-crosshair", * system_cursor = "crosshair" * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MouseCursor.html Online documentation} */ export interface MouseCursor { readonly type: "mouse-cursor" /** * Name of the prototype. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MouseCursor.html#name Online documentation} */ name: string /** * Either this or the other three properties have to be present. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MouseCursor.html#system_cursor Online documentation} */ system_cursor?: "arrow" | "i-beam" | "crosshair" | "wait-arrow" | "size-all" | "no" | "hand" /** * Mandatory if `system_cursor` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MouseCursor.html#filename Online documentation} */ filename?: FileName /** * Mandatory if `system_cursor` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MouseCursor.html#hot_pixel_x Online documentation} */ hot_pixel_x?: int16 /** * Mandatory if `system_cursor` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MouseCursor.html#hot_pixel_y Online documentation} */ hot_pixel_y?: int16 } /** * Used by {@linkplain https://wiki.factorio.com/Exoskeleton exoskeleton}. Increases max speed of characters or acceleration of vehicles if they have this equipment in their grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MovementBonusEquipmentPrototype.html Online documentation} */ export interface MovementBonusEquipmentPrototype extends EquipmentPrototype { type: "movement-bonus-equipment" energy_consumption: Energy /** * Multiplier of the character speed/vehicle acceleration. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/MovementBonusEquipmentPrototype.html#movement_bonus Online documentation} */ movement_bonus: double } /** * A {@link NoiseExpression} with a name. The base game uses named noise expressions to specify functions for many map properties to be used in map generation; e.g. the "elevation" expression is used to calculate elevation for every point on a map. For a list of the built-in named noise expressions, see {@linkplain https://wiki.factorio.com/Data.raw#noise-expression data.raw}. * * Named noise expressions can be used by {@link MapGenSettings} and {@link MapGenPreset} to override which named expression is used to calculate a given property by having an entry in `property_expression_names`, e.g. `elevation = "elevation_island"`. * * Alternate expressions can be made available in the map generator GUI by setting their `intended_property` to the name of the property they should override. * * Named noise expressions can also be used as {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/noise-expressions.html noise variables} e.g. `var("my-noise-expression")`. * @example * { * type = "noise-expression", * name = "distance", * expression = "distance_from_nearest_point{x = x, y = y, points = starting_positions}" * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NamedNoiseExpression.html Online documentation} */ export interface NamedNoiseExpression extends Prototype { type: "noise-expression" /** * The noise expression itself. This is where most of the noise magic happens. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NamedNoiseExpression.html#expression Online documentation} */ expression: NoiseExpression /** * A map of expression name to expression. * * Local expressions are meant to store data locally similar to local variables in Lua. Their purpose is to hold noise expressions used multiple times in the named noise expression, or just to tell the reader that the local expression has a specific purpose. Local expressions can access other local definitions, but recursive definitions aren't supported. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NamedNoiseExpression.html#local_expressions Online documentation} */ local_expressions?: Record /** * A map of function name to function. * * Local functions serve the same purpose as local expressions - they aren't visible outside of the specific prototype and they have access to other local definitions. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NamedNoiseExpression.html#local_functions Online documentation} */ local_functions?: Record /** * Names the property that this expression is intended to provide a value for, if any. This will make the expression show up as an option in the map generator GUI, unless it is the only expression with that intended property, in which case it will be hidden and selected by default. * * For example if a noise expression is intended to be used as an alternative temperature generator, `intended_property` should be "temperature". * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NamedNoiseExpression.html#intended_property Online documentation} */ intended_property?: string /** * Used to order alternative expressions in the map generator GUI. For a given property (e.g. 'temperature'), the NamedNoiseExpression with that property's name as its `intended_property` with the lowest order will be chosen as the default in the GUI. * * If no order is specified, it defaults to "2000" if the property name matches the expression name (making it the 'technical default' generator for the property if none is specified in MapGenSettings), or "3000" otherwise. A generator defined with an order less than "2000" but with a unique name can thereby override the default generator used when creating a new map through the GUI without automatically overriding the 'technical default' generator, which is probably used by existing maps. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NamedNoiseExpression.html#order Online documentation} */ order?: Order } /** * Named noise functions are defined in the same way as {@link NamedNoiseExpression} except that they also have parameters. * * Named noise functions are available to be used in {@link NoiseExpression NoiseExpressions}. * @example * { * type = "noise-function", * name = "random_between", * parameters = {"from", "to"}, * expression = "random_penalty{x = x, y = y, source = to, amplitude = to - from}" * } * @example * { * type = "noise-function", * name = "finish_elevation", * parameters = {"elevation", "segmentation_multiplier"}, * expression = "min((elevation - water_level) / segmentation_multiplier, , starting_lake_distance / 16 + starting_lake_noise / 2)", * local_expressions = * { * starting_lake_distance = "distance_from_nearest_point{x = x, y = y, points = starting_lake_positions, maximum_distance = 1024}", * starting_lake_noise = "quick_multioctave_noise_persistence{}" * } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NamedNoiseFunction.html Online documentation} */ export interface NamedNoiseFunction extends Prototype { type: "noise-function" /** * The order of the parameters matters because functions can also be called with positional arguments. * * A function can't have more than 255 parameters. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NamedNoiseFunction.html#parameters Online documentation} */ parameters: readonly string[] expression: NoiseExpression /** * A map of expression name to expression. * * Local expressions are meant to store data locally similar to local variables in Lua. Their purpose is to hold noise expressions used multiple times in the named noise expression, or just to tell the reader that the local expression has a specific purpose. Local expressions can access other local definitions and also function parameters, but recursive definitions aren't supported. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NamedNoiseFunction.html#local_expressions Online documentation} */ local_expressions?: Record /** * A map of function name to function. * * Local functions serve the same purpose as local expressions - they aren't visible outside of the specific prototype and they have access to other local definitions. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NamedNoiseFunction.html#local_functions Online documentation} */ local_functions?: Record } /** * Used by {@linkplain https://wiki.factorio.com/Nightvision nightvision}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NightVisionEquipmentPrototype.html Online documentation} */ export interface NightVisionEquipmentPrototype extends EquipmentPrototype { type: "night-vision-equipment" energy_input: Energy color_lookup: DaytimeColorLookupTable /** * **Default:** `0.5` * * Must be >= 0 and <= 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/NightVisionEquipmentPrototype.html#darkness_to_turn_on Online documentation} */ darkness_to_turn_on?: float activate_sound?: Sound deactivate_sound?: Sound } /** * An {@linkplain https://wiki.factorio.com/Offshore_pump offshore pump}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/OffshorePumpPrototype.html Online documentation} */ export interface OffshorePumpPrototype extends EntityWithOwnerPrototype { type: "offshore-pump" fluid_box: FluidBox /** * How many units of fluid are produced per tick. Must be > 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/OffshorePumpPrototype.html#pumping_speed Online documentation} */ pumping_speed: FluidAmount fluid_source_offset: Vector /** * Affects animation speed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/OffshorePumpPrototype.html#perceived_performance Online documentation} */ perceived_performance?: PerceivedPerformance graphics_set?: OffshorePumpGraphicsSet /** * Defines how the offshore pump is powered. * * When using an electric energy source and `drain` is not specified, it will be set to `energy_usage ÷ 30` automatically. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/OffshorePumpPrototype.html#energy_source Online documentation} */ energy_source: EnergySource /** * Sets how much energy this offshore pump consumes. Energy usage has to be positive. * @example * energy_usage = "60kW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/OffshorePumpPrototype.html#energy_usage Online documentation} */ energy_usage: Energy /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/OffshorePumpPrototype.html#remove_on_tile_collision Online documentation} */ remove_on_tile_collision?: boolean /** * **Default:** `true` * * If false, the offshore pump will not show fluid present (visually) before there is an output connected. The pump will also animate yet not show fluid when the fluid is 100% extracted (e.g. such as with a pump). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/OffshorePumpPrototype.html#always_draw_fluid Online documentation} */ always_draw_fluid?: boolean /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/OffshorePumpPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/OffshorePumpPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/OffshorePumpPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] } /** * An entity with a limited lifetime that can use trigger effects. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html Online documentation} */ export interface ParticlePrototype extends Prototype { type: "optimized-particle" /** * Picture variation count and individual frame count must be equal to shadow variation count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#pictures Online documentation} */ pictures?: AnimationVariations /** * Can't be 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#life_time Online documentation} */ life_time: uint16 /** * Shadow variation variation count and individual frame count must be equal to picture variation count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#shadows Online documentation} */ shadows?: AnimationVariations /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#draw_shadow_when_on_ground Online documentation} */ draw_shadow_when_on_ground?: boolean regular_trigger_effect?: TriggerEffect ended_in_water_trigger_effect?: TriggerEffect ended_on_ground_trigger_effect?: TriggerEffect /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * **Default:** `"lower-object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#render_layer_when_on_ground Online documentation} */ render_layer_when_on_ground?: RenderLayer /** * **Default:** `0` * * Can't be 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#regular_trigger_effect_frequency Online documentation} */ regular_trigger_effect_frequency?: uint32 /** * **Default:** `0.8` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#movement_modifier_when_on_ground Online documentation} */ movement_modifier_when_on_ground?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#movement_modifier Online documentation} */ movement_modifier?: float /** * **Default:** `-0.004` * * Has to be >= -0.01 and <= 0.01. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#vertical_acceleration Online documentation} */ vertical_acceleration?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#mining_particle_frame_speed Online documentation} */ mining_particle_frame_speed?: float /** * Defaults to `life_time` / 5, but at most 60. If this is 0, it is silently changed to 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticlePrototype.html#fade_away_duration Online documentation} */ fade_away_duration?: uint16 } /** * Creates particles. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticleSourcePrototype.html Online documentation} */ export interface ParticleSourcePrototype extends EntityPrototype { type: "particle-source" time_to_live: float time_before_start: float height: float vertical_speed: float horizontal_speed: float /** * Mandatory if `smoke` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticleSourcePrototype.html#particle Online documentation} */ particle?: ParticleID /** * Mandatory if `particle` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticleSourcePrototype.html#smoke Online documentation} */ smoke?: readonly SmokeSource[] /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticleSourcePrototype.html#time_to_live_deviation Online documentation} */ time_to_live_deviation?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticleSourcePrototype.html#time_before_start_deviation Online documentation} */ time_before_start_deviation?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticleSourcePrototype.html#height_deviation Online documentation} */ height_deviation?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticleSourcePrototype.html#vertical_speed_deviation Online documentation} */ vertical_speed_deviation?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ParticleSourcePrototype.html#horizontal_speed_deviation Online documentation} */ horizontal_speed_deviation?: float } /** * An entity to transport fluids over a distance and between machines. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PipePrototype.html Online documentation} */ export interface PipePrototype extends EntityWithOwnerPrototype { type: "infinity-pipe" | "pipe" /** * The area of the entity where fluid/gas inputs, and outputs. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PipePrototype.html#fluid_box Online documentation} */ fluid_box: FluidBox horizontal_window_bounding_box: BoundingBox vertical_window_bounding_box: BoundingBox /** * All graphics for this pipe. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PipePrototype.html#pictures Online documentation} */ pictures?: PipePictures } /** * A {@linkplain https://wiki.factorio.com/Pipe_to_ground pipe to ground}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PipeToGroundPrototype.html Online documentation} */ export interface PipeToGroundPrototype extends EntityWithOwnerPrototype { type: "pipe-to-ground" fluid_box: FluidBox pictures?: Sprite4Way frozen_patch?: Sprite4Way visualization?: Sprite4Way disabled_visualization?: Sprite4Way /** * **Default:** `false` * * Causes fluid icon to always be drawn, ignoring the usual pair requirement. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PipeToGroundPrototype.html#draw_fluid_icon_override Online documentation} */ draw_fluid_icon_override?: boolean } export interface PlaceEquipmentAchievementPrototype extends AchievementPrototype { type: "place-equipment-achievement" armor: ItemID limit_quality: QualityID limit_equip_quality: QualityID /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlaceEquipmentAchievementPrototype.html#amount Online documentation} */ amount?: uint32 /** * **Default:** `false` * * If this is false, the player carries over their statistics from this achievement through all their saves. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlaceEquipmentAchievementPrototype.html#limited_to_one_game Online documentation} */ limited_to_one_game?: boolean } export interface PlanetPrototype extends SpaceLocationPrototype { type: "planet" /** * **Default:** `CRC checksum of `name`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlanetPrototype.html#map_seed_offset Online documentation} */ map_seed_offset?: uint32 /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlanetPrototype.html#entities_require_heating Online documentation} */ entities_require_heating?: boolean pollutant_type?: AirbornePollutantID persistent_ambient_sounds?: PersistentWorldAmbientSoundsDefinition surface_render_parameters?: SurfaceRenderParameters player_effects?: Trigger /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlanetPrototype.html#ticks_between_player_effects Online documentation} */ ticks_between_player_effects?: MapTick map_gen_settings?: PlanetPrototypeMapGenSettings surface_properties?: Record lightning_properties?: LightningProperties } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlantPrototype.html Online documentation} */ export interface PlantPrototype extends TreePrototype { type: "plant" /** * Must be positive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlantPrototype.html#growth_ticks Online documentation} */ growth_ticks: MapTick /** * The burst of pollution to emit when the plant is harvested. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlantPrototype.html#harvest_emissions Online documentation} */ harvest_emissions?: Record agricultural_tower_tint?: RecipeTints } /** * This prototype is used for receiving an achievement when the player receives damage. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlayerDamagedAchievementPrototype.html Online documentation} */ export interface PlayerDamagedAchievementPrototype extends AchievementPrototype { type: "player-damaged-achievement" /** * This will trigger the achievement, if the amount of damage taken by the dealer, is more than this. * @example * minimum_damage = 500 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlayerDamagedAchievementPrototype.html#minimum_damage Online documentation} */ minimum_damage: float /** * This sets the achievement to only trigger, if you survive the minimum amount of damage. If you don't need to survive, false. * @example * should_survive = true * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlayerDamagedAchievementPrototype.html#should_survive Online documentation} */ should_survive: boolean /** * **Default:** `""` * * This will trigger the achievement, if the player takes damage from this specific entity type. * @example * type_of_dealer = "locomotive" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlayerDamagedAchievementPrototype.html#type_of_dealer Online documentation} */ type_of_dealer?: string } /** * Deprecated in 2.0. * @deprecated * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PlayerPortPrototype.html Online documentation} */ export interface PlayerPortPrototype extends EntityWithOwnerPrototype { /** * @deprecated * @see PlayerPortPrototype */ type: "player-port" } /** * A {@linkplain https://wiki.factorio.com/Power_switch power switch}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PowerSwitchPrototype.html Online documentation} */ export interface PowerSwitchPrototype extends EntityWithOwnerPrototype { type: "power-switch" power_on_animation?: Animation overlay_start?: Animation overlay_loop?: Animation led_on?: Sprite led_off?: Sprite frozen_patch?: Sprite overlay_start_delay: uint8 circuit_wire_connection_point: WireConnectionPoint left_wire_connection_point: WireConnectionPoint right_wire_connection_point: WireConnectionPoint /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PowerSwitchPrototype.html#wire_max_distance Online documentation} */ wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PowerSwitchPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PowerSwitchPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean } /** * Helps {@link ProcessionLayer ProcessionLayers} pass properties between subsequent transitions if they belong to the same group. * * _Prototype limited to **255** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProcessionLayerInheritanceGroup.html Online documentation} */ export interface ProcessionLayerInheritanceGroup extends Prototype { type: "procession-layer-inheritance-group" intermezzo_application?: TransitionApplication arrival_application?: TransitionApplication } /** * Describes the duration and visuals of a departure, arrival or an intermezzo while traveling between surfaces. Usually provided inside of a {@link ProcessionSet}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProcessionPrototype.html Online documentation} */ export interface ProcessionPrototype extends Prototype { type: "procession" /** * Used when leaving or arriving to a station. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProcessionPrototype.html#timeline Online documentation} */ timeline: ProcessionTimeline /** * Used alternatively when landing to ground. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProcessionPrototype.html#ground_timeline Online documentation} */ ground_timeline?: ProcessionTimeline /** * Arrival and Departure are to be referenced by name. All intermezzos are collected during loading and filled in by `procession_style`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProcessionPrototype.html#usage Online documentation} */ usage: "departure" | "arrival" | "intermezzo" /** * Indexes used to match transitions from different surfaces together. Only a single intermezzo of a given procession_style may exist. * @example * Going from Surface A -> Surface B * Surface A has departures: [1, 3, 4] * Surface B has arrivals: [2, 3, 5] * This trip will select: * Departure 3 -> (Intermezzo 3) -> Arrival 3 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProcessionPrototype.html#procession_style Online documentation} */ procession_style: uint32 | readonly uint32[] } /** * This prototype is used for receiving an achievement when the player produces more than the specified amount of items. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProduceAchievementPrototype.html Online documentation} */ export interface ProduceAchievementPrototype extends AchievementPrototype { type: "produce-achievement" /** * This will set the amount of items or fluids needed to craft, for the player to complete the achievement. * @example * amount = 100 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProduceAchievementPrototype.html#amount Online documentation} */ amount: MaterialAmountType /** * If this is false, the player carries over their statistics from this achievement through all their saves. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProduceAchievementPrototype.html#limited_to_one_game Online documentation} */ limited_to_one_game: boolean /** * Mandatory if `fluid_product` is not defined. * * This will tell the achievement what item the player needs to craft, to get the achievement. * @example * item_product = "pistol" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProduceAchievementPrototype.html#item_product Online documentation} */ item_product?: ItemIDFilter /** * Mandatory if `item_product` is not defined. * * This will tell the achievement what fluid the player needs to craft, to get the achievement. * @example * fluid_product = "heavy-oil" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProduceAchievementPrototype.html#fluid_product Online documentation} */ fluid_product?: FluidID } /** * This prototype is used for receiving an achievement when the player crafts a specified item a certain amount, in an hour. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProducePerHourAchievementPrototype.html Online documentation} */ export interface ProducePerHourAchievementPrototype extends AchievementPrototype { type: "produce-per-hour-achievement" /** * This is how much the player has to craft in an hour, to receive the achievement. * @example * amount = 1000 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProducePerHourAchievementPrototype.html#amount Online documentation} */ amount: MaterialAmountType /** * Mandatory if `fluid_product` is not defined. * * This will tell the achievement what item the player needs to craft, to get the achievement. * @example * item_product = "landfill" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProducePerHourAchievementPrototype.html#item_product Online documentation} */ item_product?: ItemIDFilter /** * Mandatory if `item_product` is not defined. * * This will tell the achievement what fluid the player needs to craft, to get the achievement. * @example * fluid_product = "light-oil" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProducePerHourAchievementPrototype.html#fluid_product Online documentation} */ fluid_product?: FluidID } /** * A {@linkplain https://wiki.factorio.com/Programmable_speaker programmable speaker}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProgrammableSpeakerPrototype.html Online documentation} */ export interface ProgrammableSpeakerPrototype extends EntityWithOwnerPrototype { type: "programmable-speaker" energy_source: ElectricEnergySource | VoidEnergySource energy_usage_per_tick: Energy sprite?: Sprite maximum_polyphony: uint32 /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProgrammableSpeakerPrototype.html#instruments Online documentation} */ instruments: readonly ProgrammableSpeakerInstrument[] /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProgrammableSpeakerPrototype.html#audible_distance_modifier Online documentation} */ audible_distance_modifier?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProgrammableSpeakerPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProgrammableSpeakerPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProgrammableSpeakerPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition } /** * Entity with limited lifetime that can hit other entities and has triggers when this happens. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html Online documentation} */ export interface ProjectilePrototype extends EntityPrototype { type: "projectile" /** * Must be != 0 if `turning_speed_increases_exponentially_with_projectile_speed` is true. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#acceleration Online documentation} */ acceleration: double animation?: RotatedAnimationVariations /** * **Default:** `true` * * Whether the animation of the projectile is rotated to match the direction of travel. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#rotatable Online documentation} */ rotatable?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#enable_drawing_with_mask Online documentation} */ enable_drawing_with_mask?: boolean /** * **Default:** `false` * * Setting this to true can be used to disable projectile homing behaviour. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#direction_only Online documentation} */ direction_only?: boolean /** * **Default:** `false` * * When true the entity is hit at the position on its collision box the projectile first collides with. When false the entity is hit at its own position. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#hit_at_collision_position Online documentation} */ hit_at_collision_position?: boolean /** * **Default:** `"all"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#force_condition Online documentation} */ force_condition?: ForceCondition /** * **Default:** `0` * * Whenever an entity is hit by the projectile, this number gets reduced by the health of the entity. If the number is then below 0, the `final_action` is applied and the projectile destroyed. Otherwise, the projectile simply continues to its destination. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#piercing_damage Online documentation} */ piercing_damage?: float /** * **Default:** `MAX_DOUBLE` * * Must be greater than or equal to 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#max_speed Online documentation} */ max_speed?: double /** * **Default:** `1` * * Must be greater than or equal to 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#turn_speed Online documentation} */ turn_speed?: float /** * **Default:** ``{1, 1}`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#speed_modifier Online documentation} */ speed_modifier?: Vector /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#height Online documentation} */ height?: double /** * Executed when the projectile hits something. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#action Online documentation} */ action?: Trigger /** * Executed when the projectile hits something, after `action` and only if the entity that was hit was destroyed. The projectile is destroyed right after the final_action. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#final_action Online documentation} */ final_action?: Trigger light?: LightDefinition smoke?: readonly SmokeSource[] /** * Defaults to the mask from {@link UtilityConstants#default_collision_masks UtilityConstants::default_collision_masks} when indexed by `"projectile/hit"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#hit_collision_mask Online documentation} */ hit_collision_mask?: CollisionMaskConnector /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProjectilePrototype.html#turning_speed_increases_exponentially_with_projectile_speed Online documentation} */ turning_speed_increases_exponentially_with_projectile_speed?: boolean shadow?: RotatedAnimationVariations } export interface Prototype extends PrototypeBase { type: | "accumulator" | "achievement" | "active-defense-equipment" | "agricultural-tower" | "airborne-pollutant" | "ammo-category" | "ammo" | "ammo-turret" | "arithmetic-combinator" | "armor" | "arrow" | "artillery-flare" | "artillery-projectile" | "artillery-turret" | "artillery-wagon" | "assembling-machine" | "asteroid-chunk" | "asteroid-collector" | "asteroid" | "autoplace-control" | "battery-equipment" | "beacon" | "beam" | "belt-immunity-equipment" | "blueprint-book" | "blueprint" | "boiler" | "build-entity-achievement" | "burner-generator" | "burner-usage" | "capsule" | "capture-robot" | "car" | "cargo-bay" | "cargo-landing-pad" | "cargo-pod" | "cargo-wagon" | "chain-active-trigger" | "change-surface-achievement" | "character-corpse" | "character" | "cliff" | "collision-layer" | "combat-robot-count-achievement" | "combat-robot" | "complete-objective-achievement" | "constant-combinator" | "construct-with-robots-achievement" | "construction-robot" | "container" | "copy-paste-tool" | "corpse" | "create-platform-achievement" | "curved-rail-a" | "curved-rail-b" | "custom-event" | "custom-input" | "damage-type" | "decider-combinator" | "deconstruct-with-robots-achievement" | "deconstructible-tile-proxy" | "deconstruction-item" | "optimized-decorative" | "delayed-active-trigger" | "deliver-by-robots-achievement" | "deplete-resource-achievement" | "destroy-cliff-achievement" | "display-panel" | "dont-build-entity-achievement" | "dont-craft-manually-achievement" | "dont-kill-manually-achievement" | "dont-research-before-researching-achievement" | "dont-use-entity-in-energy-production-achievement" | "electric-energy-interface" | "electric-pole" | "electric-turret" | "elevated-curved-rail-a" | "elevated-curved-rail-b" | "elevated-half-diagonal-rail" | "elevated-straight-rail" | "unit-spawner" | "energy-shield-equipment" | "entity-ghost" | "equip-armor-achievement" | "equipment-category" | "equipment-ghost" | "equipment-grid" | "explosion" | "fire" | "fish" | "fluid" | "stream" | "fluid-turret" | "fluid-wagon" | "fuel-category" | "furnace" | "fusion-generator" | "fusion-reactor" | "gate" | "generator-equipment" | "generator" | "group-attack-achievement" | "gun" | "half-diagonal-rail" | "heat-interface" | "heat-pipe" | "highlight-box" | "infinity-cargo-wagon" | "infinity-container" | "infinity-pipe" | "inserter" | "inventory-bonus-equipment" | "item-entity" | "item-group" | "item" | "item-request-proxy" | "item-subgroup" | "item-with-entity-data" | "item-with-inventory" | "item-with-label" | "item-with-tags" | "kill-achievement" | "lab" | "lamp" | "land-mine" | "lane-splitter" | "legacy-curved-rail" | "legacy-straight-rail" | "lightning-attractor" | "lightning" | "linked-belt" | "linked-container" | "loader-1x1" | "loader" | "locomotive" | "logistic-container" | "logistic-robot" | "market" | "mining-drill" | "mod-data" | "module-category" | "module" | "module-transfer-achievement" | "movement-bonus-equipment" | "noise-expression" | "noise-function" | "night-vision-equipment" | "offshore-pump" | "optimized-particle" | "particle-source" | "pipe" | "pipe-to-ground" | "place-equipment-achievement" | "planet" | "plant" | "player-damaged-achievement" | "player-port" | "power-switch" | "procession-layer-inheritance-group" | "procession" | "produce-achievement" | "produce-per-hour-achievement" | "programmable-speaker" | "projectile" | "proxy-container" | "pump" | "quality" | "radar" | "rail-chain-signal" | "rail-planner" | "rail-ramp" | "rail-remnants" | "rail-signal" | "rail-support" | "reactor" | "recipe-category" | "recipe" | "repair-tool" | "research-achievement" | "research-with-science-pack-achievement" | "resource-category" | "resource" | "roboport-equipment" | "roboport" | "rocket-silo" | "rocket-silo-rocket" | "rocket-silo-rocket-shadow" | "segment" | "segmented-unit" | "selection-tool" | "selector-combinator" | "shoot-achievement" | "shortcut" | "simple-entity" | "simple-entity-with-force" | "simple-entity-with-owner" | "smoke-with-trigger" | "solar-panel-equipment" | "solar-panel" | "space-connection-distance-traveled-achievement" | "space-connection" | "space-location" | "space-platform-hub" | "space-platform-starter-pack" | "speech-bubble" | "spider-leg" | "spider-unit" | "spider-vehicle" | "spidertron-remote" | "splitter" | "sticker" | "storage-tank" | "straight-rail" | "surface-property" | "surface" | "technology" | "temporary-container" | "thruster" | "tile-ghost" | "tile" | "tool" | "train-path-achievement" | "train-stop" | "transport-belt" | "tree" | "trivial-smoke" | "turret" | "underground-belt" | "unit" | "upgrade-item" | "use-entity-in-energy-production-achievement" | "use-item-achievement" | "valve" | "virtual-signal" | "wall" /** * The ID type corresponding to the prototype that inherits from this. * * For example, if this is an {@link EntityPrototype}, this property's type is {@link EntityID}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/Prototype.html#factoriopedia_alternative Online documentation} */ factoriopedia_alternative?: string /** * Allows to add extra description items to the tooltip and Factoriopedia. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/Prototype.html#custom_tooltip_fields Online documentation} */ custom_tooltip_fields?: readonly CustomTooltipField[] } /** * The abstract base for prototypes. PrototypeBase defines the common features of prototypes, such as localization and order. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html Online documentation} */ export interface PrototypeBase { /** * Specifies the kind of prototype this is. * * For a list of all possible types, see the {@linkplain https://lua-api.factorio.com/2.0.75/prototypes.html prototype overview}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html#type Online documentation} */ type: PrototypeType /** * Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters. * * For a list of all names used in vanilla, see {@linkplain https://wiki.factorio.com/Data.raw data.raw}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html#name Online documentation} */ name: string /** * **Default:** `""` * * Used to order prototypes in inventory, recipes and GUIs. May not exceed a length of 200 characters. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html#order Online documentation} */ order?: Order /** * Overwrites the name set in the {@linkplain https://wiki.factorio.com/Tutorial:Localisation locale file}. Can be used to easily set a procedurally-generated name because the LocalisedString format allows to insert parameters into the name directly from the Lua script. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html#localised_name Online documentation} */ localised_name?: LocalisedString /** * Overwrites the description set in the {@linkplain https://wiki.factorio.com/Tutorial:Localisation locale file}. The description is usually shown in the tooltip of the prototype. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html#localised_description Online documentation} */ localised_description?: LocalisedString /** * Provides additional description used in factoriopedia. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html#factoriopedia_description Online documentation} */ factoriopedia_description?: LocalisedString /** * The name of an {@link ItemSubGroup}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html#subgroup Online documentation} */ subgroup?: ItemSubGroupID /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html#hidden Online documentation} */ hidden?: boolean /** * **Default:** `Value of `hidden`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html#hidden_in_factoriopedia Online documentation} */ hidden_in_factoriopedia?: boolean /** * **Default:** `false` * * Whether the prototype is a special type which can be used to parametrize blueprints and doesn't have other function. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html#parameter Online documentation} */ parameter?: boolean /** * The simulation shown when looking at this prototype in the Factoriopedia GUI. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PrototypeBase.html#factoriopedia_simulation Online documentation} */ factoriopedia_simulation?: SimulationDefinition } /** * A container that must be set to point at other entity and inventory index so it can forward all inventory interactions to the other entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProxyContainerPrototype.html Online documentation} */ export interface ProxyContainerPrototype extends EntityWithOwnerPrototype { type: "proxy-container" picture?: Sprite /** * **Default:** `true` * * If the content of the inventory should be rendered in alt mode. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProxyContainerPrototype.html#draw_inventory_content Online documentation} */ draw_inventory_content?: boolean /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProxyContainerPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProxyContainerPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ProxyContainerPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition } /** * The pump is used to transfer fluids between tanks, fluid wagons and pipes. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html Online documentation} */ export interface PumpPrototype extends EntityWithOwnerPrototype { type: "pump" /** * The area of the entity where fluid travels. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#fluid_box Online documentation} */ fluid_box: FluidBox /** * The type of energy the pump uses. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#energy_source Online documentation} */ energy_source: EnergySource /** * The amount of energy the pump uses. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#energy_usage Online documentation} */ energy_usage: Energy /** * The amount of fluid this pump transfers per tick. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#pumping_speed Online documentation} */ pumping_speed: FluidAmount /** * The animation for the pump. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#animations Online documentation} */ animations?: Animation4Way /** * **Default:** `1 / 64.0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#fluid_wagon_connector_speed Online documentation} */ fluid_wagon_connector_speed?: double /** * **Default:** `2 / 32.0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#fluid_wagon_connector_alignment_tolerance Online documentation} */ fluid_wagon_connector_alignment_tolerance?: double /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#fluid_wagon_connector_frame_count Online documentation} */ fluid_wagon_connector_frame_count?: uint8 /** * **Default:** `true` * * When true, pump will reduce pumping speed based on fullness of the input fluid segment. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#flow_scaling Online documentation} */ flow_scaling?: boolean fluid_animation?: Animation4Way glass_pictures?: Sprite4Way frozen_patch?: Sprite4Way /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/PumpPrototype.html#fluid_wagon_connector_graphics Online documentation} */ fluid_wagon_connector_graphics?: FluidWagonConnectorGraphics } /** * One quality step. Its effects are specified by the level and the various multiplier and bonus properties. Properties ending in `_multiplier` are applied multiplicatively to their base property, properties ending in `_bonus` are applied additively. * * _Prototype limited to **255** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html Online documentation} */ export interface QualityPrototype extends Prototype { type: "quality" /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#draw_sprite_by_default Online documentation} */ draw_sprite_by_default?: boolean color: Color /** * Requires Space Age to use level greater than `0`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#level Online documentation} */ level: uint32 next?: QualityID /** * **Default:** `0` * * The quality {@link ModulePrototype#effect effect of the module} is multiplied by this. For example, if a module's quality effect is 0.2 and the current quality's next_probability is 0.1, then the chance to get the next quality item is 2%. * * Must be in range [0, 1.0]. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#next_probability Online documentation} */ next_probability?: double /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * **Default:** `1` * * Must be >= 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#beacon_power_usage_multiplier Online documentation} */ beacon_power_usage_multiplier?: float /** * **Default:** `1` * * Must be in range `[0, 1]`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#mining_drill_resource_drain_multiplier Online documentation} */ mining_drill_resource_drain_multiplier?: float /** * **Default:** `1` * * Must be in range `[0, 1]`. * * Only affects labs with {@link LabPrototype#uses_quality_drain_modifier LabPrototype::uses_quality_drain_modifier} set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#science_pack_drain_multiplier Online documentation} */ science_pack_drain_multiplier?: float /** * Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters. * * Requires Space Age to create prototypes with name other than `normal` or `quality-unknown`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#name Online documentation} */ name: string /** * **Default:** `1 + 0.3 * `level`` * * Must be >= 0.01. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#default_multiplier Online documentation} */ default_multiplier?: double /** * **Default:** `Value of `default_multiplier`` * * Must be >= 0.01. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#inserter_speed_multiplier Online documentation} */ inserter_speed_multiplier?: double /** * **Default:** `Value of `default_multiplier`` * * Must be >= 0.01. * * Only affects fluid wagons with {@link FluidWagonPrototype#quality_affects_capacity FluidWagonPrototype::quality_affects_capacity} set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#fluid_wagon_capacity_multiplier Online documentation} */ fluid_wagon_capacity_multiplier?: double /** * **Default:** `Value of `default_multiplier`` * * Must be >= 0.01. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#inventory_size_multiplier Online documentation} */ inventory_size_multiplier?: double /** * **Default:** `Value of `default_multiplier`` * * Must be >= 0.01. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#lab_research_speed_multiplier Online documentation} */ lab_research_speed_multiplier?: double /** * **Default:** `Value of `default_multiplier`` * * Must be >= 0.01. * * Will be ignored by crafting machines with {@link CraftingMachinePrototype#crafting_speed_quality_multiplier CraftingMachinePrototype::crafting_speed_quality_multiplier} set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#crafting_machine_speed_multiplier Online documentation} */ crafting_machine_speed_multiplier?: double /** * **Default:** `1` * * Must be >= 0.01. * * Only affects crafting machines with {@link CraftingMachinePrototype#quality_affects_energy_usage CraftingMachinePrototype::quality_affects_energy_usage} set. * * Will be ignored by crafting machines with {@link CraftingMachinePrototype#energy_usage_quality_multiplier CraftingMachinePrototype::energy_usage_quality_multiplier} set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#crafting_machine_energy_usage_multiplier Online documentation} */ crafting_machine_energy_usage_multiplier?: double /** * **Default:** `Value of `default_multiplier`` * * Must be >= 0.01. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#logistic_cell_charging_energy_multiplier Online documentation} */ logistic_cell_charging_energy_multiplier?: double /** * **Default:** `1 + `level`` * * Must be >= 0.01. * * Affects the durability of {@link ToolPrototype tool items} like science packs, repair tools and armor. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#tool_durability_multiplier Online documentation} */ tool_durability_multiplier?: double /** * **Default:** `1 + `level`` * * Must be >= 0.01. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#accumulator_capacity_multiplier Online documentation} */ accumulator_capacity_multiplier?: double /** * **Default:** `1 + `level`` * * Must be >= 0.01. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#flying_robot_max_energy_multiplier Online documentation} */ flying_robot_max_energy_multiplier?: double /** * **Default:** `min(1 + 0.1 * `level`, 3)` * * Must be within `[1, 3]`. * * Affects the range of {@link AttackParameters attack parameters}, e.g. those used by combat robots, units, guns and turrets. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#range_multiplier Online documentation} */ range_multiplier?: double /** * **Default:** `Value of `level`` * * Must be >= 0. * * Performance warning: the navigation has to pre-calculate ranges for the highest tier collector possible, so you should keep this collection radius within reasonable values. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#asteroid_collector_collection_radius_bonus Online documentation} */ asteroid_collector_collection_radius_bonus?: double /** * **Default:** `Value of `level`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#equipment_grid_width_bonus Online documentation} */ equipment_grid_width_bonus?: int16 /** * **Default:** `Value of `level`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#equipment_grid_height_bonus Online documentation} */ equipment_grid_height_bonus?: int16 /** * **Default:** `2 * `level`` * * Must be >= 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#electric_pole_wire_reach_bonus Online documentation} */ electric_pole_wire_reach_bonus?: float /** * **Default:** `Value of `level`` * * Must be >= 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#electric_pole_supply_area_distance_bonus Online documentation} */ electric_pole_supply_area_distance_bonus?: float /** * **Default:** `clamp(`level`, 0, 64)` * * Only affects beacons with {@link BeaconPrototype#quality_affects_supply_area_distance BeaconPrototype::quality_affects_supply_area_distance} set. * * Must be >= 0 and <= 64. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#beacon_supply_area_distance_bonus Online documentation} */ beacon_supply_area_distance_bonus?: float /** * **Default:** `Value of `level`` * * Only affects mining drills with {@link MiningDrillPrototype#quality_affects_mining_radius MiningDrillPrototype::quality_affects_mining_radius} set. * * Must be >= 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#mining_drill_mining_radius_bonus Online documentation} */ mining_drill_mining_radius_bonus?: float /** * **Default:** `Value of `level`` * * Only affects roboports with {@link RoboportPrototype#charging_station_count_affected_by_quality RoboportPrototype::charging_station_count_affected_by_quality} set. * * Only affects roboport equipment with {@link RoboportEquipmentPrototype#charging_station_count_affected_by_quality RoboportEquipmentPrototype::charging_station_count_affected_by_quality} set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#logistic_cell_charging_station_count_bonus Online documentation} */ logistic_cell_charging_station_count_bonus?: uint32 /** * **Default:** `Value of `level`` * * Only affects beacons with {@link BeaconPrototype#quality_affects_module_slots BeaconPrototype::quality_affects_module_slots} set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#beacon_module_slots_bonus Online documentation} */ beacon_module_slots_bonus?: ItemStackIndex /** * **Default:** `Value of `level`` * * Only affects crafting machines with {@link CraftingMachinePrototype#quality_affects_module_slots CraftingMachinePrototype::quality_affects_module_slots} set. * * Will be ignored by crafting machines with {@link CraftingMachinePrototype#module_slots_quality_bonus CraftingMachinePrototype::module_slots_quality_bonus} set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#crafting_machine_module_slots_bonus Online documentation} */ crafting_machine_module_slots_bonus?: ItemStackIndex /** * **Default:** `Value of `level`` * * Only affects mining drills with {@link MiningDrillPrototype#quality_affects_module_slots MiningDrillPrototype::quality_affects_module_slots} set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#mining_drill_module_slots_bonus Online documentation} */ mining_drill_module_slots_bonus?: ItemStackIndex /** * **Default:** `Value of `level`` * * Only affects labs with {@link LabPrototype#quality_affects_module_slots LabPrototype::quality_affects_module_slots} set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/QualityPrototype.html#lab_module_slots_bonus Online documentation} */ lab_module_slots_bonus?: ItemStackIndex } /** * A {@linkplain https://wiki.factorio.com/Radar radar}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html Online documentation} */ export interface RadarPrototype extends EntityWithOwnerPrototype { type: "radar" /** * The amount of energy this radar uses. * @example * energy_usage = "300kW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#energy_usage Online documentation} */ energy_usage: Energy /** * The amount of energy it takes to scan a sector. This value doesn't have any effect on nearby scanning. * @example * energy_per_sector = "10MJ" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#energy_per_sector Online documentation} */ energy_per_sector: Energy /** * The amount of energy the radar has to consume for nearby scan to be performed. This value doesn't have any effect on sector scanning. * * Performance warning: nearby scan causes re-charting of many chunks, which is expensive operation. If you want to make a radar that updates map more in real time, you should keep its range low. If you are making radar with high range, you should set this value such that nearby scan is performed once a second or so. For example if you set `energy_usage` to 100kW, setting `energy_per_nearby_scan` to 100kJ will cause nearby scan to happen once per second. * @example * energy_per_nearby_scan = "250kJ" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#energy_per_nearby_scan Online documentation} */ energy_per_nearby_scan: Energy /** * The energy source for this radar. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#energy_source Online documentation} */ energy_source: EnergySource pictures?: RotatedSprite frozen_patch?: Sprite /** * The radius of the area this radar can chart, in chunks. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#max_distance_of_sector_revealed Online documentation} */ max_distance_of_sector_revealed: uint32 /** * The radius of the area constantly revealed by this radar, in chunks. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#max_distance_of_nearby_sector_revealed Online documentation} */ max_distance_of_nearby_sector_revealed: uint32 /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition radius_minimap_visualisation_color?: Color /** * **Default:** `0.01` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#rotation_speed Online documentation} */ rotation_speed?: double /** * **Default:** `true` * * If set to true, radars on the same surface will connect to other radars on the same surface using hidden wires with {@link defines.wire_origin.radars radar} origin. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#connects_to_other_radars Online documentation} */ connects_to_other_radars?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#reset_orientation_when_frozen Online documentation} */ reset_orientation_when_frozen?: boolean /** * **Default:** `0.9` * * Must be between 0 and 1. Must be larger than or equal to `energy_fraction_to_disconnect`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#energy_fraction_to_connect Online documentation} */ energy_fraction_to_connect?: float /** * **Default:** `0.1` * * Must be between 0 and 1. Must be less than or equal to `energy_fraction_to_connect`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#energy_fraction_to_disconnect Online documentation} */ energy_fraction_to_disconnect?: float /** * **Default:** `true` * * Whether this prototype should be a high priority target for enemy forces. See {@linkplain https://wiki.factorio.com/Military_units_and_structures Military units and structures}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RadarPrototype.html#is_military_target Online documentation} */ is_military_target?: boolean } /** * A {@linkplain https://wiki.factorio.com/Rail_chain_signal rail chain signal}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailChainSignalPrototype.html Online documentation} */ export interface RailChainSignalPrototype extends RailSignalBasePrototype { type: "rail-chain-signal" } /** * A {@linkplain https://wiki.factorio.com/Rail_planner rail planner}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPlannerPrototype.html Online documentation} */ export interface RailPlannerPrototype extends ItemPrototype { type: "rail-planner" /** * May not be an empty array. Entities must be rails and their first item-to-place must be this item. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPlannerPrototype.html#rails Online documentation} */ rails: readonly EntityID[] /** * Name of a rail support. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPlannerPrototype.html#support Online documentation} */ support?: EntityID /** * **Default:** `8 * 2 + 1.41 + 0.5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPlannerPrototype.html#manual_length_limit Online documentation} */ manual_length_limit?: double } /** * The abstract base of all rail prototypes. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPrototype.html Online documentation} */ export interface RailPrototype extends EntityWithOwnerPrototype { type: | "curved-rail-a" | "curved-rail-b" | "elevated-curved-rail-a" | "elevated-curved-rail-b" | "elevated-half-diagonal-rail" | "elevated-straight-rail" | "half-diagonal-rail" | "legacy-curved-rail" | "legacy-straight-rail" | "rail-ramp" | "straight-rail" /** * Sound played when a character walks over this rail. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPrototype.html#walking_sound Online documentation} */ walking_sound?: Sound pictures: RailPictureSet fence_pictures?: RailFenceGraphicsSet /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPrototype.html#extra_planner_penalty Online documentation} */ extra_planner_penalty?: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPrototype.html#extra_planner_goal_penalty Online documentation} */ extra_planner_goal_penalty?: double /** * **Default:** `0` * * Must be 0, 2 or 4. Can't be non-zero if `fence_pictures` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPrototype.html#forced_fence_segment_count Online documentation} */ forced_fence_segment_count?: uint8 ending_shifts?: readonly Vector[] deconstruction_marker_positions?: readonly Vector[] /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPrototype.html#removes_soft_decoratives Online documentation} */ removes_soft_decoratives?: boolean /** * **Default:** `2` * * Has to be 2 for 2x2 grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPrototype.html#build_grid_size Online documentation} */ build_grid_size?: 2 /** * The rail {@link EntityPrototype#selection_box selection_boxes} are automatically calculated from the collision boxes, which are hardcoded. So effectively the selection boxes also hardcoded. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailPrototype.html#selection_box Online documentation} */ selection_box?: BoundingBox } /** * A rail ramp. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailRampPrototype.html Online documentation} */ export interface RailRampPrototype extends RailPrototype { type: "rail-ramp" /** * **Default:** `15` * * Must be lower than 500 and at least 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailRampPrototype.html#support_range Online documentation} */ support_range?: float /** * Defaults to the mask from {@link UtilityConstants#default_collision_masks UtilityConstants::default_collision_masks} when indexed by `"rail-ramp/allow_on_deep_oil_ocean"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailRampPrototype.html#collision_mask_allow_on_deep_oil_ocean Online documentation} */ collision_mask_allow_on_deep_oil_ocean?: CollisionMaskConnector /** * **Default:** ``{{-1.6, -7.6}, {1.6, 7.6}}`` * * The {@link EntityPrototype#collision_box collision_box} of straight rail is hardcoded to `{{-1.6, -7.6}, {1.6, 7.6}}`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailRampPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox /** * Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters. * * Requires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailRampPrototype.html#name Online documentation} */ name: string } /** * Used for rail corpses. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailRemnantsPrototype.html Online documentation} */ export interface RailRemnantsPrototype extends CorpsePrototype { type: "rail-remnants" pictures: RailPictureSet related_rail: EntityID secondary_collision_box?: BoundingBox /** * **Default:** `2` * * Has to be 2 for 2x2 grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailRemnantsPrototype.html#build_grid_size Online documentation} */ build_grid_size?: 2 /** * **Default:** `Empty = `{{0, 0}, {0, 0}}`` * * "Rail remnant entities must have a non-zero {@link EntityPrototype#collision_box collision_box} defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailRemnantsPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } /** * The abstract base entity for both rail signals. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSignalBasePrototype.html Online documentation} */ export interface RailSignalBasePrototype extends EntityWithOwnerPrototype { type: "rail-chain-signal" | "rail-signal" ground_picture_set: RailSignalPictureSet elevated_picture_set: RailSignalPictureSet /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSignalBasePrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSignalBasePrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSignalBasePrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean default_red_output_signal?: SignalIDConnector default_orange_output_signal?: SignalIDConnector default_green_output_signal?: SignalIDConnector default_blue_output_signal?: SignalIDConnector /** * Defaults to the mask from {@link UtilityConstants#default_collision_masks UtilityConstants::default_collision_masks} when indexed by `type .. "/elevated"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSignalBasePrototype.html#elevated_collision_mask Online documentation} */ elevated_collision_mask?: CollisionMaskConnector /** * **Default:** `55` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSignalBasePrototype.html#elevated_selection_priority Online documentation} */ elevated_selection_priority?: uint8 /** * **Default:** ``{{-0.2, -0.2}, {0.2, 0.2}}`` * * The {@link EntityPrototype#collision_box collision_box} of rail signals is hardcoded to `{{-0.2, -0.2}, {0.2, 0.2}}`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSignalBasePrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox /** * The "placeable-off-grid" flag will be ignored for rail signals. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSignalBasePrototype.html#flags Online documentation} */ flags?: EntityPrototypeFlags } /** * A {@linkplain https://wiki.factorio.com/Rail_signal rail signal}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSignalPrototype.html Online documentation} */ export interface RailSignalPrototype extends RailSignalBasePrototype { type: "rail-signal" } export interface RailSupportPrototype extends EntityWithOwnerPrototype { type: "rail-support" /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSupportPrototype.html#graphics_set Online documentation} */ graphics_set: RailSupportGraphicsSet /** * **Default:** `15` * * Must be lower than 500 and at least 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSupportPrototype.html#support_range Online documentation} */ support_range?: float /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSupportPrototype.html#not_buildable_if_no_rails Online documentation} */ not_buildable_if_no_rails?: boolean /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSupportPrototype.html#snap_to_spots_distance Online documentation} */ snap_to_spots_distance?: float /** * Defaults to the mask from {@link UtilityConstants#default_collision_masks UtilityConstants::default_collision_masks} when indexed by `"rail-support/allow_on_deep_oil_ocean"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSupportPrototype.html#collision_mask_allow_on_deep_oil_ocean Online documentation} */ collision_mask_allow_on_deep_oil_ocean?: CollisionMaskConnector /** * Array must contain 8 items. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSupportPrototype.html#elevated_selection_boxes Online documentation} */ elevated_selection_boxes?: readonly BoundingBox[] /** * **Default:** `2` * * Has to be 2 for 2x2 grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSupportPrototype.html#build_grid_size Online documentation} */ build_grid_size?: 2 /** * Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters. * * Requires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RailSupportPrototype.html#name Online documentation} */ name: string } /** * A {@linkplain https://wiki.factorio.com/Reactor reactor}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html Online documentation} */ export interface ReactorPrototype extends EntityWithOwnerPrototype { type: "reactor" working_light_picture?: Animation /** * The energy output as heat. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#heat_buffer Online documentation} */ heat_buffer: HeatBuffer /** * **Default:** `1` * * Must be >= 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#heating_radius Online documentation} */ heating_radius?: double /** * May not be a heat energy source. * * The input energy source, in vanilla it is a burner energy source. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#energy_source Online documentation} */ energy_source: EnergySource /** * How much energy this reactor can consume (from the input energy source) and then output as heat. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#consumption Online documentation} */ consumption: Energy /** * If defined, number of variations must be at least equal to count of {@link HeatBuffer#connections connections} defined in `heat_buffer`. Each variation represents connected heat buffer connection of corresponding index. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#connection_patches_connected Online documentation} */ connection_patches_connected?: SpriteVariations /** * If defined, number of variations must be at least equal to count of {@link HeatBuffer#connections connections} defined in `heat_buffer`. Each variation represents unconnected heat buffer connection of corresponding index. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#connection_patches_disconnected Online documentation} */ connection_patches_disconnected?: SpriteVariations /** * If defined, number of variations must be at least equal to count of {@link HeatBuffer#connections connections} defined in `heat_buffer`. When reactor is heated, corresponding variations are drawn over `connection_patches_connected`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#heat_connection_patches_connected Online documentation} */ heat_connection_patches_connected?: SpriteVariations /** * If defined, number of variations must be at least equal to count of {@link HeatBuffer#connections connections} defined in `heat_buffer`. When reactor is heated, corresponding variations are drawn over `connection_patches_disconnected`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#heat_connection_patches_disconnected Online documentation} */ heat_connection_patches_disconnected?: SpriteVariations lower_layer_picture?: Sprite heat_lower_layer_picture?: Sprite picture?: Sprite light?: LightDefinition /** * The action is triggered when the reactor dies (is destroyed) at over 90% of max temperature. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#meltdown_action Online documentation} */ meltdown_action?: Trigger /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#neighbour_bonus Online documentation} */ neighbour_bonus?: double /** * **Default:** `false` * * When this is true, the reactor will stop consuming fuel/energy when the temperature has reached the maximum. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#scale_energy_usage Online documentation} */ scale_energy_usage?: boolean /** * **Default:** `false` * * Whether the reactor should use {@link ItemPrototype#fuel_glow_color fuel_glow_color} from the fuel item prototype as light color and tint for `working_light_picture`. {@linkplain https://forums.factorio.com/71121 Forum post.} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#use_fuel_glow_color Online documentation} */ use_fuel_glow_color?: boolean /** * **Default:** ``{1, 1, 1, 1} (white)`` * * When `use_fuel_glow_color` is true, this is the color used as `working_light_picture` tint for fuels that don't have glow color defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#default_fuel_glow_color Online documentation} */ default_fuel_glow_color?: Color /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ReactorPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition default_temperature_signal?: SignalIDConnector } /** * A recipe category. The built-in categories can be found {@linkplain https://wiki.factorio.com/Data.raw#recipe-category here}. See {@link RecipePrototype#category RecipePrototype::category}. Recipe categories can be used to specify which {@link CraftingMachinePrototype#crafting_categories machine} can craft which {@link RecipePrototype recipes}. * * The recipe category with the name "crafting" cannot contain recipes with fluid ingredients or products. * @example * { * type = "recipe-category", * name = "my-category" * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipeCategory.html Online documentation} */ export interface RecipeCategory extends Prototype { type: "recipe-category" } /** * A recipe. It can be a crafting recipe, a smelting recipe, or a custom type of recipe, see {@link RecipeCategory}. * @example * { * type = "recipe", * name = "iron-plate", * category = "smelting", * energy_required = 3.5, * ingredients = {{type = "item", name = "iron-ore", amount = 1}}, * results = {{type = "item", name = "iron-plate", amount = 1}} * } * @example * { * type = "recipe", * name = "coal-liquefaction", * category = "oil-processing", * subgroup = "fluid-recipes", * order = "a[oil-processing]-c[coal-liquefaction]", * enabled = false, * energy_required = 5, * icon = "__base__/graphics/icons/fluid/coal-liquefaction.png", * icon_size = 32, * ingredients = * { * {type = "item", name = "coal", amount = 10}, * {type = "fluid", name = "heavy-oil", amount = 25}, * {type = "fluid", name = "steam", amount = 50} * }, * results= * { * {type = "fluid", name = "heavy-oil", amount = 35}, * {type = "fluid", name = "light-oil", amount = 15}, * {type = "fluid", name = "petroleum-gas", amount = 20} * }, * allow_decomposition = false * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html Online documentation} */ export interface RecipePrototype extends Prototype { type: "recipe" /** * **Default:** `"crafting"` * * The {@link RecipeCategory category} of this recipe. Controls which machines can craft this recipe. * * The built-in categories can be found {@linkplain https://wiki.factorio.com/Data.raw#recipe-category here}. The base `"crafting"` category can not contain recipes with fluid ingredients or products. * @example * category = "smelting" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#category Online documentation} */ category?: RecipeCategoryID additional_categories?: readonly RecipeCategoryID[] /** * Used by {@link WorkingVisualisations#working_visualisations WorkingVisualisations::working_visualisations} to tint certain layers with the recipe color. {@link WorkingVisualisation#apply_recipe_tint WorkingVisualisation::apply_recipe_tint} determines which of the four colors is used for that layer, if any. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#crafting_machine_tint Online documentation} */ crafting_machine_tint?: RecipeTints /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * If given, this determines the recipe's icon. Otherwise, the icon of `main_product` or the singular product is used. * * Only loaded if `icons` is not defined. * * Mandatory if `icons` is not defined for a recipe with more than one product and no `main_product`, or no product. * @example * icon = "__base__/graphics/icons/fluid/heavy-oil.png" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * A table containing ingredient names and amounts. Can also contain information about fluid temperature and whether some of the amount is ignored by production statistics. * * The maximum ingredient amount is 65 535. Can be set to an empty table to create a recipe that needs no ingredients. * * Duplicate ingredients, e.g. two entries with the same name, are *not* allowed. In-game, the item ingredients are ordered by {@link ItemGroup#order_in_recipe ItemGroup::order_in_recipe}. * @example * -- Recipe with items * ingredients = * { * {type = "item", name = "iron-stick", amount = 2}, * {type = "item", name = "iron-plate", amount = 3} * } * @example * -- Recipe with fluids * ingredients = * { * {type = "fluid", name = "water", amount = 50}, * {type = "fluid", name = "crude-oil", amount = 100} * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#ingredients Online documentation} */ ingredients?: readonly IngredientPrototype[] /** * A table containing result names and amounts. Products also contain information such as fluid temperature, probability of results and whether some of the amount is ignored by productivity. * * Can be set to an empty table to create a recipe that produces nothing. Duplicate results, e.g. two entries with the same name, are allowed. * @example * results = * { * {type = "fluid", name= "heavy-oil", amount = 3}, * {type = "fluid", name= "light-oil", amount = 3}, * {type = "fluid", name= "petroleum-gas", amount = 4} * } * @example * results = * { * {type = "item", name = "iron-plate", amount = 9}, * {type = "item", name = "copper-plate", amount = 1} * } * @example * results = {{type = "fluid", name = "steam", amount = 1, temperature = 165}} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#results Online documentation} */ results?: readonly ProductPrototype[] /** * For recipes with one or more products: Subgroup, localised_name and icon default to the values of the singular/main product, but can be overwritten by the recipe. Setting the main_product to an empty string (`""`) forces the title in the recipe tooltip to use the recipe's name (not that of the product) and shows the products in the tooltip. * * If 1) there are multiple products and this property is nil, 2) this property is set to an empty string (`""`), or 3) there are no products, the recipe will use the localised_name, icon, and subgroup of the recipe. icon and subgroup become non-optional. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#main_product Online documentation} */ main_product?: string /** * **Default:** `0.5` * * The amount of time it takes to make this recipe. Must be `> 0.001`. Equals the number of seconds it takes to craft at crafting speed `1`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#energy_required Online documentation} */ energy_required?: double /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#emissions_multiplier Online documentation} */ emissions_multiplier?: double /** * **Default:** `3` * * Must be >= 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#maximum_productivity Online documentation} */ maximum_productivity?: double /** * **Default:** `30` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#requester_paste_multiplier Online documentation} */ requester_paste_multiplier?: uint32 /** * **Default:** `0` * * Used to determine how many extra items are put into an assembling machine before it's considered "full enough". See {@linkplain https://wiki.factorio.com/Inserters#Insertion_limits insertion limits}. * * If set to `0`, it instead uses the following formula: `1.166 / (energy_required / the assembler's crafting_speed)`, rounded up, and clamped to be between`2` and `100`. The numbers used in this formula can be changed by the {@link UtilityConstants} properties `dynamic_recipe_overload_factor`, `minimum_recipe_overload_multiplier`, and `maximum_recipe_overload_multiplier`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#overload_multiplier Online documentation} */ overload_multiplier?: uint32 /** * **Default:** `true` * * Whether the recipe is allowed to have the extra inserter overload bonus applied (4 * stack inserter stack size). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_inserter_overload Online documentation} */ allow_inserter_overload?: boolean /** * **Default:** `true` * * This can be `false` to disable the recipe at the start of the game, or `true` to leave it enabled. * * If a recipe is unlocked via technology, this should be set to `false`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#enabled Online documentation} */ enabled?: boolean /** * **Default:** `false` * * Hides the recipe from item/fluid production statistics. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#hide_from_stats Online documentation} */ hide_from_stats?: boolean /** * **Default:** `false` * * Hides the recipe from the player's crafting screen. The recipe will still show up for selection in machines. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#hide_from_player_crafting Online documentation} */ hide_from_player_crafting?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#hide_from_bonus_gui Online documentation} */ hide_from_bonus_gui?: boolean /** * **Default:** `true` * * Whether this recipe is allowed to be broken down for the recipe tooltip "Total raw" calculations. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_decomposition Online documentation} */ allow_decomposition?: boolean /** * **Default:** `true` * * Whether the recipe can be used as an intermediate recipe in hand-crafting. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_as_intermediate Online documentation} */ allow_as_intermediate?: boolean /** * **Default:** `true` * * Whether the recipe is allowed to use intermediate recipes when hand-crafting. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_intermediates Online documentation} */ allow_intermediates?: boolean /** * **Default:** `false` * * Whether the "Made in: " part of the tool-tip should always be present, and not only when the recipe can't be hand-crafted. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#always_show_made_in Online documentation} */ always_show_made_in?: boolean /** * **Default:** `true` * * Whether the recipe name should have the product amount in front of it. E.g. "2x Transport belt". * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#show_amount_in_title Online documentation} */ show_amount_in_title?: boolean /** * **Default:** `false` * * Whether the products are always shown in the recipe tooltip. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#always_show_products Online documentation} */ always_show_products?: boolean /** * **Default:** `true` * * Whether enabling this recipe unlocks its item products to show in selection lists (item filters, logistic requests, etc.). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#unlock_results Online documentation} */ unlock_results?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#preserve_products_in_machine_output Online documentation} */ preserve_products_in_machine_output?: boolean /** * **Default:** `false` * * When set to true, the recipe will always produce fresh (non-spoiled) item even when the ingredients are spoiled. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#result_is_always_fresh Online documentation} */ result_is_always_fresh?: boolean /** * **Default:** `false` * * When set to true, if the recipe successfully finishes crafting without spoiling, the result is produced fresh (non-spoiled). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#reset_freshness_on_craft Online documentation} */ reset_freshness_on_craft?: boolean /** * **Default:** ``{"item-limitation.consumption-effect"}`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_consumption_message Online documentation} */ allow_consumption_message?: LocalisedString /** * **Default:** ``{"item-limitation.speed-effect"}`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_speed_message Online documentation} */ allow_speed_message?: LocalisedString /** * **Default:** ``{"item-limitation.productivity-effect"}`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_productivity_message Online documentation} */ allow_productivity_message?: LocalisedString /** * **Default:** ``{"item-limitation.pollution-effect"}`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_pollution_message Online documentation} */ allow_pollution_message?: LocalisedString /** * **Default:** ``{"item-limitation.quality-effect"}`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_quality_message Online documentation} */ allow_quality_message?: LocalisedString /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#surface_conditions Online documentation} */ surface_conditions?: readonly SurfaceCondition[] /** * If left unset, this property will be determined automatically: If the recipe is not `hidden`, and no item, fluid, or virtual signal has the same icon as this recipe, this property will be set to `false`. It'll be `true` otherwise. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#hide_from_signal_gui Online documentation} */ hide_from_signal_gui?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_consumption Online documentation} */ allow_consumption?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_speed Online documentation} */ allow_speed?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_productivity Online documentation} */ allow_productivity?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_pollution Online documentation} */ allow_pollution?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allow_quality Online documentation} */ allow_quality?: boolean /** * **Default:** `All module categories are allowed` * * Sets the {@link ModuleCategory module categories} that are allowed to be used with this recipe. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#allowed_module_categories Online documentation} */ allowed_module_categories?: readonly ModuleCategoryID[] /** * Additional technologies to list under "Unlocked by" on a recipe's Factoriopedia page. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#alternative_unlock_methods Online documentation} */ alternative_unlock_methods?: readonly TechnologyID[] /** * **Default:** `true` * * Whether the recipe should be included in the recycling recipes automatically generated by the quality mod. * * This property is not read by the game engine itself, but the quality mod's recycling.lua file. This means it is discarded by the game engine after loading finishes. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#auto_recycle Online documentation} */ auto_recycle?: boolean /** * **Default:** `false` * * Hides the recipe from crafting menus and other recipe selection lists. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RecipePrototype.html#hidden Online documentation} */ hidden?: boolean } /** * Properties of the remote controller. * * _Prototype limited to **1** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RemoteControllerPrototype.html Online documentation} */ export interface RemoteControllerPrototype { readonly type: "remote-controller" /** * Name of the remote controller. Base game uses "default". * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RemoteControllerPrototype.html#name Online documentation} */ name: string /** * Must be >= 0.34375. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RemoteControllerPrototype.html#movement_speed Online documentation} */ movement_speed: double } /** * A {@linkplain https://wiki.factorio.com/Repair_pack repair pack}. Using the tool decreases durability to restore entity health. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RepairToolPrototype.html Online documentation} */ export interface RepairToolPrototype extends ToolPrototype { type: "repair-tool" /** * Entity health repaired per used {@link ToolPrototype#durability ToolPrototype::durability}. E.g. a repair tool with 5 durability and a repair speed of 2 will restore 10 health. * * This is then multiplied by the {@link EntityWithHealthPrototype#repair_speed_modifier EntityWithHealthPrototype::repair_speed_modifier} of the entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RepairToolPrototype.html#speed Online documentation} */ speed: float } /** * This prototype is used for receiving an achievement when the player completes a specific research. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResearchAchievementPrototype.html Online documentation} */ export interface ResearchAchievementPrototype extends AchievementPrototype { type: "research-achievement" /** * Mandatory if `research_all` is not defined. * * Researching this technology will trigger the achievement. * @example * technology = "oil-processing" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResearchAchievementPrototype.html#technology Online documentation} */ technology?: TechnologyID /** * **Default:** `false` * * Mandatory if `technology` is not defined. * * This will only trigger if the player has learned every research in the game. * @example * research_all = true * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResearchAchievementPrototype.html#research_all Online documentation} */ research_all?: boolean } export interface ResearchWithSciencePackAchievementPrototype extends AchievementPrototype { type: "research-with-science-pack-achievement" science_pack: ItemID /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResearchWithSciencePackAchievementPrototype.html#amount Online documentation} */ amount?: uint32 } /** * A resource category. The built-in categories can be found {@linkplain https://wiki.factorio.com/Data.raw#resource-category here}. See {@link ResourceEntityPrototype#category ResourceEntityPrototype::category}. * * _Prototype limited to **255** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceCategory.html Online documentation} */ export interface ResourceCategory extends Prototype { type: "resource-category" } /** * A mineable/gatherable entity. * @example * { * type = "resource", * name = "crude-oil", * icon = "__base__/graphics/icons/crude-oil.png", * icon_size = 32, * flags = {"placeable-neutral"}, * category = "basic-fluid", * order="a-b-a", * infinite = true, * highlight = true, * minimum = 60000, * normal = 300000, * infinite_depletion_amount = 10, * resource_patch_search_radius = 12, * tree_removal_probability = 0.7, * tree_removal_max_distance = 32 * 32, * minable = * { * mining_time = 1, * results = * { * { * type = "fluid", * name = "crude-oil", * amount_min = 10, * amount_max = 10, * probability = 1 * } * } * }, * collision_box = {{ -1.4, -1.4}, {1.4, 1.4}}, * selection_box = {{ -0.5, -0.5}, {0.5, 0.5}}, * autoplace = resource_autoplace.resource_autoplace_settings{ * name = "crude-oil", * order = "c", -- Other resources are "b"; oil won't get placed if something else is already there. * base_density = 8.2, * base_spots_per_km2 = 1.8, * random_probability = 1/48, * random_spot_size_minimum = 1, * random_spot_size_maximum = 1, -- don't randomize spot size * additional_richness = 220000, -- this increases the total everywhere, so base_density needs to be decreased to compensate * has_starting_area_placement = false, * resource_index = resource_autoplace.resource_indexes["crude-oil"], * regular_rq_factor_multiplier = 1 * }, * stage_counts = {0}, * stages = * { * sheet = * { * filename = "__base__/graphics/entity/crude-oil/crude-oil.png", * priority = "extra-high", * width = 75, * height = 61, * frame_count = 4, * variation_count = 1 * } * }, * map_color = {r=0.78, g=0.2, b=0.77}, * map_grid = false * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html Online documentation} */ export interface ResourceEntityPrototype extends EntityPrototype { type: "resource" /** * Entity's graphics, using a graphic sheet, with variation and depletion. At least one stage must be defined. * * When using {@link AnimationVariations#sheet AnimationVariations::sheet}, `frame_count` is the amount of frames per row in the spritesheet. `variation_count` is the amount of rows in the spritesheet. Each row in the spritesheet is one stage of the animation. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#stages Online documentation} */ stages?: AnimationVariations /** * Number of stages the animation has. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#stage_counts Online documentation} */ stage_counts: readonly uint32[] /** * **Default:** `false` * * If the ore is infinitely minable, or if it will eventually run out of resource. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#infinite Online documentation} */ infinite?: boolean /** * **Default:** `false` * * If the resource should be highlighted when holding a mining drill that can mine it (holding a pumpjack highlights crude-oil in the base game). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#highlight Online documentation} */ highlight?: boolean /** * **Default:** `true` * * Whether there should be a slight offset to graphics of the resource. Used to make patches a little less uniform in appearance. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#randomize_visual_position Online documentation} */ randomize_visual_position?: boolean /** * **Default:** `true` * * Whether the resource should have a grid pattern on the map instead of a solid map color. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#map_grid Online documentation} */ map_grid?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#draw_stateless_visualisation_under_building Online documentation} */ draw_stateless_visualisation_under_building?: boolean /** * **Default:** `0` * * Must be not 0 when `infinite = true`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#minimum Online documentation} */ minimum?: uint32 /** * **Default:** `1` * * Must be not 0 when `infinite = true`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#normal Online documentation} */ normal?: uint32 /** * **Default:** `1` * * Every time an infinite-type resource is decreased by mining, its current resource amount is lowered by this number. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#infinite_depletion_amount Online documentation} */ infinite_depletion_amount?: uint32 /** * **Default:** `3` * * When hovering over this resource in the map view: How far to search for other resource patches of this type to display as one (summing amount, white outline). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#resource_patch_search_radius Online documentation} */ resource_patch_search_radius?: uint32 /** * **Default:** `"basic-solid"` * * The category for the resource. Available categories in vanilla can be found {@linkplain https://wiki.factorio.com/Data.raw#resource-category here}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#category Online documentation} */ category?: ResourceCategoryID /** * Sound played when the player walks over this resource. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#walking_sound Online documentation} */ walking_sound?: Sound /** * Sound played when a {@link CarPrototype} drives over this resource. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#driving_sound Online documentation} */ driving_sound?: InterruptibleSound /** * An effect that can be overlaid above the normal ore graphics. Used in the base game to make {@linkplain https://wiki.factorio.com/Uranium_ore uranium ore} glow. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#stages_effect Online documentation} */ stages_effect?: AnimationVariations /** * **Default:** `0` * * How long it takes `stages_effect` to go from `min_effect_alpha` to `max_effect_alpha`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#effect_animation_period Online documentation} */ effect_animation_period?: float /** * **Default:** `0` * * How much `effect_animation_period` can deviate from its original value. Used to make the stages effect alpha change look less uniform. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#effect_animation_period_deviation Online documentation} */ effect_animation_period_deviation?: float /** * **Default:** `1` * * How much the surface darkness should affect the alpha of `stages_effect`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#effect_darkness_multiplier Online documentation} */ effect_darkness_multiplier?: float /** * **Default:** `0` * * Minimal alpha value of `stages_effect`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#min_effect_alpha Online documentation} */ min_effect_alpha?: float /** * **Default:** `1` * * Maximal alpha value of `stages_effect`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#max_effect_alpha Online documentation} */ max_effect_alpha?: float /** * **Default:** `0` * * Must be greater than or equal to `0`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#tree_removal_probability Online documentation} */ tree_removal_probability?: double /** * **Default:** `1` * * Must be greater than or equal to `0`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#cliff_removal_probability Online documentation} */ cliff_removal_probability?: double /** * **Default:** `0` * * Must be positive when `tree_removal_probability` is set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#tree_removal_max_distance Online documentation} */ tree_removal_max_distance?: double /** * Defaults to the resources map color if left unset and map color is set, otherwise defaults to white if left unset. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ResourceEntityPrototype.html#mining_visualisation_tint Online documentation} */ mining_visualisation_tint?: Color } /** * Used by {@linkplain https://wiki.factorio.com/Personal_roboport personal roboport}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html Online documentation} */ export interface RoboportEquipmentPrototype extends EquipmentPrototype { type: "roboport-equipment" /** * The animation played at each charging point when a robot is charging there. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#recharging_animation Online documentation} */ recharging_animation?: Animation /** * Presumably states the height of the charging stations and thus an additive offset for the charging_offsets. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#spawn_and_station_height Online documentation} */ spawn_and_station_height: float /** * Presumably, the distance from the roboport at which robots will wait to charge. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#charge_approach_distance Online documentation} */ charge_approach_distance: float /** * Can't be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#construction_radius Online documentation} */ construction_radius: float /** * @example * charging_energy = "1000kW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#charging_energy Online documentation} */ charging_energy: Energy /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#spawn_and_station_shadow_height_offset Online documentation} */ spawn_and_station_shadow_height_offset?: float /** * **Default:** `0.87` * * When robot ascends or descends to this roboport, at which height is should switch between `"air-object"` and `"object"` {@link RenderLayer render layer}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#stationing_render_layer_swap_height Online documentation} */ stationing_render_layer_swap_height?: float /** * **Default:** `true` * * Unused, as roboport equipment does not have a logistic radius that could be drawn. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#draw_logistic_radius_visualization Online documentation} */ draw_logistic_radius_visualization?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#draw_construction_radius_visualization Online documentation} */ draw_construction_radius_visualization?: boolean /** * The light emitted when charging a robot. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#recharging_light Online documentation} */ recharging_light?: LightDefinition /** * **Default:** `0` * * How many charging points this roboport has. If this is 0, the length of the charging_offsets table is used to calculate the charging station count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#charging_station_count Online documentation} */ charging_station_count?: uint32 /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#charging_station_count_affected_by_quality Online documentation} */ charging_station_count_affected_by_quality?: boolean /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#charging_distance Online documentation} */ charging_distance?: float charging_station_shift?: Vector /** * **Default:** `1` * * Distance in tiles. This defines how far away a robot can be from the charging spot and still be charged, however the bot is still required to reach a charging spot in the first place. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#charging_threshold_distance Online documentation} */ charging_threshold_distance?: float /** * **Default:** `0.01` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#robot_vertical_acceleration Online documentation} */ robot_vertical_acceleration?: float /** * The offset from the center of the roboport at which robots will enter and exit. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#stationing_offset Online documentation} */ stationing_offset?: Vector /** * **Default:** `max uint` * * How many robots can exist in the network (cumulative). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#robot_limit Online documentation} */ robot_limit?: ItemCountType /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#robots_shrink_when_entering_and_exiting Online documentation} */ robots_shrink_when_entering_and_exiting?: boolean /** * The offsets from the center of the roboport at which robots will charge. Only used if `charging_station_count` is equal to 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#charging_offsets Online documentation} */ charging_offsets?: readonly Vector[] /** * **Default:** `0.2 * energy_source.buffer_capacity` * * Minimum amount of energy that needs to available inside the roboport's buffer so that robots can be spawned. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#spawn_minimum Online documentation} */ spawn_minimum?: Energy /** * Add this is if the roboport should be fueled directly instead of using power from the equipment grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#burner Online documentation} */ burner?: BurnerEnergySource /** * Mandatory if `burner` is defined. * * The size of the buffer of the burner energy source, so effectively the amount of power that the energy source can produce per tick. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportEquipmentPrototype.html#power Online documentation} */ power?: Energy } /** * A {@linkplain https://wiki.factorio.com/Roboport roboport}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html Online documentation} */ export interface RoboportPrototype extends EntityWithOwnerPrototype { type: "roboport" /** * The roboport's energy source. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#energy_source Online documentation} */ energy_source: ElectricEnergySource | VoidEnergySource /** * The amount of energy the roboport uses when idle. * @example * energy_usage = "50kW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#energy_usage Online documentation} */ energy_usage: Energy /** * Minimum charge that the roboport has to have after a blackout (0 charge/buffered energy) to begin working again. Additionally, freshly placed roboports will have their energy buffer filled with `0.25 × recharge_minimum` energy. * * Must be larger than or equal to `energy_usage` otherwise during low power the roboport will toggle on and off every tick. * @example * recharge_minimum = "40MJ" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#recharge_minimum Online documentation} */ recharge_minimum: Energy /** * The number of robot slots in the roboport. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#robot_slots_count Online documentation} */ robot_slots_count: ItemStackIndex /** * The number of repair pack slots in the roboport. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#material_slots_count Online documentation} */ material_slots_count: ItemStackIndex base?: Sprite base_patch?: Sprite frozen_patch?: Sprite /** * The animation played when the roboport is idle. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#base_animation Online documentation} */ base_animation?: Animation door_animation_up?: Animation door_animation_down?: Animation request_to_open_door_timeout: uint32 /** * In chunks. The radius of how many chunks this roboport charts around itself. Defaults to the max of logistic range or construction range rounded up to chunks. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#radar_range Online documentation} */ radar_range?: uint32 radar_visualisation_color?: Color /** * The animation played at each charging point when a robot is charging there. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#recharging_animation Online documentation} */ recharging_animation?: Animation /** * Presumably states the height of the charging stations and thus an additive offset for the charging_offsets. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#spawn_and_station_height Online documentation} */ spawn_and_station_height: float /** * The distance (in tiles) from the roboport at which robots will wait to charge. Notably, if the robot is already in range, then it will simply wait at its current position. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#charge_approach_distance Online documentation} */ charge_approach_distance: float /** * Can't be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#logistics_radius Online documentation} */ logistics_radius: float /** * Can't be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#construction_radius Online documentation} */ construction_radius: float /** * The maximum power provided to each charging station. * @example * charging_energy = "1000kW" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#charging_energy Online documentation} */ charging_energy: Energy open_door_trigger_effect?: TriggerEffect close_door_trigger_effect?: TriggerEffect default_available_logistic_output_signal?: SignalIDConnector default_total_logistic_output_signal?: SignalIDConnector default_available_construction_output_signal?: SignalIDConnector default_total_construction_output_signal?: SignalIDConnector default_roboport_count_output_signal?: SignalIDConnector /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition /** * **Default:** `true` * * Whether to render the {@link UtilitySprites#recharge_icon no charge} icon if the roboport has less energy than `recharge_minimum` in its internal buffer and is recovering from a blackout. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#render_recharge_icon Online documentation} */ render_recharge_icon?: boolean max_logistic_slots?: LogisticFilterIndex /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#spawn_and_station_shadow_height_offset Online documentation} */ spawn_and_station_shadow_height_offset?: float /** * **Default:** `0.87` * * When robot ascends or descends to this roboport, at which height is should switch between `"air-object"` and `"object"` {@link RenderLayer render layer}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#stationing_render_layer_swap_height Online documentation} */ stationing_render_layer_swap_height?: float /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#draw_logistic_radius_visualization Online documentation} */ draw_logistic_radius_visualization?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#draw_construction_radius_visualization Online documentation} */ draw_construction_radius_visualization?: boolean /** * The light emitted when charging a robot. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#recharging_light Online documentation} */ recharging_light?: LightDefinition /** * **Default:** `0` * * How many charging points this roboport has. If this is 0, the length of the charging_offsets table is used to calculate the charging station count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#charging_station_count Online documentation} */ charging_station_count?: uint32 /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#charging_station_count_affected_by_quality Online documentation} */ charging_station_count_affected_by_quality?: boolean /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#charging_distance Online documentation} */ charging_distance?: float charging_station_shift?: Vector /** * **Default:** `1` * * Unused. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#charging_threshold_distance Online documentation} */ charging_threshold_distance?: float /** * **Default:** `0.01` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#robot_vertical_acceleration Online documentation} */ robot_vertical_acceleration?: float /** * The offset from the center of the roboport at which robots will enter and exit. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#stationing_offset Online documentation} */ stationing_offset?: Vector /** * **Default:** `max uint` * * Unused. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#robot_limit Online documentation} */ robot_limit?: ItemCountType /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#robots_shrink_when_entering_and_exiting Online documentation} */ robots_shrink_when_entering_and_exiting?: boolean /** * The offsets from the center of the roboport at which robots will charge. Only used if `charging_station_count` is equal to 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#charging_offsets Online documentation} */ charging_offsets?: readonly Vector[] /** * **Default:** `value of `logistics_radius`` * * Must be >= `logistics_radius`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RoboportPrototype.html#logistics_connection_distance Online documentation} */ logistics_connection_distance?: float } /** * The common properties of logistic and construction robots represented by an abstract prototype. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RobotWithLogisticInterfacePrototype.html Online documentation} */ export interface RobotWithLogisticInterfacePrototype extends FlyingRobotPrototype { type: "construction-robot" | "logistic-robot" /** * The robot's cargo carrying capacity. Can be increased by {@link WorkerRobotStorageModifier worker robot cargo size research}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RobotWithLogisticInterfacePrototype.html#max_payload_size Online documentation} */ max_payload_size: ItemCountType /** * **Default:** `max ItemCountType` * * The robot's maximum possible cargo carrying capacity, including bonuses. Useful to limit the impact of {@link WorkerRobotStorageModifier worker robot cargo size research}. * * Must be >= max_payload_size. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RobotWithLogisticInterfacePrototype.html#max_payload_size_after_bonus Online documentation} */ max_payload_size_after_bonus?: ItemCountType /** * Only the first frame of the animation is drawn. This means that the graphics for the idle state cannot be animated. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RobotWithLogisticInterfacePrototype.html#idle Online documentation} */ idle?: RotatedAnimation /** * Only the first frame of the animation is drawn. This means that the graphics for the in_motion state cannot be animated. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RobotWithLogisticInterfacePrototype.html#in_motion Online documentation} */ in_motion?: RotatedAnimation /** * Only the first frame of the animation is drawn. This means that the graphics for the idle state cannot be animated. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RobotWithLogisticInterfacePrototype.html#shadow_idle Online documentation} */ shadow_idle?: RotatedAnimation /** * Only the first frame of the animation is drawn. This means that the graphics for the in_motion state cannot be animated. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RobotWithLogisticInterfacePrototype.html#shadow_in_motion Online documentation} */ shadow_in_motion?: RotatedAnimation /** * Applied when the robot expires (runs out of energy and {@link FlyingRobotPrototype#speed_multiplier_when_out_of_energy FlyingRobotPrototype::speed_multiplier_when_out_of_energy} is 0). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RobotWithLogisticInterfacePrototype.html#destroy_action Online documentation} */ destroy_action?: Trigger /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RobotWithLogisticInterfacePrototype.html#draw_cargo Online documentation} */ draw_cargo?: boolean charging_sound?: InterruptibleSound } /** * A {@linkplain https://wiki.factorio.com/Rocket_silo rocket silo}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html Online documentation} */ export interface RocketSiloPrototype extends AssemblingMachinePrototype { type: "rocket-silo" /** * Additional energy used during the following parts of the {@link defines.rocket_silo_status launch sequence}: doors_opening, rocket_rising, arms_advance, engine_starting, arms_retract, doors_closing. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#active_energy_usage Online documentation} */ active_energy_usage: Energy /** * May be 0. * * Additional energy used during the night, that is when {@link import("factorio:runtime").LuaSurface#darkness LuaSurface::darkness} is larger than 0.3. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#lamp_energy_usage Online documentation} */ lamp_energy_usage: Energy /** * Name of a {@link RocketSiloRocketPrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#rocket_entity Online documentation} */ rocket_entity: EntityID arm_02_right_animation?: Animation arm_01_back_animation?: Animation arm_03_front_animation?: Animation shadow_sprite?: Sprite hole_sprite?: Sprite hole_light_sprite?: Sprite rocket_shadow_overlay_sprite?: Sprite rocket_glow_overlay_sprite?: Sprite door_back_sprite?: Sprite door_front_sprite?: Sprite base_day_sprite?: Sprite base_front_sprite?: Sprite /** * Drawn from the start of the {@link defines.rocket_silo_status.lights_blinking_open lights_blinking_open} state until the end of the {@link defines.rocket_silo_status.lights_blinking_close lights_blinking_close} state. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#red_lights_back_sprites Online documentation} */ red_lights_back_sprites?: Sprite /** * Drawn from the start of the {@link defines.rocket_silo_status.lights_blinking_open lights_blinking_open} state until the end of the {@link defines.rocket_silo_status.lights_blinking_close lights_blinking_close} state. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#red_lights_front_sprites Online documentation} */ red_lights_front_sprites?: Sprite base_frozen?: Sprite base_front_frozen?: Sprite hole_frozen?: Sprite door_back_frozen?: Sprite door_front_frozen?: Sprite 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 /** * How many times the `red_lights_back_sprites` and `red_lights_front_sprites` should blink during {@link defines.rocket_silo_status.lights_blinking_open lights_blinking_open} and {@link defines.rocket_silo_status.lights_blinking_close lights_blinking_close}. * * Does not affect the duration of the launch sequence. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#times_to_blink Online documentation} */ times_to_blink: uint8 /** * The inverse of the duration in ticks of {@link defines.rocket_silo_status.lights_blinking_open lights_blinking_open} and {@link defines.rocket_silo_status.lights_blinking_close lights_blinking_close}. * @example * light_blinking_speed = 1 / (2 * 60) -- lights blinking takes 120 ticks * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#light_blinking_speed Online documentation} */ light_blinking_speed: double /** * The inverse of the duration in ticks of {@link defines.rocket_silo_status.doors_opening doors_opening} and {@link defines.rocket_silo_status.doors_closing closing}. * @example * door_opening_speed = 1 / (4 * 60) -- doors opening and closing takes 4 seconds * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#door_opening_speed Online documentation} */ door_opening_speed: double /** * The number of crafts that must complete to produce a rocket. This includes bonus crafts from productivity. Recipe products are ignored. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#rocket_parts_required Online documentation} */ rocket_parts_required: uint32 rocket_quick_relaunch_start_offset: double satellite_animation?: Animation satellite_shadow_animation?: Animation /** * Drawn instead of `base_day_sprite` during the night, that is when {@link import("factorio:runtime").LuaSurface#darkness LuaSurface::darkness} is larger than 0.3. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#base_night_sprite Online documentation} */ base_night_sprite?: Sprite base_light?: LightDefinition base_engine_light?: LightDefinition /** * **Default:** `30` * * The time to wait in the {@link defines.rocket_silo_status.doors_opened doors_opened} state before switching to {@link defines.rocket_silo_status.rocket_rising rocket_rising}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#rocket_rising_delay Online documentation} */ rocket_rising_delay?: uint8 /** * **Default:** `120` * * The time to wait in the {@link defines.rocket_silo_status.launch_started launch_started} state before switching to {@link defines.rocket_silo_status.engine_starting engine_starting}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#launch_wait_time Online documentation} */ launch_wait_time?: uint8 /** * **Default:** `true` * * Whether the "no network" icon should be rendered on this entity if the entity is not within a logistics network. * * ![](https://lua-api.factorio.com/2.0.75/static/images/too-far-from-roboport-icon.png) * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#render_not_in_network_icon Online documentation} */ render_not_in_network_icon?: boolean /** * **Default:** `Value of `rocket_parts_required`` * * Must be at least `rocket_parts_required`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#rocket_parts_storage_cap Online documentation} */ rocket_parts_storage_cap?: uint32 /** * Applied when switching into the {@link defines.rocket_silo_status.lights_blinking_open lights_blinking_open} state. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#alarm_trigger Online documentation} */ alarm_trigger?: TriggerEffect /** * Applied when switching into the {@link defines.rocket_silo_status.arms_advance arms_advance} state. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#clamps_on_trigger Online documentation} */ clamps_on_trigger?: TriggerEffect /** * Applied when switching into the {@link defines.rocket_silo_status.arms_retract arms_retract} state. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#clamps_off_trigger Online documentation} */ clamps_off_trigger?: TriggerEffect /** * Applied when switching into the {@link defines.rocket_silo_status.doors_opening doors_opening} and {@link defines.rocket_silo_status.doors_closing doors_closing} states. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#doors_trigger Online documentation} */ doors_trigger?: TriggerEffect /** * Applied when switching into the {@link defines.rocket_silo_status.rocket_rising rocket_rising} state. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#raise_rocket_trigger Online documentation} */ raise_rocket_trigger?: TriggerEffect /** * Played when switching into the {@link defines.rocket_silo_status.lights_blinking_open lights_blinking_open} state. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#alarm_sound Online documentation} */ alarm_sound?: Sound /** * Played when switching from {@link defines.rocket_silo_status.rocket_flying rocket_flying} into the {@link defines.rocket_silo_status.doors_opened doors_opened} state when a quick follow-up rocket is ready. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#quick_alarm_sound Online documentation} */ quick_alarm_sound?: Sound /** * Played when switching into the {@link defines.rocket_silo_status.arms_advance arms_advance} state. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#clamps_on_sound Online documentation} */ clamps_on_sound?: Sound /** * Played when switching into the {@link defines.rocket_silo_status.arms_retract arms_retract} state. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#clamps_off_sound Online documentation} */ clamps_off_sound?: Sound /** * Played when switching into the {@link defines.rocket_silo_status.doors_opening doors_opening} and {@link defines.rocket_silo_status.doors_closing doors_closing} states. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#doors_sound Online documentation} */ doors_sound?: Sound /** * Played when switching into the {@link defines.rocket_silo_status.rocket_rising rocket_rising} state. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#raise_rocket_sound Online documentation} */ raise_rocket_sound?: Sound /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#to_be_inserted_to_rocket_inventory_size Online documentation} */ to_be_inserted_to_rocket_inventory_size?: ItemStackIndex /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#logistic_trash_inventory_size Online documentation} */ logistic_trash_inventory_size?: ItemStackIndex /** * Must have exactly one entry in {@link CargoStationParameters#hatch_definitions CargoStationParameters::hatch_definitions}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#cargo_station_parameters Online documentation} */ cargo_station_parameters: CargoStationParameters /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * **Default:** `false` * * Enables 'Space Age' functionality for this rocket silo, allowing it to supply space platforms. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#launch_to_space_platforms Online documentation} */ launch_to_space_platforms?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloPrototype.html#can_launch_without_landing_pads Online documentation} */ can_launch_without_landing_pads?: boolean } /** * The rocket inside the rocket silo. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloRocketPrototype.html Online documentation} */ export interface RocketSiloRocketPrototype extends EntityPrototype { type: "rocket-silo-rocket" shadow_slave_entity?: EntityID /** * Name of a {@link CargoPodPrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloRocketPrototype.html#cargo_pod_entity Online documentation} */ cargo_pod_entity: EntityID dying_explosion?: EntityID glow_light?: LightDefinition rocket_sprite?: Sprite rocket_shadow_sprite?: Sprite rocket_glare_overlay_sprite?: Sprite rocket_smoke_bottom1_animation?: Animation rocket_smoke_bottom2_animation?: Animation rocket_smoke_top1_animation?: Animation rocket_smoke_top2_animation?: Animation rocket_smoke_top3_animation?: Animation rocket_flame_animation?: Animation rocket_flame_left_animation?: Animation rocket_flame_right_animation?: Animation rocket_initial_offset?: Vector rocket_rise_offset: Vector cargo_attachment_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 /** * **Default:** `-3` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloRocketPrototype.html#rocket_above_wires_slice_offset_from_center Online documentation} */ rocket_above_wires_slice_offset_from_center?: float /** * **Default:** `-6` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloRocketPrototype.html#rocket_air_object_slice_offset_from_center Online documentation} */ rocket_air_object_slice_offset_from_center?: float /** * **Default:** ``{rect={{-30, -30}, {30, rocket_above_wires_slice_offset_from_center}}, falloff=1}`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloRocketPrototype.html#rocket_fog_mask Online documentation} */ rocket_fog_mask?: FogMaskShapeDefinition rising_speed: double engine_starting_speed: double flying_speed: double flying_acceleration: double flying_trigger?: TriggerEffect flying_sound?: Sound inventory_size: ItemStackIndex } /** * The shadow of the rocket inside the rocket silo. * @example * { * type = "rocket-silo-rocket-shadow", * name = "rocket-silo-rocket-shadow", * flags = {"not-on-map"}, * hidden = true, * collision_mask = {layers={}, not_colliding_with_itself=true}, * collision_box = {{0, 0}, {10, 3.5}}, * selection_box = {{0, 0}, {0, 0}} * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RocketSiloRocketShadowPrototype.html Online documentation} */ export interface RocketSiloRocketShadowPrototype extends EntityPrototype { type: "rocket-silo-rocket-shadow" } /** * The abstract base of all rolling stock. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html Online documentation} */ export interface RollingStockPrototype extends VehiclePrototype { type: "artillery-wagon" | "cargo-wagon" | "fluid-wagon" | "infinity-cargo-wagon" | "locomotive" /** * Maximum speed of the rolling stock in tiles/tick. * * In-game, the max speed of a train is `min(all_rolling_stock_max_speeds) × average(all_fuel_modifiers_in_all_locomotives)`. This calculated train speed is then silently capped to 7386.3km/h. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#max_speed Online documentation} */ max_speed: double air_resistance: double /** * The length between this rolling stocks front and rear joints. Joints are the point where connection_distance is measured from when rolling stock are connected to one another. Wheels sprite are placed based on the joint position. * * Maximum joint distance is 15. * * Note: There needs to be border at least 0.2 between the {@link EntityPrototype#collision_box bounding box} edge and joint. This means that the collision_box must be at least `{{-0,-0.2},{0,0.2}}`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#joint_distance Online documentation} */ joint_distance: double /** * The distance between the joint of this rolling stock and its connected rolling stocks joint. * * Maximum connection distance is 15. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#connection_distance Online documentation} */ connection_distance: double pictures?: RollingStockRotatedSlopedGraphics wheels?: RollingStockRotatedSlopedGraphics vertical_selection_shift: double /** * Usually a sound to play when the rolling stock drives over a tie. The rolling stock is considered to be driving over a tie every `tie_distance` tiles. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#drive_over_tie_trigger Online documentation} */ drive_over_tie_trigger?: TriggerEffect /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#drive_over_tie_trigger_minimal_speed Online documentation} */ drive_over_tie_trigger_minimal_speed?: double /** * **Default:** `10` * * In tiles. Used to determine how often `drive_over_tie_trigger` is triggered. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#tie_distance Online documentation} */ tie_distance?: double back_light?: LightDefinition stand_by_light?: LightDefinition horizontal_doors?: Animation vertical_doors?: Animation color?: Color /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#allow_manual_color Online documentation} */ allow_manual_color?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#allow_robot_dispatch_in_automatic_mode Online documentation} */ allow_robot_dispatch_in_automatic_mode?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#default_copy_color_from_train_stop Online documentation} */ default_copy_color_from_train_stop?: boolean /** * Defaults to the mask from {@link UtilityConstants#default_collision_masks UtilityConstants::default_collision_masks} when indexed by `type .. "/transition"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#transition_collision_mask Online documentation} */ transition_collision_mask?: CollisionMaskConnector /** * Defaults to the mask from {@link UtilityConstants#default_collision_masks UtilityConstants::default_collision_masks} when indexed by `type .. "/elevated"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#elevated_collision_mask Online documentation} */ elevated_collision_mask?: CollisionMaskConnector /** * **Default:** `56` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#elevated_selection_priority Online documentation} */ elevated_selection_priority?: uint8 elevated_rail_sound?: MainSound drive_over_elevated_tie_trigger?: TriggerEffect /** * Cannot use `fade_ticks`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#door_opening_sound Online documentation} */ door_opening_sound?: InterruptibleSound /** * Cannot use `fade_ticks`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/RollingStockPrototype.html#door_closing_sound Online documentation} */ door_closing_sound?: InterruptibleSound } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * Entity representing an individual segment in a {@link SegmentedUnitPrototype} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentPrototype.html Online documentation} */ export interface SegmentPrototype extends EntityWithOwnerPrototype { type: "segment" | "segmented-unit" /** * The sound to play when the entity dies. * * If not specified, {@link UtilitySounds#segment_dying_sound UtilitySounds::segment_dying_sound} is used. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentPrototype.html#dying_sound Online documentation} */ dying_sound?: Sound /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentPrototype.html#dying_sound_volume_modifier Online documentation} */ dying_sound_volume_modifier?: float /** * The animation to use of the entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentPrototype.html#animation Online documentation} */ animation: RotatedAnimation /** * **Default:** `"object"` * * The layer to render the entity in. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentPrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * **Default:** `0` * * The number of segments ahead of this one that should always be rendered atop this one, giving the illusion that at all orientations, those preceding segments overlap this current segment. * * Must be 0 or greater, and the sum of `forward_overlap` and `backward_overlap` must be less than or equal to 4. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentPrototype.html#forward_overlap Online documentation} */ forward_overlap?: uint8 /** * **Default:** `0` * * The number of segments behind this one that should always be rendered atop this one, giving the illusion that at all orientations, those following segments overlap this current segment. * * Must be 0 or greater, and the sum of `forward_overlap` and `backward_overlap` must be less than or equal to 4. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentPrototype.html#backward_overlap Online documentation} */ backward_overlap?: uint8 /** * **Default:** `0` * * The number of tiles of spacing to add in front of this segment. Can be negative. Scales with the segment scale when used in a {@link SegmentEngineSpecification}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentPrototype.html#forward_padding Online documentation} */ forward_padding?: double /** * **Default:** `0` * * The number of tiles of spacing to add behind this segment. Can be negative. Scales with the segment scale when used in a {@link SegmentEngineSpecification}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentPrototype.html#backward_padding Online documentation} */ backward_padding?: double /** * The effects to trigger every tick. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentPrototype.html#update_effects Online documentation} */ update_effects?: readonly TriggerEffectWithCooldown[] /** * The effects to trigger every tick while enraged, in addition to `update_effects`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentPrototype.html#update_effects_while_enraged Online documentation} */ update_effects_while_enraged?: readonly TriggerEffectWithCooldown[] } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * Entity composed of multiple segment entities that trail behind the head. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html Online documentation} */ export interface SegmentedUnitPrototype extends SegmentPrototype { type: "segmented-unit" /** * Vision distance, affects scanning radius for enemies to attack. Must be non-negative. Max 100. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#vision_distance Online documentation} */ vision_distance: double /** * Attack parameters for when a segmented unit is attacking something. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#attack_parameters Online documentation} */ attack_parameters?: AttackParameters /** * Attack parameters for when a segmented unit is attacking something in retaliation because the target first attacked it. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#revenge_attack_parameters Online documentation} */ revenge_attack_parameters?: AttackParameters /** * The territory radius in chunks. The chunk in which the entity spawned is included. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#territory_radius Online documentation} */ territory_radius: uint32 /** * The number of ticks to remain enraged after last taking damage. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#enraged_duration Online documentation} */ enraged_duration: MapTick /** * The movement speed while patrolling, in tiles per tick. Cannot be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#patrolling_speed Online documentation} */ patrolling_speed: double /** * The movement speed while investigating, in tiles per tick. Cannot be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#investigating_speed Online documentation} */ investigating_speed: double /** * The movement speed while attacking, in tiles per tick. Cannot be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#attacking_speed Online documentation} */ attacking_speed: double /** * The movement speed while enraged, in tiles per tick. Cannot be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#enraged_speed Online documentation} */ enraged_speed: double /** * The acceleration rate when moving from one state to another. Cannot be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#acceleration_rate Online documentation} */ acceleration_rate: double /** * Turn radius, in tiles. Cannot be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#turn_radius Online documentation} */ turn_radius: double /** * **Default:** `Value of `turn_radius`` * * Cannot be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#patrolling_turn_radius Online documentation} */ patrolling_turn_radius?: double /** * **Default:** `1` * * Attempts to smooth out tight turns by limiting how quickly the unit can change turning directions. 0 means no turn smoothing, 1 means no turning whatsoever. Must be between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#turn_smoothing Online documentation} */ turn_smoothing?: double /** * **Default:** `120` * * The number of ticks between territory scans. Greater values means longer time between scans, which means a slower reaction time. Cannot be `0`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#ticks_per_scan Online documentation} */ ticks_per_scan?: uint32 /** * Specification of the segment engine, which should contain a list of the segments that compose the entity's body. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#segment_engine Online documentation} */ segment_engine: SegmentEngineSpecification roar?: Sound /** * **Default:** `0.00277777785` * * The default is 1.0f / (6.0f * 60.0f), average pause between roars is 6 seconds. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#roar_probability Online documentation} */ roar_probability?: float /** * Sound which plays when health ratio drops below any of `hurt_thresholds`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#hurt_roar Online documentation} */ hurt_roar?: Sound /** * Only loaded, and mandatory if `hurt_roar` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SegmentedUnitPrototype.html#hurt_thresholds Online documentation} */ hurt_thresholds?: readonly float[] } /** * Used in the base game as a base for the blueprint item and the deconstruction item. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SelectionToolPrototype.html Online documentation} */ export interface SelectionToolPrototype extends ItemWithLabelPrototype { type: | "blueprint" | "copy-paste-tool" | "deconstruction-item" | "selection-tool" | "spidertron-remote" | "upgrade-item" select: SelectionModeData alt_select: SelectionModeData super_forced_select?: SelectionModeData reverse_select?: SelectionModeData /** * Settings for how the selection tool alt-reverse-selects things in-game (using SHIFT + Right mouse button). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SelectionToolPrototype.html#alt_reverse_select Online documentation} */ alt_reverse_select?: SelectionModeData /** * **Default:** `false` * * If tiles should be included in the selection regardless of entities also being in the selection. This is a visual only setting. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SelectionToolPrototype.html#always_include_tiles Online documentation} */ always_include_tiles?: boolean /** * **Default:** `"selection-tool-cursor"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SelectionToolPrototype.html#mouse_cursor Online documentation} */ mouse_cursor?: MouseCursorID /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SelectionToolPrototype.html#skip_fog_of_war Online documentation} */ skip_fog_of_war?: boolean } export interface SelectorCombinatorPrototype extends CombinatorPrototype { type: "selector-combinator" max_symbol_sprites?: Sprite4Way min_symbol_sprites?: Sprite4Way count_symbol_sprites?: Sprite4Way random_symbol_sprites?: Sprite4Way stack_size_sprites?: Sprite4Way rocket_capacity_sprites?: Sprite4Way quality_symbol_sprites?: Sprite4Way } /** * This prototype is used for receiving an achievement when the player shoots certain ammo. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShootAchievementPrototype.html Online documentation} */ export interface ShootAchievementPrototype extends AchievementPrototype { type: "shoot-achievement" /** * This will trigger the achievement, if this ammo is shot. * @example * ammo_type = "atomic-bomb" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShootAchievementPrototype.html#ammo_type Online documentation} */ ammo_type?: ItemID /** * **Default:** `1` * * How much of the ammo needs to be shot. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShootAchievementPrototype.html#amount Online documentation} */ amount?: uint32 } /** * Definition for a shortcut button in the {@linkplain https://wiki.factorio.com/Shortcut_bar shortcut bar}. * * This is **not** a custom keybinding (keyboard shortcut), for that see {@link CustomInputPrototype}. * @example * { * type = "shortcut", * name = "give-deconstruction-planner", * order = "b[blueprints]-i[deconstruction-planner]", * action = "spawn-item", * localised_name = {"shortcut.make-deconstruction-planner"}, * associated_control_input = "give-deconstruction-planner", * technology_to_unlock = "construction-robotics", * item_to_spawn = "deconstruction-planner", * style = "red", * icon = "__base__/graphics/icons/shortcut-toolbar/mip/new-deconstruction-planner-x56.png", * icon_size = 56, * small_icon = "__base__/graphics/icons/shortcut-toolbar/mip/new-deconstruction-planner-x24.png", * small_icon_size = 24 * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html Online documentation} */ export interface ShortcutPrototype extends Prototype { type: "shortcut" /** * If this is `"lua"`, {@link import("factorio:runtime").on_lua_shortcut on_lua_shortcut} is raised when the shortcut is clicked. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#action Online documentation} */ action: | "toggle-alt-mode" | "undo" | "redo" | "paste" | "import-string" | "toggle-personal-roboport" | "toggle-personal-logistic-requests" | "toggle-equipment-movement-bonus" | "spawn-item" | "lua" /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * The base game uses 32px icons for shortcuts. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#small_icons Online documentation} */ small_icons?: readonly IconData[] /** * Path to the icon file. Used in the shortcut selection popup. * * Only loaded, and mandatory if `small_icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#small_icon Online documentation} */ small_icon?: FileName /** * **Default:** `64` * * The size of the small icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * The base game uses 24px small icons for shortcuts. * * Only loaded if `small_icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#small_icon_size Online documentation} */ small_icon_size?: SpriteSizeType /** * The item to create when clicking on a shortcut with the action set to `"spawn-item"`. The item must have the {@link ItemPrototypeFlags#spawnable spawnable} flag set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#item_to_spawn Online documentation} */ item_to_spawn?: ItemID /** * The technology that must be researched before this shortcut can be used. Once a shortcut is unlocked in one save file, it is unlocked for all future save files. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#technology_to_unlock Online documentation} */ technology_to_unlock?: TechnologyID /** * **Default:** `false` * * If `true`, the shortcut will not be available until its `technology_to_unlock` is researched, even if it was already researched in a different game. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#unavailable_until_unlocked Online documentation} */ unavailable_until_unlocked?: boolean /** * **Default:** `false` * * Must be enabled for the Factorio API to be able to set the toggled state on the shortcut button, see {@link import("factorio:runtime").LuaPlayer#set_shortcut_toggled LuaPlayer::set_shortcut_toggled}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#toggleable Online documentation} */ toggleable?: boolean /** * **Default:** `""` * * Name of a custom input or vanilla control. This is **only** used to show the keybind in the tooltip of the shortcut. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#associated_control_input Online documentation} */ associated_control_input?: string /** * **Default:** `"default"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#style Online documentation} */ style?: "default" | "blue" | "red" | "green" /** * **Default:** `""` * * Used to order the shortcuts in the {@linkplain https://wiki.factorio.com/Quick_panel quick panel}, which replaces the shortcut bar when using a controller (game pad). It {@linkplain https://forums.factorio.com/106661 is recommended} to order modded shortcuts after the vanilla shortcuts. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ShortcutPrototype.html#order Online documentation} */ order?: Order } /** * An extremely basic entity with no special functionality. Used for minable rocks. Cannot be rotated. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityPrototype.html Online documentation} */ export interface SimpleEntityPrototype extends EntityWithHealthPrototype { type: "simple-entity" /** * **Default:** `false` * * Whether this entity should be treated as a rock for the purpose of deconstruction and for {@link CarPrototype#immune_to_rock_impacts CarPrototype::immune_to_rock_impacts}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityPrototype.html#count_as_rock_for_filtered_deconstruction Online documentation} */ count_as_rock_for_filtered_deconstruction?: boolean /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityPrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * **Default:** `0` * * Used to determine render order for entities with the same `render_layer` in the same position. Entities with a higher `secondary_draw_order` are drawn on top. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityPrototype.html#secondary_draw_order Online documentation} */ secondary_draw_order?: int8 /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityPrototype.html#random_animation_offset Online documentation} */ random_animation_offset?: boolean /** * **Default:** `true` * * Whether a random graphics variation is chosen when placing the entity/creating it via script/creating it via map generation. If this is `false`, the entity will use the first variation instead of a random one. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityPrototype.html#random_variation_on_create Online documentation} */ random_variation_on_create?: boolean /** * Takes priority over `picture` and `animations`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityPrototype.html#pictures Online documentation} */ pictures?: SpriteVariations /** * Takes priority over `animations`. Only the `north` sprite is used because this entity cannot be rotated. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityPrototype.html#picture Online documentation} */ picture?: Sprite4Way animations?: AnimationVariations /** * **Default:** `"lower-object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityPrototype.html#lower_render_layer Online documentation} */ lower_render_layer?: RenderLayer lower_pictures?: SpriteVariations /** * Loaded and drawn with all `pictures`, `picture` and `animations`. If graphics variation is larger than number of `lower_pictures` variations this layer is not drawn. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityPrototype.html#stateless_visualisation_variations Online documentation} */ stateless_visualisation_variations?: readonly (StatelessVisualisation | readonly StatelessVisualisation[])[] } /** * By default, this entity will be a priority target for units/turrets, who will choose to attack it even if it does not block their path. Setting {@link EntityWithOwnerPrototype#is_military_target EntityWithOwnerPrototype::is_military_target} to `false` will turn this off, which then makes this type equivalent to {@link SimpleEntityWithOwnerPrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithForcePrototype.html Online documentation} */ export interface SimpleEntityWithForcePrototype extends SimpleEntityWithOwnerPrototype { type: "simple-entity-with-force" /** * **Default:** `true` * * Whether this prototype should be a high priority target for enemy forces. See {@linkplain https://wiki.factorio.com/Military_units_and_structures Military units and structures}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithForcePrototype.html#is_military_target Online documentation} */ is_military_target?: boolean } /** * Has a force, but unlike {@link SimpleEntityWithForcePrototype} it is only attacked if the biters get stuck on it (or if {@link EntityWithOwnerPrototype#is_military_target EntityWithOwnerPrototype::is_military_target} set to true to make the two entity types equivalent). * * Can be rotated in 4 directions. `picture` can be used to specify different graphics per direction. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithOwnerPrototype.html Online documentation} */ export interface SimpleEntityWithOwnerPrototype extends EntityWithOwnerPrototype { type: "simple-entity-with-force" | "simple-entity-with-owner" /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithOwnerPrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * **Default:** `0` * * Used to determine render order for entities with the same `render_layer` in the same position. Entities with a higher `secondary_draw_order` are drawn on top. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithOwnerPrototype.html#secondary_draw_order Online documentation} */ secondary_draw_order?: int8 /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithOwnerPrototype.html#random_animation_offset Online documentation} */ random_animation_offset?: boolean /** * **Default:** `true` * * Whether a random graphics variation is chosen when placing the entity/creating it via script/creating it via map generation. If this is false, the entity will use the first variation instead of a random one. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithOwnerPrototype.html#random_variation_on_create Online documentation} */ random_variation_on_create?: boolean /** * Takes priority over `picture` and `animations`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithOwnerPrototype.html#pictures Online documentation} */ pictures?: SpriteVariations /** * Takes priority over `animations`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithOwnerPrototype.html#picture Online documentation} */ picture?: Sprite4Way animations?: AnimationVariations /** * **Default:** `"lower-object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithOwnerPrototype.html#lower_render_layer Online documentation} */ lower_render_layer?: RenderLayer /** * Loaded and drawn with all `pictures`, `picture` and `animations`. If graphics variation is larger than number of `lower_pictures` variations this layer is not drawn. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithOwnerPrototype.html#lower_pictures Online documentation} */ lower_pictures?: SpriteVariations stateless_visualisation_variations?: readonly (StatelessVisualisation | readonly StatelessVisualisation[])[] /** * **Default:** `"all"` * * If the entity is not visible to a player, the player cannot select it. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SimpleEntityWithOwnerPrototype.html#force_visibility Online documentation} */ force_visibility?: ForceCondition } /** * Abstract entity that has an animation. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html Online documentation} */ export interface SmokePrototype extends EntityPrototype { type: "smoke-with-trigger" animation?: Animation /** * **Default:** `false` * * If this is false then the smoke expires when the animation has played once. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#cyclic Online documentation} */ cyclic?: boolean /** * **Default:** `0` * * May not be 0 if `cyclic` is true. If `cyclic` is false then the smoke will be expire when the animation has played once, even if there would still be duration left. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#duration Online documentation} */ duration?: uint32 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#spread_duration Online documentation} */ spread_duration?: uint32 /** * **Default:** `0` * * `fade_in_duration` + `fade_away_duration` must be <= `duration`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#fade_away_duration Online documentation} */ fade_away_duration?: uint32 /** * **Default:** `0` * * `fade_in_duration` + `fade_away_duration` must be <= `duration`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#fade_in_duration Online documentation} */ fade_in_duration?: uint32 /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#start_scale Online documentation} */ start_scale?: double /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#end_scale Online documentation} */ end_scale?: double /** * **Default:** ``{r=0.375, g=0.375, b=0.375, a=0.375}`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#color Online documentation} */ color?: Color /** * **Default:** `true` * * Smoke always moves randomly unless `movement_slow_down_factor` is 0. If `affected_by_wind` is true, the smoke will also be moved by wind. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#affected_by_wind Online documentation} */ affected_by_wind?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#show_when_smoke_off Online documentation} */ show_when_smoke_off?: boolean /** * **Default:** `"smoke"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * **Default:** `0.995` * * Value between 0 and 1, with 0 being no movement. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#movement_slow_down_factor Online documentation} */ movement_slow_down_factor?: double /** * **Default:** `The value of `fade_away_duration`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#glow_fade_away_duration Online documentation} */ glow_fade_away_duration?: uint32 glow_animation?: Animation /** * **Default:** `Empty = `{{0, 0}, {0, 0}}`` * * Must have a collision box size of zero. * @example * collision_box = {{0, 0}, {0, 0}} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokePrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } /** * An entity with animation and a trigger. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokeWithTriggerPrototype.html Online documentation} */ export interface SmokeWithTriggerPrototype extends SmokePrototype { type: "smoke-with-trigger" action?: Trigger /** * **Default:** `0` * * 0 means never apply. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokeWithTriggerPrototype.html#action_cooldown Online documentation} */ action_cooldown?: uint32 /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokeWithTriggerPrototype.html#particle_count Online documentation} */ particle_count?: uint8 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokeWithTriggerPrototype.html#particle_distance_scale_factor Online documentation} */ particle_distance_scale_factor?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokeWithTriggerPrototype.html#spread_duration_variation Online documentation} */ spread_duration_variation?: uint32 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokeWithTriggerPrototype.html#particle_duration_variation Online documentation} */ particle_duration_variation?: uint32 particle_spread?: Vector particle_scale_factor?: Vector wave_distance?: Vector wave_speed?: Vector /** * **Default:** `false` * * If true, causes the smoke to move with the target entity if one is specified. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokeWithTriggerPrototype.html#attach_to_target Online documentation} */ attach_to_target?: boolean /** * **Default:** `false` * * If true, the smoke will immediately start fading away when the entity it is attached to is destroyed. If it was never attached to an entity in the first place, then the smoke will fade away immediately after being created. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SmokeWithTriggerPrototype.html#fade_when_attachment_is_destroyed Online documentation} */ fade_when_attachment_is_destroyed?: boolean } /** * A {@linkplain https://wiki.factorio.com/Portable_solar_panel portable solar panel}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelEquipmentPrototype.html Online documentation} */ export interface SolarPanelEquipmentPrototype extends EquipmentPrototype { type: "solar-panel-equipment" /** * How much power should be provided. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelEquipmentPrototype.html#power Online documentation} */ power: Energy /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelEquipmentPrototype.html#performance_at_day Online documentation} */ performance_at_day?: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelEquipmentPrototype.html#performance_at_night Online documentation} */ performance_at_night?: double /** * **Default:** `"solar-power"` * * Surface property must have a positive {@link SurfacePropertyPrototype#default_value default value}. When {@link SolarPanelEquipmentPrototype#solar_coefficient_property SolarPanelEquipmentPrototype::solar_coefficient_property} is set to point at a different surface property than "solar-power", then {@link import("factorio:runtime").LuaSurface#solar_power_multiplier LuaSurface::solar_power_multiplier} and {@link SpaceLocationPrototype#solar_power_in_space SpaceLocationPrototype::solar_power_in_space} will be ignored as the solar panel power output will be only affected by value of this surface property set on the surface using {@link PlanetPrototype#surface_properties PlanetPrototype::surface_properties} or {@link import("factorio:runtime").LuaSurface#set_property LuaSurface::set_property}. * * Due to equipment grid overall description, when solar_coefficient_property is not solar-power, a different locale will be used to show total energy production of solar panels: `description.solar-panel-power-X` where X is the surface property name. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelEquipmentPrototype.html#solar_coefficient_property Online documentation} */ solar_coefficient_property?: SurfacePropertyID } /** * A {@linkplain https://wiki.factorio.com/Solar_panel solar panel}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelPrototype.html Online documentation} */ export interface SolarPanelPrototype extends EntityWithOwnerPrototype { type: "solar-panel" /** * Sets how this solar panel connects to the energy network. The most relevant property seems to be the output_priority. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelPrototype.html#energy_source Online documentation} */ energy_source: ElectricEnergySource /** * The picture displayed for this solar panel. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelPrototype.html#picture Online documentation} */ picture?: SpriteVariations /** * The maximum amount of power this solar panel can produce. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelPrototype.html#production Online documentation} */ production: Energy /** * Overlay has to be empty or have same number of variations as `picture`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelPrototype.html#overlay Online documentation} */ overlay?: SpriteVariations /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelPrototype.html#performance_at_day Online documentation} */ performance_at_day?: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelPrototype.html#performance_at_night Online documentation} */ performance_at_night?: double /** * **Default:** `"solar-power"` * * Surface property must have a positive {@link SurfacePropertyPrototype#default_value default value}. When {@link SolarPanelPrototype#solar_coefficient_property SolarPanelPrototype::solar_coefficient_property} is set to point at a different surface property than "solar-power", then {@link import("factorio:runtime").LuaSurface#solar_power_multiplier LuaSurface::solar_power_multiplier} and {@link SpaceLocationPrototype#solar_power_in_space SpaceLocationPrototype::solar_power_in_space} will be ignored as the solar panel power output will be only affected by value of this surface property set on the surface using {@link PlanetPrototype#surface_properties PlanetPrototype::surface_properties} or {@link import("factorio:runtime").LuaSurface#set_property LuaSurface::set_property}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SolarPanelPrototype.html#solar_coefficient_property Online documentation} */ solar_coefficient_property?: SurfacePropertyID } /** * Specifies a sound that can be used with {@link import("factorio:runtime").SoundPath SoundPath} at runtime. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html Online documentation} */ export interface SoundPrototype { readonly type: "sound" /** * Name of the sound. Can be used as a {@link import("factorio:runtime").SoundPath SoundPath} at runtime. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#name Online documentation} */ name: string /** * **Default:** `"game-effect"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#category Online documentation} */ category?: SoundType /** * **Default:** `127` * * Sounds with higher priority will replace a sound with lower priority if the maximum sounds limit is reached. * * 0 is the highest priority, 255 is the lowest priority. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#priority Online documentation} */ priority?: uint8 aggregation?: AggregationSpecification /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#allow_random_repeat Online documentation} */ allow_random_repeat?: boolean /** * **Default:** `1` * * Modifies how far a sound can be heard. Must be between `0` and `1` inclusive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#audible_distance_modifier Online documentation} */ audible_distance_modifier?: double game_controller_vibration_data?: GameControllerVibrationData advanced_volume_control?: AdvancedVolumeControl /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#speed_smoothing_window_size Online documentation} */ speed_smoothing_window_size?: uint32 variations?: SoundDefinition | readonly SoundDefinition[] /** * Supported sound file formats are `.ogg` (Vorbis and Opus) and `.wav`. * * Only loaded, and mandatory if `variations` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#filename Online documentation} */ filename?: FileName /** * **Default:** `1` * * Only loaded if `variations` is not defined. * * This sets both min and max volumes. * * Must be `>= 0`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#volume Online documentation} */ volume?: float /** * **Default:** `1` * * Only loaded if `variations` and `volume` are not defined. * * Must be `>= 0`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#min_volume Online documentation} */ min_volume?: float /** * **Default:** `1` * * Only loaded if `variations` is not defined. * * Only loaded if `min_volume` is defined. * * Must be `>= min_volume`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#max_volume Online documentation} */ max_volume?: float /** * Only loaded if `variations` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#preload Online documentation} */ preload?: boolean /** * **Default:** `1` * * Speed must be `>= 1 / 64`. This sets both min and max speeds. * * Only loaded if `variations` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#speed Online documentation} */ speed?: float /** * **Default:** `1` * * Must be `>= 1 / 64`. * * Only loaded if both `variations` and `speed` are not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#min_speed Online documentation} */ min_speed?: float /** * **Default:** `1` * * Must be `>= min_speed`. * * Only loaded if `variations` is not defined. Only loaded, and mandatory if `min_speed` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#max_speed Online documentation} */ max_speed?: float /** * Only loaded if `variations` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SoundPrototype.html#modifiers Online documentation} */ modifiers?: SoundModifier | readonly SoundModifier[] } export interface SpaceConnectionDistanceTraveledAchievementPrototype extends AchievementPrototype { type: "space-connection-distance-traveled-achievement" tracked_connection: SpaceConnectionID /** * How far a platform must travel to gain this achievement. Repeated trips over a shorter distance do not count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceConnectionDistanceTraveledAchievementPrototype.html#distance Online documentation} */ distance: uint32 /** * The achievement is unidirectional, this property controls the direction (using space connection definition). * * When false, a platform must go through {@link SpaceConnectionPrototype#from from} location and travel in {@link SpaceConnectionPrototype#to to} direction. When true, a platform must go through `to` location and travel in `from` direction. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceConnectionDistanceTraveledAchievementPrototype.html#reversed Online documentation} */ reversed: boolean } export interface SpaceConnectionPrototype extends Prototype { type: "space-connection" from: SpaceLocationID to: SpaceLocationID /** * **Default:** `600` * * Length of the space connection in km. * * Cannot be 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceConnectionPrototype.html#length Online documentation} */ length?: uint32 asteroid_spawn_definitions?: readonly SpaceConnectionAsteroidSpawnDefinition[] /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceConnectionPrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceConnectionPrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceConnectionPrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType } /** * A space location, such as a planet or the solar system edge. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html Online documentation} */ export interface SpaceLocationPrototype extends Prototype { type: "planet" | "space-location" /** * **Default:** `0` * * A value which modifies platform speed; is subtracted when traveling from this location and added when traveling to this location. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#gravity_pull Online documentation} */ gravity_pull?: double /** * Distance from the sun in map coordinates. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#distance Online documentation} */ distance: double /** * Angle in relation to the sun. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#orientation Online documentation} */ orientation: RealOrientation /** * **Default:** `1` * * The apparent size of the space location in map coordinates. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#magnitude Online documentation} */ magnitude?: double /** * **Default:** `same as orientation` * * The orientation where parked space platforms will be drawn. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#parked_platforms_orientation Online documentation} */ parked_platforms_orientation?: RealOrientation /** * **Default:** `0.25` * * The orientation where the location's name will be drawn. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#label_orientation Online documentation} */ label_orientation?: RealOrientation /** * **Default:** `true` * * If `false`, the orbital ring around the sun will not be drawn for this location. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#draw_orbit Online documentation} */ draw_orbit?: boolean /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#solar_power_in_space Online documentation} */ solar_power_in_space?: double /** * **Default:** `0.1` * * If greater than 0, `asteroid_spawn_definitions` will be used on space connections of this location, interpolated based on distance. The number specifies the percentage of the route where the location stops spawning its asteroids. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#asteroid_spawn_influence Online documentation} */ asteroid_spawn_influence?: double /** * **Default:** `false` * * When set to true, it means that this connection offers fly condition rather than wait condition at the destination * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#fly_condition Online documentation} */ fly_condition?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#auto_save_on_first_trip Online documentation} */ auto_save_on_first_trip?: boolean procession_graphic_catalogue?: ProcessionGraphicCatalogue procession_audio_catalogue?: ProcessionAudioCatalogue /** * These transitions are used for any platform stopped at this location. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#platform_procession_set Online documentation} */ platform_procession_set?: ProcessionSet /** * These transitions are used for anything traveling from the surface associated with this location. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#planet_procession_set Online documentation} */ planet_procession_set?: ProcessionSet /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#starmap_icons Online documentation} */ starmap_icons?: readonly IconData[] /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * Path to the icon file. * * Only loaded if `starmap_icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#starmap_icon Online documentation} */ starmap_icon?: FileName /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * **Default:** `64` * * The size of the starmap icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `starmap_icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#starmap_icon_size Online documentation} */ starmap_icon_size?: SpriteSizeType /** * Orientation of the starmap icon, defaults to pointing towards the sun. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#starmap_icon_orientation Online documentation} */ starmap_icon_orientation?: RealOrientation asteroid_spawn_definitions?: readonly SpaceLocationAsteroidSpawnDefinition[] /** * **Default:** `false` * * Hides the space location from the planet selection lists and the space map. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpaceLocationPrototype.html#hidden Online documentation} */ hidden?: boolean } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpacePlatformHubPrototype.html Online documentation} */ export interface SpacePlatformHubPrototype extends EntityWithOwnerPrototype { type: "space-platform-hub" graphics_set?: CargoBayConnectableGraphicsSet inventory_size: ItemStackIndex /** * Name of a {@link ContainerPrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpacePlatformHubPrototype.html#dump_container Online documentation} */ dump_container: EntityID persistent_ambient_sounds?: PersistentWorldAmbientSoundsDefinition surface_render_parameters?: SurfaceRenderParameters /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpacePlatformHubPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpacePlatformHubPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpacePlatformHubPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition default_speed_signal?: SignalIDConnector default_damage_taken_signal?: SignalIDConnector /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpacePlatformHubPrototype.html#platform_repair_speed_modifier Online documentation} */ platform_repair_speed_modifier?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpacePlatformHubPrototype.html#weight Online documentation} */ weight?: Weight cargo_station_parameters: CargoStationParameters /** * **Default:** `256` * * Has to be 256 to make blueprints snap to (0, 0) most of the time. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpacePlatformHubPrototype.html#build_grid_size Online documentation} */ build_grid_size?: 256 } export interface SpacePlatformStarterPackPrototype extends ItemPrototype { type: "space-platform-starter-pack" trigger?: Trigger surface?: SurfaceID /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpacePlatformStarterPackPrototype.html#create_electric_network Online documentation} */ create_electric_network?: boolean tiles?: readonly SpacePlatformTileDefinition[] /** * The quality of the items will match the quality of the starter pack. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpacePlatformStarterPackPrototype.html#initial_items Online documentation} */ initial_items?: readonly ItemProductPrototype[] } /** * Properties of the spectator controller. * * _Prototype limited to **1** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpectatorControllerPrototype.html Online documentation} */ export interface SpectatorControllerPrototype { readonly type: "spectator-controller" /** * Name of the spectator controller. Base game uses "default". * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpectatorControllerPrototype.html#name Online documentation} */ name: string /** * Must be >= 0.34375. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpectatorControllerPrototype.html#movement_speed Online documentation} */ movement_speed: double } /** * A speech bubble. It floats in the world and can display text. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpeechBubblePrototype.html Online documentation} */ export interface SpeechBubblePrototype extends EntityPrototype { type: "speech-bubble" /** * Needs a style of the type "speech_bubble_style", defined inside the gui styles. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpeechBubblePrototype.html#style Online documentation} */ style: string /** * **Default:** `"flow_style"` * * Needs a style of the type "flow_style", defined inside the gui styles. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpeechBubblePrototype.html#wrapper_flow_style Online documentation} */ wrapper_flow_style?: string /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpeechBubblePrototype.html#y_offset Online documentation} */ y_offset?: double /** * **Default:** `60` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpeechBubblePrototype.html#fade_in_out_ticks Online documentation} */ fade_in_out_ticks?: uint32 } /** * Used by {@link SpiderLegSpecification} for {@link SpiderVehiclePrototype}, also known as {@linkplain https://wiki.factorio.com/Spidertron spidertron}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderLegPrototype.html Online documentation} */ export interface SpiderLegPrototype extends EntityWithOwnerPrototype { type: "spider-leg" /** * **Default:** `0.715` * * A scalar that controls the amount of influence this leg has over the position of the torso. Must be greater than 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderLegPrototype.html#stretch_force_scalar Online documentation} */ stretch_force_scalar?: double /** * **Default:** `1` * * The flexibility of hip. Must be between 0 and 1 inclusive. 0 means the hip doesn't flex at all, and 1 means the hip can bend the entire range, from straight up to straight down. Values less than one will dampen the hip flexibility and cause the upper and lower leg parts to stretch and squish more to compensate. Does not affect movement, only graphics. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderLegPrototype.html#hip_flexibility Online documentation} */ hip_flexibility?: double /** * The resting height of the knee from the ground. Used to derive leg part length and size. If set too low, this could cause the knee to invert, bending inwards underneath the spider. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderLegPrototype.html#knee_height Online documentation} */ knee_height: double /** * The placement of the knee relative to the torso of the spider and the end of the foot when at rest. Used to calculate the shape of the leg and the length of the individual parts. Values between 0 and 1 place the knee between the torso and the leg. Values closer to 0 will place the knee closer to the torso. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderLegPrototype.html#knee_distance_factor Online documentation} */ knee_distance_factor: double /** * **Default:** `0` * * The height of the foot from the ground when at rest. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderLegPrototype.html#ankle_height Online documentation} */ ankle_height?: 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 /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderLegPrototype.html#graphics_set Online documentation} */ graphics_set?: SpiderLegGraphicsSet /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderLegPrototype.html#walking_sound_volume_modifier Online documentation} */ walking_sound_volume_modifier?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderLegPrototype.html#walking_sound_speed_modifier Online documentation} */ walking_sound_speed_modifier?: float upper_leg_dying_trigger_effects?: readonly SpiderLegTriggerEffect[] lower_leg_dying_trigger_effects?: readonly SpiderLegTriggerEffect[] } export interface SpiderUnitPrototype extends EntityWithOwnerPrototype { type: "spider-unit" spider_engine: SpiderEngineSpecification /** * The height of the spider affects the shooting height and the drawing of the graphics and lights. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderUnitPrototype.html#height Online documentation} */ height: float /** * **Default:** `1` * * Cannot be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderUnitPrototype.html#torso_bob_speed Online documentation} */ torso_bob_speed?: float /** * **Default:** `1` * * The orientation of the torso of the spider affects the shooting direction and the drawing of the graphics and lights. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderUnitPrototype.html#torso_rotation_speed Online documentation} */ torso_rotation_speed?: float graphics_set?: SpiderTorsoGraphicsSet absorptions_to_join_attack?: Record /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderUnitPrototype.html#spawning_time_modifier Online documentation} */ spawning_time_modifier?: double /** * **Default:** `0` * * In chunks. The radius of how many chunks this spider unit charts around itself. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderUnitPrototype.html#radar_range Online documentation} */ radar_range?: uint32 attack_parameters: AttackParameters dying_sound?: Sound /** * A sound the spider unit makes when it sets out to attack. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderUnitPrototype.html#warcry Online documentation} */ warcry?: Sound /** * Must be less than or equal to 100. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderUnitPrototype.html#vision_distance Online documentation} */ vision_distance: double distraction_cooldown: uint32 /** * **Default:** `600` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderUnitPrototype.html#min_pursue_time Online documentation} */ min_pursue_time?: uint32 /** * **Default:** `50` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderUnitPrototype.html#max_pursue_distance Online documentation} */ max_pursue_distance?: double ai_settings?: UnitAISettings } /** * A {@linkplain https://wiki.factorio.com/Spidertron spidertron}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderVehiclePrototype.html Online documentation} */ export interface SpiderVehiclePrototype extends VehiclePrototype { type: "spider-vehicle" energy_source: BurnerEnergySource | VoidEnergySource inventory_size: ItemStackIndex graphics_set?: SpiderVehicleGraphicsSet spider_engine: SpiderEngineSpecification /** * The height of the spider affects the shooting height and the drawing of the graphics and lights. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderVehiclePrototype.html#height Online documentation} */ height: float movement_energy_consumption: Energy automatic_weapon_cycling: boolean /** * This is applied whenever the spider shoots (manual and automatic targeting), `automatic_weapon_cycling` is true and the next gun in line (which is then selected) has ammo. When all of the above is the case, the chain_shooting_cooldown_modifier is a multiplier on the remaining shooting cooldown: `cooldown = (remaining_cooldown × chain_shooting_cooldown_modifier)`. * * chain_shooting_cooldown_modifier is intended to be in the range of 0 to 1. This means that setting chain_shooting_cooldown_modifier to 0 reduces the remaining shooting cooldown to 0 while a chain_shooting_cooldown_modifier of 1 does not affect the remaining shooting cooldown at all. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderVehiclePrototype.html#chain_shooting_cooldown_modifier Online documentation} */ chain_shooting_cooldown_modifier: float /** * **Default:** `1` * * The orientation of the torso of the spider affects the shooting direction and the drawing of the graphics and lights. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderVehiclePrototype.html#torso_rotation_speed Online documentation} */ torso_rotation_speed?: float /** * **Default:** `1` * * Cannot be negative. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderVehiclePrototype.html#torso_bob_speed Online documentation} */ torso_bob_speed?: float /** * **Default:** `0` * * If set to 0 then the spider will not have a Logistics tab. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderVehiclePrototype.html#trash_inventory_size Online documentation} */ trash_inventory_size?: ItemStackIndex /** * The guns this spider vehicle uses. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpiderVehiclePrototype.html#guns Online documentation} */ guns?: readonly ItemID[] } /** * The {@linkplain https://wiki.factorio.com/Spidertron_remote spidertron remote}. This remote can only be used for entities of type {@link SpiderVehiclePrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpidertronRemotePrototype.html Online documentation} */ export interface SpidertronRemotePrototype extends SelectionToolPrototype { type: "spidertron-remote" /** * Color mask for the icon. This is used to show the color of the spidertron remote LEDS in the GUI. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpidertronRemotePrototype.html#icon_color_indicator_mask Online documentation} */ icon_color_indicator_mask?: FileName /** * Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `"not-stackable"` flag is set. * @example * stack_size = 1 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpidertronRemotePrototype.html#stack_size Online documentation} */ stack_size: 1 } /** * A {@linkplain https://wiki.factorio.com/Splitter splitter}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SplitterPrototype.html Online documentation} */ export interface SplitterPrototype extends TransportBeltConnectablePrototype { type: "splitter" structure?: Animation4Way /** * Drawn 1 tile north of `structure` when the splitter is facing east or west. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SplitterPrototype.html#structure_patch Online documentation} */ structure_patch?: Animation4Way frozen_patch?: Sprite4Way /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SplitterPrototype.html#structure_animation_speed_coefficient Online documentation} */ structure_animation_speed_coefficient?: double /** * **Default:** `10` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SplitterPrototype.html#structure_animation_movement_cooldown Online documentation} */ structure_animation_movement_cooldown?: uint32 /** * The name of the {@link TransportBeltPrototype} which is used for the sound of the underlying belt. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SplitterPrototype.html#related_transport_belt Online documentation} */ related_transport_belt?: EntityID /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SplitterPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SplitterPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SplitterPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] default_input_left_condition?: CircuitConditionConnector default_input_right_condition?: CircuitConditionConnector default_output_left_condition?: CircuitConditionConnector default_output_right_condition?: CircuitConditionConnector } /** * Specifies an image that can be used with {@link import("factorio:runtime").SpritePath SpritePath} at runtime. * @example * { * type = "sprite" * name = "accumulator-sprite", * filename = "__base__/graphics/entity/basic-accumulator/basic-accumulator.png", * priority = "extra-high", * width = 124, * height = 103, * shift = {0.7, -0.2} * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html Online documentation} */ export interface SpritePrototype { readonly type: "sprite" /** * Name of the sprite. Can be used as a {@link import("factorio:runtime").SpritePath SpritePath} at runtime. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#name Online documentation} */ name: string /** * If this property is present, all Sprite definitions have to be placed as entries in the array, and they will all be loaded from there. `layers` may not be an empty table. Each definition in the array may also have the `layers` property. * * If this property is present, all other properties besides `name` and `type` are ignored. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#layers Online documentation} */ layers?: readonly Sprite[] /** * Only loaded, and mandatory if `layers` is not defined. * * The path to the sprite file to use. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#filename Online documentation} */ filename?: FileName /** * Only loaded if `layers` is not defined. * * Number of slices this is sliced into when using the "optimized atlas packing" option. If you are a modder, you can just ignore this property. Example: If this is 4, the sprite will be sliced into a 4x4 grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#dice Online documentation} */ dice?: SpriteSizeType /** * Only loaded if `layers` is not defined. * * Same as `dice` above, but this specifies only how many slices there are on the x axis. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#dice_x Online documentation} */ dice_x?: SpriteSizeType /** * Only loaded if `layers` is not defined. * * Same as `dice` above, but this specifies only how many slices there are on the y axis. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#dice_y Online documentation} */ dice_y?: SpriteSizeType /** * **Default:** `"medium"` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#priority Online documentation} */ priority?: SpritePriority /** * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#flags Online documentation} */ flags?: SpriteFlags /** * Only loaded if `layers` is not defined. * * The width and height of the sprite. If this is a tuple, the first member of the tuple is the width and the second is the height. Otherwise the size is both width and height. Width and height may only be in the range of 0-4096. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#size Online documentation} */ size?: SpriteSizeType | readonly [SpriteSizeType, SpriteSizeType] /** * Only loaded if `layers` is not defined. Mandatory if `size` is not defined. * * Width of the picture in pixels, from 0-4096. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#width Online documentation} */ width?: SpriteSizeType /** * Only loaded if `layers` is not defined. Mandatory if `size` is not defined. * * Height of the picture in pixels, from 0-4096. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#height Online documentation} */ height?: SpriteSizeType /** * **Default:** `0` * * Only loaded if `layers` is not defined. * * Horizontal position of the sprite in the source file in pixels. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#x Online documentation} */ x?: SpriteSizeType /** * **Default:** `0` * * Only loaded if `layers` is not defined. * * Vertical position of the sprite in the source file in pixels. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#y Online documentation} */ y?: SpriteSizeType /** * Only loaded if `layers` is not defined. * * Loaded only when `x` and `y` are both `0`. The first member of the tuple is `x` and the second is `y`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#position Online documentation} */ position?: readonly [SpriteSizeType, SpriteSizeType] /** * **Default:** ``{0, 0}`` * * Only loaded if `layers` is not defined. * * The shift in tiles. `util.by_pixel()` can be used to divide the shift by 32 which is the usual pixel height/width of 1 tile in normal resolution. Note that 32 pixel tile height/width is not enforced anywhere - any other tile height or width is also possible. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#shift Online documentation} */ shift?: Vector /** * **Default:** `false` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#rotate_shift Online documentation} */ rotate_shift?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#apply_special_effect Online documentation} */ apply_special_effect?: boolean /** * **Default:** `1` * * Only loaded if `layers` is not defined. * * Values other than `1` specify the scale of the sprite on default zoom. A scale of `2` means that the picture will be two times bigger on screen (and thus more pixelated). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#scale Online documentation} */ scale?: double /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * Only one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. This takes precedence over `draw_as_glow` and `draw_as_light`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#draw_as_shadow Online documentation} */ draw_as_shadow?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * Only one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. This takes precedence over `draw_as_light`. * * Draws first as a normal sprite, then again as a light layer. See {@linkplain https://forums.factorio.com/91682}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#draw_as_glow Online documentation} */ draw_as_glow?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * Only one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#draw_as_light Online documentation} */ draw_as_light?: boolean /** * **Default:** `0` * * Only loaded if `layers` is not defined. * * Only loaded if this is an icon, that is it has the flag `"group=icon"` or `"group=gui"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#mipmap_count Online documentation} */ mipmap_count?: uint8 /** * **Default:** `false` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#apply_runtime_tint Online documentation} */ apply_runtime_tint?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#tint_as_overlay Online documentation} */ tint_as_overlay?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#invert_colors Online documentation} */ invert_colors?: boolean /** * **Default:** ``{r=1, g=1, b=1, a=1}`` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#tint Online documentation} */ tint?: Color /** * **Default:** `"normal"` * * Only loaded if `layers` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#blend_mode Online documentation} */ blend_mode?: BlendMode /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * Minimal mode is entered when mod loading fails. You are in it when you see the gray box after (part of) the loading screen that tells you a mod error. Modders can ignore this property. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#load_in_minimal_mode Online documentation} */ load_in_minimal_mode?: boolean /** * **Default:** `true` * * Only loaded if `layers` is not defined. * * Whether alpha should be pre-multiplied. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#premul_alpha Online documentation} */ premul_alpha?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * If `true`, the sprite may be downsampled to half its size on load even when 'Sprite quality' graphics setting is set to 'High'. Whether downsampling happens depends on detected hardware and other graphics settings. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#allow_forced_downscale Online documentation} */ allow_forced_downscale?: boolean /** * **Default:** `false` * * Only loaded if `layers` is not defined. * * Unused. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#generate_sdf Online documentation} */ generate_sdf?: boolean /** * **Default:** `"any"` * * Only loaded if `layers` is not defined. * * Provides hint to sprite atlas system, so it can try to put sprites that are intended to be used at the same locations to the same sprite atlas. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#surface Online documentation} */ surface?: SpriteUsageSurfaceHint /** * **Default:** `"any"` * * Only loaded if `layers` is not defined. * * Provides hint to sprite atlas system, so it can pack sprites that are related to each other to the same sprite atlas. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SpritePrototype.html#usage Online documentation} */ usage?: SpriteUsageHint } /** * Entity that sticks to another entity, and damages/slows it. Stickers can only be attached to {@link UnitPrototype}, {@link CharacterPrototype}, {@link CarPrototype} and {@link SpiderVehiclePrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html Online documentation} */ export interface StickerPrototype extends EntityPrototype { type: "sticker" /** * Must be > 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#duration_in_ticks Online documentation} */ duration_in_ticks: uint32 animation?: Animation /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer /** * **Default:** `1` * * Interval between application of `damage_per_tick`, in ticks. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#damage_interval Online documentation} */ damage_interval?: uint32 /** * If this is given, this sticker is considered a "fire sticker" for some functions, such as {@link BaseAttackParameters#fire_penalty BaseAttackParameters::fire_penalty} and {@link EntityPrototypeFlags#not_flammable EntityPrototypeFlags::not-flammable}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#spread_fire_entity Online documentation} */ spread_fire_entity?: EntityID /** * **Default:** `30` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#fire_spread_cooldown Online documentation} */ fire_spread_cooldown?: uint8 /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#fire_spread_radius Online documentation} */ fire_spread_radius?: float /** * **Default:** `15` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#stickers_per_square_meter Online documentation} */ stickers_per_square_meter?: float /** * **Default:** `"all"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#force_visibility Online documentation} */ force_visibility?: ForceCondition /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#single_particle Online documentation} */ single_particle?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#use_damage_substitute Online documentation} */ use_damage_substitute?: boolean /** * Applied every `damage_interval` ticks, so may not necessarily be "per tick". * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#damage_per_tick Online documentation} */ damage_per_tick?: DamageParameters /** * **Default:** `1` * * Less than 1 to reduce movement speed, more than 1 to increase it. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#target_movement_modifier Online documentation} */ target_movement_modifier?: float /** * **Default:** `Value of `target_movement_modifier`` * * The modifier value when the sticker is attached. It linearly changes over time to reach `target_movement_modifier_to`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#target_movement_modifier_from Online documentation} */ target_movement_modifier_from?: float /** * **Default:** `Value of `target_movement_modifier`` * * The modifier value when the sticker expires. It linearly changes over time starting from `target_movement_modifier_from`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#target_movement_modifier_to Online documentation} */ target_movement_modifier_to?: float /** * **Default:** `-1` * * The maximum movement speed for the target. * * Negative values are ignored. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#target_movement_max Online documentation} */ target_movement_max?: float /** * **Default:** `Value of `target_movement_speed`` * * The maximum movement speed for the target when the sticker is attached. It linearly changes over time to reach `target_movement_max_to`. * * Negative values are ignored. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#target_movement_max_from Online documentation} */ target_movement_max_from?: float /** * **Default:** `Value of `target_movement_speed`` * * The maximum movement speed for the target when the sticker expires. It linearly changes over time starting from `target_movement_max_from`. * * Negative values are ignored. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#target_movement_max_to Online documentation} */ target_movement_max_to?: float /** * **Default:** `false` * * If true, causes the target entity to become "grounded", disabling flight. This only applies to Character entities wearing mech armor. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#ground_target Online documentation} */ ground_target?: boolean /** * **Default:** `1` * * Less than 1 to reduce vehicle speed, more than 1 to increase it. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#vehicle_speed_modifier Online documentation} */ vehicle_speed_modifier?: float /** * **Default:** `Value of `vehicle_speed_modifier`` * * Works similarly to `target_movement_modifier_from`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#vehicle_speed_modifier_from Online documentation} */ vehicle_speed_modifier_from?: float /** * **Default:** `Value of `vehicle_speed_modifier`` * * Works similarly to `target_movement_modifier_to`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#vehicle_speed_modifier_to Online documentation} */ vehicle_speed_modifier_to?: float /** * **Default:** `-1` * * The maximum movement speed for vehicles. * * Negative values are ignored. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#vehicle_speed_max Online documentation} */ vehicle_speed_max?: float /** * **Default:** `Value of `vehicle_speed_max`` * * The maximum movement speed for vehicles when the sticker is attached. It linearly changes over time to reach `vehicle_speed_max_to`. * * Negative values are ignored. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#vehicle_speed_max_from Online documentation} */ vehicle_speed_max_from?: float /** * **Default:** `Value of `vehicle_speed_max`` * * The maximum movement speed for vehicles when the sticker expires. It linearly changes over time starting from `vehicle_speed_max_from`. * * Negative values are ignored. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#vehicle_speed_max_to Online documentation} */ vehicle_speed_max_to?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#vehicle_friction_modifier Online documentation} */ vehicle_friction_modifier?: float /** * **Default:** `Value of `vehicle_friction_modifier`` * * Works similarly to `target_movement_modifier_from`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#vehicle_friction_modifier_from Online documentation} */ vehicle_friction_modifier_from?: float /** * **Default:** `Value of `vehicle_friction_modifier`` * * Works similarly to `target_movement_modifier_to`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#vehicle_friction_modifier_to Online documentation} */ vehicle_friction_modifier_to?: float /** * **Default:** `"entity"` * * Using this property marks the sticker as a "selection sticker", meaning that the selection box will be rendered around the entity when the sticker is on it. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#selection_box_type Online documentation} */ selection_box_type?: CursorBoxType /** * Effects (with cooldowns) to trigger every tick. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#update_effects Online documentation} */ update_effects?: readonly TriggerEffectWithCooldown[] /** * The `hidden` property of stickers is hardcoded to `true`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#hidden Online documentation} */ hidden: true /** * The `hidden_in_factoriopedia` property of stickers is hardcoded to `true`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StickerPrototype.html#hidden_in_factoriopedia Online documentation} */ hidden_in_factoriopedia: true } /** * A {@linkplain https://wiki.factorio.com/Storage_tank storage tank}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StorageTankPrototype.html Online documentation} */ export interface StorageTankPrototype extends EntityWithOwnerPrototype { type: "storage-tank" fluid_box: FluidBox /** * The location of the window showing the contents. Note that for `window_background` the width and height are determined by the sprite and window_bounding_box only determines the drawing location. For `fluid_background` the width is determined by the sprite and the height and drawing location are determined by window_bounding_box. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StorageTankPrototype.html#window_bounding_box Online documentation} */ window_bounding_box: BoundingBox /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StorageTankPrototype.html#pictures Online documentation} */ pictures?: StorageTankPictures /** * Must be positive. * * Used for determining the x position inside the `flow_sprite` when drawing the storage tank. Does not affect gameplay. * * The x position of the sprite will be `((game.tick % flow_length_in_ticks) ÷ flow_length_in_ticks) × (flow_sprite.width - 32)`. This means, that over `flow_length_in_ticks` ticks, the part of the `flow_sprite` that is drawn in-game is incrementally moved from most-left to most-right inside the actual sprite, that part always has a width of 32px. After `flow_length_in_ticks`, the part of the `flow_sprite` that is drawn will start from the left again. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StorageTankPrototype.html#flow_length_in_ticks Online documentation} */ flow_length_in_ticks: uint32 /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StorageTankPrototype.html#two_direction_only Online documentation} */ two_direction_only?: boolean /** * **Default:** `true` * * Whether the "alt-mode icon" should be drawn at all. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StorageTankPrototype.html#show_fluid_icon Online documentation} */ show_fluid_icon?: boolean /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StorageTankPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StorageTankPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StorageTankPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] } /** * A straight rail. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StraightRailPrototype.html Online documentation} */ export interface StraightRailPrototype extends RailPrototype { type: "elevated-straight-rail" | "straight-rail" /** * **Default:** ``{{-0.7, -0.99}, {0.7, 0.99}}`` * * The {@link EntityPrototype#collision_box collision_box} of straight rail is hardcoded to `{{-0.7, -0.99}, {0.7, 0.99}}`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/StraightRailPrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox } export interface SurfacePropertyPrototype extends Prototype { type: "surface-property" /** * **Default:** `surface-property-unit.[prototype name]` * * The locale key of the unit of the property. In-game, the locale is provided the `__1__` parameter, which is the value of the property. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SurfacePropertyPrototype.html#localised_unit_key Online documentation} */ localised_unit_key?: string default_value: double /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SurfacePropertyPrototype.html#is_time Online documentation} */ is_time?: boolean } export interface SurfacePrototype extends Prototype { type: "surface" surface_properties?: Record /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SurfacePrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SurfacePrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/SurfacePrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType } /** * A {@linkplain https://wiki.factorio.com/Technologies technology}. * @example * { * type = "technology", * name = "steel-processing", * icon_size = 256, * icon = "__base__/graphics/technology/steel-processing.png", * effects = * { * { * type = "unlock-recipe", * recipe = "steel-plate" * }, * { * type = "unlock-recipe", * recipe = "steel-chest" * } * }, * unit = * { * count = 50, * ingredients = {{"automation-science-pack", 1}}, * time = 5 * }, * order = "c-a" * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html Online documentation} */ export interface TechnologyPrototype extends Prototype { type: "technology" /** * If this name ends with `-`, that number is ignored for localization purposes. E.g. if the name is `technology-3`, the game looks for the `technology-name.technology` localization. The technology tree will also show the number on the technology icon. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#name Online documentation} */ name: string /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * The base game uses 256px icons for technologies. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * **Default:** `false` * * When set to true, and the technology contains several levels, only the relevant one is displayed in the technology screen. * @example * { * type = "technology", * name = "physical-projectile-damage-2", * [...] * upgrade = true * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#upgrade Online documentation} */ upgrade?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#enabled Online documentation} */ enabled?: boolean /** * **Default:** `false` * * Whether the technology should be shown in the technology tree GUI when "Show only essential technologies" is enabled. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#essential Online documentation} */ essential?: boolean /** * **Default:** `false` * * Controls whether the technology is shown in the tech GUI when it is not `enabled`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#visible_when_disabled Online documentation} */ visible_when_disabled?: boolean /** * **Default:** `false` * * Controls whether the technology cost ignores the tech cost multiplier set in the {@link DifficultySettings}. E.g. `4` for the default expensive difficulty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#ignore_tech_cost_multiplier Online documentation} */ ignore_tech_cost_multiplier?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#allows_productivity Online documentation} */ allows_productivity?: boolean /** * Mandatory if `unit` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#research_trigger Online documentation} */ research_trigger?: TechnologyTrigger /** * Determines the cost in items and time of the technology. * * Mandatory if `research_trigger` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#unit Online documentation} */ unit?: TechnologyUnit /** * `"infinite"` for infinite technologies, otherwise `uint32`. * * Defaults to the same level as the technology, which is `0` for non-upgrades, and the level of the upgrade for upgrades. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#max_level Online documentation} */ max_level?: uint32 | "infinite" /** * List of technologies needed to be researched before this one can be researched. * @example * prerequisites = {"explosives", "military-2"} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#prerequisites Online documentation} */ prerequisites?: readonly TechnologyID[] /** * Can be used to enable or disable showing levels info in technology slot. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#show_levels_info Online documentation} */ show_levels_info?: boolean /** * List of effects of the technology (applied when the technology is researched). * @example * { * { * type = "unlock-recipe", * recipe = "land-mine" * } * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#effects Online documentation} */ effects?: readonly Modifier[] /** * **Default:** `false` * * Hides the technology from the tech screen. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TechnologyPrototype.html#hidden Online documentation} */ hidden?: boolean } export interface TemporaryContainerPrototype extends ContainerPrototype { type: "temporary-container" /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TemporaryContainerPrototype.html#destroy_on_empty Online documentation} */ destroy_on_empty?: boolean /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TemporaryContainerPrototype.html#time_to_live Online documentation} */ time_to_live?: uint32 /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TemporaryContainerPrototype.html#alert_after_time Online documentation} */ alert_after_time?: uint32 } /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * Consumes two fluids as fuel to produce thrust for a space platform. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ThrusterPrototype.html Online documentation} */ export interface ThrusterPrototype extends EntityWithOwnerPrototype { type: "thruster" min_performance: ThrusterPerformancePoint /** * `max_performance.fluid_volume` must not be smaller than `min_performance.fluid_volume`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ThrusterPrototype.html#max_performance Online documentation} */ max_performance: ThrusterPerformancePoint /** * If a {@link FluidBox#filter filter} is set for this fluidbox it determines what the thruster considers the first fuel. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ThrusterPrototype.html#fuel_fluid_box Online documentation} */ fuel_fluid_box: FluidBox /** * If a {@link FluidBox#filter filter} is set for this fluidbox it determines what the thruster considers the second fuel. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ThrusterPrototype.html#oxidizer_fluid_box Online documentation} */ oxidizer_fluid_box: FluidBox graphics_set?: ThrusterGraphicsSet plumes?: PlumesSpecification } /** * Used to define the parameters for tile shaders. * * _Prototype limited to **32** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TileEffectDefinition.html Online documentation} */ export interface TileEffectDefinition { readonly type: "tile-effect" /** * Name of the tile-effect. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TileEffectDefinition.html#name Online documentation} */ name: string shader: "water" | "space" | "puddle" /** * Only loaded, and mandatory if `shader` is `"water"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TileEffectDefinition.html#water Online documentation} */ water?: WaterTileEffectParameters /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * Only loaded, and mandatory if `shader` is `"space"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TileEffectDefinition.html#space Online documentation} */ space?: SpaceTileEffectParameters /** * ![Space Age](https://wiki.factorio.com/images/thumb/Space_age_icon.png/16px-Space_age_icon.png) ***Space Age*** required to use. * * Only loaded, and mandatory if `shader` is `"puddle"`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TileEffectDefinition.html#puddle Online documentation} */ puddle?: PuddleTileEffectParameters } /** * The entity used for tile ghosts. * @example * { * type = "tile-ghost", * name = "tile-ghost", * flags = {"not-on-map"}, * minable = { mining_time = 0, results={}}, * collision_box = {{-0.5, -0.5}, {0.5, 0.5}}, * selection_priority = 45 * } * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TileGhostPrototype.html Online documentation} */ export interface TileGhostPrototype extends EntityPrototype { type: "tile-ghost" } /** * A {@linkplain https://wiki.factorio.com/Tile tile}. * * _Prototype limited to **65535** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html Online documentation} */ export interface TilePrototype extends Prototype { type: "tile" collision_mask: CollisionMaskConnector /** * Specifies transition drawing priority. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#layer Online documentation} */ layer: uint8 /** * The build animation used when this tile is built on a space platform. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#build_animations Online documentation} */ build_animations?: Animation4Way build_animations_background?: Animation4Way /** * When the build_animations frame reaches this point the tile is built. * * Mandatory if `build_animations` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#built_animation_frame Online documentation} */ built_animation_frame?: uint32 /** * Graphics for this tile. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#variants Online documentation} */ variants: TileTransitionsVariants map_color: Color /** * Can't be an empty array. If this and `icon` is not set, the `material_background` in `variants` is used as the icon. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. If this and `icons` is not set, the `material_background` in `variants` is used as the icon. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * **Default:** `false` * * For surfaces that use {@link SurfaceRenderParameters#fog fog effect} of type `gleba`, this property determines whether given tile should contribute to fog intensity on a chunk or not. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#lowland_fog Online documentation} */ lowland_fog?: boolean /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#transition_overlay_layer_offset Online documentation} */ transition_overlay_layer_offset?: int8 /** * **Default:** `"any"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#sprite_usage_surface Online documentation} */ sprite_usage_surface?: SpriteUsageSurfaceHint /** * **Default:** `"ground-natural"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#layer_group Online documentation} */ layer_group?: TileRenderLayer transition_merges_with_tile?: TileID /** * **Default:** ``{r=1, g=1, b=1, a=1} (white)`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#effect_color Online documentation} */ effect_color?: Color /** * **Default:** ``{r=1, g=1, b=1, a=1} (white)`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#tint Online documentation} */ tint?: Color particle_tints?: TileBasedParticleTints walking_sound?: Sound landing_steps_sound?: Sound driving_sound?: InterruptibleSound /** * If this is loaded as one Sound, it is loaded as the "small" build sound. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#build_sound Online documentation} */ build_sound?: Sound | TileBuildSound mined_sound?: Sound /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#walking_speed_modifier Online documentation} */ walking_speed_modifier?: double /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#vehicle_friction_modifier Online documentation} */ vehicle_friction_modifier?: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#decorative_removal_probability Online documentation} */ decorative_removal_probability?: float /** * **Default:** `All tiles` * * Array of tile names that are allowed next to this one. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#allowed_neighbors Online documentation} */ allowed_neighbors?: readonly TileID[] /** * **Default:** `false` * * Whether the tile needs tile correction logic applied when it's generated in the world, to prevent graphical artifacts. The tile correction logic disallows 1-wide stripes of the tile, see {@linkplain https://factorio.com/blog/post/fff-346 Friday Facts #346}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#needs_correction Online documentation} */ needs_correction?: boolean /** * If you want the tile to not be mineable, don't specify the minable property. Only non-mineable tiles become hidden tiles when placing mineable tiles on top of them. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#minable Online documentation} */ minable?: MinableProperties fluid?: FluidID next_direction?: TileID /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#can_be_part_of_blueprint Online documentation} */ can_be_part_of_blueprint?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#is_foundation Online documentation} */ is_foundation?: boolean /** * **Default:** `false` * * If items dropped on this tile are destroyed. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#destroys_dropped_items Online documentation} */ destroys_dropped_items?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#allows_being_covered Online documentation} */ allows_being_covered?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#searchable Online documentation} */ searchable?: boolean /** * **Default:** `0` * * Must be equal to or greater than 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#max_health Online documentation} */ max_health?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#weight Online documentation} */ weight?: Weight /** * Triggers when a foundation tile is destroyed by an asteroid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#dying_explosion Online documentation} */ dying_explosion?: ExplosionDefinition | readonly ExplosionDefinition[] absorptions_per_second?: Record default_cover_tile?: TileID frozen_variant?: TileID thawed_variant?: TileID effect?: TileEffectDefinitionID /** * Called by {@link InvokeTileEffectTriggerEffectItem}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#trigger_effect Online documentation} */ trigger_effect?: TriggerEffect /** * The effect/trigger that runs when an item is destroyed by being dropped on this tile. * * If the item defines {@link ItemPrototype#destroyed_by_dropping_trigger its own trigger} it will override this. * * If this is defined, `destroys_dropped_items` must be `true`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#default_destroyed_dropped_item_trigger Online documentation} */ default_destroyed_dropped_item_trigger?: Trigger scorch_mark_color?: Color /** * **Default:** `true` * * If set to true, the game will check for collisions with entities before building or mining the tile. If entities are in the way it is not possible to mine/build the tile. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#check_collision_with_entities Online documentation} */ check_collision_with_entities?: boolean /** * Used by the {@linkplain https://wiki.factorio.com/Pollution pollution} shader. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#effect_color_secondary Online documentation} */ effect_color_secondary?: Color /** * **Default:** `true if `effect_color` alpha equals 1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#effect_is_opaque Online documentation} */ effect_is_opaque?: boolean /** * Extra transitions. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TilePrototype.html#transitions Online documentation} */ transitions?: readonly TileTransitionsToTiles[] transitions_between_transitions?: readonly TileTransitionsBetweenTransitions[] autoplace?: AutoplaceSpecification placeable_by?: ItemToPlace | readonly ItemToPlace[] bound_decoratives?: DecorativeID | readonly DecorativeID[] ambient_sounds_group?: TileID ambient_sounds?: WorldAmbientSoundDefinition | readonly WorldAmbientSoundDefinition[] } /** * A tips and tricks entry. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html Online documentation} */ export interface TipsAndTricksItem extends PrototypeBase { type: "tips-and-tricks-item" /** * **Default:** `""` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#image Online documentation} */ image?: FileName simulation?: SimulationDefinition /** * **Default:** `""` * * String to add in front of the tips and trick entries name. Can be anything, the base game tends to use {@linkplain https://wiki.factorio.com/Rich_text rich text} tags for items, e.g. `[item=wooden-chest]` here. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#tag Online documentation} */ tag?: string /** * **Default:** `the `name` of this prototype` * * Name of a {@link TipsAndTricksItemCategory}, used for the sorting of this tips and tricks entry. Tips and trick entries are sorted first by category and then by their `order` within that category. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#category Online documentation} */ category?: string /** * **Default:** `0` * * The tips and tricks entry is indented by `indent`×6 spaces. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#indent Online documentation} */ indent?: uint8 /** * **Default:** `false` * * Whether the tip title on the left in the tips and tricks GUI should use the "title_tip_item" style (semi bold font). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#is_title Online documentation} */ is_title?: boolean /** * Condition for when the tip notification should be shown to the player. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#trigger Online documentation} */ trigger?: TipTrigger /** * Condition for never showing the tip notification to the player. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#skip_trigger Online documentation} */ skip_trigger?: TipTrigger /** * **Default:** `""` * * Name of a {@link TutorialDefinition}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#tutorial Online documentation} */ tutorial?: string /** * **Default:** `"locked"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#starting_status Online documentation} */ starting_status?: TipStatus /** * **Default:** `none` * * An array of names of other tips and tricks items. This tips and tricks entry is only shown to the player once they have marked all dependencies as read. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#dependencies Online documentation} */ dependencies?: readonly string[] /** * **Default:** `"all"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#player_input_method_filter Online documentation} */ player_input_method_filter?: PlayerInputMethodFilter /** * Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#icon_size Online documentation} */ icon_size?: SpriteSizeType /** * **Default:** `Value of `name`` * * Used to order prototypes in inventory, recipes and GUIs. May not exceed a length of 200 characters. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItem.html#order Online documentation} */ order?: Order } /** * A {@link TipsAndTricksItem} category, used for sorting of tips and tricks entries: Tips and trick entries are sorted first by category and then by their order within that category. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItemCategory.html Online documentation} */ export interface TipsAndTricksItemCategory { readonly type: "tips-and-tricks-item-category" name: string /** * Tips and trick categories are sorted by `order`, and then the tips and tips entries are sorted by their own order within those categories. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TipsAndTricksItemCategory.html#order Online documentation} */ order: Order } /** * Items with a "durability". Used for {@linkplain https://wiki.factorio.com/Science_pack science packs}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ToolPrototype.html Online documentation} */ export interface ToolPrototype extends ItemPrototype { type: "armor" | "repair-tool" | "tool" /** * The durability of this tool. Must be positive. Mandatory if `infinite` is false. Ignored if infinite is true. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ToolPrototype.html#durability Online documentation} */ durability?: double /** * May not be longer than 200 characters. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ToolPrototype.html#durability_description_key Online documentation} */ durability_description_key?: string /** * May not be longer than 200 characters. * * In-game, the game provides the locale with three {@linkplain https://wiki.factorio.com/Tutorial:Localisation#Localising_with_parameters parameters}: * * `__1__`: remaining durability * * `__2__`: total durability * * `__3__`: durability as a percentage * * So when a locale key that has the following translation * * `Remaining durability is __1__ out of __2__ which is __3__ %` * * is applied to a tool with 2 remaining durability out of 8 it will be displayed as * * `Remaining durability is 2 out of 8 which is 25 %` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ToolPrototype.html#durability_description_value Online documentation} */ durability_description_value?: string /** * **Default:** `false` * * Whether this tool has infinite durability. If this is false, `durability` must be specified. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ToolPrototype.html#infinite Online documentation} */ infinite?: boolean } /** * This prototype is used for receiving an achievement when the player has a specified train path length. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrainPathAchievementPrototype.html Online documentation} */ export interface TrainPathAchievementPrototype extends AchievementPrototype { type: "train-path-achievement" /** * The achievement will trigger if a train path is longer than this. * @example * amount = 1000 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrainPathAchievementPrototype.html#minimum_distance Online documentation} */ minimum_distance: double } /** * A {@linkplain https://wiki.factorio.com/Train_stop train stop}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrainStopPrototype.html Online documentation} */ export interface TrainStopPrototype extends EntityWithOwnerPrototype { type: "train-stop" animation_ticks_per_frame: uint32 rail_overlay_animations?: Animation4Way animations?: Animation4Way top_animations?: Animation4Way default_train_stopped_signal?: SignalIDConnector default_trains_count_signal?: SignalIDConnector default_trains_limit_signal?: SignalIDConnector default_priority_signal?: SignalIDConnector /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrainStopPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrainStopPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrainStopPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean color?: Color /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrainStopPrototype.html#chart_name Online documentation} */ chart_name?: boolean light1?: TrainStopLight light2?: TrainStopLight /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrainStopPrototype.html#drawing_boxes Online documentation} */ drawing_boxes?: TrainStopDrawingBoxes circuit_connector?: readonly [ CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, CircuitConnectorDefinition, ] /** * **Default:** `2` * * Has to be 2 for 2x2 grid. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrainStopPrototype.html#build_grid_size Online documentation} */ build_grid_size?: 2 } /** * Abstract class that anything that is a belt or can connect to belts uses. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TransportBeltConnectablePrototype.html Online documentation} */ export interface TransportBeltConnectablePrototype extends EntityWithOwnerPrototype { type: "lane-splitter" | "linked-belt" | "loader-1x1" | "loader" | "splitter" | "transport-belt" | "underground-belt" belt_animation_set?: TransportBeltAnimationSet /** * The speed of the belt: `speed × 480 = x Items/second`. * * The raw value is expressed as the number of tiles traveled by each item on the belt per tick, relative to the belt's maximum density - e.g. `x items/second ÷ (4 items/lane × 2 lanes/belt × 60 ticks/second) = belts/tick` where a "belt" is the size of one tile. See {@linkplain https://wiki.factorio.com/Transport_belts/Physics Transport_belts/Physics} for more details. * * Must be a positive non-infinite number. The number is a fixed point number with 8 bits reserved for decimal precision, meaning the smallest value step is `1/2^8 = 0.00390625`. In the simple case of a non-curved belt, the rate is multiples of `1.875` items/s, even though the entity tooltip may show a different rate. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TransportBeltConnectablePrototype.html#speed Online documentation} */ speed: double /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TransportBeltConnectablePrototype.html#animation_speed_coefficient Online documentation} */ animation_speed_coefficient?: double /** * **Default:** `Empty = `{{0, 0}, {0, 0}}`` * * Transport belt connectable entities must have {@link EntityPrototype#collision_box collision_box} of an appropriate minimal size, they should occupy more than half of every tile the entity covers. * @example * collision_box = {{-0.4, -0.4}, {0.4, 0.4}} * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TransportBeltConnectablePrototype.html#collision_box Online documentation} */ collision_box?: BoundingBox /** * Transport belt connectable entities cannot have the `"building-direction-8-way"` flag. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TransportBeltConnectablePrototype.html#flags Online documentation} */ flags?: EntityPrototypeFlags } /** * A {@linkplain https://wiki.factorio.com/Transport_belt transport belt}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TransportBeltPrototype.html Online documentation} */ export interface TransportBeltPrototype extends TransportBeltConnectablePrototype { type: "transport-belt" connector_frame_sprites?: TransportBeltConnectorFrame /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TransportBeltPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TransportBeltPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TransportBeltPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean /** * Set of 7 {@link CircuitConnectorDefinition circuit connector definitions} in order: X, H, V, SE, SW, NE and NW. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TransportBeltPrototype.html#circuit_connector Online documentation} */ circuit_connector?: readonly CircuitConnectorDefinition[] belt_animation_set?: TransportBeltAnimationSetWithCorners /** * The name of the {@link UndergroundBeltPrototype} which is used in quick-replace fashion when the smart belt dragging behavior is triggered. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TransportBeltPrototype.html#related_underground_belt Online documentation} */ related_underground_belt?: EntityID } /** * A {@linkplain https://wiki.factorio.com/Tree tree}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TreePrototype.html Online documentation} */ export interface TreePrototype extends EntityWithHealthPrototype { type: "plant" | "tree" variation_weights?: readonly float[] /** * **Default:** `0.5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TreePrototype.html#darkness_of_burnt_tree Online documentation} */ darkness_of_burnt_tree?: float /** * Mandatory if `variations` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TreePrototype.html#pictures Online documentation} */ pictures?: SpriteVariations /** * If defined, it can't be empty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TreePrototype.html#variations Online documentation} */ variations?: readonly TreeVariation[] /** * Mandatory if `variations` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TreePrototype.html#colors Online documentation} */ colors?: readonly Color[] stateless_visualisation_variations?: readonly (StatelessVisualisation | readonly StatelessVisualisation[])[] /** * **Default:** `0.001666` * * The amount of health automatically regenerated. Trees will regenerate every 60 ticks with `healing_per_tick × 60`. * @example * healing_per_tick = 0.01 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TreePrototype.html#healing_per_tick Online documentation} */ healing_per_tick?: float } /** * The base game always internally defines a "common" trigger target type. See {@linkplain https://forums.factorio.com/71657 Design discussion: Trigger target type}. * * _Prototype limited to **56** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TriggerTargetType.html Online documentation} */ export interface TriggerTargetType { readonly type: "trigger-target-type" name: string } /** * Smoke, but it's not an entity for optimization purposes. * * _Prototype limited to **255** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html Online documentation} */ export interface TrivialSmokePrototype extends Prototype { type: "trivial-smoke" animation: Animation /** * Can't be 0 - the smoke will never render. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#duration Online documentation} */ duration: uint32 glow_animation?: Animation /** * **Default:** ``{r=0.375, g=0.375, b=0.375, a=0.375}`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#color Online documentation} */ color?: Color /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#start_scale Online documentation} */ start_scale?: float /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#end_scale Online documentation} */ end_scale?: float /** * **Default:** `0.995` * * Value between 0 and 1, with 1 being no slowdown and 0 being no movement. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#movement_slow_down_factor Online documentation} */ movement_slow_down_factor?: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#spread_duration Online documentation} */ spread_duration?: uint32 /** * **Default:** `0` * * `fade_in_duration` + `fade_away_duration` must be <= `duration`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#fade_away_duration Online documentation} */ fade_away_duration?: uint32 /** * **Default:** `0` * * `fade_in_duration` + `fade_away_duration` must be <= `duration`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#fade_in_duration Online documentation} */ fade_in_duration?: uint32 /** * **Default:** `Value of `fade_away_duration`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#glow_fade_away_duration Online documentation} */ glow_fade_away_duration?: uint32 /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#cyclic Online documentation} */ cyclic?: boolean /** * **Default:** `true` * * Smoke always moves randomly unless `movement_slow_down_factor` is 0. If `affected_by_wind` is true, the smoke will also be moved by wind. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#affected_by_wind Online documentation} */ affected_by_wind?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#show_when_smoke_off Online documentation} */ show_when_smoke_off?: boolean /** * **Default:** `"smoke"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TrivialSmokePrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer } /** * A turret that needs no extra ammunition. See the children for turrets that need some kind of ammunition. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html Online documentation} */ export interface TurretPrototype extends EntityWithOwnerPrototype { type: "ammo-turret" | "electric-turret" | "fluid-turret" | "turret" /** * Requires ammo_type in attack_parameters unless this is a {@link AmmoTurretPrototype}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#attack_parameters Online documentation} */ attack_parameters: AttackParameters folded_animation: RotatedAnimation8Way call_for_help_radius: double /** * **Default:** `all masks` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#attack_target_mask Online documentation} */ attack_target_mask?: TriggerTargetMask /** * **Default:** `no masks` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#ignore_target_mask Online documentation} */ ignore_target_mask?: TriggerTargetMask /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#shoot_in_prepare_state Online documentation} */ shoot_in_prepare_state?: boolean /** * **Default:** `false` * * When `false` the turret will enter `starting_attack` state without checking its ammo or energy levels. {@link FluidTurretPrototype} forces this to `true`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#start_attacking_only_when_can_shoot Online documentation} */ start_attacking_only_when_can_shoot?: boolean /** * **Default:** `false` * * When `true` the turret's collision box will affected by its rotation. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#turret_base_has_direction Online documentation} */ turret_base_has_direction?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#random_animation_offset Online documentation} */ random_animation_offset?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#attack_from_start_frame Online documentation} */ attack_from_start_frame?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#allow_turning_when_starting_attack Online documentation} */ allow_turning_when_starting_attack?: boolean /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#gun_animation_secondary_draw_order Online documentation} */ gun_animation_secondary_draw_order?: uint8 /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#gun_animation_render_layer Online documentation} */ gun_animation_render_layer?: RenderLayer graphics_set: TurretGraphicsSet preparing_animation?: RotatedAnimation8Way prepared_animation?: RotatedAnimation8Way prepared_alternative_animation?: RotatedAnimation8Way starting_attack_animation?: RotatedAnimation8Way attacking_animation?: RotatedAnimation8Way energy_glow_animation?: RotatedAnimation8Way resource_indicator_animation?: RotatedAnimation8Way ending_attack_animation?: RotatedAnimation8Way folding_animation?: RotatedAnimation8Way integration?: Sprite special_effect?: TurretSpecialEffect /** * **Default:** `0` * * The intensity of light in the form of `energy_glow_animation` drawn on top of `energy_glow_animation`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#glow_light_intensity Online documentation} */ glow_light_intensity?: float /** * **Default:** `0.2` * * The range of the flickering of the alpha of `energy_glow_animation`. Default is range 0.2, so animation alpha can be anywhere between 0.8 and 1.0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#energy_glow_animation_flicker_strength Online documentation} */ energy_glow_animation_flicker_strength?: float starting_attack_sound?: Sound dying_sound?: Sound preparing_sound?: Sound folding_sound?: Sound prepared_sound?: Sound prepared_alternative_sound?: Sound rotating_sound?: InterruptibleSound /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#default_speed Online documentation} */ default_speed?: float /** * **Default:** `Value of `default_speed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#default_speed_secondary Online documentation} */ default_speed_secondary?: float /** * **Default:** `Value of `default_speed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#default_speed_when_killed Online documentation} */ default_speed_when_killed?: float /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#default_starting_progress_when_killed Online documentation} */ default_starting_progress_when_killed?: float /** * **Default:** `Value of `default_speed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#rotation_speed Online documentation} */ rotation_speed?: float /** * **Default:** `Value of `default_speed_secondary`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#rotation_speed_secondary Online documentation} */ rotation_speed_secondary?: float /** * **Default:** `Value of `default_speed_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#rotation_speed_when_killed Online documentation} */ rotation_speed_when_killed?: float /** * **Default:** `Value of `default_starting_progress_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#rotation_starting_progress_when_killed Online documentation} */ rotation_starting_progress_when_killed?: float /** * **Default:** `Value of `default_speed`` * * Controls the speed of the preparing_animation: `1 ÷ preparing_speed = duration of the preparing_animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#preparing_speed Online documentation} */ preparing_speed?: float /** * **Default:** `Value of `default_speed_secondary`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#preparing_speed_secondary Online documentation} */ preparing_speed_secondary?: float /** * **Default:** `Value of `default_speed_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#preparing_speed_when_killed Online documentation} */ preparing_speed_when_killed?: float /** * **Default:** `Value of `default_starting_progress_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#preparing_starting_progress_when_killed Online documentation} */ preparing_starting_progress_when_killed?: float /** * **Default:** `Value of `default_speed`` * * It's randomized whether a particular turret uses the primary or the secondary speed for its animations. * * Controls the speed of the folded_animation: `1 ÷ folded_speed = duration of the folded_animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#folded_speed Online documentation} */ folded_speed?: float /** * **Default:** `Value of `default_speed_secondary`` * * It's randomized whether a particular turret uses the primary or the secondary speed for its animations. * * Controls the speed of the folded_animation: `1 ÷ folded_speed_secondary = duration of the folded_animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#folded_speed_secondary Online documentation} */ folded_speed_secondary?: float /** * **Default:** `Value of `default_speed_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#folded_speed_when_killed Online documentation} */ folded_speed_when_killed?: float /** * **Default:** `Value of `default_starting_progress_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#folded_starting_progress_when_killed Online documentation} */ folded_starting_progress_when_killed?: float /** * **Default:** `Value of `default_speed`` * * It's randomized whether a particular turret uses the primary or the secondary speed for its animations. * * Controls the speed of the prepared_animation: `1 ÷ prepared_speed = duration of the prepared_animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#prepared_speed Online documentation} */ prepared_speed?: float /** * **Default:** `Value of `default_speed_secondary`` * * It's randomized whether a particular turret uses the primary or the secondary speed for its animations. * * Controls the speed of the prepared_animation: `1 ÷ prepared_speed_secondary = duration of the prepared_animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#prepared_speed_secondary Online documentation} */ prepared_speed_secondary?: float /** * **Default:** `Value of `default_speed_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#prepared_speed_when_killed Online documentation} */ prepared_speed_when_killed?: float /** * **Default:** `Value of `default_starting_progress_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#prepared_starting_progress_when_killed Online documentation} */ prepared_starting_progress_when_killed?: float /** * **Default:** `Value of `default_speed`` * * It's randomized whether a particular turret uses the primary or the secondary speed for its animations. * * Controls the speed of the prepared_alternative_animation: `1 ÷ prepared_alternative_speed = duration of the prepared_alternative_animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#prepared_alternative_speed Online documentation} */ prepared_alternative_speed?: float /** * **Default:** `Value of `default_speed_secondary`` * * It's randomized whether a particular turret uses the primary or the secondary speed for its animations. * * Controls the speed of the prepared_alternative_animation: `1 ÷ prepared_alternative_speed_secondary = duration of the prepared_alternative_animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#prepared_alternative_speed_secondary Online documentation} */ prepared_alternative_speed_secondary?: float /** * **Default:** `Value of `default_speed_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#prepared_alternative_speed_when_killed Online documentation} */ prepared_alternative_speed_when_killed?: float /** * **Default:** `Value of `default_starting_progress_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#prepared_alternative_starting_progress_when_killed Online documentation} */ prepared_alternative_starting_progress_when_killed?: float /** * **Default:** `0` * * The chance for `prepared_alternative_animation` to be used. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#prepared_alternative_chance Online documentation} */ prepared_alternative_chance?: float /** * **Default:** `Value of `default_speed`` * * Controls the speed of the starting_attack_animation: `1 ÷ starting_attack_speed = duration of the starting_attack_animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#starting_attack_speed Online documentation} */ starting_attack_speed?: float /** * **Default:** `Value of `default_speed_secondary`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#starting_attack_speed_secondary Online documentation} */ starting_attack_speed_secondary?: float /** * **Default:** `Value of `default_speed_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#starting_attack_speed_when_killed Online documentation} */ starting_attack_speed_when_killed?: float /** * **Default:** `Value of `default_starting_progress_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#starting_attack_starting_progress_when_killed Online documentation} */ starting_attack_starting_progress_when_killed?: float /** * **Default:** `1` * * Controls the speed of the attacking_animation: `1 ÷ attacking_speed = duration of the attacking_animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#attacking_speed Online documentation} */ attacking_speed?: float /** * **Default:** `Value of `default_speed`` * * Controls the speed of the ending_attack_animation: `1 ÷ ending_attack_speed = duration of the ending_attack_animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#ending_attack_speed Online documentation} */ ending_attack_speed?: float /** * **Default:** `Value of `default_speed_secondary`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#ending_attack_speed_secondary Online documentation} */ ending_attack_speed_secondary?: float /** * **Default:** `Value of `default_speed_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#ending_attack_speed_when_killed Online documentation} */ ending_attack_speed_when_killed?: float /** * **Default:** `Value of `default_starting_progress_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#ending_attack_starting_progress_when_killed Online documentation} */ ending_attack_starting_progress_when_killed?: float /** * **Default:** `Value of `default_speed`` * * Controls the speed of the folding_animation: `1 ÷ folding_speed = duration of the folding_animation` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#folding_speed Online documentation} */ folding_speed?: float /** * **Default:** `Value of `default_speed_secondary`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#folding_speed_secondary Online documentation} */ folding_speed_secondary?: float /** * **Default:** `Value of `default_speed_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#folding_speed_when_killed Online documentation} */ folding_speed_when_killed?: float /** * **Default:** `Value of `default_starting_progress_when_killed`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#folding_starting_progress_when_killed Online documentation} */ folding_starting_progress_when_killed?: float /** * **Default:** `The range defined in the `attack_parameters`` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#prepare_range Online documentation} */ prepare_range?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#alert_when_attacking Online documentation} */ alert_when_attacking?: boolean /** * **Default:** `false` * * Whether `spawn_decoration` should be spawned when this turret is created through {@linkplain https://wiki.factorio.com/Enemies#Expansions enemy expansion}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#spawn_decorations_on_expansion Online documentation} */ spawn_decorations_on_expansion?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#folded_animation_is_stateless Online documentation} */ folded_animation_is_stateless?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#unfolds_before_dying Online documentation} */ unfolds_before_dying?: boolean /** * Decoratives to be created when the spawner is created by the {@linkplain https://wiki.factorio.com/Map_generator map generator}. Placed when enemies expand if `spawn_decorations_on_expansion` is set to true. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#spawn_decoration Online documentation} */ spawn_decoration?: readonly CreateDecorativesTriggerEffectItem[] folded_state_corpse?: EntityID | readonly EntityID[] /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#can_retarget_while_starting_attack Online documentation} */ can_retarget_while_starting_attack?: boolean /** * **Default:** `true` * * Whether this prototype should be a high priority target for enemy forces. See {@linkplain https://wiki.factorio.com/Military_units_and_structures Military units and structures}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#is_military_target Online documentation} */ is_military_target?: boolean /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean /** * Set of {@link CircuitConnectorDefinition circuit connector definitions} for all directions used by this turret. Required amount of elements is based on other prototype values: 8 elements if building-direction-8-way flag is set, or 16 elements if building-direction-16-way flag is set, or 4 elements if turret_base_has_direction is set to true, or 1 element. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TurretPrototype.html#circuit_connector Online documentation} */ circuit_connector?: readonly CircuitConnectorDefinition[] } /** * The definition of the tutorial to be used in the tips and tricks, see {@link TipsAndTricksItem}. The actual tutorial scripting code is defined in the tutorial scenario. The scenario must be placed in the `tutorials` folder in the mod. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TutorialDefinition.html Online documentation} */ export interface TutorialDefinition extends PrototypeBase { type: "tutorial" /** * Name of the folder for this tutorial scenario in the {@link import("factorio:runtime").mod-structure `tutorials` folder}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TutorialDefinition.html#scenario Online documentation} */ scenario: string /** * **Default:** `Value of `name`` * * Used to order prototypes in inventory, recipes and GUIs. May not exceed a length of 200 characters. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/TutorialDefinition.html#order Online documentation} */ order?: Order } /** * An {@linkplain https://wiki.factorio.com/Underground_belt underground belt}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UndergroundBeltPrototype.html Online documentation} */ export interface UndergroundBeltPrototype extends TransportBeltConnectablePrototype { type: "underground-belt" max_distance: uint8 /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UndergroundBeltPrototype.html#structure Online documentation} */ structure?: UndergroundBeltStructure underground_sprite?: Sprite underground_remove_belts_sprite?: Sprite max_distance_underground_remove_belts_sprite?: Sprite /** * **Default:** `no masks` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UndergroundBeltPrototype.html#underground_collision_mask Online documentation} */ underground_collision_mask?: CollisionMaskConnector max_distance_tint?: Color } /** * Entity that moves around and attacks players, for example {@linkplain https://wiki.factorio.com/Enemies#Creatures biters and spitters}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html Online documentation} */ export interface UnitPrototype extends EntityWithOwnerPrototype { type: "unit" run_animation: RotatedAnimation /** * Requires animation in attack_parameters. Requires ammo_type in attack_parameters. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#attack_parameters Online documentation} */ attack_parameters: AttackParameters /** * A sound the unit makes when it sets out to attack. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#warcry Online documentation} */ warcry?: Sound /** * Movement speed of the unit in the world, in tiles per tick. Must be equal to or greater than 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#movement_speed Online documentation} */ movement_speed: float /** * How fast the `run_animation` frames are advanced. The animations are advanced animation_speed frames per `distance_per_frame` that the unit moves. * * `frames_advanced = (distance_moved ÷ distance_per_frame) * animation_speed` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#distance_per_frame Online documentation} */ distance_per_frame: float distraction_cooldown: uint32 /** * Max is 100. * * Note: Setting to 50 or above can lead to undocumented behavior of individual units creating groups on their own when attacking or being attacked. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#vision_distance Online documentation} */ vision_distance: double /** * **Default:** `0.025` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#rotation_speed Online documentation} */ rotation_speed?: float /** * The sound file to play when entity dies. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#dying_sound Online documentation} */ dying_sound?: Sound /** * **Default:** `600` * * In ticks. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#min_pursue_time Online documentation} */ min_pursue_time?: uint32 /** * **Default:** `false` * * If the unit is immune to movement by belts. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#has_belt_immunity Online documentation} */ has_belt_immunity?: boolean /** * **Default:** `50` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#max_pursue_distance Online documentation} */ max_pursue_distance?: double /** * **Default:** `0` * * In chunks. The radius of how many chunks this unit charts around itself. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#radar_range Online documentation} */ radar_range?: uint32 ai_settings?: UnitAISettings /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#move_while_shooting Online documentation} */ move_while_shooting?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#can_open_gates Online documentation} */ can_open_gates?: boolean /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#affected_by_tiles Online documentation} */ affected_by_tiles?: boolean /** * **Default:** `"object"` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#render_layer Online documentation} */ render_layer?: RenderLayer light?: LightDefinition absorptions_to_join_attack?: Record /** * **Default:** `1` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#spawning_time_modifier Online documentation} */ spawning_time_modifier?: double walking_sound?: Sound alternative_attacking_frame_sequence?: UnitAlternativeFrameSequence /** * Only loaded if `walking_sound` is defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#running_sound_animation_positions Online documentation} */ running_sound_animation_positions?: readonly float[] /** * **Default:** `true` * * Whether this prototype should be a high priority target for enemy forces. See {@linkplain https://wiki.factorio.com/Military_units_and_structures Military units and structures}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#is_military_target Online documentation} */ is_military_target?: true /** * **Default:** `false` * * If this is true, this entities `is_military_target property` can be changed runtime (on the entity, not on the prototype itself). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UnitPrototype.html#allow_run_time_change_of_is_military_target Online documentation} */ allow_run_time_change_of_is_military_target?: false } /** * An {@linkplain https://wiki.factorio.com/Upgrade_planner upgrade planner}. * * For an entity to be allowed as an upgrade source, it must be minable, may not have "not-upgradable" flag set and may not be {@link PrototypeBase#hidden hidden}. Additionally, the source entity's mining result must not be an item product that is {@link ItemPrototype#hidden hidden}. Mining results with no item products are allowed. * * For an entity to be allowed as an upgrade target, it must have least 1 item that builds it that isn't hidden. * * For two entities to be upgrades of each other, the two entities must have the same {@link EntityPrototype#fast_replaceable_group fast replaceable group}, the same {@link EntityPrototype#collision_box collision box} and the same {@link EntityPrototype#collision_mask collision mask}. Additionally, {@link UndergroundBeltPrototype underground belts} cannot be upgraded to {@link TransportBeltPrototype transport belts} and vice versa. * * For an entity to be automatically upgraded to another entity without configuring the upgrade planner, the {@link EntityPrototype#next_upgrade next upgrade} of the upgrade source entity must be set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UpgradeItemPrototype.html Online documentation} */ export interface UpgradeItemPrototype extends SelectionToolPrototype { type: "upgrade-item" /** * Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `"not-stackable"` flag is set. * @example * stack_size = 1 * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UpgradeItemPrototype.html#stack_size Online documentation} */ stack_size: 1 /** * **Default:** `true` * * If the item will draw its label when held in the cursor in place of the item count. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UpgradeItemPrototype.html#draw_label_for_cursor_render Online documentation} */ draw_label_for_cursor_render?: boolean /** * The {@link SelectionModeData#mode SelectionModeData::mode} is hardcoded to `"upgrade"`. * * The filters are parsed, but then ignored and forced to be empty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UpgradeItemPrototype.html#select Online documentation} */ select: SelectionModeData /** * The {@link SelectionModeData#mode SelectionModeData::mode} is hardcoded to `"cancel-upgrade"`. * * The filters are parsed, but then ignored and forced to be empty. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UpgradeItemPrototype.html#alt_select Online documentation} */ alt_select: SelectionModeData /** * **Default:** `false` * * This property is hardcoded to `false`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UpgradeItemPrototype.html#always_include_tiles Online documentation} */ always_include_tiles?: boolean } /** * This prototype is used for receiving an achievement when the player produces energy by entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UseEntityInEnergyProductionAchievementPrototype.html Online documentation} */ export interface UseEntityInEnergyProductionAchievementPrototype extends AchievementPrototype { type: "use-entity-in-energy-production-achievement" /** * This entity is needed to produce energy, for the player to complete the achievement. * @example * entity = "steam-engine" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UseEntityInEnergyProductionAchievementPrototype.html#entity Online documentation} */ entity: EntityID /** * This item need to be consumed before gaining the achievement. * @example * consumed_condition = "uranium-fuel-cell" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UseEntityInEnergyProductionAchievementPrototype.html#consumed_condition Online documentation} */ consumed_condition?: ItemIDFilter /** * This item needs to be produced before gaining the achievement. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UseEntityInEnergyProductionAchievementPrototype.html#produced_condition Online documentation} */ produced_condition?: ItemIDFilter /** * This item need to be built before gaining the achievement. * @example * required_to_build = "nuclear-reactor" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UseEntityInEnergyProductionAchievementPrototype.html#required_to_build Online documentation} */ required_to_build?: EntityID } /** * This prototype is used for receiving an achievement when the player uses a capsule. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UseItemAchievementPrototype.html Online documentation} */ export interface UseItemAchievementPrototype extends AchievementPrototype { type: "use-item-achievement" /** * This will trigger the achievement, if this capsule is used. * @example * to_use = "raw-fish" * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UseItemAchievementPrototype.html#to_use Online documentation} */ to_use: ItemID limit_quality: QualityID /** * **Default:** `1` * * How many capsules need to be used. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UseItemAchievementPrototype.html#amount Online documentation} */ amount?: uint32 /** * **Default:** `false` * * If this is false, the player carries over their statistics from this achievement through all their saves. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UseItemAchievementPrototype.html#limited_to_one_game Online documentation} */ limited_to_one_game?: boolean } /** * Constants used by the game that are not specific to certain prototypes. See {@linkplain https://github.com/wube/factorio-data/blob/master/core/prototypes/utility-constants.lua utility-constants.lua} for the values used by the base game. * * _Prototype limited to **1** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html Online documentation} */ export interface UtilityConstants extends PrototypeBase { type: "utility-constants" 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 means map and minimap. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#chart Online documentation} */ 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: readonly Color[] /** * The table with `name = "default"` must exist and be the first member of the array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#player_colors Online documentation} */ player_colors: readonly PlayerColorData[] server_command_console_chat_color: Color script_command_console_chat_color: Color default_alert_icon_scale: float default_alert_icon_shift_by_type?: Record default_alert_icon_scale_by_type?: Record /** * The base game uses more entries here that are applied via the ammo-category.lua file. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#bonus_gui_ordering Online documentation} */ bonus_gui_ordering: BonusGuiOrdering /** * If not set, defaults to 'true' when modded and 'false' when vanilla. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#merge_bonus_gui_production_bonuses Online documentation} */ merge_bonus_gui_production_bonuses?: boolean daytime_color_lookup: DaytimeColorLookupTable zoom_to_world_daytime_color_lookup: DaytimeColorLookupTable frozen_color_lookup: ColorLookupTable /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#map_editor Online documentation} */ map_editor: MapEditorConstants 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 /** * There must be one array item with a threshold of `0`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#item_health_bar_colors Online documentation} */ item_health_bar_colors: readonly ItemHealthColorData[] 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 /** * The strings are entity types. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#default_trigger_target_mask_by_type Online documentation} */ default_trigger_target_mask_by_type?: Record 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 /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#entity_renderer_search_box_limits Online documentation} */ entity_renderer_search_box_limits: EntityRendererSearchBoxLimits /** * Can be set to anything from range 0 to 255, but larger values will be clamped to 160. Setting it to larger values can have performance impact (growing geometrically). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#light_renderer_search_distance_limit Online documentation} */ 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 /** * The strings represent the names of the simulations. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#main_menu_simulations Online documentation} */ main_menu_simulations?: Record 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 /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#color_filters Online documentation} */ color_filters?: readonly ColorFilterData[] 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 /** * Variables: speed, thrust, weight, width, height * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#space_platform_acceleration_expression Online documentation} */ space_platform_acceleration_expression: MathExpression space_platform_relative_speed_factor: double space_platform_starfield_movement_vector: Vector space_platform_max_size: SimpleBoundingBox /** * Determines how fast space platforms will send items in drop slots to the surface. Each item type has its own cooldown. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#space_platform_dump_cooldown Online documentation} */ space_platform_dump_cooldown: uint32 /** * Delay after manual transfer until space platform sends items in drop slots to the surface. Overrides remaining space_platform_dump_cooldown in this instance. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#space_platform_manual_dump_cooldown Online documentation} */ space_platform_manual_dump_cooldown: uint32 /** * Space platform remembers relative speed range which asteroids use while it moves. When the range is larger than the specified deviation, the platform will start updating cached trajectories of all asteroid chunks over multiple ticks. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#space_platform_max_relative_speed_deviation_for_asteroid_chunks_update Online documentation} */ space_platform_max_relative_speed_deviation_for_asteroid_chunks_update: float /** * How many asteroid chunks should be processed per tick, see {@link UtilityConstants#space_platform_max_relative_speed_deviation_for_asteroid_chunks_update space_platform_max_relative_speed_deviation_for_asteroid_chunks_update}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#space_platform_asteroid_chunk_trajectory_updates_per_tick Online documentation} */ space_platform_asteroid_chunk_trajectory_updates_per_tick: uint32 default_item_weight: Weight rocket_lift_weight: Weight factoriopedia_recycling_recipe_categories: readonly RecipeCategoryID[] max_fluid_flow: FluidAmount /** * The default value of {@link FluidBox#max_pipeline_extent FluidBox::max_pipeline_extent}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#default_pipeline_extent Online documentation} */ default_pipeline_extent: double /** * Must contain arrival and departure with {@link ProcessionPrototype#procession_style procession_style} containing 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#default_platform_procession_set Online documentation} */ default_platform_procession_set: ProcessionSet /** * Must contain arrival and departure with {@link ProcessionPrototype#procession_style procession_style} containing 0. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#default_planet_procession_set Online documentation} */ default_planet_procession_set: ProcessionSet /** * Radius of area where cargo pods won't land. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#landing_area_clear_zone_radius Online documentation} */ landing_area_clear_zone_radius: float /** * Max radius where cargo pods will land. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#landing_area_max_radius Online documentation} */ landing_area_max_radius: float lightning_attractor_collection_range_color: Color lightning_attractor_protection_range_color: Color landing_squash_immunity: MapTick /** * Silently clamped to be between 1 tick and 5 minutes (`5 * 60 * 60` ticks). * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#ejected_item_lifetime Online documentation} */ ejected_item_lifetime: MapTick /** * Silently clamped to be between 0 and 1/60. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#ejected_item_speed Online documentation} */ ejected_item_speed: double /** * Silently clamped to be between 0 and 0.99. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#ejected_item_direction_variation Online documentation} */ ejected_item_direction_variation: double /** * Silently clamped to be between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#ejected_item_friction Online documentation} */ ejected_item_friction: double train_visualization: TrainVisualizationConstants /** * The strings can be entity types or custom strings. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#default_collision_masks Online documentation} */ default_collision_masks: Record 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 /** * Must be >= 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#max_belt_stack_size Online documentation} */ max_belt_stack_size: uint8 /** * Must be >= 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#inserter_hand_stack_items_per_sprite Online documentation} */ inserter_hand_stack_items_per_sprite: ItemCountType /** * Must be >= 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#inserter_hand_stack_max_sprites Online documentation} */ 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 /** * Silently clamped to be between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#walking_sound_count_reduction_rate Online documentation} */ walking_sound_count_reduction_rate: float /** * Silently clamped to be between 0 and 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#moving_sound_count_reduction_rate Online documentation} */ 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 /** * The number of ticks to show a segmented unit's health bar after fully regenerating. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#time_to_show_full_health_bar Online documentation} */ time_to_show_full_health_bar: MapTick /** * Layer within `ground-natural` {@link TileRenderLayer tile render layer} group, before which terrain lightmap alpha channel is copied into water mask. Decals, which need to be masked by water should have their {@link DecorativePrototype#tile_layer DecorativePrototype::tile_layer} set to only slightly larger value than `capture_water_mask_at_layer`, to avoid risk of undefined behavior caused by rendering tiles into layers between `capture_water_mask_at_layer` and decal's `tile_layer`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#capture_water_mask_at_layer Online documentation} */ 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 /** * Cap for how many steps of quality the output of something (miner/crafter) may be higher than the input (resource/ingredients). Must be >= 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#maximum_quality_jump Online documentation} */ maximum_quality_jump: uint8 /** * Will be clamped to the range [1, 100]. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#select_group_row_count Online documentation} */ select_group_row_count: uint8 /** * Will be clamped to the range [1, 100]. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#select_slot_row_count Online documentation} */ select_slot_row_count: uint8 /** * Will be clamped to the range [1, 100]. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#crafting_queue_slots_per_row Online documentation} */ crafting_queue_slots_per_row: uint8 /** * Will be clamped to the range [2, 100]. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#logistic_slots_per_row Online documentation} */ logistic_slots_per_row: uint8 /** * Will be clamped to the range [2, 100]. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#blueprint_big_slots_per_row Online documentation} */ blueprint_big_slots_per_row: uint8 /** * Will be clamped to the range [2, 100]. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#blueprint_small_slots_per_row Online documentation} */ blueprint_small_slots_per_row: uint8 /** * Will be clamped to the range [1, 100]. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#inventory_width Online documentation} */ inventory_width: uint8 /** * Will be clamped to the range [1, 100]. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#module_inventory_width Online documentation} */ module_inventory_width: uint8 /** * Will be clamped to the range [1, 100]. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#trash_inventory_width Online documentation} */ trash_inventory_width: uint8 /** * Must be >= 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#tooltip_monitor_edge_border Online documentation} */ tooltip_monitor_edge_border: int32 /** * Must be >= 1. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#flying_text_ttl Online documentation} */ flying_text_ttl: uint32 /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilityConstants.html#train_path_finding Online documentation} */ train_path_finding: TrainPathFinderConstants } /** * Sounds used by the game that are not specific to certain prototypes. * * _Prototype limited to **1** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilitySounds.html Online documentation} */ export interface UtilitySounds extends PrototypeBase { type: "utility-sounds" 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 /** * Only present when the Space Age mod is loaded. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilitySounds.html#segment_dying_sound Online documentation} */ segment_dying_sound?: Sound } /** * Sprites used by the game that are not specific to certain prototypes. * * _Prototype limited to **1** total instances_ * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilitySprites.html Online documentation} */ export interface UtilitySprites extends PrototypeBase { type: "utility-sprites" /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilitySprites.html#cursor_box Online documentation} */ cursor_box: CursorBoxSpecification /** * Only present when the Space Age mod is loaded. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilitySprites.html#platform_entity_build_animations Online documentation} */ platform_entity_build_animations?: EntityBuildAnimations 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 /** * The sprite will be drawn on top of {@link FluidTurretPrototype fluid turrets} that are out of fluid ammunition and don't have {@link FluidTurretPrototype#out_of_ammo_alert_icon FluidTurretPrototype::out_of_ammo_alert_icon} set. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/UtilitySprites.html#fluid_icon Online documentation} */ 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 inserter_stack_size_bonus_modifier_constant?: Sprite bulk_inserter_capacity_bonus_modifier_icon: Sprite bulk_inserter_capacity_bonus_modifier_constant?: Sprite laboratory_speed_modifier_icon: Sprite laboratory_speed_modifier_constant?: Sprite character_logistic_trash_slots_modifier_icon: Sprite character_logistic_trash_slots_modifier_constant?: Sprite maximum_following_robots_count_modifier_icon: Sprite maximum_following_robots_count_modifier_constant?: Sprite worker_robot_speed_modifier_icon: Sprite worker_robot_speed_modifier_constant?: Sprite worker_robot_storage_modifier_icon: Sprite worker_robot_storage_modifier_constant?: Sprite create_ghost_on_entity_death_modifier_icon: Sprite create_ghost_on_entity_death_modifier_constant?: Sprite turret_attack_modifier_icon: Sprite turret_attack_modifier_constant?: Sprite ammo_damage_modifier_icon: Sprite ammo_damage_modifier_constant?: Sprite give_item_modifier_icon: Sprite give_item_modifier_constant?: Sprite gun_speed_modifier_icon: Sprite gun_speed_modifier_constant?: Sprite unlock_recipe_modifier_icon: Sprite unlock_recipe_modifier_constant?: Sprite character_crafting_speed_modifier_icon: Sprite character_crafting_speed_modifier_constant?: Sprite character_mining_speed_modifier_icon: Sprite character_mining_speed_modifier_constant?: Sprite character_running_speed_modifier_icon: Sprite character_running_speed_modifier_constant?: Sprite character_build_distance_modifier_icon: Sprite character_build_distance_modifier_constant?: Sprite character_item_drop_distance_modifier_icon: Sprite character_item_drop_distance_modifier_constant?: Sprite character_reach_distance_modifier_icon: Sprite character_reach_distance_modifier_constant?: Sprite character_resource_reach_distance_modifier_icon: Sprite character_resource_reach_distance_modifier_constant?: Sprite character_item_pickup_distance_modifier_icon: Sprite character_item_pickup_distance_modifier_constant?: Sprite character_loot_pickup_distance_modifier_icon: Sprite character_loot_pickup_distance_modifier_constant?: Sprite character_inventory_slots_bonus_modifier_icon: Sprite character_inventory_slots_bonus_modifier_constant?: Sprite deconstruction_time_to_live_modifier_icon: Sprite deconstruction_time_to_live_modifier_constant?: Sprite max_failed_attempts_per_tick_per_construction_queue_modifier_icon: Sprite max_failed_attempts_per_tick_per_construction_queue_modifier_constant?: Sprite max_successful_attempts_per_tick_per_construction_queue_modifier_icon: Sprite max_successful_attempts_per_tick_per_construction_queue_modifier_constant?: Sprite character_health_bonus_modifier_icon: Sprite character_health_bonus_modifier_constant?: Sprite mining_drill_productivity_bonus_modifier_icon: Sprite mining_drill_productivity_bonus_modifier_constant?: Sprite train_braking_force_bonus_modifier_icon: Sprite train_braking_force_bonus_modifier_constant?: Sprite worker_robot_battery_modifier_icon: Sprite worker_robot_battery_modifier_constant?: Sprite laboratory_productivity_modifier_icon: Sprite laboratory_productivity_modifier_constant?: Sprite follower_robot_lifetime_modifier_icon: Sprite follower_robot_lifetime_modifier_constant?: Sprite artillery_range_modifier_icon: Sprite artillery_range_modifier_constant?: Sprite nothing_modifier_icon: Sprite nothing_modifier_constant?: Sprite character_additional_mining_categories_modifier_icon: Sprite character_additional_mining_categories_modifier_constant?: Sprite character_logistic_requests_modifier_icon: Sprite character_logistic_requests_modifier_constant?: Sprite unlock_space_location_modifier_icon: Sprite unlock_space_location_modifier_constant?: Sprite unlock_quality_modifier_icon: Sprite unlock_quality_modifier_constant?: Sprite unlock_space_platforms_modifier_icon: Sprite unlock_space_platforms_modifier_constant?: Sprite unlock_circuit_network_modifier_icon: Sprite unlock_circuit_network_modifier_constant?: Sprite cargo_landing_pad_count_modifier_icon: Sprite cargo_landing_pad_count_modifier_constant?: Sprite change_recipe_productivity_modifier_icon: Sprite change_recipe_productivity_modifier_constant?: Sprite cliff_deconstruction_enabled_modifier_icon: Sprite cliff_deconstruction_enabled_modifier_constant?: Sprite mining_with_fluid_modifier_icon: Sprite mining_with_fluid_modifier_constant?: Sprite rail_support_on_deep_oil_ocean_modifier_icon: Sprite rail_support_on_deep_oil_ocean_modifier_constant?: Sprite rail_planner_allow_elevated_rails_modifier_icon: Sprite rail_planner_allow_elevated_rails_modifier_constant?: Sprite beacon_distribution_modifier_icon: Sprite beacon_distribution_modifier_constant?: Sprite belt_stack_size_bonus_modifier_icon: Sprite belt_stack_size_bonus_modifier_constant?: Sprite vehicle_logistics_modifier_icon: Sprite vehicle_logistics_modifier_constant?: Sprite } /** * A passive device that provides limited control of fluid flow between pipelines. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ValvePrototype.html Online documentation} */ export interface ValvePrototype extends EntityWithOwnerPrototype { type: "valve" mode: ValveMode /** * **Default:** `0` * * Ignored if {@link ValvePrototype#mode ValvePrototype::mode} is `"one-way"`. Must be between `0` and `1` inclusive. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ValvePrototype.html#threshold Online documentation} */ threshold?: float /** * Must have at least one `"output"` {@link FluidFlowDirection} and at least one `"input-output"` {@link FluidFlowDirection}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ValvePrototype.html#fluid_box Online documentation} */ fluid_box: FluidBox /** * The max flow rate through the valve per tick. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/ValvePrototype.html#flow_rate Online documentation} */ flow_rate: FluidAmount animations?: Animation4Way frozen_patch?: Sprite4Way } /** * Abstract base of all vehicles. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html Online documentation} */ export interface VehiclePrototype extends EntityWithOwnerPrototype { type: | "artillery-wagon" | "car" | "cargo-wagon" | "fluid-wagon" | "infinity-cargo-wagon" | "locomotive" | "spider-vehicle" /** * Must be positive. Weight of the entity used for physics calculation when car hits something. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#weight Online documentation} */ weight: double /** * Must be positive. There is no functional difference between the two ways to set braking power/force. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#braking_power Online documentation} */ braking_power: Energy | double braking_force: Energy | double /** * Must be positive. There is no functional difference between the two ways to set friction force. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#friction Online documentation} */ friction: double friction_force: double /** * The (movement) energy used per hit point (1 hit point = 1 health damage) taken and dealt for this vehicle during collisions. The smaller the number, the more damage this vehicle and the rammed entity take during collisions: `damage = energy / energy_per_hit_point`. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#energy_per_hit_point Online documentation} */ energy_per_hit_point: double /** * **Default:** `1` * * Must be in the [0, 1] interval. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#terrain_friction_modifier Online documentation} */ terrain_friction_modifier?: float /** * **Default:** `5` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#impact_speed_to_volume_ratio Online documentation} */ impact_speed_to_volume_ratio?: double /** * **Default:** `0` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#stop_trigger_speed Online documentation} */ stop_trigger_speed?: double crash_trigger?: TriggerEffect stop_trigger?: TriggerEffect /** * The name of the {@link EquipmentGridPrototype} this vehicle has. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#equipment_grid Online documentation} */ equipment_grid?: EquipmentGridID /** * The sprite that represents this vehicle on the map/minimap. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#minimap_representation Online documentation} */ minimap_representation?: Sprite /** * The sprite that represents this vehicle on the map/minimap when it is selected. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#selected_minimap_representation Online documentation} */ selected_minimap_representation?: Sprite /** * **Default:** `true` * * Determines whether this vehicle accepts passengers. This includes both drivers and gunners, if applicable. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#allow_passengers Online documentation} */ allow_passengers?: boolean /** * **Default:** `""` * * Name of a {@link DeliverCategory}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#deliver_category Online documentation} */ deliver_category?: string /** * **Default:** `0` * * In chunks. The radius of the radar range of the vehicle, so how many chunks it charts around itself. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#chunk_exploration_radius Online documentation} */ chunk_exploration_radius?: uint32 /** * **Default:** `false` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VehiclePrototype.html#allow_remote_driving Online documentation} */ allow_remote_driving?: boolean } /** * A {@linkplain https://wiki.factorio.com/Circuit_network#Virtual_signals virtual signal}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VirtualSignalPrototype.html Online documentation} */ export interface VirtualSignalPrototype extends Prototype { type: "virtual-signal" /** * The icon that is used to represent this virtual signal. Can't be an empty array. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VirtualSignalPrototype.html#icons Online documentation} */ icons?: readonly IconData[] /** * Path to the icon file that is used to represent this virtual signal. * * Only loaded, and mandatory if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VirtualSignalPrototype.html#icon Online documentation} */ icon?: FileName /** * **Default:** `64` * * The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`. * * Only loaded if `icons` is not defined. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/VirtualSignalPrototype.html#icon_size Online documentation} */ icon_size?: SpriteSizeType } /** * A {@linkplain https://wiki.factorio.com/Wall wall}. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/WallPrototype.html Online documentation} */ export interface WallPrototype extends EntityWithOwnerPrototype { type: "wall" /** * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/WallPrototype.html#pictures Online documentation} */ pictures?: WallPictures /** * **Default:** `0` * * Different walls will visually connect to each other if their merge group is the same. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/WallPrototype.html#visual_merge_group Online documentation} */ visual_merge_group?: uint32 /** * **Default:** `0` * * The maximum circuit wire distance for this entity. * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/WallPrototype.html#circuit_wire_max_distance Online documentation} */ circuit_wire_max_distance?: double /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/WallPrototype.html#draw_copper_wires Online documentation} */ draw_copper_wires?: boolean /** * **Default:** `true` * @see {@link https://lua-api.factorio.com/2.0.75/prototypes/WallPrototype.html#draw_circuit_wires Online documentation} */ draw_circuit_wires?: boolean circuit_connector?: CircuitConnectorDefinition default_output_signal?: SignalIDConnector wall_diode_green?: Sprite4Way wall_diode_red?: Sprite4Way wall_diode_green_light_top?: LightDefinition wall_diode_green_light_right?: LightDefinition wall_diode_green_light_bottom?: LightDefinition wall_diode_green_light_left?: LightDefinition wall_diode_red_light_top?: LightDefinition wall_diode_red_light_right?: LightDefinition wall_diode_red_light_bottom?: LightDefinition wall_diode_red_light_left?: LightDefinition connected_gate_visualization?: Sprite } export interface PrototypeMap { accumulator: AccumulatorPrototype achievement: AchievementPrototype "active-defense-equipment": ActiveDefenseEquipmentPrototype "agricultural-tower": AgriculturalTowerPrototype "airborne-pollutant": AirbornePollutantPrototype "ambient-sound": AmbientSound "ammo-category": AmmoCategory ammo: AmmoItemPrototype "ammo-turret": AmmoTurretPrototype animation: AnimationPrototype "arithmetic-combinator": ArithmeticCombinatorPrototype armor: ArmorPrototype arrow: ArrowPrototype "artillery-flare": ArtilleryFlarePrototype "artillery-projectile": ArtilleryProjectilePrototype "artillery-turret": ArtilleryTurretPrototype "artillery-wagon": ArtilleryWagonPrototype "assembling-machine": AssemblingMachinePrototype "asteroid-chunk": AsteroidChunkPrototype "asteroid-collector": AsteroidCollectorPrototype asteroid: AsteroidPrototype "autoplace-control": AutoplaceControl "battery-equipment": BatteryEquipmentPrototype beacon: BeaconPrototype beam: BeamPrototype "belt-immunity-equipment": BeltImmunityEquipmentPrototype "blueprint-book": BlueprintBookPrototype blueprint: BlueprintItemPrototype boiler: BoilerPrototype "build-entity-achievement": BuildEntityAchievementPrototype "burner-generator": BurnerGeneratorPrototype "burner-usage": BurnerUsagePrototype capsule: CapsulePrototype "capture-robot": CaptureRobotPrototype car: CarPrototype "cargo-bay": CargoBayPrototype "cargo-landing-pad": CargoLandingPadPrototype "cargo-pod": CargoPodPrototype "cargo-wagon": CargoWagonPrototype "chain-active-trigger": ChainActiveTriggerPrototype "change-surface-achievement": ChangedSurfaceAchievementPrototype "character-corpse": CharacterCorpsePrototype character: CharacterPrototype cliff: CliffPrototype "collision-layer": CollisionLayerPrototype "combat-robot-count-achievement": CombatRobotCountAchievementPrototype "combat-robot": CombatRobotPrototype "complete-objective-achievement": CompleteObjectiveAchievementPrototype "constant-combinator": ConstantCombinatorPrototype "construct-with-robots-achievement": ConstructWithRobotsAchievementPrototype "construction-robot": ConstructionRobotPrototype container: ContainerPrototype "copy-paste-tool": CopyPasteToolPrototype corpse: CorpsePrototype "create-platform-achievement": CreatePlatformAchievementPrototype "curved-rail-a": CurvedRailAPrototype "curved-rail-b": CurvedRailBPrototype "custom-event": CustomEventPrototype "custom-input": CustomInputPrototype "damage-type": DamageType "decider-combinator": DeciderCombinatorPrototype "deconstruct-with-robots-achievement": DeconstructWithRobotsAchievementPrototype "deconstructible-tile-proxy": DeconstructibleTileProxyPrototype "deconstruction-item": DeconstructionItemPrototype "optimized-decorative": DecorativePrototype "delayed-active-trigger": DelayedActiveTriggerPrototype "deliver-by-robots-achievement": DeliverByRobotsAchievementPrototype "deliver-category": DeliverCategory "deliver-impact-combination": DeliverImpactCombination "deplete-resource-achievement": DepleteResourceAchievementPrototype "destroy-cliff-achievement": DestroyCliffAchievementPrototype "display-panel": DisplayPanelPrototype "dont-build-entity-achievement": DontBuildEntityAchievementPrototype "dont-craft-manually-achievement": DontCraftManuallyAchievementPrototype "dont-kill-manually-achievement": DontKillManuallyAchievementPrototype "dont-research-before-researching-achievement": DontResearchBeforeResearchingAchievementPrototype "dont-use-entity-in-energy-production-achievement": DontUseEntityInEnergyProductionAchievementPrototype "editor-controller": EditorControllerPrototype "electric-energy-interface": ElectricEnergyInterfacePrototype "electric-pole": ElectricPolePrototype "electric-turret": ElectricTurretPrototype "elevated-curved-rail-a": ElevatedCurvedRailAPrototype "elevated-curved-rail-b": ElevatedCurvedRailBPrototype "elevated-half-diagonal-rail": ElevatedHalfDiagonalRailPrototype "elevated-straight-rail": ElevatedStraightRailPrototype "unit-spawner": EnemySpawnerPrototype "energy-shield-equipment": EnergyShieldEquipmentPrototype "entity-ghost": EntityGhostPrototype "equip-armor-achievement": EquipArmorAchievementPrototype "equipment-category": EquipmentCategory "equipment-ghost": EquipmentGhostPrototype "equipment-grid": EquipmentGridPrototype explosion: ExplosionPrototype fire: FireFlamePrototype fish: FishPrototype fluid: FluidPrototype stream: FluidStreamPrototype "fluid-turret": FluidTurretPrototype "fluid-wagon": FluidWagonPrototype font: FontPrototype "fuel-category": FuelCategory furnace: FurnacePrototype "fusion-generator": FusionGeneratorPrototype "fusion-reactor": FusionReactorPrototype gate: GatePrototype "generator-equipment": GeneratorEquipmentPrototype generator: GeneratorPrototype "god-controller": GodControllerPrototype "group-attack-achievement": GroupAttackAchievementPrototype "gui-style": GuiStyle gun: GunPrototype "half-diagonal-rail": HalfDiagonalRailPrototype "heat-interface": HeatInterfacePrototype "heat-pipe": HeatPipePrototype "highlight-box": HighlightBoxEntityPrototype "impact-category": ImpactCategory "infinity-cargo-wagon": InfinityCargoWagonPrototype "infinity-container": InfinityContainerPrototype "infinity-pipe": InfinityPipePrototype inserter: InserterPrototype "inventory-bonus-equipment": InventoryBonusEquipmentPrototype "item-entity": ItemEntityPrototype "item-group": ItemGroup item: ItemPrototype "item-request-proxy": ItemRequestProxyPrototype "item-subgroup": ItemSubGroup "item-with-entity-data": ItemWithEntityDataPrototype "item-with-inventory": ItemWithInventoryPrototype "item-with-label": ItemWithLabelPrototype "item-with-tags": ItemWithTagsPrototype "kill-achievement": KillAchievementPrototype lab: LabPrototype lamp: LampPrototype "land-mine": LandMinePrototype "lane-splitter": LaneSplitterPrototype "legacy-curved-rail": LegacyCurvedRailPrototype "legacy-straight-rail": LegacyStraightRailPrototype "lightning-attractor": LightningAttractorPrototype lightning: LightningPrototype "linked-belt": LinkedBeltPrototype "linked-container": LinkedContainerPrototype "loader-1x1": Loader1x1Prototype loader: Loader1x2Prototype locomotive: LocomotivePrototype "logistic-container": LogisticContainerPrototype "logistic-robot": LogisticRobotPrototype "map-gen-presets": MapGenPresets "map-settings": MapSettings market: MarketPrototype "mining-drill": MiningDrillPrototype "mod-data": ModData "module-category": ModuleCategory module: ModulePrototype "module-transfer-achievement": ModuleTransferAchievementPrototype "mouse-cursor": MouseCursor "movement-bonus-equipment": MovementBonusEquipmentPrototype "noise-expression": NamedNoiseExpression "noise-function": NamedNoiseFunction "night-vision-equipment": NightVisionEquipmentPrototype "offshore-pump": OffshorePumpPrototype "optimized-particle": ParticlePrototype "particle-source": ParticleSourcePrototype pipe: PipePrototype "pipe-to-ground": PipeToGroundPrototype "place-equipment-achievement": PlaceEquipmentAchievementPrototype planet: PlanetPrototype plant: PlantPrototype "player-damaged-achievement": PlayerDamagedAchievementPrototype /** * @deprecated */ "player-port": PlayerPortPrototype "power-switch": PowerSwitchPrototype "procession-layer-inheritance-group": ProcessionLayerInheritanceGroup procession: ProcessionPrototype "produce-achievement": ProduceAchievementPrototype "produce-per-hour-achievement": ProducePerHourAchievementPrototype "programmable-speaker": ProgrammableSpeakerPrototype projectile: ProjectilePrototype "proxy-container": ProxyContainerPrototype pump: PumpPrototype quality: QualityPrototype radar: RadarPrototype "rail-chain-signal": RailChainSignalPrototype "rail-planner": RailPlannerPrototype "rail-ramp": RailRampPrototype "rail-remnants": RailRemnantsPrototype "rail-signal": RailSignalPrototype "rail-support": RailSupportPrototype reactor: ReactorPrototype "recipe-category": RecipeCategory recipe: RecipePrototype "remote-controller": RemoteControllerPrototype "repair-tool": RepairToolPrototype "research-achievement": ResearchAchievementPrototype "research-with-science-pack-achievement": ResearchWithSciencePackAchievementPrototype "resource-category": ResourceCategory resource: ResourceEntityPrototype "roboport-equipment": RoboportEquipmentPrototype roboport: RoboportPrototype "rocket-silo": RocketSiloPrototype "rocket-silo-rocket": RocketSiloRocketPrototype "rocket-silo-rocket-shadow": RocketSiloRocketShadowPrototype segment: SegmentPrototype "segmented-unit": SegmentedUnitPrototype "selection-tool": SelectionToolPrototype "selector-combinator": SelectorCombinatorPrototype "shoot-achievement": ShootAchievementPrototype shortcut: ShortcutPrototype "simple-entity": SimpleEntityPrototype "simple-entity-with-force": SimpleEntityWithForcePrototype "simple-entity-with-owner": SimpleEntityWithOwnerPrototype "smoke-with-trigger": SmokeWithTriggerPrototype "solar-panel-equipment": SolarPanelEquipmentPrototype "solar-panel": SolarPanelPrototype sound: SoundPrototype "space-connection-distance-traveled-achievement": SpaceConnectionDistanceTraveledAchievementPrototype "space-connection": SpaceConnectionPrototype "space-location": SpaceLocationPrototype "space-platform-hub": SpacePlatformHubPrototype "space-platform-starter-pack": SpacePlatformStarterPackPrototype "spectator-controller": SpectatorControllerPrototype "speech-bubble": SpeechBubblePrototype "spider-leg": SpiderLegPrototype "spider-unit": SpiderUnitPrototype "spider-vehicle": SpiderVehiclePrototype "spidertron-remote": SpidertronRemotePrototype splitter: SplitterPrototype sprite: SpritePrototype sticker: StickerPrototype "storage-tank": StorageTankPrototype "straight-rail": StraightRailPrototype "surface-property": SurfacePropertyPrototype surface: SurfacePrototype technology: TechnologyPrototype "temporary-container": TemporaryContainerPrototype thruster: ThrusterPrototype "tile-effect": TileEffectDefinition "tile-ghost": TileGhostPrototype tile: TilePrototype "tips-and-tricks-item": TipsAndTricksItem "tips-and-tricks-item-category": TipsAndTricksItemCategory tool: ToolPrototype "train-path-achievement": TrainPathAchievementPrototype "train-stop": TrainStopPrototype "transport-belt": TransportBeltPrototype tree: TreePrototype "trigger-target-type": TriggerTargetType "trivial-smoke": TrivialSmokePrototype turret: TurretPrototype tutorial: TutorialDefinition "underground-belt": UndergroundBeltPrototype unit: UnitPrototype "upgrade-item": UpgradeItemPrototype "use-entity-in-energy-production-achievement": UseEntityInEnergyProductionAchievementPrototype "use-item-achievement": UseItemAchievementPrototype "utility-constants": UtilityConstants "utility-sounds": UtilitySounds "utility-sprites": UtilitySprites valve: ValvePrototype "virtual-signal": VirtualSignalPrototype wall: WallPrototype } /** * A map of prototype subclass types to their prototype types. * @deprecated Use defines.prototypes instead. */ export type PrototypeSubclassMap = defines.prototypes /** * All prototype types. */ export type PrototypeType = keyof PrototypeMap /** * All achievement prototype subclass types. */ export type AchievementType = keyof defines.prototypes["achievement"] /** * All active-trigger prototype subclass types. */ export type ActiveTriggerType = keyof defines.prototypes["active-trigger"] /** * All entity prototype subclass types. */ export type EntityType = keyof defines.prototypes["entity"] /** * All equipment prototype subclass types. */ export type EquipmentType = keyof defines.prototypes["equipment"] /** * All item prototype subclass types. */ export type ItemType = keyof defines.prototypes["item"] /** * All space-location prototype subclass types. */ export type SpaceLocationType = keyof defines.prototypes["space-location"] }