---@meta ---@diagnostic disable --$Factorio 1.1.72 --$Overlay 5 --$Section concepts -- This file is automatically generated. Edits will be overwritten. ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AchievementPrototypeFilter) ---@class AchievementPrototypeFilter ---The condition to filter on. One of `"allowed-without-fight"`, `"type"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AchievementPrototypeFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AchievementPrototypeFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AchievementPrototypeFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type, or a list of acceptable types. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AchievementPrototypeFilter) ---@field type string|string[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AdvancedMapGenSettings) ---@class AdvancedMapGenSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AdvancedMapGenSettings) ---@field pollution PollutionMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AdvancedMapGenSettings) ---@field enemy_evolution EnemyEvolutionMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AdvancedMapGenSettings) ---@field enemy_expansion EnemyExpansionMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AdvancedMapGenSettings) ---@field difficulty_settings DifficultySettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Alert) ---@class Alert ---The tick this alert was created. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Alert) ---@field tick uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Alert) ---@field target? LuaEntity ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Alert) ---@field prototype? LuaEntityPrototype ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Alert) ---@field position? MapPosition ---The SignalID used for a custom alert. Only present for custom alerts. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Alert) ---@field icon? SignalID ---The message for a custom alert. Only present for custom alerts. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Alert) ---@field message? LocalisedString ---A [string](https://lua-api.factorio.com/latest/Builtin-Types.html#string) that specifies where a GUI element should be. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Alignment) ---@alias Alignment "top-left"|"middle-left"|"left"|"bottom-left"|"top-center"|"middle-center"|"center"|"bottom-center"|"top-right"|"right"|"bottom-right" ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AmmoType) ---@class AmmoType ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AmmoType) ---@field action? TriggerItem[] ---One of `"entity"` (fires at an entity), `"position"` (fires directly at a position), or `"direction"` (fires in a direction). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AmmoType) ---@field target_type string ---When `true`, the gun will be able to shoot even when the target is out of range. Only applies when `target_type` is `position`. The gun will fire at the maximum range in the direction of the target position. Defaults to `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AmmoType) ---@field clamp_position? boolean ---Ammo category of this ammo. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AmmoType) ---@field category string ---Energy consumption of a single shot, if applicable. Defaults to `0`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AmmoType) ---@field energy_consumption? double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AmmoType) ---@field range_modifier? double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AmmoType) ---@field cooldown_modifier? double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AmmoType) ---@field consumption_modifier? double ---Any basic type (string, number, boolean), table, or LuaObject. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Any) ---@alias Any string|boolean|number|table|LuaObject ---Any basic type (string, number, boolean) or table. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AnyBasic) ---@alias AnyBasic string|boolean|number|table ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ArithmeticCombinatorParameters) ---@class ArithmeticCombinatorParameters ---First signal to use in an operation. If not specified, the second argument will be the value of `first_constant`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ArithmeticCombinatorParameters) ---@field first_signal? SignalID ---Second signal to use in an operation. If not specified, the second argument will be the value of `second_constant`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ArithmeticCombinatorParameters) ---@field second_signal? SignalID ---Constant to use as the first argument of the operation. Has no effect when `first_signal` is set. Defaults to `0`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ArithmeticCombinatorParameters) ---@field first_constant? int ---Constant to use as the second argument of the operation. Has no effect when `second_signal` is set. Defaults to `0`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ArithmeticCombinatorParameters) ---@field second_constant? int ---Must be one of `"*"`, `"/"`, `"+"`, `"-"`, `"%"`, `"^"`, `"<<"`, `">>"`, `"AND"`, `"OR"`, `"XOR"`. When not specified, defaults to `"*"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ArithmeticCombinatorParameters) ---@field operation? string ---Specifies the signal to output. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ArithmeticCombinatorParameters) ---@field output_signal? SignalID ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameterFluid) ---@class AttackParameterFluid ---Name of the [LuaFluidPrototype](https://lua-api.factorio.com/latest/LuaFluidPrototype.html). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameterFluid) ---@field type string ---Multiplier applied to the damage of an attack. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameterFluid) ---@field damage_modifier double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@class AttackParameters ---The type of AttackParameter. One of `'projectile'`, `'stream'` or `'beam'`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field type string ---Maximum range of attack. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field range float ---Minimum range of attack. Used with flamethrower turrets to prevent self-immolation. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field min_range float ---Defines how the range is determined. Either `'center-to-center'` or `'bounding-box-to-bounding-box'`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field range_mode string ---When searching for the nearest enemy to attack, `fire_penalty` is added to the enemy's distance if they are on fire. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field fire_penalty float ---When searching for an enemy to attack, a higher `rotate_penalty` will discourage targeting enemies that would take longer to turn to face. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field rotate_penalty float ---When searching for an enemy to attack, a higher `health_penalty` will discourage targeting enemies with high health. A negative penalty will do the opposite. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field health_penalty float ---If less than `range`, the entity will choose a random distance between `range` and `min_attack_distance` and attack from that distance. Used for spitters. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field min_attack_distance float ---The arc that the entity can attack in as a fraction of a circle. A value of `1` means the full 360 degrees. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field turn_range float ---Multiplier applied to the damage of an attack. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field damage_modifier float ---Multiplier applied to the ammo consumption of an attack. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field ammo_consumption_modifier float ---Minimum amount of ticks between shots. If this is less than `1`, multiple shots can be performed per tick. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field cooldown float ---Number of ticks it takes for the weapon to actually shoot after it has been ordered to do so. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field warmup uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field movement_slow_down_factor double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field movement_slow_down_cooldown float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field ammo_type? AmmoType ---List of the names of compatible [LuaAmmoCategoryPrototypes](https://lua-api.factorio.com/latest/LuaAmmoCategoryPrototype.html). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field ammo_categories? string[] ---Applies to **"projectile"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field projectile_center Vector ---Applies to **"projectile"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field projectile_creation_distance float ---Applies to **"projectile"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field projectile_orientation_offset float ---Applies to **"projectile"**: (optional) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field shell_particle? CircularParticleCreationSpecification ---Applies to **"projectile"**: (optional) --- ---Applies to **"stream"**: (optional) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field projectile_creation_parameters? CircularProjectileCreationSpecification[] ---Applies to **"stream"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field gun_barrel_length float ---Applies to **"stream"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field gun_center_shift {[string]: Vector} ---Applies to **"stream"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field fluid_consumption float ---Applies to **"stream"**: (optional) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AttackParameters) ---@field fluids? AttackParameterFluid[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceControl) ---@class AutoplaceControl ---For things that are placed as spots such as ores and enemy bases, frequency is generally proportional to number of spots placed per unit area. For continuous features such as forests, frequency is how compressed the probability function is over distance, i.e. the inverse of 'scale' (similar to terrain_segmentation). When the [LuaAutoplaceControlPrototype](https://lua-api.factorio.com/latest/LuaAutoplaceControlPrototype.html) is of the category `"terrain"`, then scale is shown in the map generator GUI instead of frequency. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceControl) ---@field frequency MapGenSize ---For things that are placed as spots, size is proportional to the area of each spot. For continuous features, size affects how much of the map is covered with the thing, and is called 'coverage' in the GUI. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceControl) ---@field size MapGenSize ---Has different effects for different things, but generally affects the 'health' or density of a thing that is placed without affecting where it is placed. For trees, richness affects tree health. For ores, richness multiplies the amount of ore at any given tile in a patch. Metadata about autoplace controls (such as whether or not 'richness' does anything for them) can be found in the [LuaAutoplaceControlPrototype](https://lua-api.factorio.com/latest/LuaAutoplaceControlPrototype.html) by looking up `game.autoplace_control_prototypes[(control prototype name)]`, e.g. `game.autoplace_control_prototypes["enemy-base"].richness` is false, because enemy base autoplacement doesn't use richness. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceControl) ---@field richness MapGenSize ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSettings) ---@class AutoplaceSettings ---Whether missing autoplace names for this type should be default enabled. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSettings) ---@field treat_missing_as_default boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSettings) ---@field settings {[string]: AutoplaceControl} ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@class AutoplaceSpecification ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field probability_expression NoiseExpression ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field richness_expression NoiseExpression ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field coverage double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field sharpness double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field max_probability double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field placement_density uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field richness_base double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field richness_multiplier double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field richness_multiplier_distance_bonus double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field starting_area_size uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field order string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field default_enabled boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field peaks? AutoplaceSpecificationPeak[] ---Control prototype name. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field control? string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field tile_restriction? AutoplaceSpecificationRestriction[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field force string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification) ---@field random_probability_penalty double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@class AutoplaceSpecificationPeak ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field influence double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field max_influence double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field min_influence double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field richness_influence double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field noisePersistence double ---Prototype name of the noise layer. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field noise_layer? string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field noise_octaves_difference double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field water_optimal double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field water_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field water_max_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field water_top_property_limit double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field elevation_optimal double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field elevation_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field elevation_max_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field elevation_top_property_limit double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field temperature_optimal double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field temperature_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field temperature_max_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field temperature_top_property_limit double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field starting_area_weight_optimal double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field starting_area_weight_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field starting_area_weight_max_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field starting_area_weight_top_property_limit double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field tier_from_start_optimal double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field tier_from_start_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field tier_from_start_max_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field tier_from_start_top_property_limit double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field distance_optimal double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field distance_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field distance_max_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field distance_top_property_limit double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field aux_optimal double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field aux_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field aux_max_range double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationPeak) ---@field aux_top_property_limit double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationRestriction) ---@class AutoplaceSpecificationRestriction ---Tile prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationRestriction) ---@field first? string ---Second prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecificationRestriction) ---@field second? string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BeamTarget) ---@class BeamTarget ---The target entity. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BeamTarget) ---@field entity? LuaEntity ---The target position. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BeamTarget) ---@field position? MapPosition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@class BlueprintEntity ---The entity's unique identifier in the blueprint. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field entity_number uint ---The prototype name of the entity. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field name string ---The position of the entity. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field position MapPosition ---The direction the entity is facing. Only present for entities that can face in different directions and when the entity is not facing north. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field direction? defines.direction ---The entity tags of the entity, if there are any. Only relevant for entity ghosts. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field tags? Tags ---The items that the entity will request when revived, if there are any. It's a mapping of prototype names to amounts. Only relevant for entity ghosts. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field items? {[string]: uint} ---The circuit network connections of the entity, if there are any. Only relevant for entities that support circuit connections. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field connections? BlueprintCircuitConnection ---The control behavior of the entity, if it has one. The format of the control behavior depends on the entity's type. Only relevant for entities that support control behaviors. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field control_behavior? BlueprintControlBehavior ---The schedule of the entity, if it has one. Only relevant for locomotives. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field schedule? TrainScheduleRecord[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field orientation? number ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field recipe? string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field inventory? BlueprintEntity.inventory ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field bar? number ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field filters? InventoryFilter[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field type? "input"|"output" ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field input_priority? "left"|"right" ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field output_priority? "left"|"right" ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field filter? string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field filter_mode? "whitelist"|"blacklist" ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field override_stack_size? number ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field request_filters? LogisticFilter[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field request_from_buffers? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field parameters? ProgrammableSpeakerParameters ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field alert_parameters? ProgrammableSpeakerAlertParameters ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field color? Color ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintEntity) ---@field station? string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintItemIcon) ---@class BlueprintItemIcon ---Name of the item prototype whose icon should be used. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintItemIcon) ---@field name string ---Index of the icon in the blueprint icons slots. Has to be an integer in the range [1, 4]. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintItemIcon) ---@field index uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintSignalIcon) ---@class BlueprintSignalIcon ---The icon to use. It can be any item icon as well as any virtual signal icon. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintSignalIcon) ---@field signal SignalID ---Index of the icon in the blueprint icons slots. Has to be an integer in the range [1, 4]. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BlueprintSignalIcon) ---@field index uint ---Two positions, specifying the top-left and bottom-right corner of the box respectively. Like with [MapPosition](https://lua-api.factorio.com/latest/Concepts.html#MapPosition), the names of the members may be omitted. When read from the game, the third member `orientation` is present if it is non-zero, however it is ignored when provided to the game. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#BoundingBox) --- ---### Example ---Explicit definition: ---``` ---{left_top = {x = -2, y = -3}, right_bottom = {x = 5, y = 8}} ---``` --- ---### Example ---Shorthand: ---``` ---{{-2, -3}, {5, 8}} ---``` ---@alias BoundingBox BoundingBox.0|BoundingBox.1 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CapsuleAction) ---@class CapsuleAction ---One of `"throw"`, `"equipment-remote"`, `"use-on-self"`, `"artillery-remote"`, `"destroy-cliffs"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CapsuleAction) ---@field type string ---Applies to **"artillery-remote"**: (required) ---Name of the [flare prototype](https://lua-api.factorio.com/latest/LuaEntityPrototype.html). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CapsuleAction) ---@field flare? string ---Applies to **"throw"**: (required) --- ---Applies to **"use-on-self"**: (required) --- ---Applies to **"destroy-cliffs"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CapsuleAction) ---@field attack_parameters AttackParameters ---Applies to **"throw"**: (required) ---Whether using the capsule consumes an item from the stack. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CapsuleAction) ---@field uses_stack boolean ---Applies to **"equipment-remote"**: (required) ---Name of the [LuaEquipmentPrototype](https://lua-api.factorio.com/latest/LuaEquipmentPrototype.html). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CapsuleAction) ---@field equipment string ---Applies to **"destroy-cliffs"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CapsuleAction) ---@field radius float ---Applies to **"destroy-cliffs"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CapsuleAction) ---@field timeout uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ChartTagSpec) ---@class ChartTagSpec ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ChartTagSpec) ---@field position MapPosition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ChartTagSpec) ---@field icon? SignalID ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ChartTagSpec) ---@field text? string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ChartTagSpec) ---@field last_user? PlayerIdentification ---Coordinates of a chunk in a [LuaSurface](https://lua-api.factorio.com/latest/LuaSurface.html) where each integer `x`/`y` represents a different chunk. This uses the same format as [MapPosition](https://lua-api.factorio.com/latest/Concepts.html#MapPosition), meaning it can be specified either with or without explicit keys. A [MapPosition](https://lua-api.factorio.com/latest/Concepts.html#MapPosition) can be translated to a ChunkPosition by dividing the `x`/`y` values by 32. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ChunkPosition) ---@alias ChunkPosition ChunkPosition.0|ChunkPosition.1 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ChunkPositionAndArea) ---@class ChunkPositionAndArea ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ChunkPositionAndArea) ---@field x int ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ChunkPositionAndArea) ---@field y int ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ChunkPositionAndArea) ---@field area BoundingBox ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitCondition) ---@class CircuitCondition ---Specifies how the inputs should be compared. If not specified, defaults to `"<"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitCondition) ---@field comparator? ComparatorString ---Defaults to blank --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitCondition) ---@field first_signal? SignalID ---What to compare `first_signal` to. If not specified, `first_signal` will be compared to `constant`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitCondition) ---@field second_signal? SignalID ---Constant to compare `first_signal` to. Has no effect when `second_signal` is set. When neither `second_signal` nor `constant` are specified, the effect is as though `constant` were specified with the value `0`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitCondition) ---@field constant? int ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitConditionDefinition) ---@class CircuitConditionDefinition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitConditionDefinition) ---@field condition CircuitCondition ---Whether the condition is currently fulfilled --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitConditionDefinition) ---@field fulfilled? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitConnectionDefinition) ---@class CircuitConnectionDefinition ---Wire color, either [defines.wire_type.red](https://lua-api.factorio.com/latest/defines.html#defines.wire_type.red) or [defines.wire_type.green](https://lua-api.factorio.com/latest/defines.html#defines.wire_type.green). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitConnectionDefinition) ---@field wire defines.wire_type ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitConnectionDefinition) ---@field target_entity LuaEntity ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitConnectionDefinition) ---@field source_circuit_id defines.circuit_connector_id ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircuitConnectionDefinition) ---@field target_circuit_id defines.circuit_connector_id ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@class CircularParticleCreationSpecification ---Name of the [LuaEntityPrototype](https://lua-api.factorio.com/latest/LuaEntityPrototype.html) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field direction float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field direction_deviation float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field speed float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field speed_deviation float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field starting_frame_speed float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field starting_frame_speed_deviation float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field height float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field height_deviation float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field vertical_speed float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field vertical_speed_deviation float ---This vector is a table with `x` and `y` keys instead of an array. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field center Vector ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field creation_distance double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field creation_distance_orientation double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularParticleCreationSpecification) ---@field use_source_position boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularProjectileCreationSpecification) ---@class CircularProjectileCreationSpecification ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularProjectileCreationSpecification) ---@field [1] RealOrientation _ ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CircularProjectileCreationSpecification) ---@field [2] Vector _ ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CliffOrientation) ---@alias CliffOrientation "west-to-east"|"north-to-south"|"east-to-west"|"south-to-north"|"west-to-north"|"north-to-east"|"east-to-south"|"south-to-west"|"west-to-south"|"north-to-west"|"east-to-north"|"south-to-east"|"west-to-none"|"none-to-east"|"east-to-none"|"none-to-west"|"north-to-none"|"none-to-south"|"south-to-none"|"none-to-north" ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CliffPlacementSettings) ---@class CliffPlacementSettings ---Name of the cliff prototype. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CliffPlacementSettings) ---@field name string ---Elevation at which the first row of cliffs is placed. The default is `10`, and this cannot be set from the map generation GUI. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CliffPlacementSettings) ---@field cliff_elevation_0 float ---Elevation difference between successive rows of cliffs. This is inversely proportional to 'frequency' in the map generation GUI. Specifically, when set from the GUI the value is `40 / frequency`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CliffPlacementSettings) ---@field cliff_elevation_interval float ---Corresponds to 'continuity' in the GUI. This value is not used directly, but is used by the 'cliffiness' noise expression, which in combination with elevation and the two cliff elevation properties drives cliff placement (cliffs are placed when elevation crosses the elevation contours defined by `cliff_elevation_0` and `cliff_elevation_interval` when 'cliffiness' is greater than `0.5`). The default 'cliffiness' expression interprets this value such that larger values result in longer unbroken walls of cliffs, and smaller values (between `0` and `1`) result in larger gaps in cliff walls. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CliffPlacementSettings) ---@field richness MapGenSize ---A set of flags. Active flags are in the dictionary as `true`, while inactive flags aren't present at all. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CollisionMask) ---@alias CollisionMask {[CollisionMaskLayer]: true} ---A [string](https://lua-api.factorio.com/latest/Builtin-Types.html#string) specifying a collision mask layer. --- ---In addition to the listed layers, there is `"layer-13"` through `"layer-55"`. These layers are currently unused by the game but may change. If a mod is going to use one of the unused layers it's recommended to start at the higher layers because the base game will take from the lower ones. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CollisionMaskLayer) ---@alias CollisionMaskLayer "ground-tile"|"water-tile"|"resource-layer"|"doodad-layer"|"floor-layer"|"item-layer"|"ghost-layer"|"object-layer"|"player-layer"|"train-layer"|"rail-layer"|"transport-belt-layer"|"not-setup" ---A [CollisionMask](https://lua-api.factorio.com/latest/Concepts.html#CollisionMask) which also includes any flags this mask has. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CollisionMaskWithFlags) ---@class CollisionMaskWithFlags ---@field [CollisionMaskLayer] true|nil ---Any two entities that both have this option enabled on their prototype and have an identical collision mask layers list will not collide. Other collision mask options are not included in the identical layer list check. This does mean that two different prototypes with the same collision mask layers and this option enabled will not collide. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CollisionMaskWithFlags) ---@field ["not-colliding-with-itself"] true|nil ---Uses the prototypes position rather than its collision box when doing collision checks with tile prototypes. Allows the prototype to overlap colliding tiles up until its center point. This is only respected for character movement and cars driven by players. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CollisionMaskWithFlags) ---@field ["consider-tile-transitions"] true|nil ---Any prototype with this collision option will only be checked for collision with other prototype's collision masks if they are a tile. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CollisionMaskWithFlags) ---@field ["colliding-with-tiles-only"] true|nil ---Red, green, blue and alpha values, all in range [0, 1] or all in range [0, 255] if any value is > 1. All values here are optional. Color channels default to `0`, the alpha channel defaults to `1`. --- ---Similar to [MapPosition](https://lua-api.factorio.com/latest/Concepts.html#MapPosition), Color allows the short-hand notation of passing an array of exactly 3 or 4 numbers. The game usually expects colors to be in pre-multiplied form (color channels are pre-multiplied by alpha). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Color) --- ---### Example ---``` ---red1 = {r = 0.5, g = 0, b = 0, a = 0.5} -- Half-opacity red ---red2 = {r = 0.5, a = 0.5} -- Same color as red1 ---black = {} -- All channels omitted: black ---red1_short = {0.5, 0, 0, 0.5} -- Same color as red1 in short-hand notation ---``` ---@alias Color Color.0|Color.1 ---Same as [Color](https://lua-api.factorio.com/latest/Concepts.html#Color), but red, green, blue and alpha values can be any floating point number, without any special handling of the range [1, 255]. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ColorModifier) ---@alias ColorModifier ColorModifier.0|ColorModifier.1 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@class Command ---Type of command. The remaining fields depend on the value of this field. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field type defines.command ---Applies to **"defines.command.attack"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field target LuaEntity ---Applies to **"defines.command.attack"**: (optional) ---Defaults to `defines.distraction.by_enemy`. --- ---Applies to **"defines.command.go_to_location"**: (optional) ---Defaults to `defines.distraction.by_enemy`. --- ---Applies to **"defines.command.group"**: (optional) ---Defaults to `defines.distraction.by_enemy`. --- ---Applies to **"defines.command.attack_area"**: (optional) ---Defaults to `defines.distraction.by_enemy`. --- ---Applies to **"defines.command.wander"**: (optional) ---Defaults to `defines.distraction.by_enemy`. --- ---Applies to **"defines.command.stop"**: (optional) ---Defaults to `defines.distraction.by_enemy`. --- ---Applies to **"defines.command.flee"**: (optional) ---Defaults to `defines.distraction.by_enemy`. --- ---Applies to **"defines.command.build_base"**: (optional) ---Defaults to `defines.distraction.by_enemy`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field distraction? defines.distraction ---Applies to **"defines.command.go_to_location"**: (optional) ---The position to path to. Either this or `destination_entity` need to be specified. If both are, `destination_entity` is used. --- ---Applies to **"defines.command.attack_area"**: (required) ---Center of the attack area. --- ---Applies to **"defines.command.build_base"**: (required) ---Where to build the base. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field destination? MapPosition ---Applies to **"defines.command.go_to_location"**: (optional) ---The entity to path to. Either this or `destination` need to be specified. If both are, `destination_entity` is used. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field destination_entity? LuaEntity ---Applies to **"defines.command.go_to_location"**: (optional) ---Flags that affect pathfinder behavior. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field pathfind_flags? PathfinderFlags ---Applies to **"defines.command.go_to_location"**: (optional) ---How close the pathfinder needs to get to its destination (in tiles). Defaults to `3`. --- ---Applies to **"defines.command.attack_area"**: (required) ---Radius of the attack area. --- ---Applies to **"defines.command.wander"**: (optional) ---Defaults to 10. Does not apply when `wander_in_group` is `true`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field radius? double ---Applies to **"defines.command.compound"**: (required) ---How the commands should be chained together. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field structure_type defines.compound_command ---Applies to **"defines.command.compound"**: (required) ---The sub-commands. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field commands Command[] ---Applies to **"defines.command.group"**: (required) ---The group whose command to follow. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field group LuaUnitGroup ---Applies to **"defines.command.group"**: (optional) ---Whether the unit will use the group distraction or the commands distraction. Defaults to true. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field use_group_distraction? boolean ---Applies to **"defines.command.wander"**: (optional) ---When commanding a group, defines how the group will wander. When `true`, the units in the group will wander around inside the group's radius, just like gathering biters. When `false`, the units will wander as a group, ie they will all walk together in the same random direction. Default is true for groups. Passing true for a single unit is an error. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field wander_in_group? boolean ---Applies to **"defines.command.wander"**: (optional) ---Ticks to wander before successfully completing the command. Default is max uint, which means wander forever. --- ---Applies to **"defines.command.stop"**: (optional) ---Ticks to wander before successfully completing the command. Default is max uint, which means stop forever. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field ticks_to_wait? uint ---Applies to **"defines.command.flee"**: (required) ---The entity to flee from --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field from LuaEntity ---Applies to **"defines.command.build_base"**: (optional) ---Whether the units should ignore expansion candidate chunks. When `false`, they will obey and not build a base in a non-candidate chunk. Defaults to `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Command) ---@field ignore_planner? boolean ---A string that specifies how the inputs should be compared --- ---**Note:** While the API accepts both versions for `"less/greater than or equal to"` and `"not equal"`, it'll always return `"≥"`, `"≤"` or `"≠"` respectively when reading them back. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ComparatorString) ---@alias ComparatorString "="|">"|"<"|"≥"|">="|"≤"|"<="|"≠"|"!=" ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ConfigurationChangedData) ---@class ConfigurationChangedData ---Old version of the map. Present only when loading map version other than the current version. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ConfigurationChangedData) ---@field old_version? string ---New version of the map. Present only when loading map version other than the current version. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ConfigurationChangedData) ---@field new_version? string ---Dictionary of mod changes. It is indexed by mod name. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ConfigurationChangedData) ---@field mod_changes {[string]: ModChangeData} ---`true` when mod startup settings have changed since the last time this save was loaded. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ConfigurationChangedData) ---@field mod_startup_settings_changed boolean ---`true` when mod prototype migrations have been applied since the last time this save was loaded. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ConfigurationChangedData) ---@field migration_applied boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ConstantCombinatorParameters) ---@class ConstantCombinatorParameters ---Signal to emit. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ConstantCombinatorParameters) ---@field signal SignalID ---Value of the signal to emit. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ConstantCombinatorParameters) ---@field count int ---Index of the constant combinator's slot to set this signal to. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ConstantCombinatorParameters) ---@field index uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CraftingQueueItem) ---@class CraftingQueueItem ---The index of the item in the crafting queue. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CraftingQueueItem) ---@field index uint ---The recipe being crafted. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CraftingQueueItem) ---@field recipe string ---The amount of items being crafted. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CraftingQueueItem) ---@field count uint ---The item is a prerequisite for another item in the queue. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CraftingQueueItem) ---@field prerequisite boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CursorBoxRenderType) ---@alias CursorBoxRenderType "entity"|"not-allowed"|"electricity"|"pair"|"copy"|"train-visualization"|"logistics"|"blueprint-snap-rectangle" ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CustomCommandData) ---@class CustomCommandData ---The name of the command. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CustomCommandData) ---@field name string ---The tick the command was used in. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CustomCommandData) ---@field tick uint ---The player who issued the command, or `nil` if it was issued from the server console. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CustomCommandData) ---@field player_index? uint ---The parameter passed after the command, if there is one. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CustomCommandData) ---@field parameter? string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CutsceneWaypoint) ---@class CutsceneWaypoint ---Position to pan the camera to. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CutsceneWaypoint) ---@field position? MapPosition ---Entity or unit group to pan the camera to. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CutsceneWaypoint) ---@field target? LuaEntity|LuaUnitGroup ---How many ticks it will take to reach this waypoint from the previous one. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CutsceneWaypoint) ---@field transition_time uint ---Time in ticks to wait before moving to the next waypoint. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CutsceneWaypoint) ---@field time_to_wait uint ---Zoom level to be set when the waypoint is reached. When not specified, the previous waypoint's zoom is used. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#CutsceneWaypoint) ---@field zoom? double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DeciderCombinatorParameters) ---@class DeciderCombinatorParameters ---Defaults to blank. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DeciderCombinatorParameters) ---@field first_signal? SignalID ---Second signal to use in an operation, if any. If this is not specified, the second argument to a decider combinator's operation is assumed to be the value of `constant`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DeciderCombinatorParameters) ---@field second_signal? SignalID ---Constant to use as the second argument of operation. Defaults to `0`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DeciderCombinatorParameters) ---@field constant? uint ---Specifies how the inputs should be compared. If not specified, defaults to `"<"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DeciderCombinatorParameters) ---@field comparator? ComparatorString ---Defaults to blank. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DeciderCombinatorParameters) ---@field output_signal? SignalID ---Defaults to `true`. When `false`, will output a value of `1` for the given `output_signal`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DeciderCombinatorParameters) ---@field copy_count_from_input? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Decorative) ---@class Decorative ---The name of the decorative prototype. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Decorative) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Decorative) ---@field position TilePosition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Decorative) ---@field amount uint8 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DecorativePrototypeFilter) ---@class DecorativePrototypeFilter ---The condition to filter on. One of `"decal"`, `"autoplace"`, `"collision-mask"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DecorativePrototypeFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DecorativePrototypeFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DecorativePrototypeFilter) ---@field invert? boolean ---Applies to **"collision-mask"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DecorativePrototypeFilter) ---@field mask CollisionMask|CollisionMaskWithFlags ---Applies to **"collision-mask"**: (required) ---How to filter: `"collides"`, `"layers-equals"`, `"contains-any"` or `"contains-all"` --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DecorativePrototypeFilter) ---@field mask_mode string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DecorativeResult) ---@class DecorativeResult ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DecorativeResult) ---@field position TilePosition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DecorativeResult) ---@field decorative LuaDecorativePrototype ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DecorativeResult) ---@field amount uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DifficultySettings) ---@class DifficultySettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DifficultySettings) ---@field recipe_difficulty defines.difficulty_settings.recipe_difficulty ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DifficultySettings) ---@field technology_difficulty defines.difficulty_settings.technology_difficulty ---A value in range [0.001, 1000]. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DifficultySettings) ---@field technology_price_multiplier double ---Either `"after-victory"`, `"always"` or `"never"`. Changing this to `"always"` or `"after-victory"` does not automatically unlock the research queue. See [LuaForce](https://lua-api.factorio.com/latest/LuaForce.html) for that. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DifficultySettings) ---@field research_queue_setting string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DisplayResolution) ---@class DisplayResolution ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DisplayResolution) ---@field width uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#DisplayResolution) ---@field height uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyEvolutionMapSettings) ---@class EnemyEvolutionMapSettings ---Whether enemy evolution is enabled at all. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyEvolutionMapSettings) ---@field enabled boolean ---The amount evolution naturally progresses by every second. Defaults to `0.000004`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyEvolutionMapSettings) ---@field time_factor double ---The amount evolution progresses for every destroyed spawner. Defaults to `0.002`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyEvolutionMapSettings) ---@field destroy_factor double ---The amount evolution progresses for every unit of pollution. Defaults to `0.0000009`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyEvolutionMapSettings) ---@field pollution_factor double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@class EnemyExpansionMapSettings ---Whether enemy expansion is enabled at all. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field enabled boolean ---Distance in chunks from the furthest base around to prevent expansions from reaching too far into the player's territory. Defaults to `7`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field max_expansion_distance uint ---Defaults to `2`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field friendly_base_influence_radius uint ---Defaults to `2`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field enemy_building_influence_radius uint ---Defaults to `0.1`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field building_coefficient double ---Defaults to `2.0`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field other_base_coefficient double ---Defaults to `0.5`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field neighbouring_chunk_coefficient double ---Defaults to `0.4`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field neighbouring_base_chunk_coefficient double ---A chunk has to have at most this high of a percentage of unbuildable tiles for it to be considered a candidate to avoid chunks full of water as candidates. Defaults to `0.9`, or 90%. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field max_colliding_tiles_coefficient double ---The minimum size of a biter group that goes to build a new base. This is multiplied by the evolution factor. Defaults to `5`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field settler_group_min_size uint ---The maximum size of a biter group that goes to build a new base. This is multiplied by the evolution factor. Defaults to `20`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field settler_group_max_size uint ---The minimum time between expansions in ticks. The actual cooldown is adjusted to the current evolution levels. Defaults to `4*3,600=14,400` ticks. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field min_expansion_cooldown uint ---The maximum time between expansions in ticks. The actual cooldown is adjusted to the current evolution levels. Defaults to `60*3,600=216,000` ticks. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EnemyExpansionMapSettings) ---@field max_expansion_cooldown uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@class EntityPrototypeFilter ---The condition to filter on. One of `"flying-robot"`, `"robot-with-logistics-interface"`, `"rail"`, `"ghost"`, `"explosion"`, `"vehicle"`, `"crafting-machine"`, `"rolling-stock"`, `"turret"`, `"transport-belt-connectable"`, `"wall-connectable"`, `"buildable"`, `"placable-in-editor"`, `"clonable"`, `"selectable"`, `"hidden"`, `"entity-with-health"`, `"building"`, `"fast-replaceable"`, `"uses-direction"`, `"minable"`, `"circuit-connectable"`, `"autoplace"`, `"blueprintable"`, `"item-to-place"`, `"name"`, `"type"`, `"collision-mask"`, `"flag"`, `"build-base-evolution-requirement"`, `"selection-priority"`, `"emissions"`, `"crafting-category"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@field invert? boolean ---Applies to **"name"**: (required) ---The prototype name, or list of acceptable names. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@field name string|string[] ---Applies to **"type"**: (required) ---The prototype type, or a list of acceptable types. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@field type string|string[] ---Applies to **"collision-mask"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@field mask CollisionMask|CollisionMaskWithFlags ---Applies to **"collision-mask"**: (required) ---How to filter: `"collides"`, `"layers-equals"`, `"contains-any"` or `"contains-all"` --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@field mask_mode string ---Applies to **"flag"**: (required) ---One of the values in [EntityPrototypeFlags](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@field flag string ---Applies to **"build-base-evolution-requirement"**: (required) --- ---Applies to **"selection-priority"**: (required) --- ---Applies to **"emissions"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@field comparison ComparatorString ---Applies to **"build-base-evolution-requirement"**: (required) ---The value to compare against. --- ---Applies to **"selection-priority"**: (required) ---The value to compare against. --- ---Applies to **"emissions"**: (required) ---The value to compare against. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@field value double ---Applies to **"crafting-category"**: (required) ---Matches if the prototype is for a crafting machine with this crafting category. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFilter) ---@field crafting_category string ---A set of flags. Active flags are in the dictionary as `true`, while inactive flags aren't present at all. --- ---By default, none of these flags are set. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@class EntityPrototypeFlags ---Prevents the entity from being rotated before or after placement. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["not-rotatable"] true|nil ---Determines the default force when placing entities in the map editor and using the "AUTO" option for the force. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["placeable-neutral"] true|nil ---Determines the default force when placing entities in the map editor and using the "AUTO" option for the force. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["placeable-player"] true|nil ---Determines the default force when placing entities in the map editor and using the "AUTO" option for the force. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["placeable-enemy"] true|nil ---Determines whether the entity needs to be aligned with the invisible grid within the world. Most entities are confined in this way, with a few exceptions such as trees and land mines. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["placeable-off-grid"] true|nil ---Makes it possible to blueprint, deconstruct, and repair the entity (which can be turned off again using the specific flags). Makes it possible for the biter AI to target the entity as a distraction. Enables dust to automatically be created when building the entity. If the entity does not have a `map_color` set, this flag makes the entity appear on the map with the default color specified by the UtilityConstants. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["player-creation"] true|nil ---Uses 45 degree angle increments when selecting direction. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["building-direction-8-way"] true|nil ---Used to automatically detect the proper direction of the entity if possible. Used by the pump, train stop, and train signal by default. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["filter-directions"] true|nil ---Fast replace will not apply when building while moving. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["fast-replaceable-no-build-while-moving"] true|nil ---Used to specify that the entity breathes air, and is thus affected by poison. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["breaths-air"] true|nil ---Used to specify that the entity can not be 'healed' by repair packs. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["not-repairable"] true|nil ---Prevents the entity from being drawn on the map. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["not-on-map"] true|nil ---Prevents the entity from being deconstructed. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["not-deconstructable"] true|nil ---Prevents the entity from being part of a blueprint. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["not-blueprintable"] true|nil ---Hides the entity from the bonus GUI and from the "made in"-property of recipe tooltips. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["hidden"] true|nil ---Hides the alt-info of this entity when in alt-mode. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["hide-alt-info"] true|nil ---Does not fast replace this entity over other entity types when building while moving. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["fast-replaceable-no-cross-type-while-moving"] true|nil ---@field ["no-gap-fill-while-building"] true|nil ---Does not apply fire stickers to the entity. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["not-flammable"] true|nil ---Prevents inserters and loaders from taking items from this entity. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["no-automated-item-removal"] true|nil ---Prevents inserters and loaders from inserting items into this entity. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["no-automated-item-insertion"] true|nil ---Prevents the entity from being copy-pasted. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["no-copy-paste"] true|nil ---Disallows selection of the entity even when a selection box is specified for other reasons. For example, selection boxes are used to determine the size of outlines to be shown when highlighting entities inside electric pole ranges. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["not-selectable-in-game"] true|nil ---Prevents the entity from being selected by the upgrade planner. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["not-upgradable"] true|nil ---Prevents the entity from being shown in the kill statistics. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["not-in-kill-statistics"] true|nil ---Prevents the entity from being shown in the "made in" list in recipe tooltips. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeFlags) ---@field ["not-in-made-in"] true|nil ---An entity prototype may be specified in one of three ways. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EntityPrototypeIdentification) ---@alias EntityPrototypeIdentification LuaEntity|LuaEntityPrototype|string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EquipmentPoint) ---@class EquipmentPoint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EquipmentPoint) ---@field x uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EquipmentPoint) ---@field y uint ---Position inside an equipment grid. This uses the same format as [MapPosition](https://lua-api.factorio.com/latest/Concepts.html#MapPosition), meaning it can be specified either with or without explicit keys. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EquipmentPosition) --- ---### Example ---Explicit definition: ---``` ---{x = 5, y = 2} ---{y = 2, x = 5} ---``` --- ---### Example ---Shorthand: ---``` ---{1, 2} ---``` ---@alias EquipmentPosition EquipmentPosition.0|EquipmentPosition.1 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EquipmentPrototypeFilter) ---@class EquipmentPrototypeFilter ---The condition to filter on. One of `"item-to-place"`, `"type"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EquipmentPrototypeFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EquipmentPrototypeFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EquipmentPrototypeFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type, or a list of acceptable types. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EquipmentPrototypeFilter) ---@field type string|string[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EventData) ---@class EventData ---The identifier of the event this handler was registered to. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EventData) ---@field name defines.events ---The tick during which the event happened. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EventData) ---@field tick uint ---The name of the mod that raised the event if it was raised using [LuaBootstrap::raise_event](https://lua-api.factorio.com/latest/LuaBootstrap.html#LuaBootstrap.raise_event). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EventData) ---@field mod_name? string ---Used to filter out irrelevant event callbacks in a performant way. --- ---**Note:** Filters are always used as an array of filters of a specific type. Every filter can only be used with its corresponding event, and different types of event filters can not be mixed. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#EventFilter) ---@alias EventFilter (LuaEntityClonedEventFilter|LuaEntityDamagedEventFilter|LuaPlayerMinedEntityEventFilter|LuaPreRobotMinedEntityEventFilter|LuaRobotBuiltEntityEventFilter|LuaPostEntityDiedEventFilter|LuaEntityDiedEventFilter|LuaScriptRaisedReviveEventFilter|LuaPrePlayerMinedEntityEventFilter|LuaEntityMarkedForDeconstructionEventFilter|LuaPreGhostDeconstructedEventFilter|LuaPreGhostUpgradedEventFilter|LuaEntityDeconstructionCancelledEventFilter|LuaEntityMarkedForUpgradeEventFilter|LuaSectorScannedEventFilter|LuaRobotMinedEntityEventFilter|LuaScriptRaisedDestroyEventFilter|LuaUpgradeCancelledEventFilter|LuaScriptRaisedBuiltEventFilter|LuaPlayerBuiltEntityEventFilter|LuaPlayerRepairedEntityEventFilter)[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Fluid) ---@class Fluid ---Fluid prototype name of the fluid. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Fluid) ---@field name string ---Amount of the fluid. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Fluid) ---@field amount double ---The temperature. When reading from [LuaFluidBox](https://lua-api.factorio.com/latest/LuaFluidBox.html), this field will always be present. It is not necessary to specify it when writing, however. When not specified, the fluid will be set to the fluid's default temperature as specified in the fluid's prototype. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Fluid) ---@field temperature? double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxConnection) ---@class FluidBoxConnection ---The connection type: "input", "output", or "input-output". --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxConnection) ---@field type string ---The 4 cardinal direction connection points for this pipe. This vector is a table with `x` and `y` keys instead of an array. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxConnection) ---@field positions Vector[] ---The maximum tile distance this underground connection can connect at if this is an underground pipe. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxConnection) ---@field max_underground_distance? uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxFilter) ---@class FluidBoxFilter ---Fluid prototype name of the filtered fluid. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxFilter) ---@field name string ---The minimum temperature allowed into the fluidbox. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxFilter) ---@field minimum_temperature double ---The maximum temperature allowed into the fluidbox. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxFilter) ---@field maximum_temperature double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxFilterSpec) ---@class FluidBoxFilterSpec ---Fluid prototype name of the filtered fluid. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxFilterSpec) ---@field name string ---The minimum temperature allowed into the fluidbox. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxFilterSpec) ---@field minimum_temperature? double ---The maximum temperature allowed into the fluidbox. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxFilterSpec) ---@field maximum_temperature? double ---Force the filter to be set, regardless of current fluid content. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidBoxFilterSpec) ---@field force? boolean ---A fluid may be specified in one of three ways. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidIdentification) ---@alias FluidIdentification string|LuaFluidPrototype|Fluid ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidPrototypeFilter) ---@class FluidPrototypeFilter ---The condition to filter on. One of `"hidden"`, `"name"`, `"subgroup"`, `"default-temperature"`, `"max-temperature"`, `"heat-capacity"`, `"fuel-value"`, `"emissions-multiplier"`, `"gas-temperature"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidPrototypeFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidPrototypeFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidPrototypeFilter) ---@field invert? boolean ---Applies to **"name"**: (required) ---The prototype name, or list of acceptable names. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidPrototypeFilter) ---@field name string|string[] ---Applies to **"subgroup"**: (required) ---A [LuaGroup](https://lua-api.factorio.com/latest/LuaGroup.html) (subgroup) name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidPrototypeFilter) ---@field subgroup string ---Applies to **"default-temperature"**: (required) --- ---Applies to **"max-temperature"**: (required) --- ---Applies to **"heat-capacity"**: (required) --- ---Applies to **"fuel-value"**: (required) --- ---Applies to **"emissions-multiplier"**: (required) --- ---Applies to **"gas-temperature"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidPrototypeFilter) ---@field comparison ComparatorString ---Applies to **"default-temperature"**: (required) ---The value to compare against. --- ---Applies to **"max-temperature"**: (required) ---The value to compare against. --- ---Applies to **"heat-capacity"**: (required) ---The value to compare against. --- ---Applies to **"fuel-value"**: (required) ---The value to compare against. --- ---Applies to **"emissions-multiplier"**: (required) ---The value to compare against. --- ---Applies to **"gas-temperature"**: (required) ---The value to compare against. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#FluidPrototypeFilter) ---@field value double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ForceCondition) ---@alias ForceCondition "all"|"enemy"|"ally"|"friend"|"not-friend"|"same"|"not-same" ---A force may be specified in one of two ways. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ForceIdentification) ---@alias ForceIdentification string|LuaForce ---Parameters that affect the look and control of the game. Updating any of the member attributes here will immediately take effect in the game engine. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings) ---@class GameViewSettings} ---[RW] ---Show the flashing alert icons next to the player's toolbar. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings.show_alert_gui) ---@field show_alert_gui boolean ---[RW] ---Show the controller GUI elements. This includes the toolbar, the selected tool slot, the armour slot, and the gun and ammunition slots. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings.show_controller_gui) ---@field show_controller_gui boolean ---[RW] ---Show overlay icons on entities. Also known as "alt-mode". --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings.show_entity_info) ---@field show_entity_info boolean ---[RW] ---Shows or hides the view options when map is opened. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings.show_map_view_options) ---@field show_map_view_options boolean ---[RW] ---Show the chart in the upper right-hand corner of the screen. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings.show_minimap) ---@field show_minimap boolean ---[RW] ---Shows or hides quickbar of shortcuts. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings.show_quickbar) ---@field show_quickbar boolean ---[RW] ---When `true` (`false` is default), the rails will always show the rail block visualisation. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings.show_rail_block_visualisation) ---@field show_rail_block_visualisation boolean ---[RW] ---Show research progress and name in the upper right-hand corner of the screen. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings.show_research_info) ---@field show_research_info boolean ---[RW] ---Shows or hides the shortcut bar. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings.show_shortcut_bar) ---@field show_shortcut_bar boolean ---[RW] ---Shows or hides the buttons row. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings.show_side_menu) ---@field show_side_menu boolean ---[RW] ---When `true` (the default), mousing over an entity will select it. Otherwise, moving the mouse won't update entity selection. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GameViewSettings.update_entity_selection) ---@field update_entity_selection boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiAnchor) ---@class GuiAnchor ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiAnchor) ---@field gui defines.relative_gui_type ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiAnchor) ---@field position defines.relative_gui_position ---If provided, only anchors the GUI element when the opened things type matches the type. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiAnchor) ---@field type? string ---If provided, only anchors the GUI element when the opened thing matches the name. `name` takes precedence over `names`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiAnchor) ---@field name? string ---If provided, only anchors the GUI element when the opened thing matches one of the names. When reading an anchor, `names` is always populated. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiAnchor) ---@field names? string[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiArrowSpecification) ---@class GuiArrowSpecification ---This determines which of the following fields will be required. Must be one of `"nowhere"` (will remove the arrow entirely), `"goal"` (will point to the current goal), `"entity_info"`, `"active_window"`, `"entity"`, `"position"`, `"crafting_queue"` or `"item_stack"` (will point to a given item stack in an inventory). Depending on this value, other fields may have to be specified. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiArrowSpecification) ---@field type string ---Applies to **"entity"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiArrowSpecification) ---@field entity LuaEntity ---Applies to **"position"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiArrowSpecification) ---@field position MapPosition ---Applies to **"crafting_queue"**: (required) ---Index in the crafting queue to point to. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiArrowSpecification) ---@field crafting_queueindex uint ---Applies to **"item_stack"**: (required) ---Which inventory the stack is in. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiArrowSpecification) ---@field inventory_index defines.inventory ---Applies to **"item_stack"**: (required) ---Which stack to point to. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiArrowSpecification) ---@field item_stack_index uint ---Applies to **"item_stack"**: (required) ---Must be either `"player"`, `"target"`, `"player-quickbar"` or `"player-equipment-bar"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiArrowSpecification) ---@field source string ---Screen coordinates of a GUI element in a [LuaGui](https://lua-api.factorio.com/latest/LuaGui.html). This uses the same format as [TilePosition](https://lua-api.factorio.com/latest/Concepts.html#TilePosition), meaning it can be specified either with or without explicit keys. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#GuiLocation) ---@alias GuiLocation GuiLocation.0|GuiLocation.1 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#HeatConnection) ---@class HeatConnection ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#HeatConnection) ---@field position Vector ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#HeatConnection) ---@field direction defines.direction ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#HeatSetting) ---@class HeatSetting ---The target temperature. Defaults to the minimum temperature of the heat buffer. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#HeatSetting) ---@field temperature? double ---`"at-least"`, `"at-most"`, `"exactly"`, `"add"`, or `"remove"`. Defaults to `"at-least"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#HeatSetting) ---@field mode? string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InfinityInventoryFilter) ---@class InfinityInventoryFilter ---Name of the item. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InfinityInventoryFilter) ---@field name string ---The count of the filter. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InfinityInventoryFilter) ---@field count? uint ---`"at-least"`, `"at-most"`, or `"exactly"`. Defaults to `"at-least"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InfinityInventoryFilter) ---@field mode? string ---The index of this filter in the filters list. Not required when writing a filter. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InfinityInventoryFilter) ---@field index uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InfinityPipeFilter) ---@class InfinityPipeFilter ---Name of the fluid. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InfinityPipeFilter) ---@field name string ---The fill percentage the pipe (e.g. 0.5 for 50%). Can't be negative. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InfinityPipeFilter) ---@field percentage? double ---The temperature of the fluid. Defaults to the default/minimum temperature of the fluid. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InfinityPipeFilter) ---@field temperature? double ---`"at-least"`, `"at-most"`, `"exactly"`, `"add"`, or `"remove"`. Defaults to `"at-least"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InfinityPipeFilter) ---@field mode? string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Ingredient) ---@class Ingredient ---`"item"` or `"fluid"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Ingredient) ---@field type string ---Prototype name of the required item or fluid. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Ingredient) ---@field name string ---Amount of the item or fluid. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Ingredient) ---@field amount double ---How much of this ingredient is a catalyst. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Ingredient) ---@field catalyst_amount? uint|double ---Applies to **"fluid"**: (optional) ---The minimum fluid temperature required. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Ingredient) ---@field minimum_temperature? double ---Applies to **"fluid"**: (optional) ---The maximum fluid temperature allowed. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Ingredient) ---@field maximum_temperature? double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InserterCircuitConditions) ---@class InserterCircuitConditions ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InserterCircuitConditions) ---@field circuit? CircuitCondition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InserterCircuitConditions) ---@field logistics? CircuitCondition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InventoryFilter) ---@class InventoryFilter ---Position of the corresponding filter slot. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InventoryFilter) ---@field index uint ---Item prototype name of the item to filter. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#InventoryFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@class ItemPrototypeFilter ---The condition to filter on. One of `"tool"`, `"mergeable"`, `"item-with-inventory"`, `"selection-tool"`, `"item-with-label"`, `"has-rocket-launch-products"`, `"fuel"`, `"place-result"`, `"burnt-result"`, `"place-as-tile"`, `"placed-as-equipment-result"`, `"name"`, `"type"`, `"flag"`, `"subgroup"`, `"fuel-category"`, `"stack-size"`, `"default-request-amount"`, `"wire-count"`, `"fuel-value"`, `"fuel-acceleration-multiplier"`, `"fuel-top-speed-multiplier"`, `"fuel-emissions-multiplier"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@field invert? boolean ---Applies to **"place-result"**: (optional) ---Filters for the place result. --- ---Applies to **"burnt-result"**: (optional) ---Filters for the burnt result. --- ---Applies to **"place-as-tile"**: (optional) ---Filters for the placed tile. --- ---Applies to **"placed-as-equipment-result"**: (optional) ---Filters for the placed equipment. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@field elem_filters? EntityPrototypeFilter[] ---Applies to **"name"**: (required) ---The prototype name, or list of acceptable names. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@field name string|string[] ---Applies to **"type"**: (required) ---The prototype type, or a list of acceptable types. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@field type string|string[] ---Applies to **"flag"**: (required) ---One of the values in [ItemPrototypeFlags](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@field flag string ---Applies to **"subgroup"**: (required) ---A [LuaGroup](https://lua-api.factorio.com/latest/LuaGroup.html) (subgroup) name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@field subgroup string ---Applies to **"fuel-category"**: (required) ---A [LuaFuelCategoryPrototype](https://lua-api.factorio.com/latest/LuaFuelCategoryPrototype.html) name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@field fuel-category string ---Applies to **"stack-size"**: (required) --- ---Applies to **"default-request-amount"**: (required) --- ---Applies to **"wire-count"**: (required) --- ---Applies to **"fuel-value"**: (required) --- ---Applies to **"fuel-acceleration-multiplier"**: (required) --- ---Applies to **"fuel-top-speed-multiplier"**: (required) --- ---Applies to **"fuel-emissions-multiplier"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@field comparison ComparatorString ---Applies to **"stack-size"**: (required) ---The value to compare against. --- ---Applies to **"default-request-amount"**: (required) ---The value to compare against. --- ---Applies to **"wire-count"**: (required) ---The value to compare against. --- ---Applies to **"fuel-value"**: (required) ---The value to compare against. --- ---Applies to **"fuel-acceleration-multiplier"**: (required) ---The value to compare against. --- ---Applies to **"fuel-top-speed-multiplier"**: (required) ---The value to compare against. --- ---Applies to **"fuel-emissions-multiplier"**: (required) ---The value to compare against. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFilter) ---@field value uint ---A set of flags. Active flags are in the dictionary as `true`, while inactive flags aren't present at all. --- ---By default, none of these flags are set. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@class ItemPrototypeFlags ---Determines whether the logistics areas of roboports should be drawn when holding this item. Used by the deconstruction planner by default. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@field ["draw-logistic-overlay"] true|nil ---Hides the item in the logistic requests and filters GUIs (among others). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@field ["hidden"] true|nil ---Always shows the item in the logistic requests and filters GUIs (among others) even when the recipe for that item is locked. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@field ["always-show"] true|nil ---Hides the item from the bonus GUI. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@field ["hide-from-bonus-gui"] true|nil ---Hides the item from the tooltip that's shown when hovering over a burner inventory. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@field ["hide-from-fuel-tooltip"] true|nil ---Prevents the item from being stacked. It also prevents the item from stacking in assembling machine input slots, which can otherwise exceed the item stack size if required by the recipe. Additionally, the item does not show an item count when in the cursor. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@field ["not-stackable"] true|nil ---Makes the item act as an extension to the inventory that it is placed in. Only has an effect for items with inventory. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@field ["can-extend-inventory"] true|nil ---Makes construction bots prefer this item when building the entity specified by its `place_result`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@field ["primary-place-result"] true|nil ---Allows the item to be opened by the player, firing the `on_mod_item_opened` event. Only has an effect for selection tool items. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@field ["mod-openable"] true|nil ---Makes it so the item is deleted when clearing the cursor, instead of being put into the player's inventory. The copy-paste tools use this by default, for example. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@field ["only-in-cursor"] true|nil ---Allows the item to be spawned by a quickbar shortcut or custom input. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeFlags) ---@field ["spawnable"] true|nil ---An item prototype may be specified in one of three ways. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemPrototypeIdentification) ---@alias ItemPrototypeIdentification LuaItemStack|LuaItemPrototype|string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemStackDefinition) ---@class ItemStackDefinition ---Prototype name of the item the stack holds. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemStackDefinition) ---@field name string ---Number of items the stack holds. If not specified, defaults to `1`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemStackDefinition) ---@field count? uint ---Health of the items in the stack. Defaults to `1.0`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemStackDefinition) ---@field health? float ---Durability of the tool items in the stack. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemStackDefinition) ---@field durability? double ---Amount of ammo in the ammo items in the stack. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemStackDefinition) ---@field ammo? double ---Tags of the items with tags in the stack. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemStackDefinition) ---@field tags? string[] ---An item may be specified in one of two ways. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemStackIdentification) ---@alias ItemStackIdentification SimpleItemStack|LuaItemStack ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemStackLocation) ---@class ItemStackLocation ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemStackLocation) ---@field inventory defines.inventory ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ItemStackLocation) ---@field slot uint ---Localised strings are a way to support translation of in-game text. It is an array where the first element is the key and the remaining elements are parameters that will be substituted for placeholders in the template designated by the key. --- ---The key identifies the string template. For example, `"gui-alert-tooltip.attack"` (for the template `"__1__ --- objects are being damaged"`; see the file `data/core/locale/en.cfg`). --- ---The template can contain placeholders such as `__1__` or `__2__`. These will be replaced by the respective parameter in the LocalisedString. The parameters themselves can be other localised strings, which will be processed recursively in the same fashion. Localised strings can not be recursed deeper than 20 levels and can not have more than 20 parameters. --- ---As a special case, when the key is just the empty string, all the parameters will be concatenated (after processing, if any are localised strings). If there is only one parameter, it will be used as is. --- ---Furthermore, when an API function expects a localised string, it will also accept a regular string (i.e. not a table) which will not be translated, as well as a number, boolean or `nil`, which will be converted to their textual representation. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LocalisedString) --- ---### Example ---In the English translation, this will print `"No ammo"`; in the Czech translation, it will print `"Bez munice"`: ---``` ---game.player.print({"description.no-ammo"}) ---``` --- The `description.no-ammo` template contains no placeholders, so no further parameters are necessary. --- ---### Example ---In the English translation, this will print `"Durability: 5/9"`; in the Japanese one, it will print `"耐久度: 5/9"`: ---``` ---game.player.print({"description.durability", 5, 9}) ---``` --- ---### Example ---This will print `"hello"` in all translations: ---``` ---game.player.print({"", "hello"}) ---``` --- ---### Example ---This will print `"Iron plate: 60"` in the English translation and `"Eisenplatte: 60"` in the German translation. ---``` ---game.print({"", {"item-name.iron-plate"}, ": ", 60}) ---``` ---@alias LocalisedString string|number|boolean|LuaObject|nil|(string|LocalisedString)[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LogisticFilter) ---@class LogisticFilter ---The index this filter applies to. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LogisticFilter) ---@field index uint ---The item name for this filter. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LogisticFilter) ---@field name string ---The count for this filter. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LogisticFilter) ---@field count uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LogisticParameters) ---@class LogisticParameters ---The item. `nil` clears the filter. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LogisticParameters) ---@field name? string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LogisticParameters) ---@field min? uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LogisticParameters) ---@field max? uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Loot) ---@class Loot ---Item prototype name of the result. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Loot) ---@field item string ---Probability that any loot at all will drop, as a number in range [0, 1]. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Loot) ---@field probability double ---Minimum amount of loot to drop. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Loot) ---@field count_min double ---Maximum amount of loot to drop. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Loot) ---@field count_max double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityClonedEventFilter) ---@class LuaEntityClonedEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityClonedEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityClonedEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityClonedEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityClonedEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityClonedEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDamagedEventFilter) ---@class LuaEntityDamagedEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`, `"original-damage-amount"`, `"final-damage-amount"`, `"damage-type"`, `"final-health"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDamagedEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDamagedEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDamagedEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---Applies to **"damage-type"**: (required) ---A [LuaDamagePrototype](https://lua-api.factorio.com/latest/LuaDamagePrototype.html) name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDamagedEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDamagedEventFilter) ---@field name string ---Applies to **"original-damage-amount"**: (required) --- ---Applies to **"final-damage-amount"**: (required) --- ---Applies to **"final-health"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDamagedEventFilter) ---@field comparison ComparatorString ---Applies to **"original-damage-amount"**: (required) ---The value to compare against. --- ---Applies to **"final-damage-amount"**: (required) ---The value to compare against. --- ---Applies to **"final-health"**: (required) ---The value to compare against. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDamagedEventFilter) ---@field value float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDeconstructionCancelledEventFilter) ---@class LuaEntityDeconstructionCancelledEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDeconstructionCancelledEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDeconstructionCancelledEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDeconstructionCancelledEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDeconstructionCancelledEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDeconstructionCancelledEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDiedEventFilter) ---@class LuaEntityDiedEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDiedEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDiedEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDiedEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDiedEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityDiedEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForDeconstructionEventFilter) ---@class LuaEntityMarkedForDeconstructionEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForDeconstructionEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForDeconstructionEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForDeconstructionEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForDeconstructionEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForDeconstructionEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForUpgradeEventFilter) ---@class LuaEntityMarkedForUpgradeEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForUpgradeEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForUpgradeEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForUpgradeEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForUpgradeEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaEntityMarkedForUpgradeEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerBuiltEntityEventFilter) ---@class LuaPlayerBuiltEntityEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`, `"force"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerBuiltEntityEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerBuiltEntityEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerBuiltEntityEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerBuiltEntityEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerBuiltEntityEventFilter) ---@field name string ---Applies to **"force"**: (required) ---The entity force --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerBuiltEntityEventFilter) ---@field force string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerMinedEntityEventFilter) ---@class LuaPlayerMinedEntityEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerMinedEntityEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerMinedEntityEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerMinedEntityEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerMinedEntityEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerMinedEntityEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerRepairedEntityEventFilter) ---@class LuaPlayerRepairedEntityEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerRepairedEntityEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerRepairedEntityEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerRepairedEntityEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerRepairedEntityEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPlayerRepairedEntityEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPostEntityDiedEventFilter) ---@class LuaPostEntityDiedEventFilter ---The condition to filter on. Can only be `"type"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPostEntityDiedEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPostEntityDiedEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPostEntityDiedEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPostEntityDiedEventFilter) ---@field type string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostDeconstructedEventFilter) ---@class LuaPreGhostDeconstructedEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostDeconstructedEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostDeconstructedEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostDeconstructedEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostDeconstructedEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostDeconstructedEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostUpgradedEventFilter) ---@class LuaPreGhostUpgradedEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostUpgradedEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostUpgradedEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostUpgradedEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostUpgradedEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreGhostUpgradedEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPrePlayerMinedEntityEventFilter) ---@class LuaPrePlayerMinedEntityEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPrePlayerMinedEntityEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPrePlayerMinedEntityEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPrePlayerMinedEntityEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPrePlayerMinedEntityEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPrePlayerMinedEntityEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreRobotMinedEntityEventFilter) ---@class LuaPreRobotMinedEntityEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreRobotMinedEntityEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreRobotMinedEntityEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreRobotMinedEntityEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreRobotMinedEntityEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaPreRobotMinedEntityEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotBuiltEntityEventFilter) ---@class LuaRobotBuiltEntityEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`, `"force"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotBuiltEntityEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotBuiltEntityEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotBuiltEntityEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotBuiltEntityEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotBuiltEntityEventFilter) ---@field name string ---Applies to **"force"**: (required) ---The entity force --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotBuiltEntityEventFilter) ---@field force string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotMinedEntityEventFilter) ---@class LuaRobotMinedEntityEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotMinedEntityEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotMinedEntityEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotMinedEntityEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotMinedEntityEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaRobotMinedEntityEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedBuiltEventFilter) ---@class LuaScriptRaisedBuiltEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedBuiltEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedBuiltEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedBuiltEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedBuiltEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedBuiltEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedDestroyEventFilter) ---@class LuaScriptRaisedDestroyEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedDestroyEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedDestroyEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedDestroyEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedDestroyEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedDestroyEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedReviveEventFilter) ---@class LuaScriptRaisedReviveEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedReviveEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedReviveEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedReviveEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedReviveEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaScriptRaisedReviveEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaSectorScannedEventFilter) ---@class LuaSectorScannedEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaSectorScannedEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaSectorScannedEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaSectorScannedEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaSectorScannedEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaSectorScannedEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaUpgradeCancelledEventFilter) ---@class LuaUpgradeCancelledEventFilter ---The condition to filter on. One of `"ghost"`, `"rail"`, `"rail-signal"`, `"rolling-stock"`, `"robot-with-logistics-interface"`, `"vehicle"`, `"turret"`, `"crafting-machine"`, `"wall-connectable"`, `"transport-belt-connectable"`, `"circuit-network-connectable"`, `"type"`, `"name"`, `"ghost_type"`, `"ghost_name"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaUpgradeCancelledEventFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaUpgradeCancelledEventFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaUpgradeCancelledEventFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type --- ---Applies to **"ghost_type"**: (required) ---The ghost prototype type --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaUpgradeCancelledEventFilter) ---@field type string ---Applies to **"name"**: (required) ---The prototype name --- ---Applies to **"ghost_name"**: (required) ---The ghost prototype name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#LuaUpgradeCancelledEventFilter) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapAndDifficultySettings) ---@class MapAndDifficultySettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapAndDifficultySettings) ---@field pollution PollutionMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapAndDifficultySettings) ---@field enemy_evolution EnemyEvolutionMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapAndDifficultySettings) ---@field enemy_expansion EnemyExpansionMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapAndDifficultySettings) ---@field unit_group UnitGroupMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapAndDifficultySettings) ---@field steering SteeringMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapAndDifficultySettings) ---@field path_finder PathFinderMapSettings ---If a behavior fails this many times, the enemy (or enemy group) is destroyed. This solves biters getting stuck within their own base. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapAndDifficultySettings) ---@field max_failed_behavior_count uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapAndDifficultySettings) ---@field difficulty_settings DifficultySettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapExchangeStringData) ---@class MapExchangeStringData ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapExchangeStringData) ---@field map_settings MapAndDifficultySettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapExchangeStringData) ---@field map_gen_settings MapGenSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenPreset) ---@class MapGenPreset ---The string used to alphabetically sort the presets. It is a simple string that has no additional semantic meaning. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenPreset) ---@field order string ---Whether this is the preset that is selected by default. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenPreset) ---@field default? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenPreset) ---@field basic_settings? MapGenSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenPreset) ---@field advanced_settings? AdvancedMapGenSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@class MapGenSettings ---The inverse of 'water scale' in the map generator GUI. Lower `terrain_segmentation` increases the scale of elevation features (lakes, continents, etc). This behavior can be overridden with alternate elevation generators (see `property_expression_names`, below). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field terrain_segmentation MapGenSize ---The equivalent to 'water coverage' in the map generator GUI. Specifically, when this value is non-zero, `water_level = 10 * log2` (the value of this field), and the elevation generator subtracts water level from elevation before adding starting lakes. If water is set to 'none', elevation is clamped to a small positive value before adding starting lakes. This behavior can be overridden with alternate elevation generators (see `property_expression_names`, below). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field water MapGenSize ---Indexed by autoplace control prototype name. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field autoplace_controls {[string]: AutoplaceControl} ---Whether undefined `autoplace_controls` should fall back to the default controls or not. Defaults to `true`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field default_enable_all_autoplace_controls boolean ---Each setting in this dictionary maps the string type to the settings for that type. Valid types are `"entity"`, `"tile"` and `"decorative"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field autoplace_settings {[string]: AutoplaceSettings} ---Map generation settings for entities of the type "cliff". --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field cliff_settings CliffPlacementSettings ---The random seed used to generated this map. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field seed uint ---Width in tiles. If `0`, the map has 'infinite' width, with the actual limitation being one million tiles in each direction from the center. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field width uint ---Height in tiles. If `0`, the map has 'infinite' height, with the actual limitation being one million tiles in each direction from the center. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field height uint ---Size of the starting area. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field starting_area MapGenSize ---Positions of the starting areas. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field starting_points MapPosition[] ---Whether peaceful mode is enabled for this map. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field peaceful_mode boolean ---Overrides for tile property value generators. Values either name a NamedNoiseExpression or can be literal numbers, stored as strings (e.g. `"5"`). All other controls can be overridden by a property expression names. Notable properties: ---- `moisture` - a value between 0 and 1 that determines whether a tile becomes sandy (low moisture) or grassy (high moisture). ---- `aux` - a value between 0 and 1 that determines whether low-moisture tiles become sand or red desert. ---- `temperature` - provides a value (vaguely representing degrees Celsius, varying between -20 and 50) that is used (together with moisture and aux) as part of tree and decorative placement. ---- `elevation` - tiles values less than zero become water. Cliffs are placed along certain contours according to [CliffPlacementSettings](https://lua-api.factorio.com/latest/Concepts.html#CliffPlacementSettings). ---- `cliffiness` - determines whether (when >0.5) or not (when <0.5) a cliff will be placed at an otherwise suitable (according to [CliffPlacementSettings](https://lua-api.factorio.com/latest/Concepts.html#CliffPlacementSettings)) location. ---- `enemy-base-intensity` - a number that is referenced by both `enemy-base-frequency` and `enemy-base-radius`. i.e. if this is overridden, enemy base frequency and size will both be affected and do something reasonable. By default, this expression returns a value proportional to distance from any starting point, clamped at about 7. ---- `enemy-base-frequency` - a number representing average number of enemy bases per tile for a region, by default in terms of `enemy-base-intensity`. ---- `enemy-base-radius` - a number representing the radius of an enemy base, if one were to be placed on the given tile, by default proportional to a constant plus `enemy-base-intensity`. Climate controls ('Moisture' and 'Terrain type' at the bottom of the Terrain tab in the map generator GUI) don't have their own dedicated structures in MapGenSettings. Instead, their values are stored as property expression overrides with long names: ---- `control-setting:moisture:frequency:multiplier` - frequency (inverse of scale) multiplier for moisture noise. Default is 1. ---- `control-setting:moisture:bias` - global bias for moisture (which normally varies between 0 and 1). Default is 0. ---- `control-setting:aux:frequency:multiplier` - frequency (inverse of scale) multiplier for aux (called 'terrain type' in the GUI) noise. Default is 1. ---- `control-setting:aux:bias` - global bias for aux/terrain type (which normally varies between 0 and 1). Default is 0. All other MapGenSettings feed into named noise expressions, and therefore placement can be overridden by including the name of a property in this dictionary. The probability and richness functions for placing specific tiles, entities, and decoratives can be overridden by including an entry named `{tile|entity|decorative}:(prototype name):{probability|richness}`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings) ---@field property_expression_names {[string]: string} ---A floating point number specifying an amount. --- ---For backwards compatibility, MapGenSizes can also be specified as one of the following strings, which will be converted to a number (when queried, a number will always be returned): --- ---**Note:** The map generation algorithm officially supports the range of values the in-game map generation screen shows (specifically `0` and values from `1/6` to `6`). Values outside this range are not guaranteed to work as expected. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapGenSize) ---@alias MapGenSize float|"none"|"very-low"|"very-small"|"very-poor"|"low"|"small"|"poor"|"normal"|"medium"|"regular"|"high"|"big"|"good"|"very-high"|"very-big"|"very-good" ---Coordinates on a surface, for example of an entity. MapPositions may be specified either as a dictionary with `x`, `y` as keys, or simply as an array with two elements. --- ---The coordinates are saved as a fixed-size 32 bit integer, with 8 bits reserved for decimal precision, meaning the smallest value step is `1/2^8 = 0.00390625` tiles. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapPosition) --- ---### Example ---Explicit definition: ---``` ---{x = 5.5, y = 2} ---{y = 2.25, x = 5.125} ---``` --- ---### Example ---Shorthand: ---``` ---{1.625, 2.375} ---``` ---@alias MapPosition MapPosition.0|MapPosition.1 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapSettings) ---@class MapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapSettings) ---@field pollution PollutionMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapSettings) ---@field enemy_evolution EnemyEvolutionMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapSettings) ---@field enemy_expansion EnemyExpansionMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapSettings) ---@field unit_group UnitGroupMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapSettings) ---@field steering SteeringMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapSettings) ---@field path_finder PathFinderMapSettings ---If a behavior fails this many times, the enemy (or enemy group) is destroyed. This solves biters getting stuck within their own base. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapSettings) ---@field max_failed_behavior_count uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapViewSettings) ---@class MapViewSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapViewSettings) ---@field show-logistic-network? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapViewSettings) ---@field show-electric-network? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapViewSettings) ---@field show-turret-range? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapViewSettings) ---@field show-pollution? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapViewSettings) ---@field show-train-station-names? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapViewSettings) ---@field show-player-names? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapViewSettings) ---@field show-networkless-logistic-members? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MapViewSettings) ---@field show-non-standard-map-info? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModChangeData) ---@class ModChangeData ---Old version of the mod. May be `nil` if the mod wasn't previously present (i.e. it was just added). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModChangeData) ---@field old_version string ---New version of the mod. May be `nil` if the mod is no longer present (i.e. it was just removed). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModChangeData) ---@field new_version string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModSetting) ---@class ModSetting ---The value of the mod setting. The type depends on the kind of setting. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModSetting) ---@field value int|double|boolean|string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModSettingPrototypeFilter) ---@class ModSettingPrototypeFilter ---The condition to filter on. One of `"type"`, `"mod"`, `"setting-type"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModSettingPrototypeFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModSettingPrototypeFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModSettingPrototypeFilter) ---@field invert? boolean ---Applies to **"type"**: (required) ---The prototype type, or a list of acceptable types. --- ---Applies to **"setting-type"**: (required) ---The setting scope type (`"startup"`, `"runtime-global"`, or `"runtime-per-user"`) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModSettingPrototypeFilter) ---@field type string|string[] ---Applies to **"mod"**: (required) ---The mod name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModSettingPrototypeFilter) ---@field mod string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModuleEffectValue) ---@class ModuleEffectValue ---The percentual increase of the attribute. A value of `0.6` means a 60% increase. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModuleEffectValue) ---@field bonus float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModuleEffects) ---@class ModuleEffects ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModuleEffects) ---@field consumption? ModuleEffectValue ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModuleEffects) ---@field speed? ModuleEffectValue ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModuleEffects) ---@field productivity? ModuleEffectValue ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ModuleEffects) ---@field pollution? ModuleEffectValue ---A set of flags. Active flags are in the dictionary as `true`, while inactive flags aren't present at all. --- ---To write to this, use an array[[string](https://lua-api.factorio.com/latest/Builtin-Types.html#string)] of the mouse buttons that should be possible to use with on button. The flag `"left-and-right"` can also be set, which will set `"left"` and `"right"` to `true`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#MouseButtonFlags) ---@class MouseButtonFlags ---@field ["left"] true|nil ---@field ["right"] true|nil ---@field ["middle"] true|nil ---@field ["button-4"] true|nil ---@field ["button-5"] true|nil ---@field ["button-6"] true|nil ---@field ["button-7"] true|nil ---@field ["button-8"] true|nil ---@field ["button-9"] true|nil ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#NoiseExpression) ---@class NoiseExpression ---Names the type of the expression and determines what other fields are required. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#NoiseExpression) ---@field type string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#NthTickEventData) ---@class NthTickEventData ---The tick during which the event happened. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#NthTickEventData) ---@field tick uint ---The nth tick this handler was registered to. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#NthTickEventData) ---@field nth_tick uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Offer) ---@class Offer ---List of prices. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Offer) ---@field price Ingredient[] ---The action that will take place when a player accepts the offer. Usually a `"give-item"` modifier. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Offer) ---@field offer TechnologyModifier ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#OldTileAndPosition) ---@class OldTileAndPosition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#OldTileAndPosition) ---@field old_tile LuaTilePrototype ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#OldTileAndPosition) ---@field position TilePosition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@class PathFinderMapSettings ---The pathfinder performs a step of the backward search every `fwd2bwd_ratio`'th step. The minimum allowed value is `2`, which means symmetric search. The default value is `5`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field fwd2bwd_ratio uint ---When looking at which node to check next, their heuristic value is multiplied by this ratio. The higher it is, the more the search is directed straight at the goal. Defaults to `2`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field goal_pressure_ratio double ---The maximum number of nodes that are expanded per tick. Defaults to `1,000`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field max_steps_worked_per_tick double ---The maximum amount of work each pathfinding job is allowed to do per tick. Defaults to `8,000`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field max_work_done_per_tick uint ---Whether to cache paths at all. Defaults to `true`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field use_path_cache boolean ---Number of elements in the short cache. Defaults to `5`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field short_cache_size uint ---Number of elements in the long cache. Defaults to `25`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field long_cache_size uint ---The minimal distance to the goal in tiles required to be searched in the short path cache. Defaults to `10`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field short_cache_min_cacheable_distance double ---The minimal number of nodes required to be searched in the short path cache. Defaults to `50`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field short_cache_min_algo_steps_to_cache uint ---The minimal distance to the goal in tiles required to be searched in the long path cache. Defaults to `30`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field long_cache_min_cacheable_distance double ---When looking for a connection to a cached path, search at most for this number of steps times the original estimate. Defaults to `100`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field cache_max_connect_to_cache_steps_multiplier uint ---When looking for a path from cache, make sure it doesn't start too far from the requested start in relative terms. Defaults to `0.2`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field cache_accept_path_start_distance_ratio double ---When looking for a path from cache, make sure it doesn't end too far from the requested end in relative terms. This is typically more lenient than the start ratio since the end target could be moving. Defaults to `0.15`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field cache_accept_path_end_distance_ratio double ---Same principle as `cache_accept_path_start_distance_ratio`, but used for negative cache queries. Defaults to `0.3`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field negative_cache_accept_path_start_distance_ratio double ---Same principle as `cache_accept_path_end_distance_ratio`, but used for negative cache queries. Defaults to `0.3`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field negative_cache_accept_path_end_distance_ratio double ---When assigning a rating to the best path, this multiplier times start distances is considered. Defaults to `10`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field cache_path_start_distance_rating_multiplier double ---When assigning a rating to the best path, this multiplier times end distances is considered. This value is typically higher than the start multiplier as this results in better end path quality. Defaults to `20`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field cache_path_end_distance_rating_multiplier double ---A penalty that is applied for another unit that is on the way to the goal. This is mainly relevant for situations where a group of units has arrived at the target they are supposed to attack, making units further back circle around to reach the target. Defaults to `30`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field stale_enemy_with_same_destination_collision_penalty double ---The distance in tiles after which other moving units are not considered for pathfinding. Defaults to `5`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field ignore_moving_enemy_collision_distance double ---A penalty that is applied for another unit that is too close and either not moving or has a different goal. Defaults to `30`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field enemy_with_different_destination_collision_penalty double ---The general collision penalty with other units. Defaults to `10`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field general_entity_collision_penalty double ---The collision penalty for positions that require the destruction of an entity to get to. Defaults to `3`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field general_entity_subsequent_collision_penalty double ---The collision penalty for collisions in the extended bounding box but outside the entity's actual bounding box. Defaults to `3`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field extended_collision_penalty double ---The amount of path finder requests accepted per tick regardless of the requested path's length. Defaults to `10`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field max_clients_to_accept_any_new_request uint ---When the `max_clients_to_accept_any_new_request` amount is exhausted, only path finder requests with a short estimate will be accepted until this amount (per tick) is reached. Defaults to `100`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field max_clients_to_accept_short_new_request uint ---The maximum direct distance in tiles before a request is no longer considered short. Defaults to `100`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field direct_distance_to_consider_short_request uint ---The maximum amount of nodes a short request will traverse before being rescheduled as a long request. Defaults to `1000`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field short_request_max_steps uint ---The amount of steps that are allocated to short requests each tick, as a percentage of all available steps. Defaults to `0.5`, or 50%. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field short_request_ratio double ---The minimum amount of steps that are guaranteed to be performed for every request. Defaults to `2000`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field min_steps_to_check_path_find_termination uint ---If the actual amount of steps is higher than the initial estimate by this factor, pathfinding is terminated. Defaults to `2000.0`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field start_to_goal_cost_multiplier_to_terminate_path_find double ---The thresholds of waiting clients after each of which the per-tick work limit will be increased by the corresponding value in `overload_multipliers`. This is to avoid clients having to wait too long. Must have the same number of elements as `overload_multipliers`. Defaults to `{0, 100, 500}`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field overload_levels uint[] ---The multipliers to the amount of per-tick work applied after the corresponding thresholds in `overload_levels` have been reached. Must have the same number of elements as `overload_multipliers`. Defaults to `{2, 3, 4}`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field overload_multipliers double[] ---The delay in ticks between decrementing the score of all paths in the negative cache by one. Defaults to `20`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathFinderMapSettings) ---@field negative_path_cache_delay_interval uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathfinderFlags) ---@class PathfinderFlags ---Allows pathing through friendly entities. Defaults to `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathfinderFlags) ---@field allow_destroy_friendly_entities? boolean ---Allows the pathfinder to path through entities of the same force. Defaults to `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathfinderFlags) ---@field allow_paths_through_own_entities? boolean ---Enables path caching. This can be more efficient, but might fail to respond to changes in the environment. Defaults to `true`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathfinderFlags) ---@field cache? boolean ---Makes the pathfinder try to path in straight lines. Defaults to `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathfinderFlags) ---@field prefer_straight_paths? boolean ---Sets lower priority on the path request, meaning it might take longer to find a path at the expense of speeding up others. Defaults to `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathfinderFlags) ---@field low_priority? boolean ---Makes the pathfinder not break in the middle of processing this pathfind, no matter how much work is needed. Defaults to `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathfinderFlags) ---@field no_break? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathfinderWaypoint) ---@class PathfinderWaypoint ---The position of the waypoint on its surface. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathfinderWaypoint) ---@field position MapPosition ---`true` if the path from the previous waypoint to this one goes through an entity that must be destroyed. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PathfinderWaypoint) ---@field needs_destroy_to_reach boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PlaceAsTileResult) ---@class PlaceAsTileResult ---The tile prototype. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PlaceAsTileResult) ---@field result LuaTilePrototype ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PlaceAsTileResult) ---@field condition_size uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PlaceAsTileResult) ---@field condition CollisionMask ---A player may be specified in one of three ways. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PlayerIdentification) ---@alias PlayerIdentification uint|string|LuaPlayer ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@class PollutionMapSettings ---Whether pollution is enabled at all. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field enabled boolean ---The amount that is diffused to a neighboring chunk (possibly repeated for other directions as well). Defaults to `0.02`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field diffusion_ratio double ---The amount of PUs that need to be in a chunk for it to start diffusing. Defaults to `15`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field min_to_diffuse double ---The amount of pollution eaten by a chunk's tiles as a percentage of 1. Defaults to `1`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field ageing double ---Any amount of pollution larger than this value is visualized as this value instead. Defaults to `150`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field expected_max_per_chunk double ---Any amount of pollution smaller than this value (but bigger than zero) is visualized as this value instead. Defaults to `50`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field min_to_show_per_chunk double ---Defaults to `60`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field min_pollution_to_damage_trees double ---Defaults to `150`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field pollution_with_max_forest_damage double ---Defaults to `50`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field pollution_per_tree_damage double ---Defaults to `10`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field pollution_restored_per_tree_damage double ---Defaults to `20`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field max_pollution_to_restore_trees double ---Defaults to `1`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PollutionMapSettings) ---@field enemy_attack_pollution_consumption_modifier double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Product) ---@class Product ---`"item"` or `"fluid"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Product) ---@field type string ---Prototype name of the result. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Product) ---@field name string ---Amount of the item or fluid to give. If not specified, `amount_min`, `amount_max` and `probability` must all be specified. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Product) ---@field amount? double ---Minimal amount of the item or fluid to give. Has no effect when `amount` is specified. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Product) ---@field amount_min? uint|double ---Maximum amount of the item or fluid to give. Has no effect when `amount` is specified. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Product) ---@field amount_max? uint|double ---A value in range [0, 1]. Item or fluid is only given with this probability; otherwise no product is produced. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Product) ---@field probability? double ---How much of this product is a catalyst. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Product) ---@field catalyst_amount? uint|double ---Applies to **"fluid"**: (optional) ---The fluid temperature of this product. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Product) ---@field temperature? double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerAlertParameters) ---@class ProgrammableSpeakerAlertParameters ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerAlertParameters) ---@field show_alert boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerAlertParameters) ---@field show_on_map boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerAlertParameters) ---@field icon_signal_id SignalID ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerAlertParameters) ---@field alert_message string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerCircuitParameters) ---@class ProgrammableSpeakerCircuitParameters ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerCircuitParameters) ---@field signal_value_is_pitch boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerCircuitParameters) ---@field instrument_id uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerCircuitParameters) ---@field note_id uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerInstrument) ---@class ProgrammableSpeakerInstrument ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerInstrument) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerInstrument) ---@field notes string[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerParameters) ---@class ProgrammableSpeakerParameters ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerParameters) ---@field playback_volume double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerParameters) ---@field playback_globally boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ProgrammableSpeakerParameters) ---@field allow_polyphony boolean ---Types `"signal"` and `"item-group"` do not support filters. --- ---**Note:** Filters are always used as an array of filters of a specific type. Every filter can only be used with its corresponding event, and different types of event filters can not be mixed. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#PrototypeFilter) ---@alias PrototypeFilter (ItemPrototypeFilter|TilePrototypeFilter|EntityPrototypeFilter|FluidPrototypeFilter|RecipePrototypeFilter|DecorativePrototypeFilter|AchievementPrototypeFilter|EquipmentPrototypeFilter|TechnologyPrototypeFilter)[] ---The smooth orientation. It is a [float](https://lua-api.factorio.com/latest/Builtin-Types.html#float) in the range `[0, 1)` that covers a full circle, starting at the top and going clockwise. This means a value of `0` indicates "north", a value of `0.5` indicates "south". --- ---For example then, a value of `0.625` would indicate "south-west", and a value of `0.875` would indicate "north-west". --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RealOrientation) ---@alias RealOrientation float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RecipePrototypeFilter) ---@class RecipePrototypeFilter ---The condition to filter on. One of `"enabled"`, `"hidden"`, `"hidden-from-flow-stats"`, `"hidden-from-player-crafting"`, `"allow-as-intermediate"`, `"allow-intermediates"`, `"allow-decomposition"`, `"always-show-made-in"`, `"always-show-products"`, `"show-amount-in-title"`, `"has-ingredients"`, `"has-products"`, `"has-ingredient-item"`, `"has-ingredient-fluid"`, `"has-product-item"`, `"has-product-fluid"`, `"subgroup"`, `"category"`, `"energy"`, `"emissions-multiplier"`, `"request-paste-multiplier"`, `"overload-multiplier"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RecipePrototypeFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RecipePrototypeFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RecipePrototypeFilter) ---@field invert? boolean ---Applies to **"has-ingredient-item"**: (optional) ---Matches if at least 1 ingredient is an item that matches these filters. --- ---Applies to **"has-ingredient-fluid"**: (optional) ---Matches if at least 1 ingredient is a fluid that matches these filters. --- ---Applies to **"has-product-item"**: (optional) ---Matches if at least 1 product is an item that matches these filters. --- ---Applies to **"has-product-fluid"**: (optional) ---Matches if at least 1 product is a fluid that matches these filters. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RecipePrototypeFilter) ---@field elem_filters? ItemPrototypeFilter[] ---Applies to **"subgroup"**: (required) ---A [LuaGroup](https://lua-api.factorio.com/latest/LuaGroup.html) (subgroup) name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RecipePrototypeFilter) ---@field subgroup string ---Applies to **"category"**: (required) ---A [LuaRecipeCategoryPrototype](https://lua-api.factorio.com/latest/LuaRecipeCategoryPrototype.html) name --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RecipePrototypeFilter) ---@field category string ---Applies to **"energy"**: (required) --- ---Applies to **"emissions-multiplier"**: (required) --- ---Applies to **"request-paste-multiplier"**: (required) --- ---Applies to **"overload-multiplier"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RecipePrototypeFilter) ---@field comparison ComparatorString ---Applies to **"energy"**: (required) ---The value to compare against. --- ---Applies to **"emissions-multiplier"**: (required) ---The value to compare against. --- ---Applies to **"request-paste-multiplier"**: (required) ---The value to compare against. --- ---Applies to **"overload-multiplier"**: (required) ---The value to compare against. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RecipePrototypeFilter) ---@field value double ---A number between 0 and 255 inclusive, represented by one of the following named strings or the string version of the number. For example `"27"` and `"decals"` are both valid. Higher values are rendered above lower values. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RenderLayer) ---@alias RenderLayer string|"water-tile"|"ground-tile"|"tile-transition"|"decals"|"lower-radius-visualization"|"radius-visualization"|"transport-belt-integration"|"resource"|"building-smoke"|"decorative"|"ground-patch"|"ground-patch-higher"|"ground-patch-higher2"|"remnants"|"floor"|"transport-belt"|"transport-belt-endings"|"floor-mechanics-under-corpse"|"corpse"|"floor-mechanics"|"item"|"lower-object"|"transport-belt-circuit-connector"|"lower-object-above-shadow"|"object"|"higher-object-under"|"higher-object-above"|"item-in-inserter-hand"|"wires"|"wires-above"|"entity-info-icon"|"entity-info-icon-above"|"explosion"|"projectile"|"smoke"|"air-object"|"air-entity-info-icon"|"light-effect"|"selection-box"|"higher-selection-box"|"collision-selection-box"|"arrow"|"cursor" ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Resistance) ---@class Resistance ---Absolute damage decrease --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Resistance) ---@field decrease float ---Percentual damage decrease --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Resistance) ---@field percent float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RidingState) ---@class RidingState ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RidingState) ---@field acceleration defines.riding.acceleration ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#RidingState) ---@field direction defines.riding.direction ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptArea) ---@class ScriptArea ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptArea) ---@field area BoundingBox ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptArea) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptArea) ---@field color Color ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptArea) ---@field id uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptPosition) ---@class ScriptPosition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptPosition) ---@field position MapPosition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptPosition) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptPosition) ---@field color Color ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptPosition) ---@field id uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptRenderTarget) ---@class ScriptRenderTarget ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptRenderTarget) ---@field entity? LuaEntity ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptRenderTarget) ---@field entity_offset? Vector ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptRenderTarget) ---@field position? MapPosition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptRenderVertexTarget) ---@class ScriptRenderVertexTarget ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptRenderVertexTarget) ---@field target MapPosition|LuaEntity ---Only used if `target` is a LuaEntity. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#ScriptRenderVertexTarget) ---@field target_offset? Vector ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectedPrototypeData) ---@class SelectedPrototypeData ---E.g. `"entity"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectedPrototypeData) ---@field base_type string ---E.g. `"tree"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectedPrototypeData) ---@field derived_type string ---E.g. `"tree-05"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectedPrototypeData) ---@field name string ---A set of flags on a selection tool that define how entities and tiles are selected. Active flags are in the dictionary as `true`, while inactive flags aren't present at all. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@class SelectionModeFlags ---Selects entities and tiles as if selecting them for a blueprint. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["blueprint"] true|nil ---Selects entities and tiles as if selecting them for deconstruction. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["deconstruct"] true|nil ---Selects entities and tiles as if selecting them for deconstruction cancellation. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["cancel-deconstruct"] true|nil ---Selects items on the ground. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["items"] true|nil ---Selects trees. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["trees"] true|nil ---Selects entities which are considered a [building](https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.is_building), plus landmines. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["buildable-type"] true|nil ---Selects no entities or tiles, but is useful to select an area. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["nothing"] true|nil ---Selects entities and tiles that can be [built by an item](https://lua-api.factorio.com/latest/LuaItemPrototype.html#LuaItemPrototype.place_result). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["items-to-place"] true|nil ---Selects all entities. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["any-entity"] true|nil ---Selects all tiles. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["any-tile"] true|nil ---Selects entities with the same force as the selecting player. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["same-force"] true|nil ---Selects entities with a different force as the selecting player. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["not-same-force"] true|nil ---Selects entities from a [friendly](https://lua-api.factorio.com/latest/LuaForce.html#LuaForce.is_friend) force. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["friend"] true|nil ---Selects entities from an [enemy](https://lua-api.factorio.com/latest/LuaForce.html#LuaForce.is_enemy) force. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["enemy"] true|nil ---Selects entities as if selecting them for upgrading. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["upgrade"] true|nil ---Selects entities as if selecting them for upgrade cancellation. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["cancel-upgrade"] true|nil ---Selects entities as if selecting them for downgrading. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["downgrade"] true|nil ---Selects entities that are [entities with health](https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.is_entity_with_health). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["entity-with-health"] true|nil ---Deprecated. Replaced by `is-military-target`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["entity-with-force"] true|nil ---Selects entities that are [military targets](https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.is_military_target). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["is-military-target"] true|nil ---Selects entities that are [entities with owner](https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.is_entity_with_owner). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["entity-with-owner"] true|nil ---Selects entities that are not `rolling-stocks`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SelectionModeFlags) ---@field ["avoid-rolling-stock"] true|nil ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Signal) ---@class Signal ---ID of the signal. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Signal) ---@field signal SignalID ---Value of the signal. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Signal) ---@field count int ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SignalID) ---@class SignalID ---`"item"`, `"fluid"`, or `"virtual"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SignalID) ---@field type string ---Name of the item, fluid or virtual signal. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SignalID) ---@field name? string ---An item stack may be specified in one of two ways. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SimpleItemStack) --- ---### Example ---Both of these lines specify an item stack of one iron plate: ---``` ---{name="iron-plate"} ---``` --- ---``` ---{name="iron-plate", count=1} ---``` --- ---### Example ---This is a stack of 47 copper plates: ---``` ---{name="copper-plate", count=47} ---``` --- ---### Example ---These are both full stacks of iron plates (for iron-plate, a full stack is 100 plates): ---``` ---"iron-plate" ---``` --- ---``` ---{name="iron-plate", count=100} ---``` ---@alias SimpleItemStack string|ItemStackDefinition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@class SmokeSource ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field name string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field frequency double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field offset double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field position? Vector ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field north_position? Vector ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field east_position? Vector ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field south_position? Vector ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field west_position? Vector ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field deviation? MapPosition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field starting_frame_speed uint16 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field starting_frame_speed_deviation double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field starting_frame uint16 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field starting_frame_deviation double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field slow_down_factor uint8 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field height float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field height_deviation float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field starting_vertical_speed float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field starting_vertical_speed_deviation float ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SmokeSource) ---@field vertical_speed_slowdown float ---It can be either the name of a [sound prototype](https://wiki.factorio.com/Prototype/Sound) defined in the data stage, or a path in the form `"type/name"`. The latter option can be sorted into three categories. --- ---The validity of a SoundPath can be verified at runtime using [LuaGameScript::is_valid_sound_path](https://lua-api.factorio.com/latest/LuaGameScript.html#LuaGameScript.is_valid_sound_path). --- ---The utility and ambient types each contain general use sound prototypes defined by the game itself. ---- `"utility"` - Uses the [UtilitySounds](https://wiki.factorio.com/Prototype/UtilitySounds) prototype. Example: `"utility/wire_connect_pole"` ---- `"ambient"` - Uses [AmbientSound](https://wiki.factorio.com/Prototype/AmbientSound) prototypes. Example: `"ambient/resource-deficiency"` --- ---The following types can be combined with any tile name as long as its prototype defines the --- corresponding sound. ---- `"tile-walking"` - Uses [Tile::walking_sound](https://wiki.factorio.com/Prototype/Tile#walking_sound). Example: `"tile-walking/concrete"` ---- `"tile-mined"` - Uses [Tile::mined_sound](https://wiki.factorio.com/Prototype/Tile#mined_sound) ---- `"tile-build-small"` - Uses [Tile::build_sound](https://wiki.factorio.com/Prototype/Tile#build_sound). Example: `"tile-build-small/concrete"` ---- `"tile-build-medium"` - Uses [Tile::build_sound](https://wiki.factorio.com/Prototype/Tile#build_sound) ---- `"tile-build-large"` - Uses [Tile::build_sound](https://wiki.factorio.com/Prototype/Tile#build_sound) --- ---The following types can be combined with any entity name as long as its prototype defines the --- corresponding sound. ---- `"entity-build"` - Uses [Entity::build_sound](https://wiki.factorio.com/Prototype/Entity#build_sound). Example: `"entity-build/wooden-chest"` ---- `"entity-mined"` - Uses [Entity::mined_sound](https://wiki.factorio.com/Prototype/Entity#mined_sound) ---- `"entity-mining"` - Uses [Entity::mining_sound](https://wiki.factorio.com/Prototype/Entity#mining_sound) ---- `"entity-vehicle_impact"` - Uses [Entity::vehicle_impact_sound](https://wiki.factorio.com/Prototype/Entity#vehicle_impact_sound) ---- `"entity-rotated"` - Uses [Entity::rotated_sound](https://wiki.factorio.com/Prototype/Entity#rotated_sound) ---- `"entity-open"` - Uses [Entity::open_sound](https://wiki.factorio.com/Prototype/Entity#open_sound) ---- `"entity-close"` - Uses [Entity::close_sound](https://wiki.factorio.com/Prototype/Entity#close_sound) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SoundPath) ---@alias SoundPath string ---Defines which slider in the game's sound settings affects the volume of this sound. Furthermore, some sound types are mixed differently than others, e.g. zoom level effects are applied. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SoundType) ---@alias SoundType "game-effect"|"gui-effect"|"ambient"|"environment"|"walking"|"alert"|"wind" ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SpawnPointDefinition) ---@class SpawnPointDefinition ---Evolution factor for which this weight applies. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SpawnPointDefinition) ---@field evolution_factor double ---Probability of spawning this unit at this evolution factor. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SpawnPointDefinition) ---@field weight double ---It can be either the name of a [sprite prototype](https://wiki.factorio.com/Prototype/Sprite) defined in the data stage, or a path in form "type/name". --- ---The validity of a SpritePath can be verified at runtime using [LuaGameScript::is_valid_sprite_path](https://lua-api.factorio.com/latest/LuaGameScript.html#LuaGameScript.is_valid_sprite_path). --- ---The supported types are: ---- `"item"` - for example "item/iron-plate" is the icon sprite of iron plate ---- `"entity"` - for example "entity/small-biter" is the icon sprite of the small biter ---- `"technology"` ---- `"recipe"` ---- `"item-group"` ---- `"fluid"` ---- `"tile"` ---- `"virtual-signal"` ---- `"achievement"` ---- `"equipment"` ---- `"file"` - path to an image file located inside the current scenario. This file is not preloaded so it will be slower; for frequently used sprites, it is better to define sprite prototype and use it instead. ---- `"utility"` - sprite defined in the utility-sprites object, these are the pictures used by the game internally for the UI. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SpritePath) ---@alias SpritePath string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SteeringMapSetting) ---@class SteeringMapSetting ---Does not include the radius of the unit. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SteeringMapSetting) ---@field radius double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SteeringMapSetting) ---@field separation_factor double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SteeringMapSetting) ---@field separation_force double ---Used to make steering look better for aesthetic purposes. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SteeringMapSetting) ---@field force_unit_fuzzy_goto_behavior boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SteeringMapSettings) ---@class SteeringMapSettings ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SteeringMapSettings) ---@field default SteeringMapSetting ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SteeringMapSettings) ---@field moving SteeringMapSetting ---A surface may be specified in one of three ways. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#SurfaceIdentification) ---@alias SurfaceIdentification uint|string|LuaSurface ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TabAndContent) ---@class TabAndContent ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TabAndContent) ---@field tab LuaGuiElement ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TabAndContent) ---@field content LuaGuiElement ---A dictionary of string to the four basic Lua types: `string`, `boolean`, `number`, `table`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Tags) --- ---### Example ---``` ---{a = 1, b = true, c = "three", d = {e = "f"}} ---``` ---@alias Tags {[string]: AnyBasic} ---A technology may be specified in one of three ways. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyIdentification) ---@alias TechnologyIdentification string|LuaTechnology|LuaTechnologyPrototype ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyModifier) ---@class TechnologyModifier ---Modifier type. Specifies which of the other fields will be available. Possible values are: `"inserter-stack-size-bonus"`, `"stack-inserter-capacity-bonus"`, `"laboratory-speed"`, `"character-logistic-trash-slots"`, `"maximum-following-robots-count"`, `"worker-robot-speed"`, `"worker-robot-storage"`, `"ghost-time-to-live"`, `"turret-attack"`, `"ammo-damage"`, `"give-item"`, `"gun-speed"`, `"unlock-recipe"`, `"character-crafting-speed"`, `"character-mining-speed"`, `"character-running-speed"`, `"character-build-distance"`, `"character-item-drop-distance"`, `"character-reach-distance"`, `"character-resource-reach-distance"`, `"character-item-pickup-distance"`, `"character-loot-pickup-distance"`, `"character-inventory-slots-bonus"`, `"deconstruction-time-to-live"`, `"max-failed-attempts-per-tick-per-construction-queue"`, `"max-successful-attempts-per-tick-per-construction-queue"`, `"character-health-bonus"`, `"mining-drill-productivity-bonus"`, `"train-braking-force-bonus"`, `"zoom-to-world-enabled"`, `"zoom-to-world-ghost-building-enabled"`, `"zoom-to-world-blueprint-enabled"`, `"zoom-to-world-deconstruction-planner-enabled"`, `"zoom-to-world-upgrade-planner-enabled"`, `"zoom-to-world-selection-tool-enabled"`, `"worker-robot-battery"`, `"laboratory-productivity"`, `"follower-robot-lifetime"`, `"artillery-range"`, `"nothing"`, `"character-additional-mining-categories"`, `"character-logistic-requests"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyModifier) ---@field type string ---Applies to **"gun-speed"**: (required) ---Prototype name of the ammunition category that is affected --- ---Applies to **"ammo-damage"**: (required) ---Prototype name of the ammunition category that is affected --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyModifier) ---@field ammo_category string ---Applies to **"gun-speed"**: (required) ---Modification value. This will be added to the current gun speed modifier upon researching. --- ---Applies to **"ammo-damage"**: (required) ---Modification value. This will be added to the current ammo damage modifier upon researching. --- ---Applies to **"turret-attack"**: (required) ---Modification value. This will be added to the current turret damage modifier upon researching. --- ---Applies to **"Other types"**: (required) ---Modification value. This value will be added to the variable it modifies. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyModifier) ---@field modifier double ---Applies to **"give-item"**: (required) ---Item prototype name to give. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyModifier) ---@field item string ---Applies to **"give-item"**: (optional) ---Number of items to give. Defaults to `1`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyModifier) ---@field count? uint ---Applies to **"turret-attack"**: (required) ---Turret prototype name this modifier will affect. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyModifier) ---@field turret_id string ---Applies to **"unlock-recipe"**: (required) ---Recipe prototype name to unlock. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyModifier) ---@field recipe string ---Applies to **"nothing"**: (required) ---Description of this nothing modifier. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyModifier) ---@field effect_description LocalisedString ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyPrototypeFilter) ---@class TechnologyPrototypeFilter ---The condition to filter on. One of `"enabled"`, `"hidden"`, `"upgrade"`, `"visible-when-disabled"`, `"has-effects"`, `"has-prerequisites"`, `"research-unit-ingredient"`, `"level"`, `"max-level"`, `"time"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyPrototypeFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyPrototypeFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyPrototypeFilter) ---@field invert? boolean ---Applies to **"research-unit-ingredient"**: (required) ---The research ingredient to check. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyPrototypeFilter) ---@field ingredient string ---Applies to **"level"**: (required) --- ---Applies to **"max-level"**: (required) --- ---Applies to **"time"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyPrototypeFilter) ---@field comparison ComparatorString ---Applies to **"level"**: (required) ---The value to compare against. --- ---Applies to **"max-level"**: (required) ---The value to compare against. --- ---Applies to **"time"**: (required) ---The value to compare against. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TechnologyPrototypeFilter) ---@field value uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Tile) ---@class Tile ---The position of the tile. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Tile) ---@field position TilePosition ---The prototype name of the tile. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Tile) ---@field name string ---Coordinates of a tile on a [LuaSurface](https://lua-api.factorio.com/latest/LuaSurface.html) where each integer `x`/`y` represents a different tile. This uses the same format as [MapPosition](https://lua-api.factorio.com/latest/Concepts.html#MapPosition), except it rounds any non-integer `x`/`y` down to whole numbers. It can be specified either with or without explicit keys. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TilePosition) ---@alias TilePosition TilePosition.0|TilePosition.1 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TilePrototypeFilter) ---@class TilePrototypeFilter ---The condition to filter on. One of `"minable"`, `"autoplace"`, `"blueprintable"`, `"item-to-place"`, `"collision-mask"`, `"walking-speed-modifier"`, `"vehicle-friction-modifier"`, `"decorative-removal-probability"`, `"emissions"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TilePrototypeFilter) ---@field filter string ---How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the filters, `"and"` has higher precedence than `"or"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TilePrototypeFilter) ---@field mode? string ---Inverts the condition. Default is `false`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TilePrototypeFilter) ---@field invert? boolean ---Applies to **"collision-mask"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TilePrototypeFilter) ---@field mask CollisionMask|CollisionMaskWithFlags ---Applies to **"collision-mask"**: (required) ---How to filter: `"collides"`, `"layers-equals"`, `"contains-any"` or `"contains-all"` --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TilePrototypeFilter) ---@field mask_mode string ---Applies to **"walking-speed-modifier"**: (required) --- ---Applies to **"vehicle-friction-modifier"**: (required) --- ---Applies to **"decorative-removal-probability"**: (required) --- ---Applies to **"emissions"**: (required) --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TilePrototypeFilter) ---@field comparison ComparatorString ---Applies to **"walking-speed-modifier"**: (required) ---The value to compare against. --- ---Applies to **"vehicle-friction-modifier"**: (required) ---The value to compare against. --- ---Applies to **"decorative-removal-probability"**: (required) ---The value to compare against. --- ---Applies to **"emissions"**: (required) ---The value to compare against. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TilePrototypeFilter) ---@field value double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TrainSchedule) ---@class TrainSchedule ---Index of the currently active record --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TrainSchedule) ---@field current uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TrainSchedule) ---@field records TrainScheduleRecord[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TrainScheduleRecord) ---@class TrainScheduleRecord ---Name of the station. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TrainScheduleRecord) ---@field station? string ---Rail to path to. Ignored if `station` is present. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TrainScheduleRecord) ---@field rail? LuaEntity ---When a train is allowed to reach rail target from any direction it will be `nil`. If rail has to be reached from specific direction, this value allows to choose the direction. This value corresponds to [LuaEntity::connected_rail_direction](https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.connected_rail_direction) of a TrainStop. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TrainScheduleRecord) ---@field rail_direction? defines.rail_direction ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TrainScheduleRecord) ---@field wait_conditions? WaitCondition[] ---Only present when the station is temporary, the value is then always `true`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TrainScheduleRecord) ---@field temporary? boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerDelivery) ---@class TriggerDelivery ---One of `"instant"`, `"projectile"`, `"flame-thrower"`, `"beam"`, `"stream"`, `"artillery"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerDelivery) ---@field type string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerDelivery) ---@field source_effects TriggerEffectItem[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerDelivery) ---@field target_effects TriggerEffectItem[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerEffectItem) ---@class TriggerEffectItem ---One of`"damage"`, `"create-entity"`, `"create-explosion"`, `"create-fire"`, `"create-smoke"`, `"create-trivial-smoke"`, `"create-particle"`, `"create-sticker"`, `"nested-result"`, `"play-sound"`, `"push-back"`, `"destroy-cliffs"`, `"show-explosion-on-chart"`, `"insert-item"`, `"script"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerEffectItem) ---@field type string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerEffectItem) ---@field repeat_count uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerEffectItem) ---@field affects_target boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerEffectItem) ---@field show_in_tooltip boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerItem) ---@class TriggerItem ---One of `"direct"`, `"area"`, `"line"`, `"cluster"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerItem) ---@field type string ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerItem) ---@field action_delivery? TriggerDelivery[] ---The trigger will only affect entities that contain any of these flags. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerItem) ---@field entity_flags? EntityPrototypeFlags ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerItem) ---@field ignore_collision_condition boolean ---The trigger will only affect entities that would collide with given collision mask. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerItem) ---@field collision_mask CollisionMask ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerItem) ---@field trigger_target_mask TriggerTargetMask ---If `"enemy"`, the trigger will only affect entities whose force is different from the attacker's and for which there is no cease-fire set. `"ally"` is the opposite of `"enemy"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerItem) ---@field force ForceCondition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerItem) ---@field repeat_count uint ---A set of trigger target masks. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#TriggerTargetMask) ---@alias TriggerTargetMask {[string]: boolean} ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@class UnitGroupMapSettings ---The minimum amount of time in ticks a group will spend gathering before setting off. The actual time is a random time between the minimum and maximum times. Defaults to `3,600` ticks. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field min_group_gathering_time uint ---The maximum amount of time in ticks a group will spend gathering before setting off. The actual time is a random time between the minimum and maximum times. Defaults to `10*3,600=36,000` ticks. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field max_group_gathering_time uint ---After gathering has finished, the group is allowed to wait this long in ticks for delayed members. New members are not accepted anymore however. Defaults to `2*3,600=7,200` ticks. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field max_wait_time_for_late_members uint ---The minimum group radius in tiles. The actual radius is adjusted based on the number of members. Defaults to `5.0`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field min_group_radius double ---The maximum group radius in tiles. The actual radius is adjusted based on the number of members. Defaults to `30.0`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field max_group_radius double ---The maximum speed a percentage of its regular speed that a group member can speed up to when catching up with the group. Defaults to `1.4`, or 140%. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field max_member_speedup_when_behind double ---The minimum speed a percentage of its regular speed that a group member can slow down to when ahead of the group. Defaults to `0.6`, or 60%. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field max_member_slowdown_when_ahead double ---The minimum speed as a percentage of its maximum speed that a group will slow down to so members that fell behind can catch up. Defaults to `0.3`, or 30%. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field max_group_slowdown_factor double ---When a member of a group falls back more than this factor times the group radius, the group will slow down to its `max_group_slowdown_factor` speed to let them catch up. Defaults to `3`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field max_group_member_fallback_factor double ---When a member of a group falls back more than this factor times the group radius, it will be dropped from the group. Defaults to `10`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field member_disown_distance double ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field tick_tolerance_when_member_arrives uint ---The maximum number of automatically created unit groups gathering for attack at any time. Defaults to `30`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field max_gathering_unit_groups uint ---The maximum number of members for an attack unit group. This only affects automatically created unit groups, manual groups created through the API are unaffected. Defaults to `200`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitGroupMapSettings) ---@field max_unit_group_size uint ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitSpawnDefinition) ---@class UnitSpawnDefinition ---Prototype name of the unit that would be spawned. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitSpawnDefinition) ---@field unit string ---The points at which to spawn the unit. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UnitSpawnDefinition) ---@field spawn_points SpawnPointDefinition[] ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UpgradeFilter) ---@class UpgradeFilter ---`"item"`, or `"entity"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UpgradeFilter) ---@field type string ---Name of the item, or entity. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#UpgradeFilter) ---@field name? string ---A vector is a two-element array containing the `x` and `y` components. In some specific cases, the vector is a table with `x` and `y` keys instead, which the documentation will point out. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#Vector) --- ---### Example ---``` ---right = {1.0, 0.0} ---``` ---@alias Vector Vector.0|Vector.1 ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#VehicleAutomaticTargetingParameters) ---@class VehicleAutomaticTargetingParameters ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#VehicleAutomaticTargetingParameters) ---@field auto_target_without_gunner boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#VehicleAutomaticTargetingParameters) ---@field auto_target_with_gunner boolean ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WaitCondition) ---@class WaitCondition ---One of `"time"`, `"inactivity"`, `"full"`, `"empty"`, `"item_count"`, `"circuit"`, `"robots_inactive"`, `"fluid_count"`, `"passenger_present"`, `"passenger_not_present"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WaitCondition) ---@field type string ---Either `"and"`, or `"or"`. Tells how this condition is to be compared with the preceding conditions in the corresponding `wait_conditions` array. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WaitCondition) ---@field compare_type string ---Number of ticks to wait when `type` is `"time"`, or number of ticks of inactivity when `type` is `"inactivity"`. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WaitCondition) ---@field ticks? uint ---Only present when `type` is `"item_count"`, `"circuit"` or `"fluid_count"`, and a circuit condition is configured. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WaitCondition) ---@field condition? CircuitCondition ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WireConnectionDefinition) ---@class WireConnectionDefinition ---Wire color, either [defines.wire_type.red](https://lua-api.factorio.com/latest/defines.html#defines.wire_type.red) or [defines.wire_type.green](https://lua-api.factorio.com/latest/defines.html#defines.wire_type.green). --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WireConnectionDefinition) ---@field wire defines.wire_type ---The entity to (dis)connect the source entity with. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WireConnectionDefinition) ---@field target_entity LuaEntity ---Mandatory if the source entity has more than one circuit connection using circuit wire. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WireConnectionDefinition) ---@field source_circuit_id? defines.circuit_connector_id ---Mandatory if the target entity has more than one circuit connection using circuit wire. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WireConnectionDefinition) ---@field target_circuit_id? defines.circuit_connector_id ---Mandatory if the source entity has more than one wire connection using copper wire. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WireConnectionDefinition) ---@field source_wire_id? defines.circuit_connector_id ---Mandatory if the target entity has more than one wire connection using copper wire. --- ---[View documentation](https://lua-api.factorio.com/latest/Concepts.html#WireConnectionDefinition) ---@field target_wire_id? defines.circuit_connector_id