{"application":"factorio","application_version":"2.0.76","api_version":6,"stage":"prototype","prototypes":[{"name":"AccumulatorPrototype","order":0,"description":"Entity with energy source with specialised animation for charging/discharging. Used for the [accumulator](https://wiki.factorio.com/Accumulator) entity.","examples":["```\n{\n  type = \"accumulator\",\n  name = \"accumulator\",\n  icon = \"__base__/graphics/icons/accumulator.png\",\n  flags = {\"placeable-neutral\", \"player-creation\"},\n  minable = {mining_time = 0.1, result = \"accumulator\"},\n  fast_replaceable_group = \"accumulator\",\n  max_health = 150,\n  corpse = \"accumulator-remnants\",\n  collision_box = {{-0.9, -0.9}, {0.9, 0.9}},\n  selection_box = {{-1, -1}, {1, 1}},\n  energy_source =\n  {\n    type = \"electric\",\n    buffer_capacity = \"5MJ\",\n    usage_priority = \"tertiary\",\n    input_flow_limit = \"300kW\",\n    output_flow_limit = \"300kW\"\n  },\n  chargable_graphics =\n  {\n    picture = accumulator_picture(),\n    charge_animation = accumulator_charge(),\n    charge_cooldown = 30,\n    discharge_animation = accumulator_discharge(),\n    discharge_cooldown = 60\n  },\n  water_reflection = accumulator_reflection(),\n  working_sound =\n  {\n    main_sounds =\n    {\n      {\n        sound = {filename = \"__base__/sound/accumulator-working.ogg\", volume = 0.4, modifiers = volume_multiplier(\"main-menu\", 1.44)},\n        match_volume_to_activity = true,\n        activity_to_volume_modifiers = {offset = 2, inverted = true},\n        fade_in_ticks = 4,\n        fade_out_ticks = 20\n      },\n      {\n        sound = {filename = \"__base__/sound/accumulator-discharging.ogg\", volume = 0.4, modifiers = volume_multiplier(\"main-menu\", 1.44)},\n        match_volume_to_activity = true,\n        activity_to_volume_modifiers = {offset = 1},\n        fade_in_ticks = 4,\n        fade_out_ticks = 20\n      }\n    },\n    idle_sound = {filename = \"__base__/sound/accumulator-idle.ogg\", volume = 0.35},\n    max_sounds_per_prototype = 3,\n    audible_distance_modifier = 0.5\n  },\n\n  circuit_connector = circuit_connector_definitions[\"accumulator\"],\n  circuit_wire_max_distance = default_circuit_wire_max_distance,\n\n  default_output_signal = {type = \"virtual\", name = \"signal-A\"}\n}\n```"],"parent":"EntityWithOwnerPrototype","abstract":false,"typename":"accumulator","deprecated":false,"properties":[{"name":"chargable_graphics","order":1,"description":"","override":false,"type":"ChargableGraphics","optional":true},{"name":"circuit_connector","order":5,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":2,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"default_output_signal","order":6,"description":"The name of the signal that is the default for when an accumulator is connected to the circuit network.","override":false,"type":"SignalIDConnector","optional":true},{"name":"draw_circuit_wires","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_source","order":0,"description":"The capacity of the energy source buffer specifies the capacity of the accumulator.","override":false,"type":"ElectricEnergySource","optional":false}]},{"name":"AchievementPrototype","order":1,"description":"This prototype definition is used for the in-game achievements.","examples":["```\n{\n  type = \"achievement\",\n  name = \"so-long-and-thanks-for-all-the-fish\",\n  order = \"g[secret]-a[so-long-and-thanks-for-all-the-fish]\",\n  icon = \"__base__/graphics/achievement/so-long-and-thanks-for-all-the-fish.png\",\n  icon_size = 128\n}\n```"],"parent":"Prototype","abstract":false,"typename":"achievement","deprecated":false,"properties":[{"name":"allowed_without_fight","order":4,"description":"If this is set to `false`, it is not possible to complete the achievement on the peaceful difficulty setting or when the enemy base generation settings have been changed.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"icon","order":1,"description":"Path to the icon file.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":2,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nThe base game uses 128px icons for achievements.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":0,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"steam_stats_name","order":3,"description":"Unusable by mods, as this refers to unlocking the achievement through Steam.","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}}]},{"name":"AchievementPrototypeWithCondition","order":2,"description":"","parent":"AchievementPrototype","abstract":true,"deprecated":false,"properties":[{"name":"objective_condition","order":0,"description":"The condition that needs to be met to receive the achievement. Required for `\"complete-objective-achievement\"`, `\"dont-build-entity-achievement\"`, and `\"dont-craft-manually-achievement\"`. Not allowed for `\"dont-kill-manually-achievement\"` and `\"dont-research-before-researching-achievement\"`. Only allowed for `\"dont-use-entity-in-energy-production-achievement\"` if `\"last_hour_only\"` is `false`.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"game-finished"},{"complex_type":"literal","value":"rocket-launched"},{"complex_type":"literal","value":"late-research"}],"full_format":false},"optional":true}]},{"name":"ActiveDefenseEquipmentPrototype","order":3,"description":"Used by [discharge defense](https://wiki.factorio.com/Discharge_defense) and [personal laser defense](https://wiki.factorio.com/Personal_laser_defense).","parent":"EquipmentPrototype","abstract":false,"typename":"active-defense-equipment","deprecated":false,"properties":[{"name":"attack_parameters","order":1,"description":"","override":false,"type":"AttackParameters","optional":false},{"name":"automatic","order":0,"description":"","override":false,"type":"boolean","optional":false}]},{"name":"ActiveTriggerPrototype","order":4,"description":"The abstract base of all active trigger prototypes. Active triggers are a special type of trigger delivery mechanism that function of a period of time and do not result in the creation or deletion of entities to function. They are intended to be short-lived objects associated with a surface and cannot be cancelled until they self-destruct. Active triggers support migrations and prototype changes, but require their own named prototype to function.","parent":"Prototype","abstract":true,"deprecated":false,"properties":[]},{"name":"AgriculturalTowerPrototype","order":5,"description":"","visibility":["space_age"],"parent":"EntityWithOwnerPrototype","abstract":false,"typename":"agricultural-tower","deprecated":false,"properties":[{"name":"accepted_seeds","order":29,"description":"When missing, all items with [plant result](prototype:ItemPrototype::plant_result) will be accepted. When provided, only items on this list that have plant result will be accepted.","override":false,"type":{"complex_type":"array","value":"ItemID"},"optional":true},{"name":"arm_extending_sound","order":14,"description":"","override":false,"type":"InterruptibleSound","optional":true},{"name":"arm_extending_sound_source","order":20,"description":"","override":false,"type":"string","optional":true},{"name":"central_orienting_sound","order":13,"description":"","override":false,"type":"InterruptibleSound","optional":true},{"name":"central_orienting_sound_source","order":19,"description":"","override":false,"type":"string","optional":true},{"name":"circuit_connector","order":28,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":25,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"crane","order":1,"description":"","override":false,"type":"AgriculturalCraneProperties","optional":false},{"name":"crane_energy_usage","order":6,"description":"The amount of energy this agricultural tower uses while the crane is moving.","override":false,"type":"Energy","optional":false},{"name":"draw_circuit_wires","order":27,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":26,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_source","order":2,"description":"","override":false,"type":"EnergySource","optional":false},{"name":"energy_usage","order":5,"description":"The amount of energy this agricultural tower uses for each planted or harvested [plant](prototype:PlantPrototype).","override":false,"type":"Energy","optional":false},{"name":"graphics_set","order":0,"description":"","override":false,"type":"CraftingMachineGraphicsSet","optional":true},{"name":"grappler_extending_sound","order":16,"description":"","override":false,"type":"InterruptibleSound","optional":true},{"name":"grappler_extending_sound_source","order":22,"description":"","override":false,"type":"string","optional":true},{"name":"grappler_orienting_sound","order":15,"description":"","override":false,"type":"InterruptibleSound","optional":true},{"name":"grappler_orienting_sound_source","order":21,"description":"","override":false,"type":"string","optional":true},{"name":"growth_area_radius","order":9,"description":"The minimum radius of empty space a [plant](prototype:PlantPrototype) requires around it to be planted.\n\nMust be >= 0 and <= growth_grid_tile_size / 2","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.95}},{"name":"growth_grid_tile_size","order":8,"description":"The size of one grid tile a [plant](prototype:PlantPrototype) is planted into.\n\nMust be positive.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":3}},{"name":"harvesting_procedure_points","order":24,"description":"","override":false,"type":{"complex_type":"array","value":"Vector3D"},"optional":true},{"name":"harvesting_sound","order":18,"description":"","override":false,"type":"Sound","optional":true},{"name":"input_inventory_size","order":3,"description":"","override":false,"type":"ItemStackIndex","optional":false},{"name":"output_inventory_size","order":4,"description":"","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"planting_procedure_points","order":23,"description":"","override":false,"type":{"complex_type":"array","value":"Vector3D"},"optional":true},{"name":"planting_sound","order":17,"description":"","override":false,"type":"Sound","optional":true},{"name":"radius","order":7,"description":"The radius represents [grid tiles](prototype:AgriculturalTowerPrototype::growth_grid_tile_size) which are created around the agricultural tower from its [collision box](prototype:EntityPrototype::collision_box).\n\nMust be positive.","override":false,"type":"double","optional":false},{"name":"radius_visualisation_picture","order":12,"description":"","override":false,"type":"Sprite","optional":true},{"name":"random_growth_offset","order":10,"description":"The maximum offset from the grid tile center which will be applied to the planting spot selected by this agricultural tower.\n\nMust be >= 0 and < 1.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.25}},{"name":"randomize_planting_tile","order":11,"description":"Whether the agricultural tower will start from a random grid tile when given a planting task.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"AirbornePollutantPrototype","order":6,"description":"A type of pollution that can spread throughout the chunks of a map.","parent":"Prototype","abstract":false,"typename":"airborne-pollutant","deprecated":false,"properties":[{"name":"affects_evolution","order":3,"description":"","override":false,"type":"boolean","optional":false},{"name":"affects_water_tint","order":4,"description":"If true, large amounts of this pollution will cause water tiles to turn a sickly green.","override":false,"type":"boolean","optional":false},{"name":"chart_color","order":1,"description":"","override":false,"type":"Color","optional":false},{"name":"damages_trees","order":5,"description":"If true, trees will occasionally take damage from this pollutant type. When they do, some amount of pollution is removed from the chunk equal to the map's `pollution_restored_per_tree_damage` setting.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"icon","order":2,"description":"","override":false,"type":"Sprite","optional":false},{"name":"localised_name_with_amount","order":0,"description":"The translated plural string key to use when displaying this pollution's name with an amount. See [Tutorial:Localisation](https://wiki.factorio.com/Tutorial:Localisation).","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":"airborne-pollutant-name-with-amount.<name>"}}]},{"name":"AmbientSound","order":7,"description":"This prototype is used to make sound while playing the game. This includes the game's [music](https://store.steampowered.com/app/436090/Factorio__Soundtrack/), composed by Daniel James Taylor.","examples":["```\n{\n  type = \"ambient-sound\",\n  name = \"world-ambience-4\",\n  track_type = \"interlude\",\n  sound =\n  {\n    filename = \"__base__/sound/ambient/world-ambience-4.ogg\",\n    volume = 1.2\n  }\n}\n```"],"abstract":false,"typename":"ambient-sound","deprecated":false,"properties":[{"name":"name","order":1,"description":"Unique textual identification of the prototype.","override":false,"type":"string","optional":false},{"name":"planet","order":4,"description":"Track without a planet is bound to space platforms.","override":false,"type":"SpaceLocationID","optional":true},{"name":"sound","order":5,"description":"Static music track.\n\nOne of `sound` or `variable_sound` must be defined. Both cannot be defined together.","override":false,"type":"Sound","optional":true},{"name":"track_type","order":3,"description":"","override":false,"type":"AmbientSoundType","optional":false},{"name":"type","order":0,"description":"Specification of the type of the prototype.","override":false,"type":{"complex_type":"literal","value":"ambient-sound"},"optional":false},{"name":"variable_sound","order":6,"description":"Variable music track.\n\nOne of `sound` or `variable_sound` must be defined. Both cannot be defined together.","override":false,"type":"VariableAmbientSoundVariableSound","optional":true},{"name":"weight","order":2,"description":"Cannot be less than zero.\n\nCannot be defined if `track_type` is `\"hero-track\"`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"AmmoCategory","order":8,"description":"An ammo category. Each weapon has an ammo category, and can use any ammo with the same ammo category. Ammo categories can also be upgraded by technologies.","parent":"Prototype","abstract":false,"typename":"ammo-category","instance_limit":255,"deprecated":false,"properties":[{"name":"bonus_gui_order","order":0,"description":"","override":false,"type":"Order","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"icon","order":2,"description":"Path to the icon file.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":3,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":1,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true}]},{"name":"AmmoItemPrototype","order":9,"description":"Ammo used for a gun.","parent":"ItemPrototype","abstract":false,"typename":"ammo","deprecated":false,"properties":[{"name":"ammo_category","order":3,"description":"","override":false,"type":"AmmoCategoryID","optional":false},{"name":"ammo_type","order":0,"description":"When using a plain [AmmoType](prototype:AmmoType) (no array), the ammo type applies to everything (`\"default\"`).\n\nWhen using an array of AmmoTypes, they have the additional [AmmoType::source_type](prototype:AmmoType::source_type) property.","override":false,"type":{"complex_type":"union","options":["AmmoType",{"complex_type":"array","value":"AmmoType"}],"full_format":false},"optional":false},{"name":"magazine_size","order":1,"description":"Number of shots before ammo item is consumed. Must be >= `1`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"reload_time","order":2,"description":"Amount of extra time (in ticks) it takes to reload the weapon after depleting the magazine. Must be >= `0`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"shoot_protected","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"AmmoTurretPrototype","order":10,"description":"A turret that consumes [ammo items](prototype:AmmoItemPrototype).","parent":"TurretPrototype","abstract":false,"typename":"ammo-turret","deprecated":false,"properties":[{"name":"automated_ammo_count","order":3,"description":"The amount of ammo that inserters automatically insert into this turret.","override":false,"type":"ItemCountType","optional":false},{"name":"energy_per_shot","order":1,"description":"","override":false,"type":"Energy","optional":true},{"name":"energy_source","order":0,"description":"","override":false,"type":"ElectricEnergySource","optional":true},{"name":"inventory_size","order":2,"description":"Size of the ammo inventory.","override":false,"type":"ItemStackIndex","optional":false},{"name":"prepare_with_no_ammo","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"AnimationPrototype","order":11,"description":"Specifies an animation that can be used with [LuaRendering::draw_animation](runtime:LuaRendering::draw_animation) at runtime.","abstract":false,"typename":"animation","deprecated":false,"properties":[{"name":"allow_forced_downscale","order":27,"description":"Only loaded if `layers` is not defined.\n\nIf `true`, the sprite may be downsampled to half its size on load even when 'Sprite quality' graphics setting is set to 'High'. Whether downsampling happens depends on detected hardware and other graphics settings.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"animation_speed","order":34,"description":"Only loaded if `layers` is not defined.\n\nModifier of the animation playing speed, the default of `1` means one animation frame per tick (60 fps). The speed of playing can often vary depending on the usage (output of steam engine for example). Has to be greater than `0`.\n\nIf `layers` are used, the `animation_speed` only has to be defined in one layer. All layers will run at the same speed.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"apply_runtime_tint","order":20,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"apply_special_effect","order":14,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"blend_mode","order":24,"description":"Only loaded if `layers` is not defined.","override":false,"type":"BlendMode","optional":true,"default":{"complex_type":"literal","value":"normal"}},{"name":"dice","order":37,"description":"Only loaded if `layers` is not defined.","override":false,"type":"uint8","optional":true},{"name":"dice_x","order":38,"description":"Only loaded if `layers` is not defined.","override":false,"type":"uint8","optional":true},{"name":"dice_y","order":39,"description":"Only loaded if `layers` is not defined.","override":false,"type":"uint8","optional":true},{"name":"draw_as_glow","order":17,"description":"Only loaded if `layers` is not defined.\n\nOnly one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. This takes precedence over `draw_as_light`.\n\nDraws first as a normal sprite, then again as a light layer. See [https://forums.factorio.com/91682](https://forums.factorio.com/91682).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"draw_as_light","order":18,"description":"Only loaded if `layers` is not defined.\n\nOnly one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"draw_as_shadow","order":16,"description":"Only loaded if `layers` is not defined.\n\nOnly one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. This takes precedence over `draw_as_glow` and `draw_as_light`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"filename","order":3,"description":"Only loaded if `layers` is not defined. Mandatory if neither `stripes` nor `filenames` are defined.\n\nThe path to the sprite file to use.","override":false,"type":"FileName","optional":true},{"name":"filenames","order":42,"description":"Only loaded if neither `layers` nor `stripes` are defined.","override":false,"type":{"complex_type":"array","value":"FileName"},"optional":true},{"name":"flags","order":5,"description":"Only loaded if `layers` is not defined.","override":false,"type":"SpriteFlags","optional":true},{"name":"frame_count","order":32,"description":"Only loaded if `layers` is not defined.\n\nCan't be `0`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"frame_sequence","order":40,"description":"Only loaded if `layers` is not defined.","override":false,"type":"AnimationFrameSequence","optional":true},{"name":"generate_sdf","order":28,"description":"Only loaded if `layers` is not defined.\n\nUnused.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"height","order":8,"description":"Only loaded if `layers` is not defined. Mandatory if `size` is not defined.\n\nHeight of one frame in pixels, from 0-4096.","override":false,"type":"SpriteSizeType","optional":true},{"name":"invert_colors","order":22,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"layers","order":2,"description":"If this property is present, all Animation definitions have to be placed as entries in the array, and they will all be loaded from there. `layers` may not be an empty table. Each definition in the array may also have the `layers` property.\n\n`animation_speed` and `max_advance` of the first layer are used for all layers. All layers will run at the same speed.\n\nIf this property is present, all other properties besides `name` and `type` are ignored.","override":false,"type":{"complex_type":"array","value":"Animation"},"optional":true},{"name":"line_length","order":33,"description":"Only loaded if `layers` is not defined.\n\nOnce the specified number of pictures is loaded, other pictures are loaded on other line. This is to allow having longer animations in matrix, to input files with too high width. The game engine limits the width of any input files to 8192px, so it is compatible with most graphics cards. `0` means that all the pictures are in one horizontal line.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"lines_per_file","order":44,"description":"Only loaded if `layers` is not defined. Mandatory if `filenames` is defined.","override":false,"type":"uint32","optional":true},{"name":"load_in_minimal_mode","order":25,"description":"Only loaded if `layers` is not defined.\n\nMinimal mode is entered when mod loading fails. You are in it when you see the gray box after (part of) the loading screen that tells you a mod error. Modders can ignore this property.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"max_advance","order":35,"description":"Only loaded if `layers` is not defined.\n\nIf `layers` are used, `max_advance` of the first layer is used for all layers.\n\nMaximum amount of frames the animation can move forward in one update.","override":false,"type":"float","optional":true,"default":"MAX_FLOAT"},{"name":"mipmap_count","order":19,"description":"Only loaded if `layers` is not defined.\n\nOnly loaded if this is an icon, that is it has the flag `\"group=icon\"` or `\"group=gui\"`.\n\nNote that `mipmap_count` doesn't make sense in an animation, as it is not possible to layout mipmaps in a way that would load both the animation and the mipmaps correctly (besides animations with just one frame). See [here](https://forums.factorio.com/viewtopic.php?p=549058#p549058).","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"name","order":1,"description":"Name of the animation. Can be used with [LuaRendering::draw_animation](runtime:LuaRendering::draw_animation) at runtime.","override":false,"type":"string","optional":false},{"name":"position","order":11,"description":"Only loaded if `layers` is not defined.\n\nLoaded only when `x` and `y` are both `0`. The first member of the tuple is `x` and the second is `y`.","override":false,"type":{"complex_type":"tuple","values":["SpriteSizeType","SpriteSizeType"]},"optional":true},{"name":"premul_alpha","order":26,"description":"Only loaded if `layers` is not defined.\n\nWhether alpha should be pre-multiplied.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"priority","order":4,"description":"Only loaded if `layers` is not defined.","override":false,"type":"SpritePriority","optional":true,"default":{"complex_type":"literal","value":"medium"}},{"name":"repeat_count","order":36,"description":"Only loaded if `layers` is not defined.\n\nHow many times to repeat the animation to complete an animation cycle. E.g. if one layer is 10 frames, a second layer of 1 frame would need `repeat_count = 10` to match the complete cycle.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"rotate_shift","order":13,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"run_mode","order":31,"description":"Only loaded if `layers` is not defined.","override":false,"type":"AnimationRunMode","optional":true,"default":{"complex_type":"literal","value":"forward"}},{"name":"scale","order":15,"description":"Only loaded if `layers` is not defined.\n\nValues other than `1` specify the scale of the sprite on default zoom. A scale of `2` means that the picture will be two times bigger on screen (and thus more pixelated).","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"shift","order":12,"description":"Only loaded if `layers` is not defined.\n\nThe shift in tiles. `util.by_pixel()` can be used to divide the shift by 32 which is the usual pixel height/width of 1 tile in normal resolution. Note that 32 pixel tile height/width is not enforced anywhere - any other tile height or width is also possible.","override":false,"type":"Vector","optional":true,"default":"`{0, 0}`"},{"name":"size","order":6,"description":"Only loaded if `layers` is not defined.\n\nThe width and height of one frame. If this is a tuple, the first member of the tuple is the width and the second is the height. Otherwise the size is both width and height. Width and height may only be in the range of 0-4096.","override":false,"type":{"complex_type":"union","options":["SpriteSizeType",{"complex_type":"tuple","values":["SpriteSizeType","SpriteSizeType"]}],"full_format":false},"optional":true},{"name":"slice","order":43,"description":"Only loaded if `layers` is not defined and if `filenames` is defined.","override":false,"type":"uint32","optional":true,"default":"Value of `frame_count`"},{"name":"stripes","order":41,"description":"Only loaded if `layers` is not defined.","override":false,"type":{"complex_type":"array","value":"Stripe"},"optional":true},{"name":"surface","order":29,"description":"Only loaded if `layers` is not defined.\n\nProvides hint to sprite atlas system, so it can try to put sprites that are intended to be used at the same locations to the same sprite atlas.","override":false,"type":"SpriteUsageSurfaceHint","optional":true,"default":{"complex_type":"literal","value":"any"}},{"name":"tint","order":23,"description":"Only loaded if `layers` is not defined.","override":false,"type":"Color","optional":true,"default":"`{r=1, g=1, b=1, a=1}`"},{"name":"tint_as_overlay","order":21,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"animation"},"optional":false},{"name":"usage","order":30,"description":"Only loaded if `layers` is not defined.\n\nProvides hint to sprite atlas system, so it can pack sprites that are related to each other to the same sprite atlas.","override":false,"type":"SpriteUsageHint","optional":true,"default":{"complex_type":"literal","value":"any"}},{"name":"width","order":7,"description":"Only loaded if `layers` is not defined. Mandatory if `size` is not defined.\n\nWidth of one frame in pixels, from 0-4096.","override":false,"type":"SpriteSizeType","optional":true},{"name":"x","order":9,"description":"Only loaded if `layers` is not defined.\n\nHorizontal position of the animation in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"y","order":10,"description":"Only loaded if `layers` is not defined.\n\nVertical position of the animation in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"ArithmeticCombinatorPrototype","order":12,"description":"An [arithmetic combinator](https://wiki.factorio.com/Arithmetic_combinator).","parent":"CombinatorPrototype","abstract":false,"typename":"arithmetic-combinator","deprecated":false,"properties":[{"name":"and_symbol_sprites","order":8,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"divide_symbol_sprites","order":3,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"left_shift_symbol_sprites","order":6,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"minus_symbol_sprites","order":1,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"modulo_symbol_sprites","order":4,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"multiply_symbol_sprites","order":2,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"or_symbol_sprites","order":9,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"plus_symbol_sprites","order":0,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"power_symbol_sprites","order":5,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"right_shift_symbol_sprites","order":7,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"xor_symbol_sprites","order":10,"description":"","override":false,"type":"Sprite4Way","optional":true}]},{"name":"ArmorPrototype","order":13,"description":"Armor to wear on your in-game [character](prototype:CharacterPrototype) for defense and buffs.","parent":"ToolPrototype","abstract":false,"typename":"armor","deprecated":false,"properties":[{"name":"collision_box","order":4,"description":"","override":false,"type":"BoundingBox","optional":true},{"name":"drawing_box","order":5,"description":"","override":false,"type":"BoundingBox","optional":true},{"name":"equipment_grid","order":0,"description":"Name of the [EquipmentGridPrototype](prototype:EquipmentGridPrototype) that this armor has.","override":false,"type":"EquipmentGridID","optional":true},{"name":"flight_sound","order":7,"description":"Only loaded if `provides_flight` is `true`.","override":false,"type":"InterruptibleSound","optional":true},{"name":"inventory_size_bonus","order":2,"description":"By how many slots the inventory of the player is expanded when the armor is worn.","override":false,"type":"ItemStackIndex","optional":true},{"name":"landing_sound","order":8,"description":"Only loaded if `provides_flight` is `true`.","override":false,"type":"Sound","optional":true},{"name":"moving_sound","order":10,"description":"","override":false,"type":"Sound","optional":true},{"name":"provides_flight","order":3,"description":"","visibility":["space_age"],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"resistances","order":1,"description":"What amount of damage the armor takes on what type of damage is incoming.","override":false,"type":{"complex_type":"array","value":"Resistance"},"optional":true},{"name":"steps_sound","order":9,"description":"","override":false,"type":"Sound","optional":true},{"name":"takeoff_sound","order":6,"description":"Only loaded if `provides_flight` is `true`.","override":false,"type":"Sound","optional":true}]},{"name":"ArrowPrototype","order":14,"description":"The arrows used for example in the campaign, they are literally just arrows.","examples":["```\n{\n  type = \"arrow\",\n  name = \"orange-arrow-with-circle\",\n  flags = { \"placeable-off-grid\", \"not-on-map\" },\n  blinking = true,\n  arrow_picture =\n  {\n    filename = \"__core__/graphics/arrows/gui-arrow-medium.png\",\n    priority = \"low\",\n    width = 58,\n    height = 62\n  },\n  circle_picture =\n  {\n    filename = \"__core__/graphics/arrows/gui-arrow-circle.png\",\n    priority = \"low\",\n    width = 50,\n    height = 50\n  }\n}\n```"],"parent":"EntityPrototype","abstract":false,"typename":"arrow","deprecated":false,"properties":[{"name":"arrow_picture","order":0,"description":"","override":false,"type":"Sprite","optional":false},{"name":"blinking","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"circle_picture","order":1,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"ArtilleryFlarePrototype","order":15,"description":"The entity spawned by the [artillery targeting remote](https://wiki.factorio.com/Artillery_targeting_remote).","parent":"EntityPrototype","abstract":false,"typename":"artillery-flare","deprecated":false,"properties":[{"name":"creation_shift","order":10,"description":"","override":false,"type":"Vector","optional":true},{"name":"early_death_ticks","order":16,"description":"How long this flare stays alive after `shots_per_flare` amount of shots have been shot at it.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":180}},{"name":"ended_in_water_trigger_effect","order":7,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"initial_frame_speed","order":14,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"initial_height","order":12,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"initial_speed","order":11,"description":"","override":false,"type":"Vector","optional":true},{"name":"initial_vertical_speed","order":13,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"life_time","order":1,"description":"","override":false,"type":"uint16","optional":false},{"name":"map_color","order":18,"description":"","override":true,"type":"Color","optional":false},{"name":"movement_modifier","order":9,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"movement_modifier_when_on_ground","order":8,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.8}},{"name":"pictures","order":0,"description":"Picture variation count and individual frame count must be equal to shadow variation count.","override":false,"type":"AnimationVariations","optional":true},{"name":"regular_trigger_effect","order":5,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"regular_trigger_effect_frequency","order":6,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"render_layer","order":3,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"render_layer_when_on_ground","order":4,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"lower-object"}},{"name":"selection_priority","order":19,"description":"The entity with the higher number is selectable before the entity with the lower number.\n\nThe value `0` will be treated the same as `nil`.","override":true,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":48}},{"name":"shadows","order":2,"description":"Shadow variation variation count and individual frame count must be equal to picture variation count.","override":false,"type":"AnimationVariations","optional":true},{"name":"shot_category","order":17,"description":"Only artillery turrets/wagons whose ammo's [ammo_category](prototype:AmmoItemPrototype::ammo_category) matches this category will shoot at this flare. Defaults to all ammo categories being able to shoot at this flare.","override":false,"type":"AmmoCategoryID","optional":true},{"name":"shots_per_flare","order":15,"description":"How many artillery shots should be fired at the position of this flare.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"ArtilleryProjectilePrototype","order":16,"description":"The projectile shot by [artillery](https://wiki.factorio.com/Artillery).","parent":"EntityPrototype","abstract":false,"typename":"artillery-projectile","deprecated":false,"properties":[{"name":"action","order":4,"description":"","override":false,"type":"Trigger","optional":true},{"name":"chart_picture","order":3,"description":"","override":false,"type":"Sprite","optional":true},{"name":"collision_box","order":9,"description":"Must have a collision box size of zero.","examples":["```\ncollision_box = {{0, 0}, {0, 0}}\n```"],"override":true,"type":"BoundingBox","optional":true,"default":"Empty = `{{0, 0}, {0, 0}}`"},{"name":"final_action","order":5,"description":"","override":false,"type":"Trigger","optional":true},{"name":"height_from_ground","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"map_color","order":8,"description":"","override":true,"type":"Color","optional":false},{"name":"picture","order":1,"description":"","override":false,"type":"Sprite","optional":true},{"name":"reveal_map","order":0,"description":"","override":false,"type":"boolean","optional":false},{"name":"rotatable","order":7,"description":"Whether the picture of the projectile is rotated to match the direction of travel.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"shadow","order":2,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"ArtilleryTurretPrototype","order":17,"description":"An [artillery turret](https://wiki.factorio.com/Artillery_turret).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"artillery-turret","deprecated":false,"properties":[{"name":"alert_when_attacking","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"ammo_stack_limit","order":2,"description":"Must be > 0.","override":false,"type":"ItemCountType","optional":false},{"name":"automated_ammo_count","order":3,"description":"Must be > 0. The amount of ammo that inserters automatically insert into this artillery turret.","override":false,"type":"ItemCountType","optional":true},{"name":"base_picture","order":10,"description":"","override":false,"type":"Animation4Way","optional":true},{"name":"base_picture_render_layer","order":9,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"lower-object"}},{"name":"base_picture_secondary_draw_order","order":8,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"cannon_barrel_light_direction","order":24,"description":"Only loaded if `cannon_barrel_recoil_shiftings` is loaded.","override":false,"type":"Vector3D","optional":true},{"name":"cannon_barrel_pictures","order":13,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"cannon_barrel_recoil_shiftings","order":22,"description":"","override":false,"type":{"complex_type":"array","value":"Vector3D"},"optional":true},{"name":"cannon_barrel_recoil_shiftings_load_correction_matrix","order":23,"description":"Only loaded if `cannon_barrel_recoil_shiftings` is loaded.","override":false,"type":{"complex_type":"array","value":"Vector3D"},"optional":true},{"name":"cannon_base_pictures","order":12,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"cannon_base_shift","order":11,"description":"","override":false,"type":"Vector3D","optional":false},{"name":"cannon_parking_frame_count","order":16,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"cannon_parking_speed","order":17,"description":"Must be positive.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"circuit_connector","order":21,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":18,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"disable_automatic_firing","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"draw_circuit_wires","order":20,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":19,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"gun","order":0,"description":"Name of a [GunPrototype](prototype:GunPrototype).","override":false,"type":"ItemID","optional":false},{"name":"inventory_size","order":1,"description":"Must be > 0.","override":false,"type":"ItemStackIndex","optional":false},{"name":"is_military_target","order":25,"description":"Whether this prototype should be a high priority target for enemy forces. See [Military units and structures](https://wiki.factorio.com/Military_units_and_structures).","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"manual_range_modifier","order":5,"description":"Must be positive.","override":false,"type":"double","optional":false},{"name":"rotating_sound","order":14,"description":"","override":false,"type":"InterruptibleSound","optional":true},{"name":"turn_after_shooting_cooldown","order":15,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"turret_rotation_speed","order":4,"description":"","override":false,"type":"double","optional":false}]},{"name":"ArtilleryWagonPrototype","order":18,"description":"An [artillery wagon](https://wiki.factorio.com/Artillery_wagon).","parent":"RollingStockPrototype","abstract":false,"typename":"artillery-wagon","deprecated":false,"properties":[{"name":"ammo_stack_limit","order":2,"description":"Must be > 0.","override":false,"type":"ItemCountType","optional":false},{"name":"automated_ammo_count","order":3,"description":"Must be > 0. The amount of ammo that inserters automatically insert into this artillery wagon.","override":false,"type":"ItemCountType","optional":true},{"name":"cannon_barrel_light_direction","order":18,"description":"Only loaded if `cannon_barrel_recoil_shiftings` is loaded.","override":false,"type":"Vector3D","optional":true},{"name":"cannon_barrel_pictures","order":11,"description":"","override":false,"type":"RollingStockRotatedSlopedGraphics","optional":true},{"name":"cannon_barrel_recoil_shiftings","order":16,"description":"","override":false,"type":{"complex_type":"array","value":"Vector3D"},"optional":true},{"name":"cannon_barrel_recoil_shiftings_load_correction_matrix","order":17,"description":"Only loaded if `cannon_barrel_recoil_shiftings` is loaded.","override":false,"type":{"complex_type":"array","value":"Vector3D"},"optional":true},{"name":"cannon_base_height","order":8,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"cannon_base_pictures","order":7,"description":"","override":false,"type":"RollingStockRotatedSlopedGraphics","optional":true},{"name":"cannon_base_shift_when_horizontal","order":10,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"cannon_base_shift_when_vertical","order":9,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"cannon_parking_frame_count","order":14,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"cannon_parking_speed","order":15,"description":"Must be positive.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"disable_automatic_firing","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"gun","order":0,"description":"Name of a [GunPrototype](prototype:GunPrototype).","override":false,"type":"ItemID","optional":false},{"name":"inventory_size","order":1,"description":"Must be > 0.","override":false,"type":"ItemStackIndex","optional":false},{"name":"manual_range_modifier","order":5,"description":"Must be > 0.","override":false,"type":"double","optional":false},{"name":"rotating_sound","order":12,"description":"","override":false,"type":"InterruptibleSound","optional":true},{"name":"turn_after_shooting_cooldown","order":13,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"turret_rotation_speed","order":4,"description":"","override":false,"type":"double","optional":false}]},{"name":"AssemblingMachinePrototype","order":19,"description":"An assembling machine - like the assembling machines 1/2/3 in the game, but you can use your own recipe categories.","parent":"CraftingMachinePrototype","abstract":false,"typename":"assembling-machine","deprecated":false,"properties":[{"name":"circuit_connector","order":11,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_connector_flipped","order":12,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_wire_max_distance","order":3,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"default_recipe_finished_signal","order":6,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_working_signal","order":7,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"disabled_when_recipe_not_researched","order":14,"description":"Defaults to true if `fixed_recipe` is not given.","override":false,"type":"boolean","optional":true},{"name":"draw_circuit_wires","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"enable_logistic_control_behavior","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"fixed_quality","order":1,"description":"Only loaded when fixed_recipe is provided.","override":false,"type":"QualityID","optional":true},{"name":"fixed_recipe","order":0,"description":"The preset recipe of this machine. This machine does not show a recipe selection if this is set. The base game uses this for the [rocket silo](https://wiki.factorio.com/Rocket_silo).","override":false,"type":"RecipeID","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"fluid_boxes_off_when_no_fluid_recipe","order":13,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"gui_title_key","order":2,"description":"The locale key of the title of the GUI that is shown when the player opens the assembling machine. May not be longer than 200 characters.","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"ingredient_count","order":9,"description":"Sets the maximum number of ingredients this machine can craft with. Any recipe with more ingredients than this will be unavailable in this machine.\n\nThis only counts item ingredients, not fluid ingredients! This means if ingredient count is 2, and the recipe has 2 item ingredients and 1 fluid ingredient, it can still be crafted in the machine.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":65535}},{"name":"max_item_product_count","order":10,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":65535}}]},{"name":"AsteroidChunkPrototype","order":20,"description":"","parent":"Prototype","abstract":false,"typename":"asteroid-chunk","deprecated":false,"properties":[{"name":"dying_trigger_effect","order":1,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"graphics_set","order":2,"description":"","override":false,"type":"AsteroidGraphicsSet","optional":true},{"name":"hide_from_signal_gui","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":"unset"},{"name":"icon","order":4,"description":"Path to the icon file.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":5,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":3,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"minable","order":0,"description":"","override":false,"type":"MinableProperties","optional":true}]},{"name":"AsteroidCollectorPrototype","order":21,"description":"","visibility":["space_age"],"parent":"EntityWithOwnerPrototype","abstract":false,"typename":"asteroid-collector","deprecated":false,"properties":[{"name":"arm_angular_speed_cap_base","order":16,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"arm_angular_speed_cap_quality_scaling","order":17,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"arm_color_gradient","order":35,"description":"","override":false,"type":{"complex_type":"array","value":"Color"},"optional":true,"default":"{{1, 1, 1}}"},{"name":"arm_count_base","order":9,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":3}},{"name":"arm_count_quality_scaling","order":10,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"arm_energy_usage","order":6,"description":"","override":false,"type":"Energy","optional":false},{"name":"arm_extend_sound","order":26,"description":"","override":false,"type":"Sound","optional":true},{"name":"arm_inventory_size","order":0,"description":"","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":5}},{"name":"arm_inventory_size_quality_increase","order":1,"description":"","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"arm_retract_sound","order":27,"description":"","override":false,"type":"Sound","optional":true},{"name":"arm_slow_energy_usage","order":7,"description":"If `arm_energy_usage` is not met, attempts to move slower at the cost of `arm_slow_energy_usage`.","override":false,"type":"Energy","optional":false},{"name":"arm_speed_base","order":14,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"arm_speed_quality_scaling","order":15,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"circuit_connector","order":34,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_wire_max_distance","order":29,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"collection_box_offset","order":12,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"collection_radius","order":33,"description":"Must be positive.","override":false,"type":"double","optional":false},{"name":"deposit_radius","order":13,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.5}},{"name":"deposit_sound","order":25,"description":"","override":false,"type":"Sound","optional":true},{"name":"draw_circuit_wires","order":31,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":30,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_source","order":28,"description":"","override":false,"type":{"complex_type":"union","options":["ElectricEnergySource","VoidEnergySource"],"full_format":false},"optional":false},{"name":"energy_usage_quality_scaling","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"graphics_set","order":4,"description":"","override":false,"type":"AsteroidCollectorGraphicsSet","optional":false},{"name":"head_collection_radius","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.6}},{"name":"held_items_display_count","order":23,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":5}},{"name":"held_items_offset","order":21,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"held_items_spread","order":22,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.15}},{"name":"inventory_size","order":2,"description":"","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":39}},{"name":"inventory_size_quality_increase","order":3,"description":"","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":5}},{"name":"minimal_arm_swing_segment_retraction","order":20,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":6}},{"name":"munch_sound","order":24,"description":"","override":false,"type":"Sound","optional":true},{"name":"passive_energy_usage","order":5,"description":"","override":false,"type":"Energy","optional":false},{"name":"radius_visualisation_picture","order":32,"description":"","override":false,"type":"Sprite","optional":true},{"name":"tether_size","order":18,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.4}},{"name":"unpowered_arm_speed_scale","order":19,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.3}}]},{"name":"AsteroidPrototype","order":22,"description":"","visibility":["space_age"],"parent":"EntityWithOwnerPrototype","abstract":false,"typename":"asteroid","deprecated":false,"properties":[{"name":"emissions_per_second","order":2,"description":"Emissions cannot be larger than zero, asteroids cannot produce pollution.","override":true,"type":{"complex_type":"dictionary","key":"AirbornePollutantID","value":"double"},"optional":true},{"name":"graphics_set","order":1,"description":"","override":false,"type":"AsteroidGraphicsSet","optional":true},{"name":"mass","order":0,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}}]},{"name":"AutoplaceControl","order":23,"description":"A setting in the map creation GUI. Used by the [autoplace system](prototype:AutoplaceSpecification::control).","parent":"Prototype","abstract":false,"typename":"autoplace-control","instance_limit":255,"deprecated":false,"properties":[{"name":"can_be_disabled","order":2,"description":"Whether there is an \"enable\" checkbox for the autoplace control in the map generator GUI. If this is false, the autoplace control cannot be disabled from the GUI.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"category","order":0,"description":"Controls in what tab the autoplace is shown in the map generator GUI.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"resource"},{"complex_type":"literal","value":"terrain"},{"complex_type":"literal","value":"cliff"},{"complex_type":"literal","value":"enemy"}],"full_format":false},"optional":false},{"name":"hidden","order":4,"description":"Hides the autoplace control from the map generation screen.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"related_to_fight_achievements","order":3,"description":"Whether this settings being lower than default disables fight related achievements.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"richness","order":1,"description":"Sets whether this control's richness can be changed. The map generator GUI will only show the richness slider when the `category` is `\"resource\"`.\n\nIf the autoplace control is used to generate ores, you probably want this to be true.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"BatteryEquipmentPrototype","order":24,"description":"Used by [personal battery](https://wiki.factorio.com/Personal_battery).","parent":"EquipmentPrototype","abstract":false,"typename":"battery-equipment","deprecated":false,"properties":[]},{"name":"BeaconPrototype","order":25,"description":"Entity with the ability to transfer [module](prototype:ModulePrototype) effects to its neighboring entities.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"beacon","deprecated":false,"properties":[{"name":"allowed_effects","order":13,"description":"The types of [modules](prototype:ModulePrototype) that a player can place inside of the beacon.","override":false,"type":"EffectTypeLimitation","optional":true,"default":"No effects are allowed"},{"name":"allowed_module_categories","order":14,"description":"Sets the [module categories](prototype:ModuleCategory) that are allowed to be inserted into this machine.","override":false,"type":{"complex_type":"array","value":"ModuleCategoryID"},"optional":true,"default":"All module categories are allowed"},{"name":"animation","order":9,"description":"Only loaded if `graphics_set` is not defined.\n\nThe animation for the beacon, when in use.","override":false,"type":"Animation","optional":true},{"name":"base_picture","order":10,"description":"Only loaded if `graphics_set` is not defined.\n\nThe picture of the beacon when it is not on.","override":false,"type":"Animation","optional":true},{"name":"beacon_counter","order":16,"description":"The beacon counter used by effect receiver when deciding which sample to take from `profile`.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"total"},{"complex_type":"literal","value":"same_type"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"total"}},{"name":"distribution_effectivity","order":3,"description":"The multiplier of the module's effects, when shared between neighbors.","override":false,"type":"double","optional":false},{"name":"distribution_effectivity_bonus_per_quality_level","order":4,"description":"Must be 0 or positive.","override":false,"type":"double","optional":true},{"name":"energy_source","order":1,"description":"","override":false,"type":{"complex_type":"union","options":["ElectricEnergySource","VoidEnergySource"],"full_format":false},"optional":false},{"name":"energy_usage","order":0,"description":"The constant power usage of this beacon.","examples":["```\nenergy_usage = \"480kW\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"graphics_set","order":8,"description":"The graphics for the beacon.","override":false,"type":"BeaconGraphicsSet","optional":true},{"name":"module_slots","order":5,"description":"The number of module slots in this beacon.","override":false,"type":"ItemStackIndex","optional":false},{"name":"perceived_performance","order":11,"description":"Affects animation speed.","override":false,"type":"PerceivedPerformance","optional":true},{"name":"profile","order":15,"description":"Extra multiplier applied to the effects received from beacon by the effect receiver based on amount of beacons that are in range of that effect receiver.\n\nIf there are more beacons that reach the effect receiver than there are entries in this array, then the last entry in the array is used for the multiplier.\n\nIf this is not defined, then an implicit profile of `{1}` will be used.","examples":["```\nprofile = {1, 0} -- entities do not receive any effects when they are in range of more than one beacon\n```"],"override":false,"type":{"complex_type":"array","value":"double"},"optional":true},{"name":"quality_affects_module_slots","order":6,"description":"If set, [QualityPrototype::beacon_module_slots_bonus](prototype:QualityPrototype::beacon_module_slots_bonus) will be added to module slots count.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"quality_affects_supply_area_distance","order":7,"description":"If set, [QualityPrototype::beacon_supply_area_distance_bonus](prototype:QualityPrototype::beacon_supply_area_distance_bonus) will be added to supply_area_distance. Total value will be clamped to be within range `[0, 64]`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"radius_visualisation_picture","order":12,"description":"","override":false,"type":"Sprite","optional":true},{"name":"supply_area_distance","order":2,"description":"The maximum distance that this beacon can supply its neighbors with its module's effects. Max distance is 64.","override":false,"type":"uint32","optional":false}]},{"name":"BeamPrototype","order":26,"description":"Used as a laser beam.","parent":"EntityPrototype","abstract":false,"typename":"beam","deprecated":false,"properties":[{"name":"action","order":0,"description":"","override":false,"type":"Trigger","optional":true},{"name":"action_triggered_automatically","order":5,"description":"Whether this beams should trigger its action every `damage_interval`. If false, the action is instead triggered when its owner triggers shooting.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"damage_interval","order":2,"description":"Damage interval can't be 0. A value of 1 will cause the attack to be applied each tick.","override":false,"type":"uint32","optional":false},{"name":"graphics_set","order":6,"description":"","override":false,"type":"BeamGraphicsSet","optional":false},{"name":"random_target_offset","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"target_offset","order":3,"description":"","override":false,"type":"Vector","optional":true},{"name":"width","order":1,"description":"","override":false,"type":"float","optional":false}]},{"name":"BeltImmunityEquipmentPrototype","order":27,"description":"Used by [belt immunity equipment](https://wiki.factorio.com/Belt_immunity_equipment).","parent":"EquipmentPrototype","abstract":false,"typename":"belt-immunity-equipment","deprecated":false,"properties":[{"name":"energy_consumption","order":0,"description":"The continuous power consumption of the belt immunity equipment.","override":false,"type":"Energy","optional":false}]},{"name":"BlueprintBookPrototype","order":28,"description":"A [blueprint book](https://wiki.factorio.com/Blueprint_book).","parent":"ItemWithInventoryPrototype","abstract":false,"typename":"blueprint-book","deprecated":false,"properties":[{"name":"draw_label_for_cursor_render","order":2,"description":"If the item will draw its label when held in the cursor in place of the item count.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"inventory_size","order":0,"description":"The inventory size of the item.","override":true,"type":{"complex_type":"union","options":["ItemStackIndex",{"complex_type":"literal","value":"dynamic"}],"full_format":false},"optional":false},{"name":"stack_size","order":1,"description":"Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `\"not-stackable\"` flag is set.","examples":["```\nstack_size = 1\n```"],"override":true,"type":{"complex_type":"literal","value":1},"optional":false}]},{"name":"BlueprintItemPrototype","order":29,"description":"A [blueprint](https://wiki.factorio.com/Blueprint).","parent":"SelectionToolPrototype","abstract":false,"typename":"blueprint","deprecated":false,"properties":[{"name":"alt_select","order":3,"description":"The [SelectionModeData::mode](prototype:SelectionModeData::mode) is hardcoded to `\"blueprint\"`.\n\nThe filters are parsed, but then ignored and forced to be empty.","override":true,"type":"SelectionModeData","optional":false},{"name":"always_include_tiles","order":4,"description":"This property is hardcoded to `false`.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"draw_label_for_cursor_render","order":1,"description":"Whether the item will draw its label when held in the cursor in place of the item count.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"select","order":2,"description":"The [SelectionModeData::mode](prototype:SelectionModeData::mode) is hardcoded to `\"blueprint\"`.\n\nThe filters are parsed, but then ignored and forced to be empty.","override":true,"type":"SelectionModeData","optional":false},{"name":"stack_size","order":0,"description":"Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `\"not-stackable\"` flag is set.","examples":["```\nstack_size = 1\n```"],"override":true,"type":{"complex_type":"literal","value":1},"optional":false}]},{"name":"BoilerPrototype","order":30,"description":"A [boiler](https://wiki.factorio.com/Boiler). It heats fluid and optionally outputs it as a different fluid.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"boiler","deprecated":false,"properties":[{"name":"burning_cooldown","order":5,"description":"Controls for how many ticks the boiler will show the fire and fire_glow after the energy source runs out of energy.\n\nNote that `fire` and `fire_glow` alpha is set to the light intensity of the energy source, so 0 light intensity means the fire is invisible. For burner energy sources, the light intensity will reach zero rather quickly after the boiler runs out of fuel, effectively capping the time that `fire` and `fire_glow` will be shown after the boiler runs out of fuel.","override":false,"type":"uint16","optional":false},{"name":"energy_consumption","order":4,"description":"","override":false,"type":"Energy","optional":false},{"name":"energy_source","order":1,"description":"","override":false,"type":"EnergySource","optional":false},{"name":"fire_flicker_enabled","order":8,"description":"If this is set to false, `fire` alpha is always 1 instead of being controlled by the light intensity of the energy source.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"fire_glow_flicker_enabled","order":7,"description":"If this is set to false, `fire_glow` alpha is always 1 instead of being controlled by the light intensity of the energy source.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"fluid_box","order":2,"description":"The input fluid box.\n\nIf `mode` is `\"heat-fluid-inside\"`, the fluid is heated up directly in this fluidbox.","override":false,"type":"FluidBox","optional":false},{"name":"mode","order":9,"description":"In the `\"output-to-separate-pipe\"` mode, fluid is transferred from the `fluid_box` to the `output_fluid_box` when enough energy is available to [heat](prototype:FluidPrototype::heat_capacity) the input fluid to the `target_temperature`. Setting a filter on the `output_fluid_box` means that instead of the heated input fluid getting moved to the output, it is converted to the filtered fluid in a ratio based on the heat capacity of the fluids: `output_fluid_amount = input_fluid_amount * (output_fluid_heat_capacity / input_fluid_heat_capacity)`\n\nIn the `\"heat-fluid-inside\"` mode, fluid in the `fluid_box` is continuously heated from the input temperature up to its [FluidPrototype::max_temperature](prototype:FluidPrototype::max_temperature).","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"heat-fluid-inside"},{"complex_type":"literal","value":"output-to-separate-pipe"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"heat-fluid-inside"}},{"name":"output_fluid_box","order":3,"description":"The output fluid box.\n\nIf `mode` is `\"output-to-separate-pipe\"` and this has a [filter](prototype:FluidBox::filter), the heated input fluid is converted to the output fluid that is set in the filter. The conversion ratio is based on the [heat capacity](prototype:FluidPrototype::heat_capacity) of the fluids: `output_fluid_amount = input_fluid_amount * (output_fluid_heat_capacity / input_fluid_heat_capacity)`\n\nIf `mode` is `\"heat-fluid-inside\"`, this fluidbox is unused.","override":false,"type":"FluidBox","optional":false},{"name":"pictures","order":0,"description":"","override":false,"type":"BoilerPictureSet","optional":true},{"name":"target_temperature","order":6,"description":"Only loaded, and mandatory if `mode` is `\"output-to-separate-pipe\"`. This is the temperature that the input fluid must reach to be moved to the output fluid box.","override":false,"type":"float","optional":true}]},{"name":"BuildEntityAchievementPrototype","order":31,"description":"This prototype is used for receiving an achievement when the player builds an entity.","parent":"AchievementPrototype","abstract":false,"typename":"build-entity-achievement","deprecated":false,"properties":[{"name":"amount","order":1,"description":"How many entities need to be built.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"limited_to_one_game","order":2,"description":"If this is false, the player carries over their statistics from this achievement through all their saves.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"to_build","order":0,"description":"This will trigger the achievement, if this entity is placed.","examples":["```\nto_build = \"locomotive\"\n```"],"override":false,"type":"EntityID","optional":false},{"name":"within","order":3,"description":"The achievement must be completed within this time limit.","examples":["```\nwithin = 60 * 60 * 60 * 8 -- 8 hours\n```"],"override":false,"type":"MapTick","optional":true,"default":"`math.huge`"}]},{"name":"BurnerGeneratorPrototype","order":32,"description":"An entity that produces power from a burner energy source.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"burner-generator","deprecated":false,"properties":[{"name":"always_draw_idle_animation","order":5,"description":"Whether the `idle_animation` should also play when the generator is active.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"animation","order":2,"description":"Plays when the generator is active. `idle_animation` must have the same frame count as animation.","override":false,"type":"Animation4Way","optional":true},{"name":"burner","order":1,"description":"The input energy source of the generator.","override":false,"type":"BurnerEnergySource","optional":false},{"name":"energy_source","order":0,"description":"The output energy source of the generator. Any emissions specified on this energy source are ignored, they must be specified on `burner`.","override":false,"type":"ElectricEnergySource","optional":false},{"name":"idle_animation","order":4,"description":"Plays when the generator is inactive. Idle animation must have the same frame count as `animation`.","override":false,"type":"Animation4Way","optional":true},{"name":"max_power_output","order":3,"description":"How much energy this generator can produce.","override":false,"type":"Energy","optional":false},{"name":"perceived_performance","order":6,"description":"Affects animation speed and working sound.","override":false,"type":"PerceivedPerformance","optional":true}]},{"name":"BurnerUsagePrototype","order":33,"description":"Set of data affecting tooltips, looks of gui slots etc when [burner](prototype:BurnerEnergySource) is not supposed to be burning items but eating them.","parent":"Prototype","abstract":false,"typename":"burner-usage","deprecated":false,"properties":[{"name":"accepted_fuel_key","order":5,"description":"","override":false,"type":"string","optional":false},{"name":"burned_in_key","order":6,"description":"","override":false,"type":"string","optional":false},{"name":"empty_slot_caption","order":1,"description":"","override":false,"type":"LocalisedString","optional":false},{"name":"empty_slot_description","order":2,"description":"","override":false,"type":"LocalisedString","optional":true},{"name":"empty_slot_sprite","order":0,"description":"","override":false,"type":"Sprite","optional":false},{"name":"icon","order":3,"description":"","override":false,"type":"Sprite","optional":false},{"name":"no_fuel_status","order":4,"description":"","override":false,"type":"LocalisedString","optional":true}]},{"name":"CapsulePrototype","order":34,"description":"A capsule, for example a [combat robot capsule](https://wiki.factorio.com/Combat_robot_capsules) or the [raw fish](https://wiki.factorio.com/Raw_fish).","parent":"ItemPrototype","abstract":false,"typename":"capsule","deprecated":false,"properties":[{"name":"capsule_action","order":0,"description":"","override":false,"type":"CapsuleAction","optional":false},{"name":"radius_color","order":1,"description":"Color of the range radius that is shown around the player when they hold the capsule.","override":false,"type":"Color","optional":true}]},{"name":"CaptureRobotPrototype","order":35,"description":"","visibility":["space_age"],"parent":"FlyingRobotPrototype","abstract":false,"typename":"capture-robot","deprecated":false,"properties":[{"name":"capture_animation","order":3,"description":"","override":false,"type":"Animation","optional":true},{"name":"capture_speed","order":0,"description":"Must be >= 0.001.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"destroy_action","order":2,"description":"","override":false,"type":"Trigger","optional":true},{"name":"search_radius","order":1,"description":"Must be >= 0.0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"CarPrototype","order":36,"description":"Entity with specialized properties for acceleration, braking, and turning.","parent":"VehiclePrototype","abstract":false,"typename":"car","deprecated":false,"properties":[{"name":"animation","order":0,"description":"Animation speed 1 means 1 frame per tile.","override":false,"type":"RotatedAnimation","optional":true},{"name":"auto_sort_inventory","order":10,"description":"If this car prototype keeps the trunk inventory sorted.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"consumption","order":2,"description":"","override":false,"type":"Energy","optional":false},{"name":"darkness_to_render_light_animation","order":21,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.3}},{"name":"effectivity","order":1,"description":"Modifies the efficiency of energy transfer from burner output to wheels.","override":false,"type":"double","optional":false},{"name":"energy_source","order":5,"description":"","override":false,"type":{"complex_type":"union","options":["BurnerEnergySource","VoidEnergySource"],"full_format":false},"optional":false},{"name":"guns","order":23,"description":"The names of the  [GunPrototype](prototype:GunPrototype)s this car prototype uses.","override":false,"type":{"complex_type":"array","value":"ItemID"},"optional":true},{"name":"has_belt_immunity","order":11,"description":"If this car is immune to movement by belts.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"immune_to_cliff_impacts","order":14,"description":"If this car gets damaged by driving against [cliffs](prototype:CliffPrototype).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"immune_to_rock_impacts","order":13,"description":"If this car gets damaged by driving over/against [rocks](prototype:SimpleEntityPrototype::count_as_rock_for_filtered_deconstruction).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"immune_to_tree_impacts","order":12,"description":"If this car gets damaged by driving over/against [trees](prototype:TreePrototype).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"inventory_size","order":17,"description":"Size of the car inventory.","override":false,"type":"ItemStackIndex","optional":false},{"name":"light","order":19,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"light_animation","order":7,"description":"Must have the same frame count as `animation`.","override":false,"type":"RotatedAnimation","optional":true},{"name":"render_layer","order":8,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"rotation_snap_angle","order":4,"description":"Vehicle will snap the vertical, horizontal or diagonal axis if it's within this angle","override":false,"type":"double","optional":false},{"name":"rotation_speed","order":3,"description":"","override":false,"type":"double","optional":false},{"name":"sound_no_fuel","order":20,"description":"","override":false,"type":"Sound","optional":true},{"name":"tank_driving","order":9,"description":"If this car prototype uses tank controls to drive.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"track_particle_triggers","order":22,"description":"","override":false,"type":"FootstepTriggerEffectList","optional":true},{"name":"trash_inventory_size","order":18,"description":"If set to 0 then the car will not have a Logistics tab.","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"turret_animation","order":6,"description":"Animation speed 1 means 1 frame per tile.","override":false,"type":"RotatedAnimation","optional":true},{"name":"turret_return_timeout","order":16,"description":"Timeout in ticks specifying how long the turret must be inactive to return to the default position.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":60}},{"name":"turret_rotation_speed","order":15,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.01}}]},{"name":"CargoBayPrototype","order":37,"description":"","visibility":["space_age"],"parent":"EntityWithOwnerPrototype","abstract":false,"typename":"cargo-bay","deprecated":false,"properties":[{"name":"build_grid_size","order":4,"description":"Has to be 2 for 2x2 grid.","override":true,"type":{"complex_type":"literal","value":2},"optional":true,"default":{"complex_type":"literal","value":2}},{"name":"graphics_set","order":0,"description":"","override":false,"type":"CargoBayConnectableGraphicsSet","optional":true},{"name":"hatch_definitions","order":3,"description":"","override":false,"type":{"complex_type":"array","value":"CargoHatchDefinition"},"optional":true},{"name":"inventory_size_bonus","order":2,"description":"Cannot be 0.","override":false,"type":"ItemStackIndex","optional":false},{"name":"platform_graphics_set","order":1,"description":"A special variant which renders on space platforms. If not specified, the game will fall back to the regular graphics set.","override":false,"type":"CargoBayConnectableGraphicsSet","optional":true}]},{"name":"CargoLandingPadPrototype","order":38,"description":"","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"cargo-landing-pad","deprecated":false,"properties":[{"name":"cargo_station_parameters","order":7,"description":"","override":false,"type":"CargoStationParameters","optional":false},{"name":"circuit_connector","order":6,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":3,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"graphics_set","order":0,"description":"","override":false,"type":"CargoBayConnectableGraphicsSet","optional":true},{"name":"inventory_size","order":1,"description":"","override":false,"type":"ItemStackIndex","optional":false},{"name":"radar_range","order":12,"description":"In chunks. The radius of how many chunks this cargo landing pad charts around itself.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"radar_visualisation_color","order":13,"description":"","override":false,"type":"Color","optional":true},{"name":"robot_animation","order":8,"description":"Drawn when a robot brings/takes items from this landing pad.","override":false,"type":"Animation","optional":true},{"name":"robot_animation_sound","order":11,"description":"Played when a robot brings/takes items from this landing pad. Only loaded if `robot_animation` is defined.","override":false,"type":"Sound","optional":true},{"name":"robot_landing_location_offset","order":9,"description":"The offset from the center of this landing pad where a robot visually brings/takes items.","override":false,"type":"Vector","optional":true},{"name":"robot_opened_duration","order":10,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"trash_inventory_size","order":2,"description":"","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"CargoPodPrototype","order":39,"description":"","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"cargo-pod","deprecated":false,"properties":[{"name":"default_graphic","order":0,"description":"Has to be of type 'pod-catalogue'.","override":false,"type":"ProcessionGraphic","optional":true},{"name":"default_shadow_graphic","order":1,"description":"Has to be of type 'pod-catalogue'.","override":false,"type":"ProcessionGraphic","optional":true},{"name":"impact_trigger","order":7,"description":"","override":false,"type":"Trigger","optional":true},{"name":"inventory_size","order":5,"description":"","override":false,"type":"ItemStackIndex","optional":false},{"name":"procession_audio_catalogue","order":3,"description":"","override":false,"type":"ProcessionAudioCatalogue","optional":true},{"name":"procession_graphic_catalogue","order":2,"description":"","override":false,"type":"ProcessionGraphicCatalogue","optional":true},{"name":"shadow_slave_entity","order":4,"description":"","override":false,"type":"EntityID","optional":true},{"name":"spawned_container","order":6,"description":"","override":false,"type":"EntityID","optional":false}]},{"name":"CargoWagonPrototype","order":40,"description":"A [cargo wagon](https://wiki.factorio.com/Cargo_wagon).","parent":"RollingStockPrototype","abstract":false,"typename":"cargo-wagon","deprecated":false,"properties":[{"name":"inventory_size","order":0,"description":"Size of the inventory of the wagon. The inventory can be limited using the red bar and filtered. This functionality cannot be turned off.","override":false,"type":"ItemStackIndex","optional":false},{"name":"quality_affects_inventory_size","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"ChainActiveTriggerPrototype","order":41,"description":"Jumps between targets and applies a [Trigger](prototype:Trigger) to them.","parent":"ActiveTriggerPrototype","abstract":false,"typename":"chain-active-trigger","deprecated":false,"properties":[{"name":"action","order":0,"description":"The trigger to apply when jumping to a new target.","override":false,"type":"Trigger","optional":true},{"name":"fork_chance","order":5,"description":"Chance that a new fork will spawn after each jump. `0` for 0% chance and `1` for 100% chance.\n\nMust be between 0 and 1.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"fork_chance_increase_per_quality_level","order":6,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"jump_delay_ticks","order":4,"description":"Tick delay between each jump. `0` means that all jumps are instantaneous.","override":false,"type":"MapTick","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"max_forks","order":8,"description":"Maximum number of forks allowed to spawn for the entire chain.","override":false,"type":"uint32","optional":true,"default":"max uint32"},{"name":"max_forks_per_jump","order":7,"description":"Maximum number of forks that can spawn from a single jump.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"max_jumps","order":1,"description":"Max number of jumps per trigger.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":5}},{"name":"max_range","order":3,"description":"Max distance jumps are allowed to travel away from the original target.","override":false,"type":"double","optional":true,"default":"infinity"},{"name":"max_range_per_jump","order":2,"description":"Max length of jumps.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":5}}]},{"name":"ChangedSurfaceAchievementPrototype","order":42,"description":"This prototype is used for receiving an achievement when the player changes to a surface.","parent":"AchievementPrototype","abstract":false,"typename":"change-surface-achievement","deprecated":false,"properties":[{"name":"surface","order":0,"description":"This will trigger the achievement, if the player changes to this surface.","examples":["```\nsurface = \"fulgora\"\n```"],"override":false,"type":"string","optional":true}]},{"name":"CharacterCorpsePrototype","order":43,"description":"The corpse of a [CharacterPrototype](prototype:CharacterPrototype).","parent":"EntityPrototype","abstract":false,"typename":"character-corpse","deprecated":false,"properties":[{"name":"armor_picture_mapping","order":4,"description":"Table of key value pairs, the keys are armor names and the values are numbers. The number is the Animation that is associated with the armor, e.g. using `1` will associate the armor with the first Animation in the pictures table.","override":false,"type":{"complex_type":"dictionary","key":"ItemID","value":"int32"},"optional":true},{"name":"picture","order":3,"description":"Only loaded, and mandatory if `pictures` is not defined.","override":false,"type":"Animation","optional":true},{"name":"pictures","order":2,"description":"Mandatory if `picture` is not defined.","override":false,"type":"AnimationVariations","optional":true},{"name":"render_layer","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"time_to_live","order":0,"description":"0 for infinite.","override":false,"type":"uint32","optional":false}]},{"name":"CharacterPrototype","order":44,"description":"Entity that you move around on the screen during the campaign and freeplay.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"character","deprecated":false,"properties":[{"name":"animations","order":21,"description":"","override":false,"type":{"complex_type":"array","value":"CharacterArmorAnimation"},"optional":false},{"name":"build_distance","order":8,"description":"","override":false,"type":"uint32","optional":false},{"name":"character_corpse","order":31,"description":"Name of the character corpse that is spawned when this character dies.","override":false,"type":"EntityID","optional":true},{"name":"crafting_categories","order":22,"description":"Names of the crafting categories the character can craft recipes from. The built-in categories can be found [here](https://wiki.factorio.com/Data.raw#recipe-category). See also [RecipeCategory](prototype:RecipeCategory).","override":false,"type":{"complex_type":"array","value":"RecipeCategoryID"},"optional":true},{"name":"crafting_speed","order":0,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"damage_hit_tint","order":17,"description":"","override":false,"type":"Color","optional":false},{"name":"distance_per_frame","order":3,"description":"","override":false,"type":"double","optional":false},{"name":"drop_item_distance","order":9,"description":"","override":false,"type":"uint32","optional":false},{"name":"enter_vehicle_distance","order":27,"description":"Must be >= 0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":3.0}},{"name":"flying_bob_speed","order":25,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"flying_collision_mask","order":32,"description":"This collision mask is used when the character is flying.\n\nDefaults to the mask from [UtilityConstants::default_collision_masks](prototype:UtilityConstants::default_collision_masks) when indexed by `\"character/flying\"`.","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"footprint_particles","order":36,"description":"Triggered when the running animation (`animations`) rolls over the frames defined in `right_footprint_frames` and `left_footprint_frames`.","override":false,"type":{"complex_type":"array","value":"FootprintParticle"},"optional":true},{"name":"footstep_particle_triggers","order":34,"description":"Triggered every tick of the running animation.","override":false,"type":"FootstepTriggerEffectList","optional":true},{"name":"grounded_landing_search_radius","order":26,"description":"The search radius for a non-colliding position to move the player to if they are grounded mid-flight. Must be >= 0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"guns_inventory_size","order":7,"description":"Must be between 1 and 15.","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":3}},{"name":"has_belt_immunity","order":30,"description":"Whether this character is moved by belts when standing on them.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"heartbeat","order":5,"description":"The sound played when the character's health is low.","override":false,"type":"Sound","optional":true},{"name":"inventory_size","order":6,"description":"Number of slots in the main inventory. May be 0.","override":false,"type":"ItemStackIndex","optional":false},{"name":"is_military_target","order":41,"description":"Whether this prototype should be a high priority target for enemy forces. See [Military units and structures](https://wiki.factorio.com/Military_units_and_structures).","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"item_pickup_distance","order":12,"description":"","override":false,"type":"double","optional":false},{"name":"left_footprint_frames","order":40,"description":"The frames in the running animation (`animations`) where the left foot touches the ground.","override":false,"type":{"complex_type":"array","value":"float"},"optional":true},{"name":"left_footprint_offset","order":37,"description":"Offset from the center of the entity for the left footprint. Used by `footprint_particles`.","override":false,"type":"Vector","optional":true},{"name":"light","order":24,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"loot_pickup_distance","order":13,"description":"","override":false,"type":"double","optional":false},{"name":"maximum_corner_sliding_distance","order":4,"description":"","override":false,"type":"double","optional":false},{"name":"mining_categories","order":23,"description":"Names of the resource categories the character can mine resources from.","override":false,"type":{"complex_type":"array","value":"ResourceCategoryID"},"optional":true},{"name":"mining_speed","order":1,"description":"","override":false,"type":"double","optional":false},{"name":"mining_with_tool_particles_animation_positions","order":18,"description":"List of positions in the mining with tool animation when the mining sound and mining particles are created.","examples":["```\nmining_with_tool_particles_animation_positions = {28}\n```"],"override":false,"type":{"complex_type":"array","value":"float"},"optional":false},{"name":"moving_sound_animation_positions","order":20,"description":"","override":false,"type":{"complex_type":"array","value":"float"},"optional":false},{"name":"reach_distance","order":10,"description":"","override":false,"type":"uint32","optional":false},{"name":"reach_resource_distance","order":11,"description":"","override":false,"type":"double","optional":false},{"name":"respawn_time","order":29,"description":"Time in seconds. Must be positive","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"right_footprint_frames","order":39,"description":"The frames in the running animation (`animations`) where the right foot touches the ground.","override":false,"type":{"complex_type":"array","value":"float"},"optional":true},{"name":"right_footprint_offset","order":38,"description":"Offset from the center of the entity for the right footprint. Used by `footprint_particles`.","override":false,"type":"Vector","optional":true},{"name":"running_sound_animation_positions","order":19,"description":"List of positions in the running animation when the walking sound is played.","examples":["```\nrunning_sound_animation_positions = {14, 29}\n```"],"override":false,"type":{"complex_type":"array","value":"float"},"optional":false},{"name":"running_speed","order":2,"description":"","override":false,"type":"double","optional":false},{"name":"synced_footstep_particle_triggers","order":35,"description":"Triggered when the running animation (`animations`) rolls over the frames defined in `right_footprint_frames` and `left_footprint_frames`.","override":false,"type":"FootstepTriggerEffectList","optional":true},{"name":"ticks_to_keep_aiming_direction","order":15,"description":"","override":false,"type":"uint32","optional":false},{"name":"ticks_to_keep_gun","order":14,"description":"","override":false,"type":"uint32","optional":false},{"name":"ticks_to_stay_in_combat","order":16,"description":"","override":false,"type":"uint32","optional":false},{"name":"tool_attack_distance","order":28,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.5}},{"name":"tool_attack_result","order":33,"description":"","override":false,"type":"Trigger","optional":true}]},{"name":"CliffPrototype","order":45,"description":"A [cliff](https://wiki.factorio.com/Cliff).","parent":"EntityPrototype","abstract":false,"typename":"cliff","deprecated":false,"properties":[{"name":"cliff_explosive","order":3,"description":"Name of a capsule that has a robot_action to explode cliffs.","override":false,"type":"ItemID","optional":true},{"name":"grid_offset","order":2,"description":"","override":false,"type":"Vector","optional":false},{"name":"grid_size","order":1,"description":"","override":false,"type":"Vector","optional":false},{"name":"orientations","order":0,"description":"","override":false,"type":"OrientedCliffPrototypeSet","optional":false},{"name":"place_as_crater","order":4,"description":"","override":false,"type":"CraterPlacementDefinition","optional":true}]},{"name":"CollisionLayerPrototype","order":46,"description":"A collision layer. Used for [collision masks](prototype:CollisionMaskConnector).\n\nIt's recommend to use underscores instead of dashes in `name` so that the name can easily be used as a table key when defining collision masks.","examples":["```\n{\n  type = \"collision-layer\",\n  name = \"is_lower_object\"\n}\n```"],"parent":"Prototype","abstract":false,"typename":"collision-layer","instance_limit":55,"deprecated":false,"properties":[]},{"name":"CombatRobotCountAchievementPrototype","order":47,"description":"This prototype is used for receiving an achievement when the player has a certain robot follower count.","parent":"AchievementPrototype","abstract":false,"typename":"combat-robot-count-achievement","deprecated":false,"properties":[{"name":"count","order":0,"description":"This will trigger the achievement, if player's current robot count is over this amount.","examples":["```\ncount = 100\n```"],"override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"CombatRobotPrototype","order":48,"description":"A combat robot. Can attack enemies.","parent":"FlyingRobotPrototype","abstract":false,"typename":"combat-robot","deprecated":false,"properties":[{"name":"attack_parameters","order":1,"description":"","override":false,"type":"AttackParameters","optional":false},{"name":"destroy_action","order":8,"description":"Applied when the combat robot expires (runs out of `time_to_live`).","override":false,"type":"Trigger","optional":true},{"name":"follows_player","order":9,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"friction","order":7,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"idle","order":2,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"in_motion","order":4,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"light","order":10,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"range_from_player","order":6,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"shadow_idle","order":3,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"shadow_in_motion","order":5,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"time_to_live","order":0,"description":"","override":false,"type":"uint32","optional":false}]},{"name":"CombinatorPrototype","order":49,"description":"Abstract base type for decider and arithmetic combinators.","parent":"EntityWithOwnerPrototype","abstract":true,"deprecated":false,"properties":[{"name":"active_energy_usage","order":1,"description":"","examples":["```\nactive_energy_usage = \"1kW\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"activity_led_hold_time","order":13,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":5}},{"name":"activity_led_light","order":11,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"activity_led_light_offsets","order":7,"description":"","override":false,"type":{"complex_type":"tuple","values":["Vector","Vector","Vector","Vector"]},"optional":false},{"name":"activity_led_sprites","order":4,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"circuit_wire_max_distance","order":14,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":16,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":15,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"emissions_per_second","order":17,"description":"Emissions cannot be larger than zero, combinators cannot produce pollution.","override":true,"type":{"complex_type":"dictionary","key":"AirbornePollutantID","value":"double"},"optional":true},{"name":"energy_source","order":0,"description":"Defines how this combinator gets energy. The emissions set on the energy source are ignored so combinators cannot produce pollution.","override":false,"type":{"complex_type":"union","options":["ElectricEnergySource","VoidEnergySource"],"full_format":false},"optional":false},{"name":"frozen_patch","order":3,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"input_connection_bounding_box","order":5,"description":"","override":false,"type":"BoundingBox","optional":false},{"name":"input_connection_points","order":9,"description":"","override":false,"type":{"complex_type":"tuple","values":["WireConnectionPoint","WireConnectionPoint","WireConnectionPoint","WireConnectionPoint"]},"optional":false},{"name":"output_connection_bounding_box","order":6,"description":"","override":false,"type":"BoundingBox","optional":false},{"name":"output_connection_points","order":10,"description":"","override":false,"type":{"complex_type":"tuple","values":["WireConnectionPoint","WireConnectionPoint","WireConnectionPoint","WireConnectionPoint"]},"optional":false},{"name":"screen_light","order":12,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"screen_light_offsets","order":8,"description":"","override":false,"type":{"complex_type":"tuple","values":["Vector","Vector","Vector","Vector"]},"optional":false},{"name":"sprites","order":2,"description":"","override":false,"type":"Sprite4Way","optional":true}]},{"name":"CompleteObjectiveAchievementPrototype","order":50,"description":"","parent":"AchievementPrototypeWithCondition","abstract":false,"typename":"complete-objective-achievement","deprecated":false,"properties":[{"name":"within","order":0,"description":"The achievement must be completed within this time limit.","examples":["```\nwithin = 60 * 60 * 60 * 8 -- 8 hours\n```"],"override":false,"type":"MapTick","optional":true,"default":"`math.huge`"}]},{"name":"ConstantCombinatorPrototype","order":51,"description":"A [constant combinator](https://wiki.factorio.com/Constant_combinator).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"constant-combinator","deprecated":false,"properties":[{"name":"activity_led_light","order":4,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"activity_led_light_offsets","order":2,"description":"","override":false,"type":{"complex_type":"tuple","values":["Vector","Vector","Vector","Vector"]},"optional":false},{"name":"activity_led_sprites","order":1,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"circuit_wire_connection_points","order":3,"description":"","override":false,"type":{"complex_type":"tuple","values":["WireConnectionPoint","WireConnectionPoint","WireConnectionPoint","WireConnectionPoint"]},"optional":false},{"name":"circuit_wire_max_distance","order":5,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"pulse_duration","order":8,"description":"When not zero, toggle entity will enable constant combinator for that amount of ticks and then turn it off.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"sprites","order":0,"description":"","override":false,"type":"Sprite4Way","optional":true}]},{"name":"ConstructWithRobotsAchievementPrototype","order":52,"description":"This prototype is used for receiving an achievement when the player constructs enough entities with construction robots.","parent":"AchievementPrototype","abstract":false,"typename":"construct-with-robots-achievement","deprecated":false,"properties":[{"name":"amount","order":1,"description":"This will trigger the achievement, if enough entities were placed using construction robots.","examples":["```\namount = 100\n```"],"override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"limited_to_one_game","order":0,"description":"If this is false, the player carries over their statistics from this achievement through all their saves.","override":false,"type":"boolean","optional":false},{"name":"more_than_manually","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"ConstructionRobotPrototype","order":53,"description":"A [construction robot](https://wiki.factorio.com/Construction_robot).","parent":"RobotWithLogisticInterfacePrototype","abstract":false,"typename":"construction-robot","deprecated":false,"properties":[{"name":"collision_box","order":8,"description":"Must have a collision box size of zero.","examples":["```\ncollision_box = {{0, 0}, {0, 0}}\n```"],"override":true,"type":"BoundingBox","optional":true,"default":"Empty = `{{0, 0}, {0, 0}}`"},{"name":"construction_vector","order":0,"description":"","override":false,"type":"Vector","optional":false},{"name":"mined_sound_volume_modifier","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"repairing_sound","order":5,"description":"","override":false,"type":"Sound","optional":true},{"name":"shadow_working","order":2,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"smoke","order":3,"description":"","override":false,"type":"Animation","optional":true},{"name":"sparks","order":4,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"working","order":1,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"working_light","order":7,"description":"","override":false,"type":"LightDefinition","optional":true}]},{"name":"ContainerPrototype","order":54,"description":"A generic container, such as a chest. Cannot be rotated.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"container","deprecated":false,"properties":[{"name":"circuit_connector","order":9,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":6,"description":"The maximum circuit wire distance for this container.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"default_status","order":10,"description":"","override":false,"type":"EntityStatus","optional":true,"default":{"complex_type":"literal","value":"normal"}},{"name":"draw_circuit_wires","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"inventory_properties","order":4,"description":"Only used when `inventory_type` is `\"with_custom_stack_size\"`.","override":false,"type":"InventoryWithCustomStackSizeSpecification","optional":true},{"name":"inventory_size","order":0,"description":"The number of slots in this container.","override":false,"type":"ItemStackIndex","optional":false},{"name":"inventory_type","order":3,"description":"Determines the type of inventory that this container has. Whether the inventory has a limiter bar, can be filtered (like cargo wagons), uses a custom stack size for contained item stacks (like artillery wagon), or uses a weight limit (like space age rocket silo).","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"normal"},{"complex_type":"literal","value":"with_bar"},{"complex_type":"literal","value":"with_filters_and_bar"},{"complex_type":"literal","value":"with_custom_stack_size"},{"complex_type":"literal","value":"with_weight_limit"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"with_bar"}},{"name":"inventory_weight_limit","order":5,"description":"Only used when `inventory_type` is `\"with_weight_limit\"`.","override":false,"type":"Weight","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"picture","order":2,"description":"The picture displayed for this entity.","override":false,"type":"Sprite","optional":true},{"name":"quality_affects_inventory_size","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CopyPasteToolPrototype","order":55,"description":"A copy-paste or cut-paste tool.","parent":"SelectionToolPrototype","abstract":false,"typename":"copy-paste-tool","deprecated":false,"properties":[{"name":"alt_select","order":4,"description":"The filters are parsed, but then ignored and forced to be empty.","override":true,"type":"SelectionModeData","optional":false},{"name":"always_include_tiles","order":2,"description":"This property is hardcoded to `false`.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"cuts","order":0,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"select","order":3,"description":"The filters are parsed, but then ignored and forced to be empty.","override":true,"type":"SelectionModeData","optional":false},{"name":"stack_size","order":1,"description":"Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `\"not-stackable\"` flag is set.","examples":["```\nstack_size = 1\n```"],"override":true,"type":{"complex_type":"literal","value":1},"optional":false}]},{"name":"CorpsePrototype","order":56,"description":"Used for corpses, for example the remnants when destroying buildings.","parent":"EntityPrototype","abstract":false,"typename":"corpse","deprecated":false,"properties":[{"name":"animation","order":23,"description":"The dying animation.","override":false,"type":"RotatedAnimationVariations","optional":true},{"name":"animation_overlay","order":24,"description":"Variation count must be the same as `animation` variation count. Direction count must be the same as `animation` direction count. Frame count must be the same as `animation` frame count.","override":false,"type":"RotatedAnimationVariations","optional":true},{"name":"animation_overlay_final_render_layer","order":14,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"corpse"}},{"name":"animation_overlay_render_layer","order":13,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"animation_render_layer","order":11,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"auto_setup_collision_box","order":8,"description":"If true, and the collision box is unset, this will take the collision box of the first entity that uses this corpse.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"decay_animation","order":25,"description":"","override":false,"type":"RotatedAnimationVariations","optional":true},{"name":"decay_frame_transition_duration","order":22,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"direction_shuffle","order":32,"description":"May not be an empty array. May not be used if there is no `animation` defined.\n\nThe inner arrays are called \"groups\" and must all have the same size.\n\nThe indices map to the directions of `animation` and they are 1-indexed. After the `shuffle_directions_at_frame` frame of the `animation`, these indices are used as the direction when choosing which frame to render. The chosen shuffled direction can be any direction in the same group as the non-shuffled direction. Which direction is chosen from the group depends on the shuffle variation which is `dying_graphics_variation % group_size`.","override":false,"type":{"complex_type":"array","value":{"complex_type":"array","value":"uint16"}},"optional":true,"default":"No direction shuffle"},{"name":"dying_speed","order":0,"description":"Multiplier for `time_before_shading_off` and `time_before_removed`. Must be positive.\n\nControls the speed of the animation: `1 \u00f7 dying_speed = duration of the animation`","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"expires","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"final_render_layer","order":9,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"corpse"}},{"name":"ground_patch","order":27,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"ground_patch_decay","order":29,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"ground_patch_fade_in_delay","order":19,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"ground_patch_fade_in_speed","order":20,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"ground_patch_fade_out_duration","order":31,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"ground_patch_fade_out_start","order":21,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"ground_patch_higher","order":28,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"ground_patch_render_layer","order":10,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"ground-patch"}},{"name":"protected_from_tile_building","order":5,"description":"","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"remove_on_entity_placement","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"remove_on_tile_placement","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"shuffle_directions_at_frame","order":15,"description":"Defines after which frame in the `animation` the `direction_shuffle` should be applied. Can be set to `0`, frames are 1-indexed.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"splash","order":26,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"splash_render_layer","order":12,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"splash_speed","order":1,"description":"Controls the speed of the splash animation: `1 \u00f7 splash_speed = duration of the splash animation`","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"time_before_removed","order":3,"description":"Time in ticks this corpse lasts. May not be 0.","override":false,"type":"uint32","optional":true,"default":"60 * 120 (120 seconds)"},{"name":"time_before_shading_off","order":2,"description":"Controls how long the corpse takes to fade, as in how long it takes to get from no transparency to full transparency/removed. This time is *not* added to `time_before_removed`, it is instead subtracted from it. So by default, the corpse starts fading about 15 seconds before it gets removed.","override":false,"type":"uint32","optional":true,"default":"60 * 15 (15 seconds)"},{"name":"underwater_layer_offset","order":18,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"underwater_patch","order":30,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"use_decay_layer","order":17,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"use_tile_color_for_ground_patch_tint","order":16,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"CraftingMachinePrototype","order":57,"description":"The abstract basis of the assembling machines and furnaces. Contains the properties that both of them have.\n\nNote that a crafting machine cannot be rotated unless it has at least one of the following: a fluid box, a heat energy source, a fluid energy source, or a non-square collision box. Crafting machines with non-square collision boxes can only be rotated before placement, not after.","parent":"EntityWithOwnerPrototype","abstract":true,"deprecated":false,"properties":[{"name":"allowed_effects","order":9,"description":"Sets the [modules](prototype:ModulePrototype) and [beacon](prototype:BeaconPrototype) effects that are allowed to be used on this machine.","override":false,"type":"EffectTypeLimitation","optional":true,"default":"No effects are allowed"},{"name":"allowed_module_categories","order":10,"description":"Sets the [module categories](prototype:ModuleCategory) that are allowed to be inserted into this machine.","override":false,"type":{"complex_type":"array","value":"ModuleCategoryID"},"optional":true,"default":"All module categories are allowed"},{"name":"crafting_categories","order":3,"description":"A list of [recipe categories](prototype:RecipeCategory) this crafting machine can use.","examples":["```\ncrafting_categories = {\"crafting\", \"smelting\"}\n```"],"override":false,"type":{"complex_type":"array","value":"RecipeCategoryID"},"optional":false},{"name":"crafting_speed","order":2,"description":"How fast this crafting machine can craft. 1 means that for example a 1 second long recipe take 1 second to craft. 0.5 means it takes 2 seconds, and 2 means it takes 0.5 seconds.\n\nCrafting speed has to be positive.","override":false,"type":"double","optional":false},{"name":"crafting_speed_quality_multiplier","order":25,"description":"Each value must be >= 0.01.\n\nIf value is not provided for a quality, then [QualityPrototype::crafting_machine_speed_multiplier](prototype:QualityPrototype::crafting_machine_speed_multiplier) will be used as a speed multiplier instead.","override":false,"type":{"complex_type":"dictionary","key":"QualityID","value":"double"},"optional":true},{"name":"draw_entity_info_icon_background","order":13,"description":"Whether the \"alt-mode icon\" should have a black background.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"effect_receiver","order":6,"description":"","override":false,"type":"EffectReceiver","optional":true},{"name":"energy_source","order":4,"description":"Defines how the crafting machine is powered.\n\nWhen using an electric energy source and `drain` is not specified, it will be set to `energy_usage \u00f7 30` automatically.","override":false,"type":"EnergySource","optional":false},{"name":"energy_usage","order":1,"description":"Sets how much energy this machine uses while crafting. Energy usage has to be positive.","examples":["```\nenergy_usage = \"90kW\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"energy_usage_quality_multiplier","order":27,"description":"Each value must be >= 0.01.\n\nIf value is not provided for a quality, then [QualityPrototype::crafting_machine_energy_usage_multiplier](prototype:QualityPrototype::crafting_machine_energy_usage_multiplier) will be used as an energy usage multiplier instead.\n\nDoes nothing if [CraftingMachinePrototype::quality_affects_energy_usage](prototype:CraftingMachinePrototype::quality_affects_energy_usage) is not set.","override":false,"type":{"complex_type":"dictionary","key":"QualityID","value":"double"},"optional":true},{"name":"fast_transfer_modules_into_module_slots_only","order":16,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"fluid_boxes","order":5,"description":"The crafting machine's fluid boxes. If an assembling machine has fluid boxes *and* [AssemblingMachinePrototype::fluid_boxes_off_when_no_fluid_recipe](prototype:AssemblingMachinePrototype::fluid_boxes_off_when_no_fluid_recipe) is true, the assembling machine can only be rotated when a recipe consuming or producing fluid is set, or if it has one of the other properties listed at the top of this page.\n\nFor assembling machines, any [filters](prototype:FluidBox::filter) set on the fluidboxes are ignored.","examples":["```\nfluid_boxes =\n{\n  {\n    production_type = \"input\",\n    pipe_picture = assembler2pipepictures(),\n    pipe_covers = pipecoverspictures(),\n    volume = 1000,\n    pipe_connections = {{ flow_direction = \"input\", direction = defines.direction.north, position = {0, -1} }},\n    secondary_draw_orders = { north = -1 }\n  },\n  {\n    production_type = \"output\",\n    pipe_picture = assembler2pipepictures(),\n    pipe_covers = pipecoverspictures(),\n    volume = 1000,\n    pipe_connections = {{ flow_direction = \"output\", direction = defines.direction.south, position = {0, 1} }},\n    secondary_draw_orders = { north = -1 }\n  },\n}\n```"],"override":false,"type":{"complex_type":"array","value":"FluidBox"},"optional":true},{"name":"forced_symmetry","order":24,"description":"","override":false,"type":"Mirroring","optional":true,"default":"none"},{"name":"graphics_set","order":18,"description":"","override":false,"type":"CraftingMachineGraphicsSet","optional":true},{"name":"graphics_set_flipped","order":19,"description":"","override":false,"type":"CraftingMachineGraphicsSet","optional":true},{"name":"ignore_output_full","order":17,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"match_animation_speed_to_activity","order":14,"description":"Whether the speed of the animation and working visualization should be based on the machine's speed (boosted or slowed by modules).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"module_slots","order":7,"description":"The number of module slots in this machine.","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"module_slots_quality_bonus","order":26,"description":"If value is not provided for a quality, then [QualityPrototype::crafting_machine_module_slots_bonus](prototype:QualityPrototype::crafting_machine_module_slots_bonus) will be used as a module slots bonus instead.\n\nDoes nothing if [CraftingMachinePrototype::quality_affects_module_slots](prototype:CraftingMachinePrototype::quality_affects_module_slots) is not set.","override":false,"type":{"complex_type":"dictionary","key":"QualityID","value":"ItemStackIndex"},"optional":true},{"name":"perceived_performance","order":20,"description":"Affects animation speed.","override":false,"type":"PerceivedPerformance","optional":true},{"name":"production_health_effect","order":21,"description":"","override":false,"type":"ProductionHealthEffect","optional":true},{"name":"quality_affects_energy_usage","order":0,"description":"When set, [QualityPrototype::crafting_machine_energy_usage_multiplier](prototype:QualityPrototype::crafting_machine_energy_usage_multiplier) will be applied to energy_usage.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"quality_affects_module_slots","order":8,"description":"If set, [QualityPrototype::crafting_machine_module_slots_bonus](prototype:QualityPrototype::crafting_machine_module_slots_bonus) will be added to module slots count.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"return_ingredients_on_change","order":12,"description":"Controls whether the ingredients of an in-progress recipe are destroyed when mining the machine/changing the recipe. If set to true, the ingredients do not get destroyed. This affects only the ingredients of the recipe that is currently in progress, so those that visually have already been consumed while their resulting product has not yet been produced.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_recipe_icon","order":11,"description":"Whether the \"alt-mode icon\" should be drawn at all.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_recipe_icon_on_map","order":15,"description":"Whether the recipe icon should be shown on the map.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"trash_inventory_size","order":22,"description":"","override":false,"type":"ItemStackIndex","optional":true},{"name":"vector_to_place_result","order":23,"description":"","override":false,"type":"Vector","optional":true}]},{"name":"CreatePlatformAchievementPrototype","order":58,"description":"This prototype is used for receiving an achievement when the player creates a space platform.","parent":"AchievementPrototype","abstract":false,"typename":"create-platform-achievement","deprecated":false,"properties":[{"name":"amount","order":0,"description":"How many space platforms need to be created.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"CurvedRailAPrototype","order":59,"description":"A curved-A rail.","parent":"RailPrototype","abstract":false,"typename":"curved-rail-a","deprecated":false,"properties":[{"name":"collision_box","order":0,"description":"The [collision_box](prototype:EntityPrototype::collision_box) of straight rail is hardcoded to `{{-0.7, -2.516}, {0.7, 2.516}}`.","override":true,"type":"BoundingBox","optional":true,"default":"`{{-0.7, -2.516}, {0.7, 2.516}}`"}]},{"name":"CurvedRailBPrototype","order":60,"description":"A curved-B rail.","parent":"RailPrototype","abstract":false,"typename":"curved-rail-b","deprecated":false,"properties":[{"name":"collision_box","order":0,"description":"The [collision_box](prototype:EntityPrototype::collision_box) of straight rail is hardcoded to `{{-0.7, -2.441}, {0.7, 2.441}}`.","override":true,"type":"BoundingBox","optional":true,"default":"`{{-0.7, -2.441}, {0.7, 2.441}}`"}]},{"name":"CustomEventPrototype","order":61,"description":"Custom events share the same namespace as custom inputs and built-in events for subscribing to and raising them.","examples":["```\n{\n  type = \"custom-event\",\n  name = \"potato-custom-event\"\n}\n```"],"parent":"Prototype","abstract":false,"typename":"custom-event","deprecated":false,"properties":[]},{"name":"CustomInputPrototype","order":62,"description":"Used for custom keyboard shortcuts/key bindings in mods. The key associated with the custom input can be changed in the options. This means that `key_sequence` is simply the default key binding.","parent":"Prototype","abstract":false,"typename":"custom-input","deprecated":false,"properties":[{"name":"action","order":12,"description":"A [Lua event](runtime:CustomInputEvent) is only raised if the action is \"lua\".","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"lua"},{"complex_type":"literal","value":"spawn-item"},{"complex_type":"literal","value":"toggle-personal-roboport"},{"complex_type":"literal","value":"toggle-personal-logistic-requests"},{"complex_type":"literal","value":"toggle-equipment-movement-bonus"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"lua"}},{"name":"alternative_key_sequence","order":2,"description":"The alternative key binding for this control. See `key_sequence` for the format.","override":false,"type":"string","optional":true},{"name":"block_modifiers","order":13,"description":"If `true`, when the shortcut is activated, the modifiers used for this shortcut can't be re-used to press something else until unpressed. The example where this is useful is ALT+A to activate spidertron remote, where ALT is consumed, so pressing right mouse button before the ALT is unpressed will not trigger pin creation (ALT + right mouse button), but send the selected unit instead.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"consuming","order":6,"description":"Sets whether internal game events associated with the same key sequence should be fired or blocked. If they are fired (\"none\"), then the custom input event will happen before the internal game event.","override":false,"type":"ConsumingType","optional":true,"default":{"complex_type":"literal","value":"none"}},{"name":"controller_alternative_key_sequence","order":4,"description":"The alternative controller (game pad) keybinding for this control. See `controller_key_sequence` for the format.","override":false,"type":"string","optional":true},{"name":"controller_key_sequence","order":3,"description":"The controller (game pad) keybinding for this control. Use `\"\"` (empty string) for unassigned.\n\nAs modifier buttons, these names are used: `\"controller-righttrigger\"`, `\"controller-lefttrigger\"`.\n\n`\" + \"` is used to separate modifier buttons from normal buttons, like so: `\"controller-righttrigger + controller-a\"`. A key binding can contain any amount of individual modifier buttons, but only a single normal button (listed below).","lists":["Available names for the normal controller buttons\n\n- controller-a\n- controller-b\n- controller-x\n- controller-y\n- controller-back\n- controller-guide\n- controller-start\n- controller-leftstick (pressing left joy stick)\n- controller-left-stick (moving left joy stick)\n- controller-rightstick (pressing right joy stick)\n- controller-right-stick (moving right joy stick)\n- controller-leftshoulder\n- controller-rightshoulder\n- controller-dpup\n- controller-dpdown\n- controller-dpleft\n- controller-dpright\n- controller-misc1\n- controller-paddle1\n- controller-paddle2\n- controller-paddle3\n- controller-paddle4\n- controller-touchpad"],"override":false,"type":"string","optional":true},{"name":"enabled","order":7,"description":"If this custom input is enabled. Disabled custom inputs exist but are not used by the game. If disabled, no event is raised when the input is used.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"enabled_while_in_cutscene","order":9,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"enabled_while_spectating","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"include_selected_prototype","order":10,"description":"If true, the type and name of the currently selected prototype will be provided as \"selected_prototype\" in the raised [Lua event](runtime:CustomInputEvent). [This also works in GUIs](https://forums.factorio.com/96125), not just the game world.\n\nThis will also return an item in the cursor such as copper-wire or rail-planner, if nothing is beneath the cursor.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"item_to_spawn","order":11,"description":"The item will be created when this input is pressed and action is set to \"spawn-item\". The item must have the [spawnable](prototype:ItemPrototypeFlags::spawnable) flag set.","override":false,"type":"ItemID","optional":true},{"name":"key_sequence","order":1,"description":"The default key sequence for this custom input. Use `\"\"` (empty string) for unassigned.\n\nAs modifier keys, these names are used: `\"CONTROL\"`, `\"SHIFT\"`, `\"COMMAND\"`, `\"ALT\"`. Note that `\"COMMAND\"` is loaded as `\"CONTROL\"` on Windows and Linux.\n\n`\" + \"` is used to separate modifier keys from normal keys, like so: `\"ALT + G\"`. A key binding can contain any amount of individual modifier keys, but only a single normal mouse button or keyboard key (listed below).","lists":["Available names for the normal mouse button\n\n- `mouse-button-1` (left)\n- `mouse-button-2` (right)\n- `mouse-button-3` (middle)\n- `mouse-button-4`\n- `mouse-button-5`\n- `mouse-button-6`\n- `mouse-button-7`\n- `mouse-button-8`\n- `mouse-button-9`\n- `mouse-wheel-up`\n- `mouse-wheel-down`\n- `mouse-wheel-left`\n- `mouse-wheel-right`","Available names for the normal keyboard keys\n\n- A\n- B\n- C\n- D\n- E\n- F\n- G\n- H\n- I\n- J\n- K\n- L\n- M\n- N\n- O\n- P\n- Q\n- R\n- S\n- T\n- U\n- V\n- W\n- X\n- Y\n- Z\n- 1\n- 2\n- 3\n- 4\n- 5\n- 6\n- 7\n- 8\n- 9\n- 0\n- RETURN\n- ESCAPE\n- BACKSPACE\n- TAB\n- SPACE\n- MINUS\n- EQUALS\n- LEFTBRACKET\n- RIGHTBRACKET\n- BACKSLASH\n- NONUSHASH\n- SEMICOLON\n- APOSTROPHE\n- GRAVE\n- COMMA\n- PERIOD\n- SLASH\n- CAPSLOCK\n- F1\n- F2\n- F3\n- F4\n- F5\n- F6\n- F7\n- F8\n- F9\n- F10\n- F11\n- F12\n- PRINTSCREEN\n- SCROLLLOCK\n- PAUSE\n- INSERT\n- HOME\n- PAGEUP\n- DELETE\n- END\n- PAGEDOWN\n- RIGHT\n- LEFT\n- DOWN\n- UP\n- NUMLOCKCLEAR\n- KP_DIVIDE\n- KP_MULTIPLY\n- KP_MINUS\n- KP_PLUS\n- KP_ENTER\n- KP_1\n- KP_2\n- KP_3\n- KP_4\n- KP_5\n- KP_6\n- KP_7\n- KP_8\n- KP_9\n- KP_0\n- KP_PERIOD\n- NONUSBACKSLASH\n- APPLICATION\n- POWER\n- KP_EQUALS\n- F13\n- F14\n- F15\n- F16\n- F17\n- F18\n- F19\n- F20\n- F21\n- F22\n- F23\n- F24\n- EXECUTE\n- HELP\n- MENU\n- SELECT\n- STOP\n- AGAIN\n- UNDO\n- CUT\n- COPY\n- PASTE\n- FIND\n- MUTE\n- VOLUMEUP\n- VOLUMEDOWN\n- KP_COMMA\n- KP_EQUALSAS400\n- INTERNATIONAL1\n- INTERNATIONAL2\n- INTERNATIONAL3\n- INTERNATIONAL4\n- INTERNATIONAL5\n- INTERNATIONAL6\n- INTERNATIONAL7\n- INTERNATIONAL8\n- INTERNATIONAL9\n- LANG1\n- LANG2\n- LANG3\n- LANG4\n- LANG5\n- LANG6\n- LANG7\n- LANG8\n- LANG9\n- ALTERASE\n- SYSREQ\n- CANCEL\n- CLEAR\n- PRIOR\n- RETURN2\n- SEPARATOR\n- OUT\n- OPER\n- CLEARAGAIN\n- CRSEL\n- EXSEL\n- KP_00\n- KP_000\n- THOUSANDSSEPARATOR\n- DECIMALSEPARATOR\n- CURRENCYUNIT\n- CURRENCYSUBUNIT\n- KP_LEFTPAREN\n- KP_RIGHTPAREN\n- KP_LEFTBRACE\n- KP_RIGHTBRACE\n- KP_TAB\n- KP_BACKSPACE\n- KP_A\n- KP_B\n- KP_C\n- KP_D\n- KP_E\n- KP_F\n- KP_XOR\n- KP_POWER\n- KP_PERCENT\n- KP_LESS\n- KP_GREATER\n- KP_AMPERSAND\n- KP_DBLAMPERSAND\n- KP_VERTICALBAR\n- KP_DBLVERTICALBAR\n- KP_COLON\n- KP_HASH\n- KP_SPACE\n- KP_AT\n- KP_EXCLAM\n- KP_MEMSTORE\n- KP_MEMRECALL\n- KP_MEMCLEAR\n- KP_MEMADD\n- KP_MEMSUBTRACT\n- KP_MEMMULTIPLY\n- KP_MEMDIVIDE\n- KP_PLUSMINUS\n- KP_CLEAR\n- KP_CLEARENTRY\n- KP_BINARY\n- KP_OCTAL\n- KP_DECIMAL\n- KP_HEXADECIMAL\n- LCTRL\n- LSHIFT\n- LALT\n- LGUI\n- RCTRL\n- RSHIFT\n- RALT\n- RGUI\n- MODE\n- AUDIONEXT\n- AUDIOPREV\n- AUDIOSTOP\n- AUDIOPLAY\n- AUDIOMUTE\n- MEDIASELECT\n- WWW\n- MAIL\n- CALCULATOR\n- COMPUTER\n- AC_SEARCH\n- AC_HOME\n- AC_BACK\n- AC_FORWARD\n- AC_STOP\n- AC_REFRESH\n- AC_BOOKMARKS\n- BRIGHTNESSDOWN\n- BRIGHTNESSUP\n- DISPLAYSWITCH\n- KBDILLUMTOGGLE\n- KBDILLUMDOWN\n- KBDILLUMUP\n- EJECT\n- SLEEP\n- APP1\n- APP2\n- AUDIOREWIND\n- AUDIOFASTFORWARD"],"override":false,"type":"string","optional":false},{"name":"linked_game_control","order":5,"description":"When a custom-input is linked to a game control it won't show up in the control-settings GUI and will fire when the linked control is pressed.","examples":["```\nkey_sequence = \"\",\nlinked_game_control = \"clear-cursor\"\n```"],"override":false,"type":"LinkedGameControl","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"name","order":0,"description":"Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters.\n\nFor a list of all names used in vanilla, see [data.raw](https://wiki.factorio.com/Data.raw).\n\nIt is also the name for the event that is raised when they key (combination) is pressed and action is `\"lua\"`, see [Tutorial:Script interfaces](https://wiki.factorio.com/Tutorial:Script_interfaces#Custom_input).","override":true,"type":"string","optional":false}]},{"name":"DamageType","order":63,"description":"A damage type. This is used in the [damage system](https://wiki.factorio.com/Damage). [A list of built-in damage types can be found here](https://wiki.factorio.com/Damage#Damage_types).","parent":"Prototype","abstract":false,"typename":"damage-type","instance_limit":255,"deprecated":false,"properties":[]},{"name":"DeciderCombinatorPrototype","order":64,"description":"A [decider combinator](https://wiki.factorio.com/Decider_combinator).","parent":"CombinatorPrototype","abstract":false,"typename":"decider-combinator","deprecated":false,"properties":[{"name":"equal_symbol_sprites","order":0,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"greater_or_equal_symbol_sprites","order":4,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"greater_symbol_sprites","order":1,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"less_or_equal_symbol_sprites","order":5,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"less_symbol_sprites","order":2,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"not_equal_symbol_sprites","order":3,"description":"","override":false,"type":"Sprite4Way","optional":true}]},{"name":"DeconstructWithRobotsAchievementPrototype","order":65,"description":"This prototype is used for receiving an achievement when the player deconstructs enough entities with construction robots.","parent":"AchievementPrototype","abstract":false,"typename":"deconstruct-with-robots-achievement","deprecated":false,"properties":[{"name":"amount","order":0,"description":"This will trigger the achievement, if enough entities were deconstructed using construction robots.","examples":["```\namount = 100\n```"],"override":false,"type":"uint32","optional":false}]},{"name":"DeconstructibleTileProxyPrototype","order":66,"description":"Entity used to signify that the tile below it should be deconstructed.","parent":"EntityPrototype","abstract":false,"typename":"deconstructible-tile-proxy","deprecated":false,"properties":[]},{"name":"DeconstructionItemPrototype","order":67,"description":"A [deconstruction planner](https://wiki.factorio.com/Deconstruction_planner).","parent":"SelectionToolPrototype","abstract":false,"typename":"deconstruction-item","deprecated":false,"properties":[{"name":"alt_select","order":4,"description":"The [SelectionModeData::mode](prototype:SelectionModeData::mode) is hardcoded to `\"cancel-deconstruct\"`.\n\nThe filters are parsed, but then ignored and forced to be empty.","override":true,"type":"SelectionModeData","optional":false},{"name":"always_include_tiles","order":5,"description":"This property is hardcoded to `false`.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"entity_filter_count","order":0,"description":"Can't be > 255.","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"select","order":3,"description":"The [SelectionModeData::mode](prototype:SelectionModeData::mode) is hardcoded to `\"deconstruct\"`.\n\nThe filters are parsed, but then ignored and forced to be empty.","override":true,"type":"SelectionModeData","optional":false},{"name":"stack_size","order":2,"description":"Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `\"not-stackable\"` flag is set.","examples":["```\nstack_size = 1\n```"],"override":true,"type":{"complex_type":"literal","value":1},"optional":false},{"name":"tile_filter_count","order":1,"description":"Can't be > 255.","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"DecorativePrototype","order":68,"description":"Simple decorative purpose objects on the map, they have no health and some of them are removed when the player builds over. Usually used for grass patches, roots, small plants etc.","parent":"Prototype","abstract":false,"typename":"optimized-decorative","instance_limit":65535,"deprecated":false,"properties":[{"name":"autoplace","order":15,"description":"","override":false,"type":"AutoplaceSpecification","optional":true},{"name":"collision_box","order":3,"description":"Must contain the [0,0] point. Max radius of the collision box is 8.","override":false,"type":"BoundingBox","optional":true},{"name":"collision_mask","order":9,"description":"Defaults to the mask from [UtilityConstants::default_collision_masks](prototype:UtilityConstants::default_collision_masks) when indexed by `\"decorative\"`.","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"decal_overdraw_priority","order":8,"description":"Loaded only if `render_layer` = \"decals\". When decoratives are being spawned by [EnemySpawnerPrototype::spawn_decoration](prototype:EnemySpawnerPrototype::spawn_decoration) or [TurretPrototype::spawn_decoration](prototype:TurretPrototype::spawn_decoration), decals with `decal_overdraw_priority` greater than 0 will be filtered such that they don't overlap too much. If two or more decals would overlap, only the one with the largest value of `decal_overdraw_priority` is placed.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"grows_through_rail_path","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"minimal_separation","order":12,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"opacity_over_water","order":6,"description":"Loaded only if `render_layer` = \"decals\". Value lower than 1 enables masking by water for decals with `tile_layer` greater or equal to [UtilityConstants::capture_water_mask_at_layer](prototype:UtilityConstants::capture_water_mask_at_layer). Water tiles must use water `tile-effect` with [WaterTileEffectParameters::lightmap_alpha](prototype:WaterTileEffectParameters::lightmap_alpha) set to 0 or value less than 1. Graphics option `Occlude light sprites` must be enabled, as water mask is captured into terrain lightmap alpha channel. Tiles rendered in layer between [UtilityConstants::capture_water_mask_at_layer](prototype:UtilityConstants::capture_water_mask_at_layer) and decal's `tile_layer` will likely also mask decals in some way, as water mask will likely be 0 at their position, but this is considered undefined behavior.","visibility":["space_age"],"override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"pictures","order":0,"description":"Must contain at least 1 picture.","override":false,"type":"SpriteVariations","optional":false},{"name":"placed_effect","order":14,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"render_layer","order":4,"description":"When \"decals\" render layer is used, the decorative is treated as decal. That means it will be rendered within tile layers instead of normal sprite layers.","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"decorative"}},{"name":"stateless_visualisation","order":1,"description":"Can be defined only when decorative is not \"decal\" (see `render_layer`).","override":false,"type":{"complex_type":"union","options":["StatelessVisualisation",{"complex_type":"array","value":"StatelessVisualisation"}],"full_format":false},"optional":true},{"name":"stateless_visualisation_variations","order":2,"description":"Only loaded if `stateless_visualisation` is not defined. Can be defined only when decorative is not \"decal\" (see `render_layer`).","override":false,"type":{"complex_type":"array","value":{"complex_type":"union","options":["StatelessVisualisation",{"complex_type":"array","value":"StatelessVisualisation"}],"full_format":false}},"optional":true},{"name":"target_count","order":13,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"tile_layer","order":7,"description":"Mandatory if `render_layer` = \"decals\". This int16 is converted to a [TileRenderLayer](prototype:TileRenderLayer) internally. It is offset from `ground-natural`.","override":false,"type":"int16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"trigger_effect","order":11,"description":"Called by [DestroyDecorativesTriggerEffectItem](prototype:DestroyDecorativesTriggerEffectItem).","override":false,"type":"TriggerEffect","optional":true},{"name":"walking_sound","order":10,"description":"","override":false,"type":"Sound","optional":true}]},{"name":"DelayedActiveTriggerPrototype","order":69,"description":"Delays the delivery of triggered effect by some number of ticks.","parent":"ActiveTriggerPrototype","abstract":false,"typename":"delayed-active-trigger","deprecated":false,"properties":[{"name":"action","order":0,"description":"The trigger to apply after `delay` has elapsed.","override":false,"type":"Trigger","optional":false},{"name":"cancel_when_source_is_destroyed","order":4,"description":"If true, the delayed trigger is cancelled if the source entity is destroyed.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"delay","order":1,"description":"The number of ticks to delay the delivery of the triggered effect. Must be greater than 0.","override":false,"type":"uint32","optional":false},{"name":"repeat_count","order":2,"description":"The number of times to repeat the delayed trigger.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"repeat_delay","order":3,"description":"The number of ticks between repeat deliveries of the triggered effect. Must be greater than 0.","override":false,"type":"uint32","optional":true,"default":"Value of `delay`"}]},{"name":"DeliverByRobotsAchievementPrototype","order":70,"description":"This prototype is used for receiving an achievement, when the player requests and receives enough items using logistic robots.","parent":"AchievementPrototype","abstract":false,"typename":"deliver-by-robots-achievement","deprecated":false,"properties":[{"name":"amount","order":0,"description":"This will trigger the achievement, when the player receives enough items through logistic robots.","examples":["```\namount = 10000\n```"],"override":false,"type":"uint32","optional":false}]},{"name":"DeliverCategory","order":71,"description":"","examples":["```\n{\n  type = \"deliver-category\",\n  name = \"bullet\"\n}\n```"],"abstract":false,"typename":"deliver-category","deprecated":false,"properties":[{"name":"name","order":1,"description":"Name of the deliver category.","override":false,"type":"string","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"deliver-category"},"optional":false}]},{"name":"DeliverImpactCombination","order":72,"description":"","examples":["```\n{\n  type = \"deliver-impact-combination\",\n  name = \"bullet-organic\",\n  deliver_category = \"bullet\",\n  impact_category = \"organic\",\n  trigger_effect_item =\n  {\n    type = \"play-sound\",\n    sound =\n    {\n      category = \"weapon\",\n      variations = sound_variations(\"__base__/sound/bullets/bullet-impact-organic\", 5, 0.3),\n      aggregation = {max_count = 4, remove = true, count_already_playing = true}\n    }\n  }\n}\n```"],"abstract":false,"typename":"deliver-impact-combination","deprecated":false,"properties":[{"name":"deliver_category","order":3,"description":"","override":false,"type":"string","optional":false},{"name":"impact_category","order":2,"description":"","override":false,"type":"string","optional":false},{"name":"name","order":1,"description":"Name of the deliver impact combination.","override":false,"type":"string","optional":false},{"name":"trigger_effect_item","order":4,"description":"","override":false,"type":"TriggerEffect","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"deliver-impact-combination"},"optional":false}]},{"name":"DepleteResourceAchievementPrototype","order":73,"description":"This prototype is used for receiving an achievement when a resource entity is depleted.","parent":"AchievementPrototype","abstract":false,"typename":"deplete-resource-achievement","deprecated":false,"properties":[{"name":"amount","order":0,"description":"How many resource entities need to be depleted.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"limited_to_one_game","order":1,"description":"If this is false, the player carries over their statistics from this achievement through all their saves.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"DestroyCliffAchievementPrototype","order":74,"description":"","parent":"AchievementPrototype","abstract":false,"typename":"destroy-cliff-achievement","deprecated":false,"properties":[{"name":"amount","order":0,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"limited_to_one_game","order":1,"description":"If this is false, the player carries over their statistics from this achievement through all their saves.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"DisplayPanelPrototype","order":75,"description":"Entity that display a signal icon and some text, either configured directly in the entity or through the circuit network.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"display-panel","deprecated":false,"properties":[{"name":"background_color","order":4,"description":"The background color of the display panel text.","override":false,"type":"Color","optional":true},{"name":"circuit_connector","order":8,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_wire_max_distance","order":5,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"max_text_width","order":1,"description":"The maximum display width of the text on the display panel. If the text exceeds this width it will be wrapped so that it continues on the next line.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":400}},{"name":"sprites","order":0,"description":"The display panel's graphics.","override":false,"type":"Sprite4Way","optional":true},{"name":"text_color","order":3,"description":"The color of the text on the display panel.","override":false,"type":"Color","optional":true},{"name":"text_shift","order":2,"description":"The shift of the text on the display panel.","override":false,"type":"Vector","optional":true}]},{"name":"DontBuildEntityAchievementPrototype","order":76,"description":"This prototype is used for receiving an achievement when the player finishes the game without building a specific entity.","parent":"AchievementPrototypeWithCondition","abstract":false,"typename":"dont-build-entity-achievement","deprecated":false,"properties":[{"name":"amount","order":1,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"dont_build","order":0,"description":"This will disable the achievement, if this entity is placed. If you finish the game without building this entity, you receive the achievement.","examples":["```\ndont_build = {\"bulk-inserter\", \"fluid-wagon\"}\n```"],"override":false,"type":{"complex_type":"union","options":["EntityID",{"complex_type":"array","value":"EntityID"}],"full_format":false},"optional":false},{"name":"research_with","order":2,"description":"If you research technology using one of specified items before building entity, you receive the achievement.","override":false,"type":{"complex_type":"union","options":["ItemID",{"complex_type":"array","value":"ItemID"}],"full_format":false},"optional":true}]},{"name":"DontCraftManuallyAchievementPrototype","order":77,"description":"This prototype is used for receiving an achievement when the player finishes the game without crafting more than a set amount.","parent":"AchievementPrototypeWithCondition","abstract":false,"typename":"dont-craft-manually-achievement","deprecated":false,"properties":[{"name":"amount","order":0,"description":"This will disable the achievement, if the player crafts more than this.","examples":["```\namount = 111\n```"],"override":false,"type":"uint32","optional":false}]},{"name":"DontKillManuallyAchievementPrototype","order":78,"description":"This prototype is used for receiving an achievement when the player kill first entity using artillery.","parent":"AchievementPrototypeWithCondition","abstract":false,"typename":"dont-kill-manually-achievement","deprecated":false,"properties":[{"name":"to_kill","order":0,"description":"This will disable the achievement, if this entity is killed manually. If you kill this entity with artillery first, you receive the achievement.","override":false,"type":"EntityID","optional":true},{"name":"type_not_to_kill","order":1,"description":"This will disable the achievement, if this entity type is killed manually. If you kill this entity type with artillery first, you receive the achievement.","examples":["```\ntype_not_to_kill = \"unit-spawner\"\n```"],"override":false,"type":"string","optional":true}]},{"name":"DontResearchBeforeResearchingAchievementPrototype","order":79,"description":"This prototype is used for receiving an achievement when the player researches with a specific science pack before unlocking another.","parent":"AchievementPrototypeWithCondition","abstract":false,"typename":"dont-research-before-researching-achievement","deprecated":false,"properties":[{"name":"dont_research","order":0,"description":"This will disable the achievement, if technology unlocking this item is researched before meeting requirements.","examples":["```\ndont_research = {\"production-science-pack\", \"utility-science-pack\"}\n```"],"override":false,"type":{"complex_type":"union","options":["ItemID",{"complex_type":"array","value":"ItemID"}],"full_format":false},"optional":false},{"name":"research_with","order":1,"description":"If you research technology using one of specified items, you receive the achievement.","examples":["```\nresearch_with = {\"metallurgic-science-pack\", \"electromagnetic-science-pack\", \"agricultural-science-pack\"}\n```"],"override":false,"type":{"complex_type":"union","options":["ItemID",{"complex_type":"array","value":"ItemID"}],"full_format":false},"optional":false}]},{"name":"DontUseEntityInEnergyProductionAchievementPrototype","order":80,"description":"This prototype is used for receiving an achievement when the player finishes the game without receiving energy from a specific energy source.","parent":"AchievementPrototypeWithCondition","abstract":false,"typename":"dont-use-entity-in-energy-production-achievement","deprecated":false,"properties":[{"name":"excluded","order":0,"description":"This will **not** disable the achievement, if this entity is placed, and you have received any amount of power from it.","examples":["```\nexcluded = {\"steam-engine\", \"steam-turbine\"}\n```"],"override":false,"type":{"complex_type":"union","options":["EntityID",{"complex_type":"array","value":"EntityID"}],"full_format":false},"optional":false},{"name":"included","order":1,"description":"This will disable the achievement, if this entity is placed, and you have received any amount of power from it. If you finish the game without receiving power from this entity, you receive the achievement.","examples":["```\nincluded = \"solar-panel\"\n```"],"override":false,"type":{"complex_type":"union","options":["EntityID",{"complex_type":"array","value":"EntityID"}],"full_format":false},"optional":true},{"name":"last_hour_only","order":2,"description":"If `true`, the achievements will only be checked for the last hour of the game, independently of finishing the game.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"minimum_energy_produced","order":3,"description":"The minimum amount of energy that needs to be produced by the allowed entities to trigger the achievement.","override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":"0J"}}]},{"name":"EditorControllerPrototype","order":81,"description":"Properties of the editor controller.","abstract":false,"typename":"editor-controller","instance_limit":1,"deprecated":false,"properties":[{"name":"adjust_speed_based_off_zoom","order":9,"description":"","override":false,"type":"boolean","optional":false},{"name":"enable_flash_light","order":8,"description":"","override":false,"type":"boolean","optional":false},{"name":"fill_built_entity_energy_buffers","order":21,"description":"","override":false,"type":"boolean","optional":false},{"name":"generate_neighbor_chunks","order":20,"description":"","override":false,"type":"boolean","optional":false},{"name":"gun_inventory_size","order":3,"description":"","override":false,"type":"ItemStackIndex","optional":false},{"name":"ignore_tile_conditions","order":25,"description":"","override":false,"type":"boolean","optional":false},{"name":"instant_blueprint_building","order":11,"description":"","override":false,"type":"boolean","optional":false},{"name":"instant_deconstruction","order":12,"description":"","override":false,"type":"boolean","optional":false},{"name":"instant_rail_planner","order":14,"description":"","override":false,"type":"boolean","optional":false},{"name":"instant_upgrading","order":13,"description":"","override":false,"type":"boolean","optional":false},{"name":"inventory_size","order":2,"description":"","override":false,"type":"ItemStackIndex","optional":false},{"name":"item_pickup_distance","order":5,"description":"","override":false,"type":"double","optional":false},{"name":"loot_pickup_distance","order":6,"description":"","override":false,"type":"double","optional":false},{"name":"mining_speed","order":7,"description":"","override":false,"type":"double","optional":false},{"name":"movement_speed","order":4,"description":"Must be >= 0.34375.","override":false,"type":"double","optional":false},{"name":"name","order":1,"description":"Name of the editor controller. Base game uses \"default\".","override":false,"type":"string","optional":false},{"name":"placed_corpses_never_expire","order":24,"description":"","override":false,"type":"boolean","optional":false},{"name":"render_as_day","order":10,"description":"","override":false,"type":"boolean","optional":false},{"name":"show_additional_entity_info_gui","order":19,"description":"","override":false,"type":"boolean","optional":false},{"name":"show_character_tab_in_controller_gui","order":22,"description":"","override":false,"type":"boolean","optional":false},{"name":"show_entity_health_bars","order":18,"description":"","override":false,"type":"boolean","optional":false},{"name":"show_entity_tags","order":17,"description":"","override":false,"type":"boolean","optional":false},{"name":"show_hidden_entities","order":16,"description":"","override":false,"type":"boolean","optional":false},{"name":"show_infinity_filters_in_controller_gui","order":23,"description":"","override":false,"type":"boolean","optional":false},{"name":"show_status_icons","order":15,"description":"","override":false,"type":"boolean","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"editor-controller"},"optional":false}]},{"name":"ElectricEnergyInterfacePrototype","order":82,"description":"Entity with electric energy source with that can have some of its values changed runtime. Useful for modding in energy consumers/producers.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"electric-energy-interface","deprecated":false,"properties":[{"name":"allow_copy_paste","order":11,"description":"","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"animation","order":9,"description":"Only loaded if both `picture` and `pictures` are not defined.","override":false,"type":"Animation","optional":true},{"name":"animations","order":10,"description":"Only loaded if `picture`, `pictures`, and `animation` are not defined.","override":false,"type":"Animation4Way","optional":true},{"name":"continuous_animation","order":4,"description":"Whether the electric energy interface animation always runs instead of being scaled to activity.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"energy_production","order":1,"description":"","examples":["```\nenergy_production = \"500GW\"\n```"],"override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"energy_source","order":0,"description":"","override":false,"type":"ElectricEnergySource","optional":false},{"name":"energy_usage","order":2,"description":"","examples":["```\nenergy_usage = \"10kW\"\n```"],"override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"gui_mode","order":3,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"all"},{"complex_type":"literal","value":"none"},{"complex_type":"literal","value":"admins"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"none"}},{"name":"light","order":6,"description":"The light that this electric energy interface emits.","override":false,"type":"LightDefinition","optional":true},{"name":"picture","order":7,"description":"","override":false,"type":"Sprite","optional":true},{"name":"pictures","order":8,"description":"Only loaded if `picture` is not defined.","override":false,"type":"Sprite4Way","optional":true},{"name":"render_layer","order":5,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}}]},{"name":"ElectricPolePrototype","order":83,"description":"An electric pole - part of the [electric system](https://wiki.factorio.com/Electric_system).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"electric-pole","deprecated":false,"properties":[{"name":"active_picture","order":4,"description":"Drawn above the `pictures` when the electric pole is connected to an electric network.","override":false,"type":"Sprite","optional":true},{"name":"auto_connect_up_to_n_wires","order":10,"description":"`0` means disable auto-connect.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":5}},{"name":"connection_points","order":2,"description":"","override":false,"type":{"complex_type":"array","value":"WireConnectionPoint"},"optional":false},{"name":"draw_circuit_wires","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"light","order":8,"description":"Drawn when the electric pole is connected to an electric network.","override":false,"type":"LightDefinition","optional":true},{"name":"maximum_wire_distance","order":5,"description":"The maximum distance between this pole and any other connected pole - if two poles are farther apart than this, they cannot be connected together directly. Corresponds to \"wire reach\" in the item tooltip.\n\nMax value is 64.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"pictures","order":0,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"radius_visualisation_picture","order":3,"description":"","override":false,"type":"Sprite","optional":true},{"name":"rewire_neighbours_when_destroying","order":11,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"supply_area_distance","order":1,"description":"The \"radius\" of this pole's supply area. Corresponds to *half* of the \"supply area\" in the item tooltip. If this is 3.5, the pole will have a 7x7 supply area.\n\nMax value is 64.","override":false,"type":"double","optional":false},{"name":"track_coverage_during_drag_building","order":9,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"ElectricTurretPrototype","order":84,"description":"A turret that uses electricity as ammunition.","parent":"TurretPrototype","abstract":false,"typename":"electric-turret","deprecated":false,"properties":[{"name":"energy_source","order":0,"description":"","override":false,"type":{"complex_type":"union","options":["ElectricEnergySource","VoidEnergySource"],"full_format":false},"optional":false}]},{"name":"ElevatedCurvedRailAPrototype","order":85,"description":"An elevated curved-A rail.","parent":"CurvedRailAPrototype","abstract":false,"typename":"elevated-curved-rail-a","deprecated":false,"properties":[{"name":"name","order":0,"description":"Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters.\n\nRequires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built.","override":true,"type":"string","optional":false}]},{"name":"ElevatedCurvedRailBPrototype","order":86,"description":"An elevated curved-B rail.","parent":"CurvedRailBPrototype","abstract":false,"typename":"elevated-curved-rail-b","deprecated":false,"properties":[{"name":"name","order":0,"description":"Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters.\n\nRequires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built.","override":true,"type":"string","optional":false}]},{"name":"ElevatedHalfDiagonalRailPrototype","order":87,"description":"An elevated half diagonal rail.","parent":"HalfDiagonalRailPrototype","abstract":false,"typename":"elevated-half-diagonal-rail","deprecated":false,"properties":[{"name":"name","order":0,"description":"Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters.\n\nRequires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built.","override":true,"type":"string","optional":false}]},{"name":"ElevatedStraightRailPrototype","order":88,"description":"An elevated straight rail.","parent":"StraightRailPrototype","abstract":false,"typename":"elevated-straight-rail","deprecated":false,"properties":[{"name":"name","order":0,"description":"Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters.\n\nRequires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built.","override":true,"type":"string","optional":false}]},{"name":"EnemySpawnerPrototype","order":89,"description":"Can spawn entities. Used for biter/spitter nests.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"unit-spawner","deprecated":false,"properties":[{"name":"absorptions_per_second","order":14,"description":"","override":false,"type":{"complex_type":"dictionary","key":"AirbornePollutantID","value":"EnemySpawnerAbsorption"},"optional":true},{"name":"allow_run_time_change_of_is_military_target","order":21,"description":"If this is true, this entities `is_military_target property` can be changed runtime (on the entity, not on the prototype itself).","override":true,"type":{"complex_type":"literal","value":false},"optional":true,"default":{"complex_type":"literal","value":false}},{"name":"call_for_help_radius","order":10,"description":"","override":false,"type":"double","optional":false},{"name":"captured_spawner_entity","order":19,"description":"","override":false,"type":"EntityID","optional":true},{"name":"dying_sound","order":13,"description":"","override":false,"type":"Sound","optional":true},{"name":"graphics_set","order":0,"description":"","override":false,"type":"EnemySpawnerGraphicsSet","optional":false},{"name":"is_military_target","order":20,"description":"Whether this prototype should be a high priority target for enemy forces. See [Military units and structures](https://wiki.factorio.com/Military_units_and_structures).","override":true,"type":{"complex_type":"literal","value":true},"optional":true,"default":{"complex_type":"literal","value":true}},{"name":"max_count_of_owned_defensive_units","order":2,"description":"Count of defensive enemies this spawner can sustain. Defensive units are units with [UnitAISettings::join_attacks](prototype:UnitAISettings::join_attacks) set to false. If set below [EnemySpawnerPrototype::max_count_of_owned_units](prototype:EnemySpawnerPrototype::max_count_of_owned_units), the difference will be the space reserved for non-defensive units.","override":false,"type":"uint32","optional":true,"default":"Value of `max_count_of_owned_units`"},{"name":"max_count_of_owned_units","order":1,"description":"Count of enemies this spawner can sustain.","override":false,"type":"uint32","optional":false},{"name":"max_darkness_to_spawn","order":16,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"max_defensive_friends_around_to_spawn","order":4,"description":"How many friendly defensive units are required within the [EnemySpawnerPrototype::spawning_radius](prototype:EnemySpawnerPrototype::spawning_radius) of this spawner for it to stop producing more units. Defensive units are units with [UnitAISettings::join_attacks](prototype:UnitAISettings::join_attacks) set to false. If set below [EnemySpawnerPrototype::max_friends_around_to_spawn](prototype:EnemySpawnerPrototype::max_friends_around_to_spawn), the difference will be the space reserved for non-defensive units.","override":false,"type":"uint32","optional":true,"default":"Value of `max_friends_around_to_spawn`"},{"name":"max_friends_around_to_spawn","order":3,"description":"How many friendly units are required within the [EnemySpawnerPrototype::spawning_radius](prototype:EnemySpawnerPrototype::spawning_radius) of this spawner for it to stop producing more units.","override":false,"type":"uint32","optional":false},{"name":"max_richness_for_spawn_shift","order":8,"description":"Max richness to determine spawn shift. Spawn shift is linear interpolation between 0 and max_spawn_shift.","override":false,"type":"double","optional":false},{"name":"max_spawn_shift","order":9,"description":"Caps how much richness can be added on top of evolution when spawning units. [See also](https://www.reddit.com/r/factorio/comments/8pjscm/friday_facts_246_the_gui_update_part_3/e0bttnp/)","override":false,"type":"double","optional":false},{"name":"min_darkness_to_spawn","order":15,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"result_units","order":12,"description":"Array of the [entities](prototype:EntityPrototype) that this spawner can spawn and their spawn probabilities. The sum of probabilities is expected to be 1.0. The array must not be empty.","override":false,"type":{"complex_type":"array","value":"UnitSpawnDefinition"},"optional":false},{"name":"spawn_decoration","order":18,"description":"Decoratives to be created when the spawner is created by the [map generator](https://wiki.factorio.com/Map_generator). Placed when enemies expand if `spawn_decorations_on_expansion` is set to true.","override":false,"type":{"complex_type":"array","value":"CreateDecorativesTriggerEffectItem"},"optional":true},{"name":"spawn_decorations_on_expansion","order":17,"description":"Whether `spawn_decoration` should be spawned when enemies [expand](https://wiki.factorio.com/Enemies#Expansions).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"spawning_cooldown","order":5,"description":"Ticks for cooldown after unit is spawned. The first member of the tuple is min, the second member of the tuple is max.","override":false,"type":{"complex_type":"tuple","values":["double","double"]},"optional":false},{"name":"spawning_radius","order":6,"description":"How far from the spawner can the units be spawned.","override":false,"type":"double","optional":false},{"name":"spawning_spacing","order":7,"description":"What spaces should be between the spawned units.","override":false,"type":"double","optional":false},{"name":"time_to_capture","order":11,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"EnergyShieldEquipmentPrototype","order":90,"description":"Used by [energy shield](https://wiki.factorio.com/Energy_shield).","parent":"EquipmentPrototype","abstract":false,"typename":"energy-shield-equipment","deprecated":false,"properties":[{"name":"energy_per_shield","order":1,"description":"","override":false,"type":"Energy","optional":false},{"name":"max_shield_value","order":0,"description":"","override":false,"type":"float","optional":false}]},{"name":"EntityGhostPrototype","order":91,"description":"The entity used for ghosts of entities. In-game, the inner entity (the entity this is a ghost of) is rendered with a [UtilityConstants::ghost_tint](prototype:UtilityConstants::ghost_tint).","examples":["```\n{\n  type = \"entity-ghost\",\n  name = \"entity-ghost\",\n  icon = \"__core__/graphics/icons/mip/ghost-entity.png\",\n  icon_size = 64,\n  build_sound = { { filename = \"__core__/sound/build-ghost-small.ogg\",  volume = 0.6 } },\n  medium_build_sound = { { filename = \"__core__/sound/build-ghost-medium.ogg\",  volume = 0.7 } },\n  large_build_sound = { { filename = \"__core__/sound/build-ghost-large.ogg\",  volume = 0.7 } },\n  minable = { mining_time = 0, results = {} },\n  mined_sound = { { filename = \"__core__/sound/deconstruct-ghost.ogg\",  volume = 0.4 } }\n}\n```"],"parent":"EntityPrototype","abstract":false,"typename":"entity-ghost","deprecated":false,"properties":[{"name":"huge_build_animated_sound","order":6,"description":"","override":false,"type":"Sound","optional":true},{"name":"huge_build_sound","order":2,"description":"","override":false,"type":"Sound","optional":true},{"name":"large_build_animated_sound","order":5,"description":"","override":false,"type":"Sound","optional":true},{"name":"large_build_sound","order":1,"description":"","override":false,"type":"Sound","optional":true},{"name":"medium_build_animated_sound","order":4,"description":"","override":false,"type":"Sound","optional":true},{"name":"medium_build_sound","order":0,"description":"","override":false,"type":"Sound","optional":true},{"name":"small_build_animated_sound","order":3,"description":"","override":false,"type":"Sound","optional":true}]},{"name":"EntityPrototype","order":92,"description":"Abstract base of all entities in the game. Entity is nearly everything that can be on the map (except tiles).\n\nFor in game script access to entity, take a look at [LuaEntity](runtime:LuaEntity).","examples":["```\n{\n  type = \"container\",\n  name = \"wooden-chest\",\n  icon = \"__base__/graphics/icons/wooden-chest.png\",\n  flags = { \"placeable-neutral\", \"player-creation\" },\n  minable = { mining_time = 1, result = \"wooden-chest\" },\n  max_health = 100,\n  corpse = \"small-remnants\",\n  collision_box = { {-0.35, -0.35}, {0.35, 0.35} },\n  fast_replaceable_group = \"container\",\n  selection_box = { {-0.5, -0.5}, {0.5, 0.5} },\n  inventory_size = 16,\n  open_sound = { filename = \"__base__/sound/wooden-chest-open.ogg\" },\n  close_sound = { filename = \"__base__/sound/wooden-chest-close.ogg\" },\n  picture =\n  {\n    filename = \"__base__/graphics/entity/wooden-chest/wooden-chest.png\",\n    priority = \"extra-high\",\n    width = 46,\n    height = 33,\n    shift = {0.25, 0.015625}\n  }\n}\n```"],"parent":"Prototype","abstract":true,"deprecated":false,"properties":[{"name":"additional_pastable_entities","order":46,"description":"Names of the entity prototypes this entity prototype can be pasted on to in addition to the standard supported types.\n\nThis is used to allow copying between types that aren't compatible on the C++ code side, by allowing mods to receive the [on_entity_settings_pasted](runtime:on_entity_settings_pasted) event for the given entity and do the setting pasting via script.","examples":["```\nadditional_pastable_entities = {\"steel-chest\", \"iron-chest\"}\n```"],"override":false,"type":{"complex_type":"array","value":"EntityID"},"optional":true},{"name":"alert_icon_scale","order":37,"description":"","override":false,"type":"float","optional":true},{"name":"alert_icon_shift","order":36,"description":"","override":false,"type":"Vector","optional":true},{"name":"allow_copy_paste","order":42,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"ambient_sounds","order":56,"description":"","override":false,"type":{"complex_type":"union","options":["WorldAmbientSoundDefinition",{"complex_type":"array","value":"WorldAmbientSoundDefinition"}],"full_format":false},"optional":true},{"name":"ambient_sounds_group","order":55,"description":"","override":false,"type":"EntityID","optional":true},{"name":"autoplace","order":50,"description":"Used to specify the rules for placing this entity during map generation.","override":false,"type":"AutoplaceSpecification","optional":true,"default":"nil (entity is not autoplacable)"},{"name":"build_base_evolution_requirement","order":35,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"build_grid_size","order":17,"description":"Supported values are 1 (for 1x1 grid) and 2 (for 2x2 grid, like rails).\n\nInternally forced to be `2` for [RailPrototype](prototype:RailPrototype), [RailRemnantsPrototype](prototype:RailRemnantsPrototype), [TrainStopPrototype](prototype:TrainStopPrototype), [RailSupportPrototype](prototype:RailSupportPrototype) and [CargoBayPrototype](prototype:CargoBayPrototype).\n\nInternally forced to be `256` for [SpacePlatformHubPrototype](prototype:SpacePlatformHubPrototype).","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"build_sound","order":24,"description":"","override":false,"type":"Sound","optional":true},{"name":"close_sound","order":30,"description":"","override":false,"type":"Sound","optional":true},{"name":"collision_box","order":3,"description":"Specification of the entity collision boundaries. Empty collision box means no collision and is used for smoke, projectiles, particles, explosions etc.\n\nThe `{0,0}` coordinate in the collision box will match the entity position. It should be near the center of the collision box, to keep correct entity drawing order. The bounding box must include the `{0,0}` coordinate.\n\nNote, that for buildings, it is customary to leave 0.1 wide border between the edge of the tile and the edge of the building, this lets the player move between the building and electric poles/inserters etc.","examples":["```\ncollision_box = {{-0.4, -0.4}, {0.4, 0.4}}\n```"],"override":false,"type":"BoundingBox","optional":true,"default":"Empty = `{{0, 0}, {0, 0}}`"},{"name":"collision_mask","order":4,"description":"Defaults to the mask from [UtilityConstants::default_collision_masks](prototype:UtilityConstants::default_collision_masks) when indexed by the entity type.","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"created_effect","order":23,"description":"The effect/trigger that happens when the entity is placed.","override":false,"type":"Trigger","optional":true},{"name":"created_smoke","order":21,"description":"The smoke that is shown when the entity is placed.","override":false,"type":"CreateTrivialSmokeEffectItem","optional":true,"default":"The \"smoke-building\"-smoke"},{"name":"deconstruction_alternative","order":15,"description":"Used to merge multiple entities into one entry in the deconstruction planner.","override":false,"type":"EntityID","optional":true},{"name":"diagonal_tile_grid_size","order":49,"description":"","override":false,"type":"TilePosition","optional":true},{"name":"draw_stateless_visualisations_in_ghost","order":34,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"drawing_box_vertical_extension","order":7,"description":"Specification of extra vertical space needed to see the whole entity in GUIs. This is used to calculate the correct zoom and positioning in the entity info gui, for example in the entity tooltip.","examples":["```\ndrawing_box_vertical_extension = 0.5\n```"],"override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"emissions_per_second","order":19,"description":"Amount of emissions created (positive number) or cleaned (negative number) every second by the entity. This is passive and currently used just for trees and fires. This is independent of the [emissions of energy sources](prototype:BaseEnergySource::emissions_per_minute) used by machines, which are created actively depending on the power consumption.","override":false,"type":{"complex_type":"dictionary","key":"AirbornePollutantID","value":"double"},"optional":true},{"name":"enemy_map_color","order":53,"description":"","override":false,"type":"Color","optional":true},{"name":"fast_replaceable_group","order":38,"description":"This allows you to replace an entity that's already placed, with a different one in your inventory. For example, replacing a burner inserter with a fast inserter. The replacement entity can be a different rotation to the replaced entity and you can replace an entity with the same type.\n\nThis is simply a string, so any string can be used here. The entity that should be replaced simply has to use the same string here.\n\nEntities with the same fast replaceable group can be configured as upgrades for each other in the upgrade planner. Refer to the [upgrade planner prototype's page](prototype:UpgradeItemPrototype) the full requirements for entities to be shown in the upgrade planner.","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"flags","order":11,"description":"","override":false,"type":"EntityPrototypeFlags","optional":true},{"name":"friendly_map_color","order":52,"description":"","override":false,"type":"Color","optional":true},{"name":"heating_energy","order":41,"description":"This entity can freeze if heating_energy is larger than zero.","visibility":["space_age"],"override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":"0W"}},{"name":"hit_visualization_box","order":9,"description":"Where beams should hit the entity. Useful if the bounding box only covers part of the entity (e.g. feet of the character) and beams only hitting there would look weird.","override":false,"type":"BoundingBox","optional":true,"default":"Empty = `{{0, 0}, {0, 0}}`"},{"name":"icon","order":1,"description":"Path to the icon file.\n\nEither this or `icons` is mandatory for entities that have at least one of these flags active: `\"placeable-neutral\"`, `\"placeable-player`\", `\"placeable-enemy\"`.\n\nOnly loaded if `icons` is not defined.","examples":["```\nicon = \"__base__/graphics/icons/wooden-chest.png\"\n```"],"override":false,"type":"FileName","optional":true},{"name":"icon_draw_specification","order":57,"description":"Used to specify where and how the alt-mode icons should be drawn.","examples":["```\nicon_draw_specification = {shift = {0, 0.5}, scale = 0.75, scale_for_many = 0.5, render_layer = \"entity-info-icon\"}\n```"],"override":false,"type":"IconDrawSpecification","optional":true},{"name":"icon_size","order":2,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":0,"description":"This will be used in the electric network statistics, editor building selection, and the bonus gui. Can't be an empty array.\n\nEither this or `icon` is mandatory for entities that have at least one of these flags active: `\"placeable-neutral\"`, `\"placeable-player`\", `\"placeable-enemy\"`.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"icons_positioning","order":58,"description":"","examples":["```\nicons_positioning =\n{\n  {inventory_index = defines.inventory.lab_modules, shift = {0, 0.9}},\n  {inventory_index = defines.inventory.lab_input, shift = {0, 0.0}, max_icons_per_row = 6, separation_multiplier = 0.9}\n}\n```"],"override":false,"type":{"complex_type":"array","value":"IconSequencePositioning"},"optional":true},{"name":"impact_category","order":28,"description":"Name of a [ImpactCategory](prototype:ImpactCategory).","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":"default"}},{"name":"map_color","order":51,"description":"","override":false,"type":"Color","optional":true},{"name":"map_generator_bounding_box","order":5,"description":"Used instead of the collision box during map generation. Allows space entities differently during map generation, for example if the box is bigger, the entities will be placed farther apart.","override":false,"type":"BoundingBox","optional":true,"default":"The value of collision_box."},{"name":"minable","order":13,"description":"The item given to the player when they mine the entity and other properties relevant to mining this entity.","examples":["```\nminable = {mining_time = 0.2, result = \"boiler\"}\n```"],"override":false,"type":"MinableProperties","optional":true,"default":"not minable"},{"name":"mined_sound","order":25,"description":"","override":false,"type":"Sound","optional":true},{"name":"mining_sound","order":26,"description":"","override":false,"type":"Sound","optional":true},{"name":"next_upgrade","order":39,"description":"Name of the entity that will be automatically selected as the upgrade of this entity when using the [upgrade planner](prototype:UpgradeItemPrototype) without configuration.\n\nThis entity may not have \"not-upgradable\" flag set and must be minable. This entity mining result must not contain item product with [hidden](prototype:ItemPrototype::hidden) set to `true`. Mining results with no item products are allowed. This entity may not be a [RollingStockPrototype](prototype:RollingStockPrototype).\n\nThe upgrade target entity needs to have the same bounding box, collision mask, and fast replaceable group as this entity. The upgrade target entity must have least 1 item that builds it that isn't hidden.","examples":["```\nnext_upgrade = \"fast-inserter\"\n```"],"override":false,"type":"EntityID","optional":true},{"name":"open_sound","order":29,"description":"","override":false,"type":"Sound","optional":true},{"name":"order","order":59,"description":"Used to order prototypes in inventory, recipes and GUIs. May not exceed a length of 200 characters.\n\nThe order string is taken from the items in `placeable_by` if they exist, or from an item that has its [place_result](prototype:ItemPrototype::place_result) set to this entity.","override":true,"type":"Order","optional":true},{"name":"placeable_by","order":44,"description":"Item that when placed creates this entity. Determines which item is picked when \"Q\" (smart pipette) is used on this entity. Determines which item and item amount is needed in a blueprint of this entity and to revive a ghost of this entity.\n\nThe item count specified here can't be larger than the stack size of that item.","examples":["```\nplaceable_by = {item = \"rail\", count = 4}\n```"],"override":false,"type":{"complex_type":"union","options":["ItemToPlace",{"complex_type":"array","value":"ItemToPlace"}],"full_format":false},"optional":true},{"name":"placeable_position_visualization","order":31,"description":"","override":false,"type":"Sprite","optional":true},{"name":"protected_from_tile_building","order":40,"description":"When this is true, this entity prototype should be included during tile collision checks with tiles that have [TilePrototype::check_collision_with_entities](prototype:TilePrototype::check_collision_with_entities) set to true.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"radius_visualisation_specification","order":32,"description":"","override":false,"type":"RadiusVisualisationSpecification","optional":true},{"name":"remains_when_mined","order":45,"description":"The entity that remains when this one is mined, deconstructed or fast-replaced. The entity wont actually be spawned if it would collide with the entity that is in the process of being mined.","override":false,"type":{"complex_type":"union","options":["EntityID",{"complex_type":"array","value":"EntityID"}],"full_format":false},"optional":true},{"name":"remove_decoratives","order":18,"description":"Whether this entity should remove decoratives that collide with it when this entity is built. When set to \"automatic\", if the entity type is considered [a building](runtime:LuaEntityPrototype::is_building) (e.g. an assembling machine or a wall) it will remove decoratives.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"automatic"},{"complex_type":"literal","value":"true"},{"complex_type":"literal","value":"false"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"automatic"}},{"name":"rotated_sound","order":27,"description":"","override":false,"type":"Sound","optional":true},{"name":"selectable_in_game","order":43,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"selection_box","order":6,"description":"Specification of the entity selection area. When empty the entity will have no selection area (and thus is not selectable).\n\nThe selection box is usually a little bit bigger than the collision box. For tileable entities (like buildings) it should match the tile size of the building.","examples":["```\nselection_box = {{-0.5, -0.5}, {0.5, 0.5}}\n```"],"override":false,"type":"BoundingBox","optional":true,"default":"Empty = `{{0, 0}, {0, 0}}`"},{"name":"selection_priority","order":16,"description":"The entity with the higher number is selectable before the entity with the lower number.\n\nThe value `0` will be treated the same as `nil`.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":50}},{"name":"shooting_cursor_size","order":20,"description":"The cursor size used when shooting at this entity.","override":false,"type":"double","optional":true},{"name":"stateless_visualisation","order":33,"description":"","override":false,"type":{"complex_type":"union","options":["StatelessVisualisation",{"complex_type":"array","value":"StatelessVisualisation"}],"full_format":false},"optional":true},{"name":"sticker_box","order":8,"description":"Used to specify the area where the [sticker](prototype:StickerPrototype) animation can appear for entities that can have stickers on them.","examples":["```\nsticker_box = {{-0.5, -0.5}, {0.5, 0.5}}\n```"],"override":false,"type":"BoundingBox","optional":true,"default":"The value of collision_box."},{"name":"surface_conditions","order":14,"description":"","visibility":["space_age"],"override":false,"type":{"complex_type":"array","value":"SurfaceCondition"},"optional":true},{"name":"tile_buildability_rules","order":12,"description":"","override":false,"type":{"complex_type":"array","value":"TileBuildabilityRule"},"optional":true},{"name":"tile_height","order":48,"description":"","override":false,"type":"int32","optional":true,"default":"calculated by the collision box height rounded up."},{"name":"tile_width","order":47,"description":"Used to determine how the center of the entity should be positioned when building (unless the off-grid [flag](prototype:EntityPrototypeFlags) is specified).\n\nWhen the tile width is odd, the center will be in the center of the tile, when it is even, the center is on the tile transition.","override":false,"type":"int32","optional":true,"default":"calculated by the collision box width rounded up."},{"name":"trigger_target_mask","order":10,"description":"Defaults to the mask from [UtilityConstants::default_trigger_target_mask_by_type](prototype:UtilityConstants::default_trigger_target_mask_by_type).","override":false,"type":"TriggerTargetMask","optional":true},{"name":"water_reflection","order":54,"description":"May also be defined inside `graphics_set` instead of directly in the entity prototype. This is useful for entities that use a `graphics_set` property to define their graphics, because then all graphics can be defined in one place.\n\n[Currently only renders](https://forums.factorio.com/100703) for [EntityWithHealthPrototype](prototype:EntityWithHealthPrototype) and [CorpsePrototype](prototype:CorpsePrototype).","override":false,"type":"WaterReflectionDefinition","optional":true},{"name":"working_sound","order":22,"description":"Will also work on entities that don't actually do work.","override":false,"type":"WorkingSound","optional":true}]},{"name":"EntityWithHealthPrototype","order":93,"description":"Abstract base of all entities with health in the game.","examples":["```\n{\n  type = \"container\",\n  name = \"wooden-chest\",\n  icon = \"__base__/graphics/icons/wooden-chest.png\",\n  flags = { \"placeable-neutral\", \"player-creation\" },\n  minable = { mining_time = 1, result = \"wooden-chest\" },\n  max_health = 100,\n  corpse = \"small-remnants\",\n  collision_box = { {-0.35, -0.35}, {0.35, 0.35} },\n  fast_replaceable_group = \"container\",\n  selection_box = { {-0.5, -0.5}, {0.5, 0.5} },\n  inventory_size = 16,\n  open_sound = { filename = \"__base__/sound/wooden-chest-open.ogg\" },\n  close_sound = { filename = \"__base__/sound/wooden-chest-close.ogg\" },\n  picture =\n  {\n    filename = \"__base__/graphics/entity/wooden-chest/wooden-chest.png\",\n    priority = \"extra-high\",\n    width = 46,\n    height = 33,\n    shift = {0.25, 0.015625}\n  }\n}\n```"],"parent":"EntityPrototype","abstract":true,"deprecated":false,"properties":[{"name":"alert_when_damaged","order":10,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"attack_reaction","order":8,"description":"","override":false,"type":{"complex_type":"union","options":["AttackReactionItem",{"complex_type":"array","value":"AttackReactionItem"}],"full_format":false},"optional":true,"default":"Empty"},{"name":"corpse","order":15,"description":"Specifies the names of the [CorpsePrototype](prototype:CorpsePrototype) to be used when this entity dies.","override":false,"type":{"complex_type":"union","options":["EntityID",{"complex_type":"array","value":"EntityID"}],"full_format":false},"optional":true,"default":"Empty"},{"name":"create_ghost_on_death","order":12,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"damaged_trigger_effect","order":5,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"dying_explosion","order":3,"description":"The entities that are spawned in place of this one when it dies.","override":false,"type":{"complex_type":"union","options":["ExplosionDefinition",{"complex_type":"array","value":"ExplosionDefinition"}],"full_format":false},"optional":true},{"name":"dying_trigger_effect","order":4,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"healing_per_tick","order":1,"description":"The amount of health automatically regenerated per tick. The entity must be active for this to work.","examples":["```\nhealing_per_tick = 0.01\n```"],"override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"hide_resistances","order":11,"description":"Whether the resistances of this entity should be hidden in the entity tooltip.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"integration_patch","order":16,"description":"May also be defined inside `graphics_set` instead of directly in the entity prototype. This is useful for entities that use a `graphics_set` property to define their graphics, because then all graphics can be defined in one place.\n\nSprite drawn on ground under the entity to make it feel more integrated into the ground.","override":false,"type":"Sprite4Way","optional":true},{"name":"integration_patch_render_layer","order":14,"description":"May also be defined inside `graphics_set` instead of directly in the entity prototype. This is useful for entities that use a `graphics_set` property to define their graphics, because then all graphics can be defined in one place.","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"lower-object"}},{"name":"loot","order":6,"description":"The loot is dropped on the ground when the entity is killed.","examples":["```\nloot =\n{\n  {\n    count_max = 10,\n    count_min = 2,\n    item = \"stone\",\n    probability = 1\n  }\n}\n```"],"override":false,"type":{"complex_type":"array","value":"LootItem"},"optional":true},{"name":"max_health","order":0,"description":"The unit health can never go over the maximum. Default health of units on creation is set to max. Must be greater than 0.","examples":["```\nmax_health = 50\n```"],"override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"overkill_fraction","order":17,"description":"Fraction of health by which predicted damage must be exceeded before entity is considered as \"predicted to die\" causing turrets (and others) to stop shooting more projectiles. If entity is healing it is better to keep larger margin to avoid cases where not enough projectiles goes towards a target and it heals causing it to survive all the incoming projectiles. If entity does not heal, margin may be reduced. Must be >= 0.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.05}},{"name":"random_corpse_variation","order":13,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"repair_sound","order":9,"description":"Played when this entity is repaired with a [RepairToolPrototype](prototype:RepairToolPrototype).","override":false,"type":"Sound","optional":true,"default":"Utility sound defaultManualRepair"},{"name":"repair_speed_modifier","order":2,"description":"Multiplier of [RepairToolPrototype::speed](prototype:RepairToolPrototype::speed) for this entity prototype.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"resistances","order":7,"description":"See [damage](https://wiki.factorio.com/Damage).","examples":["```\nresistances =\n{\n  {\n    type = \"fire\",\n    percent = 80\n  },\n  {\n    type = \"explosion\",\n    percent = 30\n  }\n}\n```"],"override":false,"type":{"complex_type":"array","value":"Resistance"},"optional":true}]},{"name":"EntityWithOwnerPrototype","order":94,"description":"Abstract base of all entities with a force in the game. These entities have a [LuaEntity::unit_number](runtime:LuaEntity::unit_number) during runtime. Can be high priority [military targets](https://wiki.factorio.com/Military_units_and_structures).","parent":"EntityWithHealthPrototype","abstract":true,"deprecated":false,"properties":[{"name":"allow_run_time_change_of_is_military_target","order":1,"description":"If this is true, this entity's `is_military_target` property can be changed during runtime (on the entity, not on the prototype itself).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"is_military_target","order":0,"description":"Whether this prototype should be a high priority target for enemy forces. See [Military units and structures](https://wiki.factorio.com/Military_units_and_structures).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"quality_indicator_scale","order":3,"description":"The default scale is based on the tile distance of the shorter dimension. Where size 3 results into scale 1. The default minimum is 0.5 and maximum 1.0.","override":false,"type":"double","optional":true,"default":"Calculated based on entity tile_width and height"},{"name":"quality_indicator_shift","order":2,"description":"The shift from the bottom left corner of the selection box.","override":false,"type":"Vector","optional":true}]},{"name":"EquipArmorAchievementPrototype","order":95,"description":"This prototype is used for receiving an achievement when the player equips armor.","parent":"AchievementPrototype","abstract":false,"typename":"equip-armor-achievement","deprecated":false,"properties":[{"name":"alternative_armor","order":1,"description":"The achievement will trigger if this armor or the other armor is equipped.","examples":["```\nalternative_armor = \"mech-armor\"\n```"],"override":false,"type":"ItemID","optional":false},{"name":"amount","order":3,"description":"How many armors need to be equipped.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"armor","order":0,"description":"The achievement will trigger if this armor or the alternative armor is equipped.","examples":["```\narmor = \"power-armor-mk2\"\n```"],"override":false,"type":"ItemID","optional":false},{"name":"limit_quality","order":2,"description":"","override":false,"type":"QualityID","optional":false},{"name":"limited_to_one_game","order":4,"description":"If this is false, the player carries over their statistics from this achievement through all their saves.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"EquipmentCategory","order":96,"description":"Defines a category to be available to [equipment](prototype:EquipmentPrototype) and [equipment grids](prototype:EquipmentGridPrototype).","parent":"Prototype","abstract":false,"typename":"equipment-category","instance_limit":255,"deprecated":false,"properties":[]},{"name":"EquipmentGhostPrototype","order":97,"description":"The equipment used for ghosts of equipment.","parent":"EquipmentPrototype","abstract":false,"typename":"equipment-ghost","deprecated":false,"properties":[{"name":"categories","order":2,"description":"Not loaded for equipment ghosts.","override":true,"type":{"complex_type":"array","value":"EquipmentCategoryID"},"optional":true},{"name":"energy_source","order":0,"description":"Not loaded for equipment ghosts.","override":true,"type":"ElectricEnergySource","optional":true},{"name":"shape","order":1,"description":"Not loaded for equipment ghosts.","override":true,"type":"EquipmentShape","optional":true},{"name":"take_result","order":3,"description":"Not loaded for equipment ghosts.","override":true,"type":"ItemID","optional":true}]},{"name":"EquipmentGridPrototype","order":98,"description":"The prototype of an equipment grid, for example the one used in a [power armor](https://wiki.factorio.com/Power_armor).","parent":"Prototype","abstract":false,"typename":"equipment-grid","instance_limit":255,"deprecated":false,"properties":[{"name":"equipment_categories","order":0,"description":"Only [equipment](prototype:EquipmentPrototype) with at least one of these [categories](prototype:EquipmentCategory) can be inserted into the grid.","override":false,"type":{"complex_type":"array","value":"EquipmentCategoryID"},"optional":false},{"name":"height","order":2,"description":"","override":false,"type":"uint32","optional":false},{"name":"locked","order":3,"description":"Whether this locked from user interaction which means that the user cannot put equipment into or take equipment from this equipment grid.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"width","order":1,"description":"","override":false,"type":"uint32","optional":false}]},{"name":"EquipmentPrototype","order":99,"description":"Abstract base of all equipment modules. Equipment modules can be inserted into [equipment grids](prototype:EquipmentGridPrototype).","parent":"Prototype","abstract":true,"deprecated":false,"properties":[{"name":"background_border_color","order":6,"description":"The color that the border of the background of this equipment should have when shown inside an equipment grid.","override":false,"type":"Color","optional":true,"default":"equipment_default_background_border_color in utility constants"},{"name":"background_color","order":5,"description":"The color that the background of this equipment should have when shown inside an equipment grid.","override":false,"type":"Color","optional":true,"default":"equipment_default_background_color in utility constants"},{"name":"categories","order":2,"description":"Sets the categories of the equipment. It can only be inserted into [grids](prototype:EquipmentGridPrototype::equipment_categories) with at least one matching category.","override":false,"type":{"complex_type":"array","value":"EquipmentCategoryID"},"optional":false},{"name":"energy_source","order":3,"description":"","override":false,"type":"ElectricEnergySource","optional":false},{"name":"grabbed_background_color","order":7,"description":"The color that the background of this equipment should have when held in the players hand and hovering over an equipment grid.","override":false,"type":"Color","optional":true,"default":"equipment_default_grabbed_background_color in utility constants"},{"name":"shape","order":1,"description":"How big this equipment should be in the grid and whether it should be one solid rectangle or of a custom shape.","override":false,"type":"EquipmentShape","optional":false},{"name":"sprite","order":0,"description":"The graphics to use when this equipment is shown inside an equipment grid.","override":false,"type":"Sprite","optional":false},{"name":"take_result","order":4,"description":"Name of the item prototype that should be returned to the player when they remove this equipment from an equipment grid.","override":false,"type":"ItemID","optional":true,"default":"`name` of this prototype"}]},{"name":"ExplosionPrototype","order":100,"description":"Used to play an animation and a sound.","parent":"EntityPrototype","abstract":false,"typename":"explosion","deprecated":false,"properties":[{"name":"animations","order":0,"description":"","override":false,"type":"AnimationVariations","optional":false},{"name":"beam","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"correct_rotation","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"delay","order":30,"description":"Number of ticks to delay the explosion effects by.","override":false,"type":"MapTick","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"delay_deviation","order":31,"description":"The maximum number of ticks to randomly delay the explosion effects by. In addition to the number of ticks defined by `delay`, the explosion will be delayed by a random number of ticks between 0 and `delay_deviation` (inclusive).","override":false,"type":"MapTick","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"explosion_effect","order":32,"description":"The effect/trigger that happens when the explosion effect triggers after the initial delay as defined by `delay` and `delay_deviation`.","override":false,"type":"Trigger","optional":true},{"name":"fade_in_duration","order":10,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"fade_out_duration","order":11,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"height","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"light","order":21,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"light_intensity_factor_final","order":18,"description":"Silently clamped to be between 0 and 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"light_intensity_factor_initial","order":17,"description":"Silently clamped to be between 0 and 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"light_intensity_peak_end_progress","order":23,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.9}},{"name":"light_intensity_peak_start_progress","order":22,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"light_size_factor_final","order":20,"description":"Silently clamped to be between 0 and 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"light_size_factor_initial","order":19,"description":"Silently clamped to be between 0 and 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.05}},{"name":"light_size_peak_end_progress","order":25,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"light_size_peak_start_progress","order":24,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"render_layer","order":12,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"explosion"}},{"name":"rotate","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"scale","order":28,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"scale_animation_speed","order":9,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"scale_deviation","order":29,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"scale_end","order":15,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"scale_in_duration","order":13,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"scale_increment_per_tick","order":16,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"scale_initial","order":26,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"scale_initial_deviation","order":27,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"scale_out_duration","order":14,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"smoke","order":2,"description":"Mandatory if `smoke_count` > 0.","override":false,"type":"TrivialSmokeID","optional":true},{"name":"smoke_count","order":5,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"smoke_slow_down_factor","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"sound","order":1,"description":"","override":false,"type":"Sound","optional":true}]},{"name":"FireFlamePrototype","order":101,"description":"A fire.","parent":"EntityPrototype","abstract":false,"typename":"fire","deprecated":false,"properties":[{"name":"add_fuel_cooldown","order":29,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"burnt_patch_alpha_default","order":40,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"burnt_patch_alpha_variations","order":45,"description":"","override":false,"type":{"complex_type":"array","value":"TileAndAlpha"},"optional":true},{"name":"burnt_patch_lifetime","order":39,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1800}},{"name":"burnt_patch_pictures","order":10,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"damage_multiplier_decrease_per_tick","order":23,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"damage_multiplier_increase_per_added_fuel","order":24,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"damage_per_tick","order":0,"description":"","override":false,"type":"DamageParameters","optional":false},{"name":"delay_between_initial_flames","order":30,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"fade_in_duration","order":20,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":30}},{"name":"fade_out_duration","order":21,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":30}},{"name":"flame_alpha","order":43,"description":"Only loaded if `uses_alternative_behavior` is false.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"flame_alpha_deviation","order":44,"description":"Only loaded if `uses_alternative_behavior` is false.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"initial_flame_count","order":16,"description":"Spawns this many `secondary_pictures` around the entity when it first spawns. It waits `delay_between_initial_flames` between each spawned `secondary_pictures`. This can be used to make fires look less repetitive.\n\nFor example, spitters use this to make several smaller splashes around the main one.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"initial_lifetime","order":22,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":300}},{"name":"initial_render_layer","order":4,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"lifetime_increase_by","order":26,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":20}},{"name":"lifetime_increase_cooldown","order":27,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"light","order":35,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"light_size_modifier_maximum","order":37,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"light_size_modifier_per_flame","order":36,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"limit_overlapping_particles","order":18,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"maximum_damage_multiplier","order":25,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"maximum_lifetime","order":28,"description":"","override":false,"type":"uint32","optional":true,"default":"Max uint32"},{"name":"maximum_spread_count","order":15,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":200}},{"name":"on_damage_tick_effect","order":34,"description":"","override":false,"type":"Trigger","optional":true},{"name":"on_fuel_added_action","order":33,"description":"","override":false,"type":"Trigger","optional":true},{"name":"particle_alpha","order":41,"description":"Only loaded if `uses_alternative_behavior` is true.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"particle_alpha_blend_duration","order":38,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"particle_alpha_deviation","order":42,"description":"Only loaded if `uses_alternative_behavior` is true.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"pictures","order":7,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"render_layer","order":3,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"secondary_picture_fade_out_duration","order":12,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":30}},{"name":"secondary_picture_fade_out_start","order":11,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"secondary_pictures","order":9,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"secondary_render_layer","order":5,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"small_tree_fire_pictures","order":6,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"smoke","order":14,"description":"","override":false,"type":{"complex_type":"array","value":"SmokeSource"},"optional":true},{"name":"smoke_fade_in_duration","order":31,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":30}},{"name":"smoke_fade_out_duration","order":32,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":30}},{"name":"smoke_source_pictures","order":8,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"spawn_entity","order":13,"description":"","override":false,"type":"EntityID","optional":true},{"name":"spread_delay","order":1,"description":"","override":false,"type":"uint32","optional":false},{"name":"spread_delay_deviation","order":2,"description":"","override":false,"type":"uint32","optional":false},{"name":"tree_dying_factor","order":19,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"uses_alternative_behavior","order":17,"description":"If `false`, then all animations loop. If `true`, they run once and stay on the final frame. Also changes the behavior of several other fire properties as mentioned in their descriptions.\n\nFor example, spitters use alternate behavior, flamethrower flames don't.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"FishPrototype","order":102,"description":"Entity that spawns in water tiles, which can be mined. Moves around unless deactivated with [LuaEntity::active](runtime:LuaEntity::active) = false.","examples":["```\n{\n  type = \"fish\",\n  name = \"fish\",\n  icon = \"__base__/graphics/icons/fish.png\",\n  icon_size = 64,\n  flags = { \"placeable-neutral\", \"not-on-map\" },\n  minable = { mining_time = 1, result = \"raw-fish\", count = 5 },\n  max_health = 20,\n  subgroup = \"creatures\",\n  order = \"b-a\",\n  collision_box = { {-0.75, -0.75}, {0.75, 0.75} },\n  selection_box = { {-0.5, -0.3}, {0.5, 0.3} },\n  pictures =\n  {\n    {\n      filename = \"__base__/graphics/entity/fish/fish-1.png\",\n      priority = \"extra-high\",\n      width = 22,\n      height = 36\n    },\n    {\n      filename = \"__base__/graphics/entity/fish/fish-2.png\",\n      priority = \"extra-high\",\n      width = 32,\n      height = 32\n    }\n  },\n  autoplace = { influence = 0.01 },\n  protected_from_tile_building = false\n}\n```"],"parent":"EntityWithHealthPrototype","abstract":false,"typename":"fish","deprecated":false,"properties":[{"name":"pictures","order":0,"description":"","override":false,"type":"SpriteVariations","optional":true}]},{"name":"FluidPrototype","order":103,"description":"A fluid.","examples":["```\n{\n  type = \"fluid\",\n  name = \"water\",\n  default_temperature = 15,\n  max_temperature = 100,\n  heat_capacity = \"0.2kJ\",\n  base_color = { r = 0, g = 0.34, b = 0.6 },\n  flow_color = { r = 0.7, g = 0.7, b = 0.7 },\n  icon = \"__base__/graphics/icons/fluid/water.png\",\n  icon_size = 64,\n  order = \"a[fluid]-a[water]\"\n}\n```"],"parent":"Prototype","abstract":false,"typename":"fluid","deprecated":false,"properties":[{"name":"auto_barrel","order":12,"description":"Whether the fluid should be included in the barrel recipes automatically generated by the base mod.\n\nThis property is not read by the game engine itself, but the base mod's data-updates.lua file. This means it is discarded by the game engine after loading finishes.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"base_color","order":4,"description":"Used by bars that show the fluid color, like the flamethrower turret fill bar in the tooltip, or the fill bar for the fluid wagon tooltip; and for the pipe windows and storage tank fill gauges.","override":false,"type":"Color","optional":false},{"name":"default_temperature","order":3,"description":"Also the minimum temperature of the fluid. Has to be lower than `max_temperature`.","override":false,"type":"float","optional":false},{"name":"emissions_multiplier","order":10,"description":"Scales pollution generated when the fluid is consumed.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"flow_color","order":5,"description":"Used only for pipe windows or storage tank fill gauges.","override":false,"type":"Color","optional":false},{"name":"fuel_value","order":9,"description":"","examples":["```\nfuel_value = \"3MJ\"\n```"],"override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":"0J"}},{"name":"gas_temperature","order":11,"description":"Above this temperature the `gas_flow` animation is used to display the fluid inside storage tanks and pipes.","override":false,"type":"float","optional":true,"default":"max value of float"},{"name":"heat_capacity","order":8,"description":"Joule needed to heat 1 Unit by 1 \u00b0C.","examples":["```\nheat_capacity = \"0.2kJ\"\n```"],"override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":"1kJ"}},{"name":"hidden","order":13,"description":"Hides the fluid from the signal selection screen.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"icon","order":1,"description":"Path to the icon file.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":2,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":0,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"max_temperature","order":7,"description":"","override":false,"type":"float","optional":true,"default":"value of `default_temperature`"},{"name":"visualization_color","order":6,"description":"Color to use for visualization. This color should be vibrant and easily distinguished.\n\nIf not specified, this will be auto-generated from `base_color` by converting to HSV, decreasing saturation by 10% and setting value to 80%.","override":false,"type":"Color","optional":true}]},{"name":"FluidStreamPrototype","order":104,"description":"Used for example for the handheld flamethrower.","parent":"EntityPrototype","abstract":false,"typename":"stream","deprecated":false,"properties":[{"name":"action","order":5,"description":"Action that is triggered every time a particle lands. Not triggered for the first particle if `initial_action` is non-empty.","override":false,"type":"Trigger","optional":true},{"name":"ground_light","order":25,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"initial_action","order":4,"description":"Action that is triggered when the first particle lands.","override":false,"type":"Trigger","optional":true},{"name":"oriented_particle","order":27,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"particle","order":20,"description":"","override":false,"type":"Animation","optional":true},{"name":"particle_alpha_per_part","order":13,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"particle_buffer_size","order":8,"description":"Number of spawned child particles of the stream. Must be greater than 0 and less than 256.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":20}},{"name":"particle_end_alpha","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"particle_fade_out_duration","order":18,"description":"Will be set to 1 by the game if less than 1.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":65535}},{"name":"particle_fade_out_threshold","order":15,"description":"Value between 0 and 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"particle_horizontal_speed","order":1,"description":"Must be larger than 0. `particle_horizontal_speed` has to be greater than `particle_horizontal_speed_deviation`.","override":false,"type":"float","optional":false},{"name":"particle_horizontal_speed_deviation","order":2,"description":"","override":false,"type":"float","optional":false},{"name":"particle_loop_exit_threshold","order":16,"description":"Value between 0 and 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"particle_loop_frame_count","order":17,"description":"Will be set to 1 by the game if less than 1.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"particle_scale_per_part","order":14,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"particle_spawn_interval","order":0,"description":"The stream will spawn one particle every `particle_spawn_interval` ticks until the `particle_spawn_timeout` is reached. The first particle will trigger an `initial_action` upon landing. Each particle triggers an `action` upon landing. Particles spawned within a single `particle_spawn_timeout` interval will be connected by a stretched `spine_animation`.","override":false,"type":"uint16","optional":false},{"name":"particle_spawn_timeout","order":9,"description":"","override":false,"type":"uint16","optional":true,"default":"4 * `particle_spawn_interval`"},{"name":"particle_start_alpha","order":10,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"particle_start_scale","order":12,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"particle_vertical_acceleration","order":3,"description":"","override":false,"type":"float","optional":false},{"name":"progress_to_create_smoke","order":23,"description":"The point in the particles projectile arc to start spawning smoke. 0.5 (the default) starts spawning smoke at the halfway point between the source and target.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"shadow","order":21,"description":"","override":false,"type":"Animation","optional":true},{"name":"shadow_scale_enabled","order":28,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"smoke_sources","order":22,"description":"Smoke spawning is controlled by `progress_to_create_smoke`.","override":false,"type":{"complex_type":"array","value":"SmokeSource"},"optional":true},{"name":"special_neutral_target_damage","order":6,"description":"","override":false,"type":"DamageParameters","optional":true},{"name":"spine_animation","order":19,"description":"","override":false,"type":"Animation","optional":true},{"name":"stream_light","order":24,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"target_initial_position_only","order":29,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"target_position_deviation","order":26,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"width","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}}]},{"name":"FluidTurretPrototype","order":105,"description":"A turret that uses [fluid](prototype:FluidPrototype) as ammunition.","parent":"TurretPrototype","abstract":false,"typename":"fluid-turret","deprecated":false,"properties":[{"name":"activation_buffer_ratio","order":2,"description":"Before an turret that was out of fluid ammunition is able to fire again, the `fluid_buffer_size` must fill to this proportion.","override":false,"type":"FluidAmount","optional":false},{"name":"attack_parameters","order":19,"description":"Requires ammo_type in attack_parameters.","override":true,"type":"StreamAttackParameters","optional":false},{"name":"attacking_muzzle_animation_shift","order":12,"description":"","override":false,"type":"AnimatedVector","optional":true},{"name":"ending_attack_muzzle_animation_shift","order":13,"description":"","override":false,"type":"AnimatedVector","optional":true},{"name":"enough_fuel_indicator_light","order":5,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"enough_fuel_indicator_picture","order":15,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"fluid_box","order":3,"description":"","override":false,"type":"FluidBox","optional":false},{"name":"fluid_buffer_input_flow","order":1,"description":"","override":false,"type":"FluidAmount","optional":false},{"name":"fluid_buffer_size","order":0,"description":"","override":false,"type":"FluidAmount","optional":false},{"name":"folded_muzzle_animation_shift","order":8,"description":"","override":false,"type":"AnimatedVector","optional":true},{"name":"folding_muzzle_animation_shift","order":14,"description":"","override":false,"type":"AnimatedVector","optional":true},{"name":"muzzle_animation","order":7,"description":"","override":false,"type":"Animation","optional":true},{"name":"muzzle_light","order":4,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"not_enough_fuel_indicator_light","order":6,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"not_enough_fuel_indicator_picture","order":16,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"out_of_ammo_alert_icon","order":17,"description":"The sprite will be drawn on top of fluid turrets that are out of fluid ammunition. If the `out_of_ammo_alert_icon` is not set, [UtilitySprites::fluid_icon](prototype:UtilitySprites::fluid_icon) will be used instead.","override":false,"type":"Sprite","optional":true},{"name":"prepared_muzzle_animation_shift","order":10,"description":"","override":false,"type":"AnimatedVector","optional":true},{"name":"preparing_muzzle_animation_shift","order":9,"description":"","override":false,"type":"AnimatedVector","optional":true},{"name":"starting_attack_muzzle_animation_shift","order":11,"description":"","override":false,"type":"AnimatedVector","optional":true},{"name":"turret_base_has_direction","order":18,"description":"Always `true`, forcing the turret's collision box to be affected by its rotation.","override":true,"type":{"complex_type":"literal","value":true},"optional":false}]},{"name":"FluidWagonPrototype","order":106,"description":"A [fluid wagon](https://wiki.factorio.com/Fluid_wagon).","parent":"RollingStockPrototype","abstract":false,"typename":"fluid-wagon","deprecated":false,"properties":[{"name":"capacity","order":0,"description":"","override":false,"type":"FluidAmount","optional":false},{"name":"connection_category","order":3,"description":"Pumps are only allowed to connect to this fluid wagon if the pump's [fluid box connection](prototype:PipeConnectionDefinition) and this fluid wagon share a connection category. Pump may have different connection categories on the input and output side, connection categories will be taken from the connection that is facing towards fluid wagon.","override":false,"type":{"complex_type":"union","options":["string",{"complex_type":"array","value":"string"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"default"}},{"name":"quality_affects_capacity","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"tank_count","order":2,"description":"Must be 1, 2 or 3.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":3}}]},{"name":"FlyingRobotPrototype","order":107,"description":"Abstract base for construction/logistics and combat robots.","parent":"EntityWithOwnerPrototype","abstract":true,"deprecated":false,"properties":[{"name":"energy_per_move","order":3,"description":"How much energy does it cost to move 1 tile.\n\nUsed only by [robots with logistic interface](prototype:RobotWithLogisticInterfacePrototype).","examples":["```\nenergy_per_move = \"5kJ\"\n```"],"override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"energy_per_tick","order":4,"description":"How much energy does it cost to fly for 1 tick.\n\nUsed only by [robots with logistic interface](prototype:RobotWithLogisticInterfacePrototype).","examples":["```\nenergy_per_tick = \"0.05kJ\"\n```"],"override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"is_military_target","order":8,"description":"Whether this prototype should be a high priority target for enemy forces. See [Military units and structures](https://wiki.factorio.com/Military_units_and_structures).","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"max_energy","order":2,"description":"How much energy can be stored in the batteries.\n\nUsed only by [robots with logistic interface](prototype:RobotWithLogisticInterfacePrototype).","examples":["```\nmax_energy = \"1.5MJ\"\n```"],"override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"max_speed","order":1,"description":"The maximum flying speed of the robot, including bonuses, in tiles/tick. Useful to limit the impact of [worker robot speed research](prototype:WorkerRobotSpeedModifier).\n\nMust be >= speed.","override":false,"type":"double","optional":true,"default":"max double"},{"name":"max_to_charge","order":6,"description":"If the robot's battery fill ratio is more than this, it does not need to charge before stationing.\n\nUsed only by [robots with logistic interface](prototype:RobotWithLogisticInterfacePrototype).","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.95}},{"name":"min_to_charge","order":5,"description":"The robot will go to charge when its battery fill ratio is less than this.\n\nUsed only by [robots with logistic interface](prototype:RobotWithLogisticInterfacePrototype).","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.2}},{"name":"speed","order":0,"description":"The flying speed of the robot, in tiles/tick.","override":false,"type":"double","optional":false},{"name":"speed_multiplier_when_out_of_energy","order":7,"description":"Some robots simply crash, some slowdown but keep going. 0 means crash.\n\nUsed only by [robots with logistic interface](prototype:RobotWithLogisticInterfacePrototype).","examples":["```\nspeed_multiplier_when_out_of_energy = 0.2\n```"],"override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"FontPrototype","order":108,"description":"Fonts are used in all GUIs in the game.","examples":["```\n{\n  type = \"font\",\n  name = \"default-button\",\n  from = \"default-bold\",\n  size = 18\n}\n```"],"abstract":false,"typename":"font","deprecated":false,"properties":[{"name":"border","order":5,"description":"Whether the font has a border.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"border_color","order":7,"description":"The color of the border, if enabled.","override":false,"type":"Color","optional":true},{"name":"filtered","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"from","order":3,"description":"The name of the fonts .ttf descriptor. This descriptor must be defined in the locale info.json. Refer to `data/core/locale/_language_/info.json` for examples.","override":false,"type":"string","optional":false},{"name":"name","order":1,"description":"Name of the font.","override":false,"type":"string","optional":false},{"name":"size","order":2,"description":"Size of the font.","override":false,"type":"int32","optional":false},{"name":"spacing","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"font"},"optional":false}]},{"name":"FuelCategory","order":109,"description":"Each item which has a fuel_value must have a fuel category. The fuel categories are used to allow only certain fuels to be used in [EnergySource](prototype:EnergySource).","examples":["```\n{\n  type = \"fuel-category\",\n  name = \"best-fuel\"\n}\n```"],"parent":"Prototype","abstract":false,"typename":"fuel-category","instance_limit":255,"deprecated":false,"properties":[{"name":"fuel_value_type","order":0,"description":"","override":false,"type":"LocalisedString","optional":true,"default":"`{\"description.fuel-value\"}`"}]},{"name":"FurnacePrototype","order":110,"description":"A furnace. Normal furnaces only process \"smelting\" category recipes, but you can make furnaces that process other [recipe categories](prototype:RecipeCategory). The difference to assembling machines is that furnaces automatically choose their recipe based on input.","parent":"CraftingMachinePrototype","abstract":false,"typename":"furnace","deprecated":false,"properties":[{"name":"cant_insert_at_source_message_key","order":2,"description":"The locale key of the message shown when the player attempts to insert an item into the furnace that cannot be processed by that furnace. In-game, the locale is provided the `__1__` parameter, which is the localised name of the item.\n\nThe locale key is also used with an `_until` suffix for items that cannot be processed until they recipe is unlocked by a technology.","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":"inventory-restriction.cant-be-smelted"}},{"name":"circuit_connector","order":4,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_connector_flipped","order":5,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_wire_max_distance","order":6,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"custom_input_slot_tooltip_key","order":3,"description":"The locale key of the tooltip to be shown in the input slot instead of the automatically generated list of items that fit there","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"default_recipe_finished_signal","order":9,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_working_signal","order":10,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"draw_circuit_wires","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"result_inventory_size","order":0,"description":"The number of output slots.","override":false,"type":"ItemStackIndex","optional":false},{"name":"source_inventory_size","order":1,"description":"The number of input slots, but not more than 1.","override":false,"type":"ItemStackIndex","optional":false}]},{"name":"FusionGeneratorPrototype","order":111,"description":"Consumes a fluid to generate electricity and create another fluid.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"fusion-generator","deprecated":false,"properties":[{"name":"burns_fluid","order":6,"description":"If set to `true`, the available power output is based on the [FluidPrototype::fuel_value](prototype:FluidPrototype::fuel_value). Otherwise, the available power output will be based on the fluid temperature and [FluidPrototype::heat_capacity](prototype:FluidPrototype::heat_capacity): `energy = fluid_amount * fluid_temperature * fluid_heat_capacity * effectivity`","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"effectivity","order":7,"description":"`1` means 100% effectivity. Must be greater than `0`. Multiplier of the energy output.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"energy_source","order":0,"description":"`output_flow_limit` is mandatory and must be positive. `output_flow_limit` is the maximum power output of the generator.","override":false,"type":"ElectricEnergySource","optional":false},{"name":"graphics_set","order":1,"description":"","override":false,"type":"FusionGeneratorGraphicsSet","optional":true},{"name":"input_fluid_box","order":2,"description":"[filter](prototype:FluidBox::filter) is mandatory. The temperature (or fuel value if `burns_fluid` is true) of this fluid is used to calculate the available power output.","override":false,"type":"FluidBox","optional":false},{"name":"max_fluid_usage","order":4,"description":"Must be positive.","override":false,"type":"FluidAmount","optional":false},{"name":"output_fluid_box","order":3,"description":"[filter](prototype:FluidBox::filter) is mandatory.","override":false,"type":"FluidBox","optional":false},{"name":"perceived_performance","order":5,"description":"Affects animation speed and working sound.","override":false,"type":"PerceivedPerformance","optional":true}]},{"name":"FusionReactorPrototype","order":112,"description":"Fusion reactor. Consumes fluid, fuel and additional energy to produce other fluid. Kind of advanced boiler. Can also have neighbour bonus.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"fusion-reactor","deprecated":false,"properties":[{"name":"burner","order":1,"description":"Second energy source for the process: provides fuel","override":false,"type":"BurnerEnergySource","optional":false},{"name":"energy_source","order":0,"description":"First energy source for the process: provides energy","override":false,"type":"ElectricEnergySource","optional":false},{"name":"graphics_set","order":2,"description":"","override":false,"type":"FusionReactorGraphicsSet","optional":false},{"name":"input_fluid_box","order":3,"description":"The input fluid box.\n\n[filter](prototype:FluidBox::filter) is mandatory.","override":false,"type":"FluidBox","optional":false},{"name":"max_fluid_usage","order":9,"description":"Maximum amount of fluid converted from `input_fluid_box` to `output_fluid_box` within a single tick.\n\nMust be positive.","override":false,"type":"FluidAmount","optional":false},{"name":"neighbour_bonus","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"neighbour_connectable","order":5,"description":"Defines connection points to neighbours used to compute neighbour bonus.","override":false,"type":"NeighbourConnectable","optional":true},{"name":"output_fluid_box","order":4,"description":"The output fluid box.\n\n[filter](prototype:FluidBox::filter) is mandatory.","override":false,"type":"FluidBox","optional":false},{"name":"perceived_performance","order":11,"description":"Affects working sound.","override":false,"type":"PerceivedPerformance","optional":true},{"name":"power_input","order":8,"description":"Power input consumed from first energy source at full performance.\n\nCannot be negative.","override":false,"type":"Energy","optional":false},{"name":"target_temperature","order":10,"description":"The temperature of the fluid to output. If not defined, the default temperature of the output fluid will be used.","override":false,"type":"float","optional":true},{"name":"two_direction_only","order":6,"description":"If set to true, only North and East direction will be buildable.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"GatePrototype","order":113,"description":"A [gate](https://wiki.factorio.com/Gate).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"gate","deprecated":false,"properties":[{"name":"activation_distance","order":10,"description":"","override":false,"type":"double","optional":false},{"name":"closing_sound","order":13,"description":"Played when the gate closes.","override":false,"type":"Sound","optional":true},{"name":"fadeout_interval","order":14,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"horizontal_animation","order":1,"description":"","override":false,"type":"Animation","optional":true},{"name":"horizontal_rail_animation_left","order":4,"description":"","override":false,"type":"Animation","optional":true},{"name":"horizontal_rail_animation_right","order":5,"description":"","override":false,"type":"Animation","optional":true},{"name":"horizontal_rail_base","order":7,"description":"","override":false,"type":"Animation","optional":true},{"name":"opened_collision_mask","order":15,"description":"This collision mask is used when the gate is open.\n\nDefaults to the mask from [UtilityConstants::default_collision_masks](prototype:UtilityConstants::default_collision_masks) when indexed by `\"gate/opened\"`.","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"opening_sound","order":12,"description":"Played when the gate opens.","override":false,"type":"Sound","optional":true},{"name":"opening_speed","order":9,"description":"","override":false,"type":"float","optional":false},{"name":"timeout_to_close","order":11,"description":"","override":false,"type":"uint32","optional":false},{"name":"vertical_animation","order":0,"description":"","override":false,"type":"Animation","optional":true},{"name":"vertical_rail_animation_left","order":2,"description":"","override":false,"type":"Animation","optional":true},{"name":"vertical_rail_animation_right","order":3,"description":"","override":false,"type":"Animation","optional":true},{"name":"vertical_rail_base","order":6,"description":"","override":false,"type":"Animation","optional":true},{"name":"wall_patch","order":8,"description":"","override":false,"type":"Animation","optional":true}]},{"name":"GeneratorEquipmentPrototype","order":114,"description":"Used by [portable fusion reactor](https://wiki.factorio.com/Portable_fusion_reactor). Provides power in equipment grids. Can produce power for free or use a burner energy source.","parent":"EquipmentPrototype","abstract":false,"typename":"generator-equipment","deprecated":false,"properties":[{"name":"burner","order":1,"description":"If not defined, this equipment produces power for free.","override":false,"type":"BurnerEnergySource","optional":true},{"name":"power","order":0,"description":"The power output of this equipment.","examples":["```\npower = \"750kW\"\n```"],"override":false,"type":"Energy","optional":false}]},{"name":"GeneratorPrototype","order":115,"description":"An entity that produces power from fluids, for example a [steam engine](https://wiki.factorio.com/Steam_engine).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"generator","deprecated":false,"properties":[{"name":"burns_fluid","order":10,"description":"If set to `true`, the available power output is based on the [FluidPrototype::fuel_value](prototype:FluidPrototype::fuel_value). Otherwise, the available power output will be based on the fluid temperature and [FluidPrototype::heat_capacity](prototype:FluidPrototype::heat_capacity): `energy = fluid_amount * (fluid_temperature - fluid_default_temperature) * fluid_heat_capacity * effectivity`","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"destroy_non_fuel_fluid","order":12,"description":"This property is used when `burns_fluid` is true and the fluid has a [fuel_value](prototype:FluidPrototype::fuel_value) of 0.\n\nThis property is also used when `burns_fluid` is false and the fluid is at default temperature.\n\nIn these cases, this property determines whether the fluid should be destroyed, meaning that the fluid is consumed at the rate of `fluid_usage_per_tick`, without producing any power.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"effectivity","order":6,"description":"How much energy the generator produces compared to how much energy it consumes. For example, an effectivity of 0.5 means that half of the consumed energy is output as power.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"energy_source","order":0,"description":"","override":false,"type":"ElectricEnergySource","optional":false},{"name":"fluid_box","order":1,"description":"This must have a filter if `max_power_output` is not defined.","override":false,"type":"FluidBox","optional":false},{"name":"fluid_usage_per_tick","order":7,"description":"The number of fluid units the generator uses per tick.","override":false,"type":"FluidAmount","optional":false},{"name":"horizontal_animation","order":2,"description":"","override":false,"type":"Animation","optional":true},{"name":"horizontal_frozen_patch","order":4,"description":"","override":false,"type":"Sprite","optional":true},{"name":"max_power_output","order":14,"description":"The power production of the generator is capped to this value. This is also the value that is shown as the maximum power output in the tooltip of the generator.\n\n`fluid_box` must have a filter if this is not defined.","override":false,"type":"Energy","optional":true},{"name":"maximum_temperature","order":8,"description":"The maximum temperature to which the efficiency can increase. At this temperature the generator will run at 100% efficiency. Note: Higher temperature fluid can still be consumed.\n\nUsed to calculate the `max_power_output` if it is not defined and `burns_fluid` is false. Then, the max power output is `(min(fluid_max_temp, maximum_temperature) - fluid_default_temp) \u00d7 fluid_usage_per_tick \u00d7 fluid_heat_capacity \u00d7 effectivity`, the fluid is the filter specified on the `fluid_box`.","override":false,"type":"float","optional":false},{"name":"perceived_performance","order":13,"description":"Affects animation speed and working sound.","override":false,"type":"PerceivedPerformance","optional":true},{"name":"scale_fluid_usage","order":11,"description":"Scales the generator's fluid usage to its maximum power output.\n\nSetting this to true prevents the generator from overconsuming fluid, for example when higher than`maximum_temperature` fluid is fed to the generator.\n\nIf scale_fluid_usage is false, the generator consumes the full `fluid_usage_per_tick` and any of the extra energy in the fluid (in the form of higher temperature) is wasted. The [steam engine](https://wiki.factorio.com/Steam_engine) exhibits this behavior when fed steam from [heat exchangers](https://wiki.factorio.com/Heat_exchanger).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"smoke","order":9,"description":"","override":false,"type":{"complex_type":"array","value":"SmokeSource"},"optional":true},{"name":"vertical_animation","order":3,"description":"","override":false,"type":"Animation","optional":true},{"name":"vertical_frozen_patch","order":5,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"GodControllerPrototype","order":116,"description":"Properties of the god controller.","abstract":false,"typename":"god-controller","instance_limit":1,"deprecated":false,"properties":[{"name":"crafting_categories","order":7,"description":"Names of the crafting categories the player can craft recipes from.","override":false,"type":{"complex_type":"array","value":"RecipeCategoryID"},"optional":true},{"name":"inventory_size","order":2,"description":"","override":false,"type":"ItemStackIndex","optional":false},{"name":"item_pickup_distance","order":4,"description":"","override":false,"type":"double","optional":false},{"name":"loot_pickup_distance","order":5,"description":"","override":false,"type":"double","optional":false},{"name":"mining_categories","order":8,"description":"Names of the resource categories the player can mine resources from.","override":false,"type":{"complex_type":"array","value":"ResourceCategoryID"},"optional":true},{"name":"mining_speed","order":6,"description":"","override":false,"type":"double","optional":false},{"name":"movement_speed","order":3,"description":"Must be >= 0.34375.","override":false,"type":"double","optional":false},{"name":"name","order":1,"description":"Name of the god-controller. Base game uses \"default\".","override":false,"type":"string","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"god-controller"},"optional":false}]},{"name":"GroupAttackAchievementPrototype","order":117,"description":"This prototype is used for receiving an achievement when the player gets attacked due to pollution.","parent":"AchievementPrototype","abstract":false,"typename":"group-attack-achievement","deprecated":false,"properties":[{"name":"amount","order":0,"description":"This will trigger the achievement, if the player receives this amount of attacks. **Note**: The default achievement \"it stinks and they don't like it\" uses the amount of 1. (As in getting attacked once.)","examples":["```\namount = 10\n```"],"override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"attack_type","order":2,"description":"The type of attack that triggers this achievement. \"autonomous\" attacks are triggered in response to pollution or a territory disturbance. \"distraction\" attacks are in response to taking damage or seeing a nearby enemy. \"scripted\" attacks are triggered from mods.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"autonomous"},{"complex_type":"literal","value":"distraction"},{"complex_type":"literal","value":"scripted"}],"full_format":false},"optional":true},{"name":"entities","order":1,"description":"The achievement is only triggered if the attacking group of enemies contains at least one of the entities listed here.","override":false,"type":{"complex_type":"array","value":"EntityID"},"optional":true}]},{"name":"GuiStyle","order":118,"description":"The available GUI styles.","parent":"PrototypeBase","abstract":false,"typename":"gui-style","instance_limit":1,"deprecated":false,"properties":[{"name":"default_sprite_priority","order":2,"description":"","override":false,"type":"SpritePriority","optional":true,"default":{"complex_type":"literal","value":"medium"}},{"name":"default_sprite_scale","order":1,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"default_tileset","order":0,"description":"","override":false,"type":"FileName","optional":true,"default":{"complex_type":"literal","value":""}}],"custom_properties":{"description":"Styles are defined as uniquely named [StyleSpecification](prototype:StyleSpecification) properties of the prototype.\n\nStyles with certain names are mandatory, as they are used by the base game GUI. A list is found below.","lists":["Mandatory styles:\n\n- \"confirm_button\"\n- \"confirm_button_without_tooltip\"\n- \"confirm_double_arrow_button\"\n- \"tips_and_tricks_notification_button\"\n- \"red_confirm_button\"\n- \"red_back_button\"\n- \"red_button\"\n- \"green_button\"\n- \"tool_button_red\"\n- \"tool_button\"\n- \"tool_button_without_padding\"\n- \"tool_button_green\"\n- \"tool_button_blue\"\n- \"tool_button_flush_fluid\"\n- \"mini_button\"\n- \"mini_button_aligned_to_text_vertically\"\n- \"mini_button_aligned_to_text_vertically_when_centered\"\n- \"mini_tool_button_red\"\n- \"highlighted_tool_button\"\n- \"confirm_in_load_game_button\"\n- \"back_button\"\n- \"forward_button\"\n- \"menu_button\"\n- \"menu_button_continue\"\n- \"side_menu_button\"\n- \"dialog_button\"\n- \"control_settings_button\"\n- \"control_settings_section_button\"\n- \"quick_bar_page_button\"\n- \"slot_button\"\n- \"slot_button_in_shallow_frame\"\n- \"yellow_slot_button\"\n- \"red_slot_button\"\n- \"slot_sized_button\"\n- \"compact_slot_sized_button\"\n- \"slot_sized_button_blue\"\n- \"slot_sized_button_red\"\n- \"slot_sized_button_green\"\n- \"shortcut_bar_button\"\n- \"shortcut_bar_button_blue\"\n- \"shortcut_bar_button_red\"\n- \"shortcut_bar_button_green\"\n- \"shortcut_bar_button_small\"\n- \"shortcut_bar_button_small_green\"\n- \"shortcut_bar_button_small_red\"\n- \"shortcut_bar_button_small_blue\"\n- \"compact_slot\"\n- \"slot\"\n- \"red_slot\"\n- \"yellow_slot\"\n- \"green_slot\"\n- \"blue_slot\"\n- \"inventory_slot\"\n- \"filter_inventory_slot\"\n- \"closed_inventory_slot\"\n- \"red_inventory_slot\"\n- \"yellow_inventory_slot\"\n- \"filter_group_button_tab_slightly_larger\"\n- \"blueprint_record_slot_button\"\n- \"blueprint_record_selection_button\"\n- \"compact_red_slot\"\n- \"inventory_limit_slot_button\"\n- \"working_weapon_button\"\n- \"not_working_weapon_button\"\n- \"transparent_slot\"\n- \"universe_frame\"\n- \"universe_widget\"\n- \"universe_connection_button\"\n- \"universe_platform_button\"\n- \"frame_action_button\"\n- \"train_schedule_action_button\"\n- \"train_schedule_delete_button\"\n- \"train_schedule_collapse_button\"\n- \"shortcut_bar_expand_button\"\n- \"open_armor_button\"\n- \"item_and_count_select_confirm\"\n- \"tool_bar_open_button\"\n- \"map_view_add_button\"\n- \"tool_equip_ammo_slot\"\n- \"choose_chat_icon_button\"\n- \"choose_chat_icon_in_textbox_button\"\n- \"decider_combinator_signal_select_button\"\n- \"decider_combinator_fulfilled_signal_select_button\"\n- \"tool_equip_equipment_image\"\n- \"clickable_empty_technology_slot\"\n- \"disabled_technology_slot\"\n- \"disabled_index_technology_slot\"\n- \"researched_technology_slot\"\n- \"available_technology_slot\"\n- \"conditionally_available_technology_slot\"\n- \"unavailable_technology_slot\"\n- \"disabled_preview_technology_slot\"\n- \"disabled_preview_index_technology_slot\"\n- \"researched_preview_technology_slot\"\n- \"available_preview_technology_slot\"\n- \"conditionally_available_preview_technology_slot\"\n- \"unavailable_preview_technology_slot\"\n- \"omitted_technology_slot\"\n- \"crafting_queue_slot\"\n- \"promised_crafting_queue_slot\"\n- \"image_tab_slot\"\n- \"image_tab_selected_slot\"\n- \"red_circuit_network_content_slot\"\n- \"green_circuit_network_content_slot\"\n- \"drop_target_button\"\n- \"locomotive_minimap_button\"\n- \"browse_games_gui_toggle_favorite_on_button\"\n- \"browse_games_gui_toggle_favorite_off_button\"\n- \"research_queue_cancel_button\"\n- \"new_game_header_list_box_item\"\n- \"list_box_item\"\n- \"train_status_button\"\n- \"station_train_status_button\"\n- \"title_tip_item\"\n- \"default_permission_group_list_box_item\"\n- \"target_station_in_schedule_in_train_view_list_box_item\"\n- \"no_path_station_in_schedule_in_train_view_list_box_item\"\n- \"not_accessible_station_in_station_selection\"\n- \"partially_accessible_station_in_station_selection\"\n- \"other_settings_gui_button\"\n- \"map_generator_preview_button\"\n- \"map_generator_close_preview_button\"\n- \"map_generator_confirm_button\"\n- \"train_schedule_comparison_type_button\"\n- \"train_schedule_add_wait_condition_button\"\n- \"train_schedule_add_station_button\"\n- \"train_schedule_add_interrupt_station_button\"\n- \"train_schedule_item_select_button\"\n- \"train_schedule_fulfilled_item_select_button\"\n- \"train_schedule_fulfilled_delete_button\"\n- \"train_schedule_temporary_station_delete_button\"\n- \"train_schedule_condition_time_selection_button\"\n- \"entity_variation_button\"\n- \"tile_variation_button\"\n- \"cancel_close_button\"\n- \"close_button\"\n- \"mods_filter_exclude_button\"\n- \"wide_list_box\"\n- \"wide_list_box_in_shallow_frame\"\n- \"wide_list_box_under_subheader\"\n- \"wide_list_box_in_shallow_frame_under_subheader\"\n- \"list_box_under_subheader\"\n- \"campaigns_list_box\"\n- \"campaign_levels_list_box\"\n- \"custom_games_list_box\"\n- \"train_station_list_box\"\n- \"floating_train_station_list_box\"\n- \"schedule_in_train_view_list_box\"\n- \"permissions_groups_list_box\"\n- \"permissions_players_list_box\"\n- \"naked_list_box\"\n- \"locale_dropdown\"\n- \"game_controller_icons_dropdown\"\n- \"circuit_condition_comparator_dropdown\"\n- \"train_schedule_circuit_condition_comparator_dropdown\"\n- \"changelog_textbox\"\n- \"console_input_textfield\"\n- \"invalid_value_textfield\"\n- \"highlighted_value_textfield\"\n- \"mod_startup_settings_mismatch_notice_box\"\n- \"notice_scroll_pane\"\n- \"pins_scroll_pane\"\n- \"notice_textbox\"\n- \"long_number_textfield\"\n- \"big_notice_textbox\"\n- \"small_notice_textbox\"\n- \"search_popup_textfield\"\n- \"other_settings_gui_textbox\"\n- \"short_number_textfield\"\n- \"invalid_value_short_number_textfield\"\n- \"very_short_number_textfield\"\n- \"slider_value_textfield\"\n- \"wide_slider_value_textfield\"\n- \"short_slider_value_textfield\"\n- \"stretchable_textfield\"\n- \"editor_lua_textbox\"\n- \"edit_blueprint_description_textbox\"\n- \"non_draggable_frame\"\n- \"invisible_frame\"\n- \"frame_with_even_paddings\"\n- \"no_header_filler_frame\"\n- \"map_details_frame\"\n- \"bordered_frame\"\n- \"inside_deep_frame\"\n- \"tab_deep_frame_in_entity_frame\"\n- \"deep_frame_in_shallow_frame_for_description\"\n- \"deep_frame_in_shallow_frame_for_description_with_fixed_width\"\n- \"inside_shallow_frame\"\n- \"shallow_frame_in_shallow_frame\"\n- \"inside_shallow_frame_with_padding\"\n- \"inside_shallow_frame_with_padding_and_vertical_spacing\"\n- \"deep_frame_in_shallow_frame\"\n- \"deep_frame_in_tabbed_pane\"\n- \"slot_button_deep_frame\"\n- \"inventory_frame\"\n- \"quick_panel_slot_button_deep_frame\"\n- \"filter_frame\"\n- \"train_inventory_frame\"\n- \"tooltip_frame\"\n- \"tooltip_description_frame\"\n- \"blueprint_tooltip_description_frame\"\n- \"goal_frame\"\n- \"goal_inner_frame\"\n- \"shortcut_bar_window_frame\"\n- \"quick_bar_inner_panel\"\n- \"tool_equip_inner_panel\"\n- \"shortcut_bar_inner_panel\"\n- \"subfooter_frame\"\n- \"subfooter_frame_with_left_edge\"\n- \"tips_and_tricks_info_frame\"\n- \"tips_and_tricks_info_frame_small_screen\"\n- \"tips_and_tricks_subfooter\"\n- \"right_container_frame\"\n- \"minimap_frame\"\n- \"side_menu_frame\"\n- \"achievement_frame\"\n- \"completed_achievement_frame\"\n- \"tips_and_tricks_frame\"\n- \"failed_achievement_frame\"\n- \"achievement_notification_frame\"\n- \"tips_and_tricks_notification_frame\"\n- \"subheader_frame\"\n- \"repeated_subheader_frame\"\n- \"subheader_frame_with_text_on_the_right\"\n- \"negative_subheader_frame\"\n- \"slot_group_frame\"\n- \"inside_shallow_frame_packed\"\n- \"slot_window_frame\"\n- \"quick_bar_slot_window_frame\"\n- \"technology_card_frame\"\n- \"research_progress_inner_frame_inactive\"\n- \"research_progress_inner_frame_active\"\n- \"shallow_frame\"\n- \"control_settings_section_frame\"\n- \"technology_gui_outer_frame\"\n- \"technology_gui_left_frame\"\n- \"technology_graph_title_frame\"\n- \"train_schedule_station_frame\"\n- \"train_schedule_station_in_interrupt_frame\"\n- \"train_schedule_temporary_station_frame\"\n- \"train_schedule_condition_frame\"\n- \"blueprint_parameter_frame\"\n- \"train_schedule_fullfilled_condition_frame\"\n- \"train_schedule_comparison_type_frame\"\n- \"train_schedule_comparison_type_frame_indented\"\n- \"train_schedule_comparison_type_frame_extra_indented\"\n- \"sync_mods_default_status_frame\"\n- \"sync_mods_downloading_status_frame\"\n- \"tooltip_title_frame_light\"\n- \"tooltip_panel_background\"\n- \"number_input_frame\"\n- \"neutral_message_frame\"\n- \"negative_message_frame\"\n- \"positive_message_frame\"\n- \"shortcut_selection_row\"\n- \"frame_tabbed_pane_corner\"\n- \"frame_tabbed_pane_frame_header\"\n- \"tabbed_pane_frame\"\n- \"frame_without_left_side\"\n- \"frame_without_left_and_right_side\"\n- \"character_gui_left_side\"\n- \"search_popup_frame\"\n- \"bonus_card_frame\"\n- \"empty_bonus_card_frame\"\n- \"inset_frame_container_frame\"\n- \"chart_search_result_frame\"\n- \"pins_frame\"\n- \"current_research_info_button\"\n- \"current_research_info_image\"\n- \"current_research_info_percent_label\"\n- \"blueprint_book_edit_frame\"\n- \"main_progressbar_frame\"\n- \"editor_mode_selection_frame\"\n- \"editor_inner_frame\"\n- \"new_game_subfooter\"\n- \"entity_frame\"\n- \"entity_button_frame\"\n- \"train_with_minimap_frame\"\n- \"lab_technology_frame\"\n- \"lab_technology_frame_empty\"\n- \"right_side_frame\"\n- \"decider_combinator_frame\"\n- \"decider_combinator_condition_frame\"\n- \"decider_combinator_fulfilled_condition_frame\"\n- \"frame_around_top\"\n- \"frame_around_bottom\"\n- \"frame_around_left\"\n- \"frame_around_right\"\n- \"frame_around_center\"\n- \"packed_horizontal_flow\"\n- \"compact_horizontal_flow\"\n- \"dialog_buttons_horizontal_flow\"\n- \"player_input_horizontal_flow\"\n- \"inset_frame_container_horizontal_flow\"\n- \"inset_frame_container_horizontal_flow_in_tabbed_pane\"\n- \"train_schedule_mode_switch_horizontal_flow\"\n- \"horizontal_flow_with_extra_right_margin\"\n- \"relative_gui_top_flow\"\n- \"relative_gui_bottom_flow\"\n- \"two_module_spacing_horizontal_flow\"\n- \"relative_gui_left_flow\"\n- \"relative_gui_right_flow\"\n- \"packed_vertical_flow\"\n- \"padded_vertical_flow\"\n- \"quickbar_holder_flow\"\n- \"inset_frame_container_vertical_flow\"\n- \"two_module_spacing_vertical_flow\"\n- \"new_game_difficulty_vertical_flow\"\n- \"crafting_queue_flow\"\n- \"table_with_selection\"\n- \"players_table\"\n- \"mods_explore_results_table\"\n- \"bordered_table\"\n- \"compact_slot_table\"\n- \"slot_table\"\n- \"browse_games_table\"\n- \"browse_games_on_lan_table\"\n- \"inset_frame_container_table\"\n- \"map_generator_frequency_table\"\n- \"player_input_table\"\n- \"graphics_settings_table\"\n- \"control_settings_bordered_table\"\n- \"sync_mods_table\"\n- \"removed_content_table\"\n- \"finished_game_table\"\n- \"filter_slot_table\"\n- \"editor_mode_selection_table\"\n- \"splitter_settings_table\"\n- \"trains_widget_table\"\n- \"undelete_space_platforms_table\"\n- \"research_queue_table\"\n- \"mappers_table\"\n- \"wide_activity_bar\"\n- \"production_progressbar\"\n- \"burning_progressbar\"\n- \"health_progressbar\"\n- \"vehicle_health_progressbar\"\n- \"mining_progressbar\"\n- \"shield_progressbar\"\n- \"bonus_progressbar\"\n- \"battery_progressbar\"\n- \"electric_satisfaction_progressbar\"\n- \"electric_satisfaction_statistics_progressbar\"\n- \"electric_statistics_progressbar\"\n- \"electric_satisfaction_in_description_progressbar\"\n- \"item_spoilage_in_description_progress_bar\"\n- \"thick_progressbar\"\n- \"disk_usage_progressbar\"\n- \"achievement_progressbar\"\n- \"achievement_card_progressbar\"\n- \"heat_progressbar\"\n- \"rocket_weight_used_progress_bar\"\n- \"caption_checkbox\"\n- \"subheader_caption_checkbox\"\n- \"black_checkbox\"\n- \"caption_radiobutton\"\n- \"frame_title\"\n- \"caption_label\"\n- \"semibold_caption_label\"\n- \"semibold_label\"\n- \"bold_label\"\n- \"green_label\"\n- \"bold_black_label\"\n- \"bold_green_label\"\n- \"red_label\"\n- \"bold_red_label\"\n- \"electric_usage_label\"\n- \"count_label\"\n- \"recipe_count_line_label\"\n- \"tooltip_label\"\n- \"tooltip_title_label\"\n- \"subheader_label\"\n- \"subheader_caption_label\"\n- \"subheader_semibold_label\"\n- \"subheader_right_aligned_label\"\n- \"heading_2_label\"\n- \"achievement_unlocked_title_label\"\n- \"achievement_locked_title_label\"\n- \"achievement_failed_title_label\"\n- \"achievement_failed_description_label\"\n- \"achievement_failed_reason_label\"\n- \"tips_and_tricks_title_label\"\n- \"steam_friend_label\"\n- \"frame_subheading_label\"\n- \"orange_label\"\n- \"bold_orange_label\"\n- \"grey_label\"\n- \"bold_grey_label\"\n- \"tooltip_heading_label\"\n- \"tooltip_heading_label_category\"\n- \"squashable_label\"\n- \"black_label\"\n- \"black_squashable_label\"\n- \"black_label_with_left_padding\"\n- \"black_squashable_label_with_left_padding\"\n- \"black_clickable_label\"\n- \"black_clickable_squashable_label\"\n- \"color_picker_label\"\n- \"tooltip_item_label\"\n- \"clickable_label\"\n- \"clickable_squashable_label\"\n- \"label_with_left_padding\"\n- \"squashable_label_with_left_padding\"\n- \"train_schedule_unavailable_stop_label\"\n- \"train_schedule_non_existent_stop_label\"\n- \"hyperlink_label\"\n- \"info_label\"\n- \"control_input_shortcut_label\"\n- \"main_menu_version_label\"\n- \"label_under_widget\"\n- \"finished_game_label\"\n- \"train_stop_subheader\"\n- \"inventory_frame_title_style\"\n- \"mods_filter_hit_count_label\"\n- \"slot_column_header_label\"\n- \"inside_shallow_frame_with_padding_line\"\n- \"blurry_panel_horizontal_line\"\n- \"dark_line\"\n- \"tooltip_category_line\"\n- \"tooltip_horizontal_line\"\n- \"lab_progress_and_slot_divider\"\n- \"lab_progress_and_slot_divider_empty\"\n- \"scroll_pane_in_shallow_frame\"\n- \"trains_scroll_pane\"\n- \"trains_scroll_pane_with_side_margin\"\n- \"stations_scroll_pane\"\n- \"stations_scroll_pane_small_screen\"\n- \"tab_scroll_pane\"\n- \"technology_list_scroll_pane\"\n- \"statistics_scroll_pane\"\n- \"blurry_scroll_pane\"\n- \"map_preview_scroll_pane\"\n- \"tab_shallow_scroll_pane\"\n- \"featured_technology_description_scroll_pane\"\n- \"scroll_pane_under_subheader\"\n- \"train_schedule_scroll_pane\"\n- \"train_interrupts_scroll_pane\"\n- \"mods_scroll_pane\"\n- \"stations_trains_scroll_pane\"\n- \"entity_frame_scroll_pane\"\n- \"shallow_scroll_pane\"\n- \"shallow_slots_scroll_pane\"\n- \"deep_scroll_pane\"\n- \"deep_slots_scroll_pane\"\n- \"achievement_slots_scroll_pane\"\n- \"logistic_sections_scroll_pane\"\n- \"character_crafting_queue_scroll_pane\"\n- \"logistic_gui_items_scroll_pane\"\n- \"shortcut_bar_selection_scroll_pane\"\n- \"naked_scroll_pane\"\n- \"horizontally_limited_equipment_grid_scroll_pane\"\n- \"text_holding_scroll_pane\"\n- \"factoriopedia_contents_scroll_pane\"\n- \"factoriopedia_icon_grid_scroll_pane\"\n- \"decider_combinator_conditions_scroll_pane\"\n- \"decider_combinator_outputs_scroll_pane\"\n- \"mappers_scroll_pane\"\n- \"achievement_image\"\n- \"map_info_image\"\n- \"new_game_info_image\"\n- \"mod_thumbnail_image\"\n- \"mod_explore_thumbnail_image\"\n- \"mod_updates_status_image\"\n- \"install_mod_status_image\"\n- \"mod_attribute_image\"\n- \"tips_and_tricks_image\"\n- \"logistics_diode\"\n- \"status_image\"\n- \"achievement_warning_image\"\n- \"mods_sorting_image\"\n- \"recipe_tooltip_horizontal_image\"\n- \"tips_and_tricks_simulation\"\n- \"entity_button_base\"\n- \"undo_camera\"\n- \"tooltip_camera\"\n- \"wide_entity_button\"\n- \"draggable_space_in_train_schedule\"\n- \"draggable_space_in_temporary_train_station\"\n- \"fulfilled_draggable_space_in_train_schedule\"\n- \"color_indicator\"\n- \"minimap_widget_under_subheader\"\n- \"blueprint_preview\"\n- \"entity_frame_filler\"\n- \"tool_bar_empty_slot\"\n- \"research_queue_drag_handle\"\n- \"research_queue_active_glow_dark\"\n- \"research_queue_active_glow_light\"\n- \"research_queue_active_glow_outer\"\n- \"notched_slider\"\n- \"map_generator_notched_slider\"\n- \"map_generator_13_notch_slider\"\n- \"map_generator_notched_slider_wide\"\n- \"red_slider\"\n- \"green_slider\"\n- \"blue_slider\"\n- \"other_settings_slider\"\n- \"notched_double_slider\"\n- \"blueprint_drop_slot_button\"\n- \"blueprint_icon_preview\"\n- \"draggable_space\"\n- \"draggable_space_in_shortcut_list\"\n- \"filter_tabbed_pane\"\n- \"frame_tabbed_pane\"\n- \"quick_panel_tabbed_pane\"\n- \"tabbed_pane_with_no_side_padding\"\n- \"tabbed_pane_with_extra_padding\"\n- \"frame_tab\"\n- \"filter_group_tab\"\n- \"slightly_smaller_tab\"\n- \"filter_group_slot_tab\"\n- \"production_graph\"\n- \"research_info_tooltip_graph\"\n- \"train_schedule_partially_fullfilled_condition_frame\"\n- \"partially_fulfilled_draggable_space_in_train_schedule\"\n- \"train_schedule_partially_fulfilled_delete_button\"\n- \"train_schedule_partially_fulfilled_item_select_button\""],"examples":["```\n-- Adding a custom frame_style-type style\ndata.raw[\"gui-style\"][\"default\"][\"custom_style_for_a_frame\"] =\n{\n  type = \"frame_style\",\n  parent = \"frame\",\n  use_header_filler = false,\n  drag_by_title = false\n}\n```"],"key_type":"string","value_type":"StyleSpecification"}},{"name":"GunPrototype","order":119,"description":"A gun. A weapon to deal damage to entities.","parent":"ItemPrototype","abstract":false,"typename":"gun","deprecated":false,"properties":[{"name":"attack_parameters","order":0,"description":"The information the item needs to know in order to know what ammo it requires, the sounds, and range.","override":false,"type":"AttackParameters","optional":false}]},{"name":"HalfDiagonalRailPrototype","order":120,"description":"A half diagonal rail.","parent":"RailPrototype","abstract":false,"typename":"half-diagonal-rail","deprecated":false,"properties":[{"name":"collision_box","order":0,"description":"The [collision_box](prototype:EntityPrototype::collision_box) of straight rail is hardcoded to `{{-0.75, -1.9}, {0.75, 1.9}}`.","override":true,"type":"BoundingBox","optional":true,"default":"`{{-0.75, -1.9}, {0.75, 1.9}}`"}]},{"name":"HeatInterfacePrototype","order":121,"description":"This entity produces or consumes heat. Its heat settings can be changed runtime.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"heat-interface","deprecated":false,"properties":[{"name":"gui_mode","order":2,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"all"},{"complex_type":"literal","value":"none"},{"complex_type":"literal","value":"admins"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"all"}},{"name":"heat_buffer","order":0,"description":"","override":false,"type":"HeatBuffer","optional":false},{"name":"heating_radius","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"picture","order":1,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"HeatPipePrototype","order":122,"description":"A [heat pipe](https://wiki.factorio.com/Heat_pipe).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"heat-pipe","deprecated":false,"properties":[{"name":"connection_sprites","order":0,"description":"","override":false,"type":"ConnectableEntityGraphics","optional":true},{"name":"heat_buffer","order":2,"description":"","override":false,"type":"HeatBuffer","optional":false},{"name":"heat_glow_sprites","order":1,"description":"","override":false,"type":"ConnectableEntityGraphics","optional":true},{"name":"heating_radius","order":3,"description":"Must be >= 0.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"HighlightBoxEntityPrototype","order":123,"description":"Used to attach graphics for [cursor boxes](prototype:CursorBoxType) to entities during runtime. HighlightBoxEntity can also be independent from entities so it is simply drawn somewhere in the world. See [LuaSurface::create_entity](runtime:LuaSurface::create_entity) for the available options for type \"highlight-box\".\n\nThe [collision_box](prototype:EntityPrototype::collision_box) of the highlight box prototype is ignored during runtime, instead the \"bounding_box\" given in create_entity() or the selection box of the target entity is used.","parent":"EntityPrototype","abstract":false,"typename":"highlight-box","deprecated":false,"properties":[]},{"name":"ImpactCategory","order":124,"description":"","examples":["```\n{\n  type = \"impact-category\",\n  name = \"metal\"\n}\n```"],"abstract":false,"typename":"impact-category","deprecated":false,"properties":[{"name":"name","order":1,"description":"Name of the impact category.","override":false,"type":"string","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"impact-category"},"optional":false}]},{"name":"InfinityCargoWagonPrototype","order":125,"description":"A cargo wagon that can spawn or void items at will.","parent":"CargoWagonPrototype","abstract":false,"typename":"infinity-cargo-wagon","deprecated":false,"properties":[{"name":"erase_contents_when_mined","order":0,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"gui_mode","order":2,"description":"Controls which players can control what the chest spawns.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"all"},{"complex_type":"literal","value":"none"},{"complex_type":"literal","value":"admins"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"all"}},{"name":"preserve_contents_when_created","order":1,"description":"When true, items created inside the infinity cargo wagon will not start to spoil until they have been removed from the wagon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"InfinityContainerPrototype","order":126,"description":"A generic container, such as a chest, that can spawn or void items and interact with the logistics network.","parent":"LogisticContainerPrototype","abstract":false,"typename":"infinity-container","deprecated":false,"properties":[{"name":"erase_contents_when_mined","order":0,"description":"","override":false,"type":"boolean","optional":false},{"name":"gui_mode","order":2,"description":"Controls which players can control what the chest spawns.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"all"},{"complex_type":"literal","value":"none"},{"complex_type":"literal","value":"admins"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"all"}},{"name":"inventory_size","order":5,"description":"The number of slots in this container. May not be zero.","override":true,"type":"ItemStackIndex","optional":false},{"name":"logistic_mode","order":3,"description":"The way this chest interacts with the logistic network.","override":true,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"active-provider"},{"complex_type":"literal","value":"passive-provider"},{"complex_type":"literal","value":"requester"},{"complex_type":"literal","value":"storage"},{"complex_type":"literal","value":"buffer"}],"full_format":false},"optional":true},{"name":"preserve_contents_when_created","order":1,"description":"When true, items created inside the infinity chest will not start to spoil until they have been removed from the chest.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"render_not_in_network_icon","order":4,"description":"Whether the \"no network\" icon should be rendered on this entity if the entity is not within a logistics network.","images":[{"filename":"too-far-from-roboport-icon.png"}],"override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"InfinityPipePrototype","order":127,"description":"This entity produces or consumes fluids. Its fluid settings can be changed runtime.","parent":"PipePrototype","abstract":false,"typename":"infinity-pipe","deprecated":false,"properties":[{"name":"gui_mode","order":0,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"all"},{"complex_type":"literal","value":"none"},{"complex_type":"literal","value":"admins"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"all"}}]},{"name":"InserterPrototype","order":128,"description":"An [inserter](https://wiki.factorio.com/Inserter).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"inserter","deprecated":false,"properties":[{"name":"allow_burner_leech","order":22,"description":"Whether this burner inserter can fuel itself from the fuel inventory of the entity it is picking up items from.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"allow_custom_vectors","order":21,"description":"Whether pickup and insert position can be set run-time.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"bulk","order":19,"description":"Whether this inserter is considered a bulk inserter. Relevant for determining how [inserter capacity bonus (research)](https://wiki.factorio.com/Inserter_capacity_bonus_(research)) applies to the inserter.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"chases_belt_items","order":36,"description":"Whether the inserter hand should move to the items it picks up from belts, leading to item chasing behaviour. If this is off, the inserter hand will stay in the center of the belt and any items picked up from the edges of the belt \"teleport\" to the inserter hand.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"circuit_connector","order":38,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_wire_max_distance","order":31,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"default_stack_control_input_signal","order":34,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"draw_circuit_wires","order":33,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":32,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_held_item","order":23,"description":"Whether the item that the inserter is holding should be drawn.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_inserter_arrow","order":35,"description":"Whether the yellow arrow that indicates the drop point of the inserter and the line that indicates the pickup position should be drawn.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_per_movement","order":17,"description":"","override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"energy_per_rotation","order":18,"description":"","override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"energy_source","order":16,"description":"Defines how this inserter gets energy. The emissions set on the energy source are ignored so inserters cannot produce pollution.","override":false,"type":"EnergySource","optional":false},{"name":"enter_drop_mode_if_held_stack_spoiled","order":27,"description":"If inserter waits for full hand it could become stuck when item in hand changed because of spoiling. If this flag is set then inserter will start dropping held stack even if it was waiting for full hand.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"extension_speed","order":0,"description":"","override":false,"type":"double","optional":false},{"name":"filter_count","order":29,"description":"How many filters this inserter has. Maximum count of filtered items in inserter is 5.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"grab_less_to_match_belt_stack","order":25,"description":"If drop target is belt, inserter may grab less so that it does not drop partial stacks unless it is forced to drop partial.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"hand_base_frozen","order":10,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hand_base_picture","order":7,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hand_base_shadow","order":13,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hand_closed_frozen","order":12,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hand_closed_picture","order":9,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hand_closed_shadow","order":15,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hand_open_frozen","order":11,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hand_open_picture","order":8,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hand_open_shadow","order":14,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hand_size","order":30,"description":"Used to determine how long the arm of the inserter is when drawing it. Does not affect gameplay. The lower the value, the straighter the arm. Increasing the value will give the inserter a bigger bend due to its longer parts.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.75}},{"name":"insert_position","order":3,"description":"","override":false,"type":"Vector","optional":false},{"name":"max_belt_stack_size","order":28,"description":"This inserter will not create stacks on belt with more than this amount of items. Must be >= 1.","visibility":["space_age"],"override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"pickup_position","order":4,"description":"","override":false,"type":"Vector","optional":false},{"name":"platform_frozen","order":6,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"platform_picture","order":5,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"rotation_speed","order":1,"description":"","override":false,"type":"double","optional":false},{"name":"stack_size_bonus","order":37,"description":"Stack size bonus that is inherent to the prototype without having to be researched.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"starting_distance","order":2,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.7}},{"name":"use_easter_egg","order":24,"description":"Whether the inserter should be able to fish [fish](https://wiki.factorio.com/Raw_fish).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"uses_inserter_stack_size_bonus","order":20,"description":"When set to false, then relevant value of inserter stack size bonus ([LuaForce::inserter_stack_size_bonus](runtime:LuaForce::inserter_stack_size_bonus) or [LuaForce::bulk_inserter_capacity_bonus](runtime:LuaForce::bulk_inserter_capacity_bonus)) will not affect inserter stack size.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"wait_for_full_hand","order":26,"description":"Inserter will wait until its hand is full.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"InventoryBonusEquipmentPrototype","order":129,"description":"","parent":"EquipmentPrototype","abstract":false,"typename":"inventory-bonus-equipment","deprecated":false,"properties":[{"name":"energy_source","order":1,"description":"","override":true,"type":"ElectricEnergySource","optional":true},{"name":"inventory_size_bonus","order":0,"description":"","override":false,"type":"ItemStackIndex","optional":false}]},{"name":"ItemEntityPrototype","order":130,"description":"The entity used for items on the ground.","examples":["```\n{\n  type = \"item-entity\",\n  name = \"item-on-ground\",\n  flags = { \"placeable-off-grid\", \"not-on-map\" },\n  collision_box = { {-0.14, -0.14}, {0.14, 0.14} },\n  selection_box = { {-0.17, -0.17}, {0.17, 0.17} },\n  minable = { mining_time = 0.025 }\n}\n```"],"parent":"EntityPrototype","abstract":false,"typename":"item-entity","deprecated":false,"properties":[{"name":"collision_box","order":0,"description":"Item entity collision box has to have same width as height.\n\nSpecification of the entity collision boundaries. Empty collision box means no collision and is used for smoke, projectiles, particles, explosions etc.\n\nThe `{0,0}` coordinate in the collision box will match the entity position. It should be near the center of the collision box, to keep correct entity drawing order. The bounding box must include the `{0,0}` coordinate.\n\nNote, that for buildings, it is customary to leave 0.1 wide border between the edge of the tile and the edge of the building, this lets the player move between the building and electric poles/inserters etc.","examples":["```\ncollision_box = {{-0.4, -0.4}, {0.4, 0.4}}\n```"],"override":true,"type":"BoundingBox","optional":true,"default":"Empty = `{{0, 0}, {0, 0}}`"}]},{"name":"ItemGroup","order":131,"description":"An item group. Item groups are the tabs shown above the list of craftable items in the player's inventory GUI. The built-in groups are \"logistics\", \"production\", \"intermediate-products\" and \"combat\" but mods can define their own.\n\nItems are sorted into item groups by sorting them into a [subgroup](prototype:ItemPrototype::subgroup) which then belongs to an [item group](prototype:ItemSubGroup::group).","examples":["```\n{\n  type = \"item-group\",\n  name = \"logistics\",\n  order = \"a\",\n  icon = \"__base__/graphics/item-group/logistics.png\",\n  icon_size = 128,\n}\n```"],"parent":"Prototype","abstract":false,"typename":"item-group","instance_limit":255,"deprecated":false,"properties":[{"name":"icon","order":1,"description":"Path to the icon that is shown to represent this item group.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":2,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nThe base game uses 128px icons for item groups.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":0,"description":"The icon that is shown to represent this item group. Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"order_in_recipe","order":3,"description":"Item ingredients in recipes are ordered by item group. The `order_in_recipe` property can be used to specify the ordering in recipes without affecting the inventory order.","override":false,"type":"Order","optional":true,"default":"The `order` of this item group."}]},{"name":"ItemPrototype","order":132,"description":"Possible configuration for all items.","parent":"Prototype","abstract":false,"typename":"item","deprecated":false,"properties":[{"name":"auto_recycle","order":41,"description":"Whether the item should be included in the self-recycling recipes automatically generated by the quality mod.\n\nThis property is not read by the game engine itself, but the quality mod's data-updates.lua file. This means it is discarded by the game engine after loading finishes.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"burnt_result","order":10,"description":"The item that is the result when this item gets burned as fuel.","override":false,"type":"ItemID","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"close_sound","order":27,"description":"","override":false,"type":"Sound","optional":true},{"name":"color_hint","order":32,"description":"Only used by hidden setting, support may be limited.","override":false,"type":"ColorHintSpecification","optional":true},{"name":"dark_background_icon","order":5,"description":"If this is set, it is used to show items in alt-mode instead of the normal item icon. This can be useful to increase the contrast of the icon with the dark alt-mode [icon outline](prototype:UtilityConstants::item_outline_color).\n\nPath to the icon file.\n\nOnly loaded if `dark_background_icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"dark_background_icon_size","order":6,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `dark_background_icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"dark_background_icons","order":4,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"default_import_location","order":31,"description":"","override":false,"type":"SpaceLocationID","optional":true,"default":{"complex_type":"literal","value":"nauvis"}},{"name":"destroyed_by_dropping_trigger","order":35,"description":"The effect/trigger that happens when an item is destroyed by being dropped on a [TilePrototype](prototype:TilePrototype) marked as destroying dropped items.\n\nThis overrides the [TilePrototype::default_destroyed_dropped_item_trigger](prototype:TilePrototype::default_destroyed_dropped_item_trigger) from the tile.","override":false,"type":"Trigger","optional":true},{"name":"drop_sound","order":29,"description":"","override":false,"type":"Sound","optional":true},{"name":"flags","order":15,"description":"Specifies some properties of the item.","examples":["```\nflags = { \"hide-from-bonus-gui\" }\n```"],"override":false,"type":"ItemPrototypeFlags","optional":true},{"name":"fuel_acceleration_multiplier","order":18,"description":"Must be 0 or positive.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"fuel_acceleration_multiplier_quality_bonus","order":21,"description":"Additional fuel acceleration multiplier per quality level. Defaults to 30% of `fuel_acceleration_multiplier - 1` if `fuel_acceleration_multiplier` is larger than 1. Otherwise defaults to 0.\n\nMust be 0 or positive.","override":false,"type":"double","optional":true},{"name":"fuel_category","order":9,"description":"Must exist when a nonzero fuel_value is defined.","override":false,"type":"FuelCategoryID","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"fuel_emissions_multiplier","order":20,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"fuel_glow_color","order":25,"description":"Colors the glow of the burner energy source when this fuel is burned. Can also be used to color the glow of reactors burning the fuel, see [ReactorPrototype::use_fuel_glow_color](prototype:ReactorPrototype::use_fuel_glow_color).","override":false,"type":"Color","optional":true},{"name":"fuel_top_speed_multiplier","order":19,"description":"Must be 0 or positive.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"fuel_top_speed_multiplier_quality_bonus","order":22,"description":"Additional fuel top speed multiplier per quality level. Defaults to 30% of `fuel_top_speed_multiplier - 1` if `fuel_top_speed_multiplier` is larger than 1. Otherwise defaults to 0.\n\nMust be 0 or positive.","override":false,"type":"double","optional":true},{"name":"fuel_value","order":17,"description":"Amount of energy the item gives when used as fuel.\n\nMandatory if `fuel_acceleration_multiplier`, `fuel_top_speed_multiplier` or `fuel_emissions_multiplier` or `fuel_glow_color` are used.","examples":["```\nfuel_value = \"12MJ\"\n```"],"override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":"0J"}},{"name":"has_random_tint","order":33,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"hidden","order":42,"description":"Item will not appear in lists of all items such as those for logistics requests, filters, etc.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"icon","order":2,"description":"Path to the icon file.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":3,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":1,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"ingredient_to_weight_coefficient","order":24,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"inventory_move_sound","order":30,"description":"","override":false,"type":"Sound","optional":true},{"name":"moved_to_hub_when_building","order":38,"description":"Whether this item should be moved to the hub when space platform performs building, upgrade or deconstruction and is left with this item. The following items are considered valuable and moved to hub by default: [Modules](prototype:ModulePrototype), [items that build entities](prototype:ItemPrototype::place_result), [items that build tiles](prototype:ItemPrototype::place_as_tile) and items [not obtainable from asteroid chunks](prototype:AsteroidChunkPrototype::minable) that have [subgroup](prototype:PrototypeBase::subgroup) from a [group](prototype:ItemSubGroup::group) other than `\"intermediate-products\"`.","override":false,"type":"boolean","optional":true},{"name":"open_sound","order":26,"description":"","override":false,"type":"Sound","optional":true},{"name":"pick_sound","order":28,"description":"","override":false,"type":"Sound","optional":true},{"name":"pictures","order":14,"description":"Used to give the item multiple different icons so that they look less uniform on belts. For inventory icons and similar, `icon/icons` will be used. Maximum number of variations is 16.\n\nWhen using sprites of size `64` (same as base game icons), the `scale` should be set to 0.5.","override":false,"type":"SpriteVariations","optional":true},{"name":"place_as_equipment_result","order":8,"description":"","override":false,"type":"EquipmentID","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"place_as_tile","order":13,"description":"","override":false,"type":"PlaceAsTile","optional":true},{"name":"place_result","order":7,"description":"Name of the [EntityPrototype](prototype:EntityPrototype) that can be built using this item. If this item should be the one that construction bots use to build the specified `place_result`, set the `\"primary-place-result\"` [item flag](prototype:ItemPrototypeFlags).\n\nThe localised name of the entity will be used as the in-game item name. This behavior can be overwritten by specifying `localised_name` on this item, it will be used instead.","examples":["```\nplace_result = \"wooden-chest\"\n```"],"override":false,"type":"EntityID","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"plant_result","order":12,"description":"","override":false,"type":"EntityID","optional":true},{"name":"random_tint_color","order":39,"description":"Randomly tints item instances on belts and in the world. 0 no tinting. 1 full tint.","override":false,"type":"Color","optional":true,"default":"Value of UtilityConstants::item_default_random_tint_strength"},{"name":"rocket_launch_products","order":36,"description":"","override":false,"type":{"complex_type":"array","value":"ItemProductPrototype"},"optional":true},{"name":"send_to_orbit_mode","order":37,"description":"The way this item works when we try to send it to the orbit on its own.\n\nWhen \"manual\" is set, it can only be launched by pressing the launch button in the rocket silo.\n\nWhen \"automated\" is set, it will force the existence of \"launch to orbit automatically\" checkbox in the rocket silo which will then force the silo to automatically send the item to orbit when present.","override":false,"type":"SendToOrbitMode","optional":true,"default":{"complex_type":"literal","value":"not-sendable"}},{"name":"spoil_level","order":40,"description":"Used by Inserters with spoil priority. Item with higher spoil level is considered more spoiled than item with lower spoil level regardless of progress of spoiling.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"spoil_result","order":11,"description":"","visibility":["space_age"],"override":false,"type":"ItemID","optional":true},{"name":"spoil_ticks","order":16,"description":"","visibility":["space_age"],"override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"spoil_to_trigger_result","order":34,"description":"","visibility":["space_age"],"override":false,"type":"SpoilToTriggerResult","optional":true},{"name":"stack_size","order":0,"description":"Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `\"not-stackable\"` flag is set.","examples":["```\nstack_size = 64\n```"],"override":false,"type":"ItemCountType","optional":false},{"name":"weight","order":23,"description":"The default weight is calculated automatically from recipes and falls back to [UtilityConstants::default_item_weight](prototype:UtilityConstants::default_item_weight).\n\nMore information on how item weight is determined can be found on its [auxiliary page](runtime:item-weight).","override":false,"type":"Weight","optional":true}]},{"name":"ItemRequestProxyPrototype","order":133,"description":"Entity used to signify that an entity is requesting items, for example modules for an assembling machine after it was blueprinted with modules inside.","parent":"EntityPrototype","abstract":false,"typename":"item-request-proxy","deprecated":false,"properties":[{"name":"use_target_entity_alert_icon_shift","order":0,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"ItemSubGroup","order":134,"description":"An item subgroup. Item subgroups are the rows in the recipe list in the player's inventory GUI. The subgroup of a prototype also determines its item [group](prototype:ItemGroup::group) (tab in the recipe list).\n\nThe built-in subgroups can be found [here](https://wiki.factorio.com/Data.raw#item-subgroup). See [ItemPrototype::subgroup](prototype:ItemPrototype::subgroup) for setting the subgroup of an item.","examples":["```\n{\n  type = \"item-subgroup\",\n  name = \"train-transport\",\n  group = \"logistics\",\n  order = \"e\"\n}\n```"],"parent":"Prototype","abstract":false,"typename":"item-subgroup","deprecated":false,"properties":[{"name":"group","order":0,"description":"The item group this subgroup is located in.","override":false,"type":"ItemGroupID","optional":false}]},{"name":"ItemWithEntityDataPrototype","order":135,"description":"ItemWithEntityData saves data associated with the entity that it represents, for example the content of the equipment grid of a car.","parent":"ItemPrototype","abstract":false,"typename":"item-with-entity-data","deprecated":false,"properties":[{"name":"icon_tintable","order":4,"description":"Path to the icon file.\n\nOnly loaded if `icon_tintables` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_tintable_mask","order":1,"description":"Path to the icon file.\n\nOnly loaded if `icon_tintable_masks` is not defined and `icon_tintable` is defined.","override":false,"type":"FileName","optional":true},{"name":"icon_tintable_mask_size","order":2,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icon_tintable_masks` is not defined and `icon_tintable` is defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icon_tintable_masks","order":0,"description":"Can't be an empty array.\n\nOnly loaded if `icon_tintable` is defined.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"icon_tintable_size","order":5,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icon_tintables` is not defined and `icon_tintable` is defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icon_tintables","order":3,"description":"Can't be an empty array.\n\nOnly loaded if `icon_tintable` is defined (`icon_tintables` takes precedence over `icon_tintable`).","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true}]},{"name":"ItemWithInventoryPrototype","order":136,"description":"The inventory allows setting player defined filters similar to cargo wagon inventories.","parent":"ItemWithLabelPrototype","abstract":false,"typename":"item-with-inventory","deprecated":false,"properties":[{"name":"filter_message_key","order":5,"description":"The locale key used when the player attempts to put an item that doesn't match the filter rules into the item-with-inventory.","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":"item-limitation.item-not-allowed-in-this-container-item"}},{"name":"filter_mode","order":4,"description":"This determines how filters are applied. If no filters are defined this is automatically set to \"none\".","examples":["```\nfilter_mode = \"blacklist\"\n```"],"override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"blacklist"},{"complex_type":"literal","value":"whitelist"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"whitelist"}},{"name":"inventory_size","order":0,"description":"The inventory size of the item.","override":false,"type":"ItemStackIndex","optional":false},{"name":"item_filters","order":1,"description":"A list of explicit item names to be used as filters.","examples":["```\nitem_filters = {\"iron-ore\", \"copper-ore\", \"coal\", \"stone\"}\n```"],"override":false,"type":{"complex_type":"array","value":"ItemID"},"optional":true},{"name":"item_group_filters","order":2,"description":"A list of explicit item group names to be used as filters.","examples":["```\nitem_group_filters = {\"logistics\", \"fluids\"}\n```"],"override":false,"type":{"complex_type":"array","value":"ItemGroupID"},"optional":true},{"name":"item_subgroup_filters","order":3,"description":"A list of explicit [item subgroup](prototype:ItemSubGroup) names to be used as filters.","examples":["```\nitem_subgroup_filters = {\"military-equipment\", \"tool\"}\n```"],"override":false,"type":{"complex_type":"array","value":"ItemSubGroupID"},"optional":true},{"name":"stack_size","order":6,"description":"Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `\"not-stackable\"` flag is set.","examples":["```\nstack_size = 1\n```"],"override":true,"type":{"complex_type":"literal","value":1},"optional":false}]},{"name":"ItemWithLabelPrototype","order":137,"description":"Like a normal item but with the ability to have a colored label.","parent":"ItemPrototype","abstract":false,"typename":"item-with-label","deprecated":false,"properties":[{"name":"default_label_color","order":0,"description":"The default label color the item will use.","override":false,"type":"Color","optional":true,"default":"Default item text color"},{"name":"draw_label_for_cursor_render","order":1,"description":"If the item will draw its label when held in the cursor in place of the item count.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"ItemWithTagsPrototype","order":138,"description":"Item type that can store any basic arbitrary Lua data, see [LuaItemStack::tags](runtime:LuaItemStack::tags).","parent":"ItemWithLabelPrototype","abstract":false,"typename":"item-with-tags","deprecated":false,"properties":[]},{"name":"KillAchievementPrototype","order":139,"description":"This prototype is used for receiving an achievement when the player destroys a certain amount of an entity, with a specific damage type.","parent":"AchievementPrototype","abstract":false,"typename":"kill-achievement","deprecated":false,"properties":[{"name":"amount","order":4,"description":"This is the amount of entity of the specified type the player needs to destroy to receive the achievement.","examples":["```\namount = 100\n```"],"override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"damage_dealer","order":3,"description":"The killer of the entity must be one of these entities.","examples":["```\ndamage_dealer = \"artillery-turret\"\n```","```\ndamage_dealer = {\"artillery-turret\", \"artillery-wagon\"}\n```"],"override":false,"type":{"complex_type":"union","options":["EntityID",{"complex_type":"array","value":"EntityID"}],"full_format":false},"optional":true},{"name":"damage_type","order":2,"description":"This defines how the player needs to destroy the specific entity.","examples":["```\ndamage_type = \"impact\"\n```"],"override":false,"type":"DamageTypeID","optional":true},{"name":"in_vehicle","order":5,"description":"This defines if the player needs to be in a vehicle.","examples":["```\nin_vehicle = true\n```"],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"personally","order":6,"description":"This defines to make sure you are the one driving, for instance, in a tank rather than an automated train.","examples":["```\npersonally = true\n```"],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"to_kill","order":0,"description":"This defines which entity needs to be destroyed in order to receive the achievement.","override":false,"type":{"complex_type":"union","options":["EntityID",{"complex_type":"array","value":"EntityID"}],"full_format":false},"optional":true},{"name":"type_to_kill","order":1,"description":"This defines what entity type needs to be destroyed in order to receive the achievement.","examples":["```\ntype_to_kill = \"inserter\"\n```"],"override":false,"type":"string","optional":true}]},{"name":"LabPrototype","order":140,"description":"A [lab](https://wiki.factorio.com/Lab). It consumes [science packs](prototype:ToolPrototype) to research [technologies](prototype:TechnologyPrototype).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"lab","deprecated":false,"properties":[{"name":"allowed_effects","order":12,"description":"Sets the [modules](prototype:ModulePrototype) and [beacon](prototype:BeaconPrototype) effects that are allowed to be used on this lab.","override":false,"type":"EffectTypeLimitation","optional":true,"default":"All effects except quality are allowed"},{"name":"allowed_module_categories","order":13,"description":"Sets the [module categories](prototype:ModuleCategory) that are allowed to be inserted into this machine.","override":false,"type":{"complex_type":"array","value":"ModuleCategoryID"},"optional":true,"default":"All module categories are allowed"},{"name":"effect_receiver","order":7,"description":"","override":false,"type":"EffectReceiver","optional":true},{"name":"energy_source","order":1,"description":"Defines how this lab gets energy.","override":false,"type":"EnergySource","optional":false},{"name":"energy_usage","order":0,"description":"The amount of energy this lab uses.","override":false,"type":"Energy","optional":false},{"name":"frozen_patch","order":4,"description":"","override":false,"type":"Sprite","optional":true},{"name":"inputs","order":5,"description":"A list of the names of science packs that can be used in this lab.\n\nIf a technology requires other types of science packs, it cannot be researched in this lab.","examples":["```\ninputs = {\"automation-science-pack\", \"logistic-science-pack\", \"chemical-science-pack\", \"military-science-pack\", \"production-science-pack\", \"utility-science-pack\", \"space-science-pack\"}\n```"],"override":false,"type":{"complex_type":"array","value":"ItemID"},"optional":false},{"name":"light","order":14,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"module_slots","order":8,"description":"The number of module slots in this lab.","override":false,"type":"ItemStackIndex","optional":true},{"name":"off_animation","order":3,"description":"The animation that plays when the lab is idle.","override":false,"type":"Animation","optional":true},{"name":"on_animation","order":2,"description":"The animation that plays when the lab is active.","override":false,"type":"Animation","optional":true},{"name":"quality_affects_module_slots","order":9,"description":"If set, [QualityPrototype::lab_module_slots_bonus](prototype:QualityPrototype::lab_module_slots_bonus) will be added to module slots count.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"researching_speed","order":6,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"science_pack_drain_rate_percent","order":11,"description":"May not be `0` or larger than `100`.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":100}},{"name":"trash_inventory_size","order":15,"description":"","override":false,"type":"ItemStackIndex","optional":true},{"name":"uses_quality_drain_modifier","order":10,"description":"Whether the [QualityPrototype::science_pack_drain_multiplier](prototype:QualityPrototype::science_pack_drain_multiplier) of the quality of this lab should affect how much science is consumed to research one unit of technology.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"LampPrototype","order":141,"description":"A [lamp](https://wiki.factorio.com/Lamp) to provide light, using energy.","examples":["```\n{\n  type = \"lamp\",\n  name = \"small-lamp\",\n  icon = \"__base__/graphics/icons/small-lamp.png\",\n  flags = {\"placeable-neutral\", \"player-creation\"},\n  fast_replaceable_group = \"lamp\",\n  minable = {mining_time = 0.1, result = \"small-lamp\"},\n  max_health = 100,\n  corpse = \"lamp-remnants\",\n  dying_explosion = \"lamp-explosion\",\n  collision_box = {{-0.15, -0.15}, {0.15, 0.15}},\n  selection_box = {{-0.5, -0.5}, {0.5, 0.5}},\n  damaged_trigger_effect = hit_effects.entity(),\n  impact_category = \"glass\",\n  open_sound = {filename = \"__base__/sound/open-close/electric-small-open.ogg\", volume = 0.7},\n  close_sound = {filename = \"__base__/sound/open-close/electric-small-close.ogg\", volume = 0.7},\n  energy_source =\n  {\n    type = \"electric\",\n    usage_priority = \"lamp\"\n  },\n  energy_usage_per_tick = \"5kW\",\n  darkness_for_all_lamps_on = 0.5,\n  darkness_for_all_lamps_off = 0.3,\n  light = {intensity = 0.9, size = 40, color = {1, 1, 0.75}},\n  light_when_colored = {intensity = 0, size = 6, color = {1, 1, 0.75}},\n  glow_size = 6,\n  glow_color_intensity = 1,\n  glow_render_mode = \"multiplicative\",\n  picture_off =\n  {\n    layers =\n    {\n      {\n        filename = \"__base__/graphics/entity/small-lamp/lamp.png\",\n        priority = \"high\",\n        width = 83,\n        height = 70,\n        shift = util.by_pixel(0.25,3),\n        scale = 0.5\n      },\n      {\n        filename = \"__base__/graphics/entity/small-lamp/lamp-shadow.png\",\n        priority = \"high\",\n        width = 76,\n        height = 47,\n        shift = util.by_pixel(4, 4.75),\n        draw_as_shadow = true,\n        scale = 0.5\n      }\n    }\n  },\n  picture_on =\n  {\n    filename = \"__base__/graphics/entity/small-lamp/lamp-light.png\",\n    priority = \"high\",\n    width = 90,\n    height = 78,\n    shift = util.by_pixel(0, -7),\n    scale = 0.5\n  },\n  signal_to_color_mapping =\n  {\n    {type = \"virtual\", name = \"signal-red\",    color = {1, 0, 0}},\n    {type = \"virtual\", name = \"signal-green\",  color = {0, 1, 0}},\n    {type = \"virtual\", name = \"signal-blue\",   color = {0, 0, 1}},\n    {type = \"virtual\", name = \"signal-yellow\", color = {1, 1, 0}},\n    {type = \"virtual\", name = \"signal-pink\",   color = {1, 0, 1}},\n    {type = \"virtual\", name = \"signal-cyan\",   color = {0, 1, 1}},\n    {type = \"virtual\", name = \"signal-white\",  color = {1, 1, 1}},\n    {type = \"virtual\", name = \"signal-grey\",   color = {0.5, 0.5, 0.5}},\n    {type = \"virtual\", name = \"signal-black\",  color = {0, 0, 0}}\n  },\n  default_red_signal = { type = \"virtual\", name = \"signal-red\" },\n  default_green_signal = { type = \"virtual\", name = \"signal-green\" },\n  default_blue_signal = { type = \"virtual\", name = \"signal-blue\" },\n  default_rgb_signal = { type = \"virtual\", name = \"signal-white\" },\n\n  circuit_connector = circuit_connector_definitions[\"lamp\"],\n  circuit_wire_max_distance = default_circuit_wire_max_distance\n}\n```"],"parent":"EntityWithOwnerPrototype","abstract":false,"typename":"lamp","deprecated":false,"properties":[{"name":"always_on","order":14,"description":"Whether the lamp should always be on.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"circuit_connector","order":9,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":6,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"darkness_for_all_lamps_off","order":13,"description":"darkness_for_all_lamps_on must be > darkness_for_all_lamps_off. Values must be between 0 and 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.3}},{"name":"darkness_for_all_lamps_on","order":12,"description":"darkness_for_all_lamps_on must be > darkness_for_all_lamps_off. Values must be between 0 and 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"default_blue_signal","order":19,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_green_signal","order":18,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_red_signal","order":17,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_rgb_signal","order":20,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"draw_circuit_wires","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_source","order":3,"description":"The emissions set on the energy source are ignored so lamps cannot produce pollution.","override":false,"type":{"complex_type":"union","options":["ElectricEnergySource","VoidEnergySource"],"full_format":false},"optional":false},{"name":"energy_usage_per_tick","order":2,"description":"The amount of energy the lamp uses. Must be greater than > 0.","override":false,"type":"Energy","optional":false},{"name":"glow_color_intensity","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"glow_render_mode","order":16,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"additive"},{"complex_type":"literal","value":"multiplicative"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"additive"}},{"name":"glow_size","order":10,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"light","order":4,"description":"What color the lamp will be when it is on, and receiving power.","override":false,"type":"LightDefinition","optional":true},{"name":"light_when_colored","order":5,"description":"This refers to when the light is in a circuit network, and is lit a certain color based on a signal value.","override":false,"type":"LightDefinition","optional":true},{"name":"picture_off","order":1,"description":"The lamps graphics when it's off.","override":false,"type":"Sprite","optional":true},{"name":"picture_on","order":0,"description":"The lamps graphics when it's on.","override":false,"type":"Sprite","optional":true},{"name":"signal_to_color_mapping","order":15,"description":"","override":false,"type":{"complex_type":"array","value":"SignalColorMapping"},"optional":true}]},{"name":"LandMinePrototype","order":142,"description":"A [land mine](https://wiki.factorio.com/Land_mine).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"land-mine","deprecated":false,"properties":[{"name":"action","order":6,"description":"","override":false,"type":"Trigger","optional":true},{"name":"ammo_category","order":7,"description":"","override":false,"type":"AmmoCategoryID","optional":true},{"name":"force_die_on_attack","order":8,"description":"Force the landmine to kill itself when exploding.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"is_military_target","order":11,"description":"Whether this prototype should be a high priority target for enemy forces. See [Military units and structures](https://wiki.factorio.com/Military_units_and_structures).","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"picture_safe","order":0,"description":"The sprite of the landmine before it is armed (just after placing).","override":false,"type":"Sprite","optional":true},{"name":"picture_set","order":1,"description":"The sprite of the landmine of a friendly force when it is armed.","override":false,"type":"Sprite","optional":true},{"name":"picture_set_enemy","order":3,"description":"The sprite of the landmine of an enemy force when it is armed.","override":false,"type":"Sprite","optional":true},{"name":"timeout","order":4,"description":"Time between placing and the landmine being armed, in ticks.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":120}},{"name":"trigger_collision_mask","order":10,"description":"Collision mask that another entity must collide with to make this landmine blow up.","override":false,"type":"CollisionMaskConnector","optional":true,"default":"Value of UtilityConstants::building_collision_mask"},{"name":"trigger_force","order":9,"description":"","override":false,"type":"ForceCondition","optional":true,"default":{"complex_type":"literal","value":"enemy"}},{"name":"trigger_interval","order":5,"description":"Time between checks to detonate due to nearby enemies, in ticks. A larger time will be more performant.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"trigger_radius","order":2,"description":"","override":false,"type":"double","optional":false}]},{"name":"LaneSplitterPrototype","order":143,"description":"","parent":"TransportBeltConnectablePrototype","abstract":false,"typename":"lane-splitter","deprecated":false,"properties":[{"name":"structure","order":2,"description":"","override":false,"type":"Animation4Way","optional":false},{"name":"structure_animation_movement_cooldown","order":1,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"structure_animation_speed_coefficient","order":0,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"structure_patch","order":3,"description":"","override":false,"type":"Animation4Way","optional":true}]},{"name":"LegacyCurvedRailPrototype","order":144,"description":"A legacy curved rail.","parent":"RailPrototype","abstract":false,"typename":"legacy-curved-rail","deprecated":false,"properties":[{"name":"collision_box","order":0,"description":"The [collision_box](prototype:EntityPrototype::collision_box) of legacy curved rail is hardcoded to `{{-0.75, -0.55}, {0.75, 1.6}}`.\n\nThe secondary collision box of legacy curved rail is hardcoded to `{{-0.68, -2.7}, {0.68, 2.7}}`.","override":true,"type":"BoundingBox","optional":true,"default":"`{{-0.75, -0.55}, {0.75, 1.6}}`"}]},{"name":"LegacyStraightRailPrototype","order":145,"description":"A legacy straight rail.","parent":"RailPrototype","abstract":false,"typename":"legacy-straight-rail","deprecated":false,"properties":[{"name":"collision_box","order":0,"description":"The [collision_box](prototype:EntityPrototype::collision_box) of legacy straight rail is hardcoded to `{{-0.7, -0.99}, {0.7, 0.99}}`.","override":true,"type":"BoundingBox","optional":true,"default":"`{{-0.7, -0.99}, {0.7, 0.99}}`"}]},{"name":"LightningAttractorPrototype","order":146,"description":"Absorbs [lightning](prototype:LightningPrototype) and optionally converts it into electricity.","visibility":["space_age"],"parent":"EntityWithOwnerPrototype","abstract":false,"typename":"lightning-attractor","deprecated":false,"properties":[{"name":"chargable_graphics","order":0,"description":"","override":false,"type":"ChargableGraphics","optional":true},{"name":"efficiency","order":2,"description":"Cannot be less than 0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"energy_source","order":4,"description":"Mandatory if `efficiency` is larger than 0. May not be defined if `efficiency` is 0.","override":false,"type":"ElectricEnergySource","optional":true},{"name":"lightning_strike_offset","order":1,"description":"","override":false,"type":"MapPosition","optional":true},{"name":"range_elongation","order":3,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"LightningPrototype","order":147,"description":"Lightning randomly hits entities on planets with [lightning_properties](prototype:PlanetPrototype::lightning_properties).\n\nIf a [lightning attractor](prototype:LightningAttractorPrototype) is hit by lightning it will absorb the lightning hit for energy.\n\nIf a something that is not an attractor is hit by lightning it will be damaged by the strike.","visibility":["space_age"],"parent":"EntityPrototype","abstract":false,"typename":"lightning","deprecated":false,"properties":[{"name":"attracted_volume_modifier","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"attractor_hit_effect","order":4,"description":"Effect that is triggered when lightning hits  a [lightning attractor](prototype:LightningAttractorPrototype). Triggered after the attractor is charged by the lightning hit.","override":false,"type":"Trigger","optional":true},{"name":"damage","order":7,"description":"When lightning strikes something that is not a lightning attractor, this damage is applied to the target.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":100}},{"name":"effect_duration","order":10,"description":"","override":false,"type":"uint16","optional":false},{"name":"energy","order":8,"description":"When lightning hits a [lightning attractor](prototype:LightningAttractorPrototype), this amount of energy is transferred to the lightning attractor.","override":false,"type":"Energy","optional":true,"default":"Max double"},{"name":"graphics_set","order":0,"description":"","override":false,"type":"LightningGraphicsSet","optional":true},{"name":"sound","order":1,"description":"","override":false,"type":"Sound","optional":true},{"name":"source_offset","order":5,"description":"","override":false,"type":"Vector","optional":true},{"name":"source_variance","order":6,"description":"","override":false,"type":"Vector","optional":true},{"name":"strike_effect","order":3,"description":"Effect that is triggered when lightning strikes something that is not a lightning attractor. Triggered before `damage` is applied.","override":false,"type":"Trigger","optional":true},{"name":"time_to_damage","order":9,"description":"Must be less than or equal to `effect_duration`.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"LinkedBeltPrototype","order":148,"description":"A belt that can be connected to a belt anywhere else, including on a different surface. The linked belts have to be [connected with console commands](https://wiki.factorio.com/Console#Connect_linked_belts) or runtime scripting in mods or scenarios. [LuaEntity::connect_linked_belts](runtime:LuaEntity::connect_linked_belts) and other runtime functions.","parent":"TransportBeltConnectablePrototype","abstract":false,"typename":"linked-belt","deprecated":false,"properties":[{"name":"allow_blueprint_connection","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_clone_connection","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_side_loading","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"structure","order":0,"description":"","override":false,"type":"LinkedBeltStructure","optional":true},{"name":"structure_render_layer","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}}]},{"name":"LinkedContainerPrototype","order":149,"description":"A container that shares its inventory with containers with the same [link_id](runtime:LuaEntity::link_id), which can be set via the GUI. The link IDs are per prototype and force, so only containers with the **same ID**, **same prototype name** and **same force** will share inventories.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"linked-container","deprecated":false,"properties":[{"name":"circuit_connector","order":9,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":6,"description":"The maximum circuit wire distance for this linked container.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"gui_mode","order":5,"description":"Players that can access the GUI to change the link ID.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"all"},{"complex_type":"literal","value":"none"},{"complex_type":"literal","value":"admins"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"all"}},{"name":"inventory_properties","order":3,"description":"Only used when `inventory_type` is `\"with_custom_stack_size\"`.","override":false,"type":"InventoryWithCustomStackSizeSpecification","optional":true},{"name":"inventory_size","order":0,"description":"Must be > 0.","override":false,"type":"ItemStackIndex","optional":false},{"name":"inventory_type","order":2,"description":"Determines the type of inventory that this linked container has. Whether the inventory has a limiter bar, can be filtered (like cargo wagons), uses a custom stack size for contained item stacks (like artillery wagon), or uses a weight limit (like space age rocket silo).","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"normal"},{"complex_type":"literal","value":"with_bar"},{"complex_type":"literal","value":"with_filters_and_bar"},{"complex_type":"literal","value":"with_custom_stack_size"},{"complex_type":"literal","value":"with_weight_limit"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"with_bar"}},{"name":"inventory_weight_limit","order":4,"description":"Only used when `inventory_type` is `\"with_weight_limit\"`.","override":false,"type":"Weight","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"picture","order":1,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"Loader1x1Prototype","order":150,"description":"Continuously loads and unloads machines, as an alternative to inserters.\n\nThis loader type is identical to [Loader1x2Prototype](prototype:Loader1x2Prototype) with the exception of its hardcoded belt_distance. The belt_distance of the loader determines the distance between the position of this loader and the tile of the loader's belt target.\n\nThis loader type always has a belt_distance of 0, meaning by default it is 1 tile long in total. For a loader type with a belt_distance of 0.5, see [Loader1x2Prototype](prototype:Loader1x2Prototype).","parent":"LoaderPrototype","abstract":false,"typename":"loader-1x1","deprecated":false,"properties":[]},{"name":"Loader1x2Prototype","order":151,"description":"Continuously loads and unloads machines, as an alternative to inserters.\n\nThis loader type is identical to [Loader1x1Prototype](prototype:Loader1x1Prototype) with the exception of its hardcoded belt_distance. The belt_distance of the loader determines the distance between the position of this loader and the tile of the loader's belt target.\n\nThis loader type always has a belt_distance of 0.5, meaning by default it is 2 tiles long in total. For a loader type with a belt_distance of 0, see [Loader1x1Prototype](prototype:Loader1x1Prototype).","parent":"LoaderPrototype","abstract":false,"typename":"loader","deprecated":false,"properties":[]},{"name":"LoaderPrototype","order":152,"description":"Continuously loads and unloads machines, as an alternative to inserters.","parent":"TransportBeltConnectablePrototype","abstract":true,"deprecated":false,"properties":[{"name":"adjustable_belt_stack_size","order":9,"description":"Loader belt stack size can be adjusted at runtime. Requires [LoaderPrototype::max_belt_stack_size](prototype:LoaderPrototype::max_belt_stack_size) to be > 1.","visibility":["space_age"],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"allow_container_interaction","order":6,"description":"Whether this loader can load and unload stationary inventories such as containers and crafting machines.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_rail_interaction","order":5,"description":"Whether this loader can load and unload [RollingStockPrototype](prototype:RollingStockPrototype).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"belt_length","order":12,"description":"How long this loader's belt is. Should be the same as belt_distance, which is hardcoded to `0.5` for [Loader1x2Prototype](prototype:Loader1x2Prototype) and to 0 for [Loader1x1Prototype](prototype:Loader1x1Prototype). See the linked prototypes for an explanation of belt_distance.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"circuit_connector","order":18,"description":"First the four cardinal directions for `direction_out`, followed by the four directions for `direction_in`.","override":false,"type":{"complex_type":"array","value":"CircuitConnectorDefinition"},"optional":true},{"name":"circuit_connector_layer","order":3,"description":"Render layer for all directions of the circuit connectors.","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"circuit_wire_max_distance","order":15,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"container_distance","order":4,"description":"The distance between the position of this loader and the tile of the loader's container target.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.5}},{"name":"draw_circuit_wires","order":17,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":16,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_per_item","order":14,"description":"Energy in Joules. Can't be negative.","override":false,"type":"Energy","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"energy_source","order":13,"description":"","override":false,"type":{"complex_type":"union","options":["ElectricEnergySource","HeatEnergySource","FluidEnergySource","VoidEnergySource"],"full_format":false},"optional":true},{"name":"filter_count","order":1,"description":"How many item filters this loader has. Maximum count of filtered items in loader is 5.","override":false,"type":"uint8","optional":false},{"name":"max_belt_stack_size","order":8,"description":"Loader will not create stacks on belt that are larger than this value. Must be >= 1.","visibility":["space_age"],"override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"per_lane_filters","order":7,"description":"If filters are per lane. Can only be set to true if filter_count is equal to 2.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"respect_insert_limits","order":11,"description":"When set, this loader will respect the same automated insertion limits as inserters do, instead of inserting up to the full ingredient stack capacity.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"structure","order":0,"description":"","override":false,"type":"LoaderStructure","optional":true},{"name":"structure_render_layer","order":2,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"wait_for_full_stack","order":10,"description":"When set, this loader will ignore items for which there is not enough to create a full belt stack. Relevant only when loader can create belt stacks.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"LocomotivePrototype","order":153,"description":"A [locomotive](https://wiki.factorio.com/Locomotive).","parent":"RollingStockPrototype","abstract":false,"typename":"locomotive","deprecated":false,"properties":[{"name":"darkness_to_render_light_animation","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.3}},{"name":"energy_source","order":2,"description":"","override":false,"type":{"complex_type":"union","options":["BurnerEnergySource","VoidEnergySource"],"full_format":false},"optional":false},{"name":"front_light","order":3,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"front_light_pictures","order":4,"description":"","override":false,"type":"RollingStockRotatedSlopedGraphics","optional":true},{"name":"max_power","order":0,"description":"","override":false,"type":"Energy","optional":false},{"name":"max_snap_to_train_stop_distance","order":6,"description":"In tiles. A locomotive will snap to a nearby train stop when the player places it within this distance to the stop.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":3.0}},{"name":"reversing_power_modifier","order":1,"description":"","override":false,"type":"double","optional":false}]},{"name":"LogisticContainerPrototype","order":154,"description":"A generic container, such as a chest, that interacts with the logistics network.","parent":"ContainerPrototype","abstract":false,"typename":"logistic-container","deprecated":false,"properties":[{"name":"animation","order":5,"description":"Drawn when a robot brings/takes items from this container.","override":false,"type":"Animation","optional":true},{"name":"animation_sound","order":8,"description":"Played when a robot brings/takes items from this container. Only loaded if `animation` is defined.","override":false,"type":"Sound","optional":true},{"name":"landing_location_offset","order":6,"description":"The offset from the center of this container where a robot visually brings/takes items.","override":false,"type":"Vector","optional":true},{"name":"logistic_mode","order":0,"description":"The way this chest interacts with the logistic network.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"active-provider","description":""},{"complex_type":"literal","value":"passive-provider","description":""},{"complex_type":"literal","value":"requester","description":""},{"complex_type":"literal","value":"storage","description":""},{"complex_type":"literal","value":"buffer","description":""}],"full_format":true},"optional":false},{"name":"max_logistic_slots","order":1,"description":"The number of request slots this logistics container has. Requester-type containers must have > 0 slots and can have a maximum of [UtilityConstants::max_logistic_filter_count](prototype:UtilityConstants::max_logistic_filter_count) slots. Storage-type containers must have <= 1 slot.","override":false,"type":"uint16","optional":true},{"name":"opened_duration","order":4,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"render_not_in_network_icon","order":3,"description":"Whether the \"no network\" icon should be rendered on this entity if the entity is not within a logistics network.","images":[{"filename":"too-far-from-roboport-icon.png"}],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"trash_inventory_size","order":2,"description":"","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"use_exact_mode","order":7,"description":"Whether logistic robots have to deliver the exact amount of items requested to this logistic container instead of over-delivering (within their cargo size).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"LogisticRobotPrototype","order":155,"description":"A [logistic robot](https://wiki.factorio.com/Logistic_robot).","parent":"RobotWithLogisticInterfacePrototype","abstract":false,"typename":"logistic-robot","deprecated":false,"properties":[{"name":"collision_box","order":4,"description":"Must have a collision box size of zero.","examples":["```\ncollision_box = {{0, 0}, {0, 0}}\n```"],"override":true,"type":"BoundingBox","optional":true,"default":"Empty = `{{0, 0}, {0, 0}}`"},{"name":"idle_with_cargo","order":0,"description":"Only the first frame of the animation is drawn. This means that the graphics for the idle state cannot be animated.","override":false,"type":"RotatedAnimation","optional":true},{"name":"in_motion_with_cargo","order":1,"description":"Only the first frame of the animation is drawn. This means that the graphics for the in_motion state cannot be animated.","override":false,"type":"RotatedAnimation","optional":true},{"name":"shadow_idle_with_cargo","order":2,"description":"Only the first frame of the animation is drawn. This means that the graphics for the idle state cannot be animated.","override":false,"type":"RotatedAnimation","optional":true},{"name":"shadow_in_motion_with_cargo","order":3,"description":"Only the first frame of the animation is drawn. This means that the graphics for the in_motion state cannot be animated.","override":false,"type":"RotatedAnimation","optional":true}]},{"name":"MapGenPresets","order":156,"description":"The available map gen presets.","examples":["```\n{\n  type = \"map-gen-presets\",\n  name = \"default\",\n  [\"marathon\"] =\n  {\n    order = \"c\",\n    basic_settings =\n    {\n      property_expression_names = {},\n    },\n    advanced_settings =\n    {\n      difficulty_settings =\n      {\n        technology_price_multiplier = 4\n      }\n    }\n  },\n  [\"island\"] =\n  {\n    order = \"h\",\n    basic_settings =\n    {\n      property_expression_names =\n      {\n        elevation = \"elevation_island\",\n        moisture = \"moisture_basic\",\n        aux = \"aux_basic\",\n        cliffiness = \"cliffiness_basic\",\n        cliff_elevation = \"cliff_elevation_from_elevation\",\n        trees_forest_path_cutout = 1\n      },\n      cliff_settings =\n      {\n        cliff_smoothing = 1\n      },\n      autoplace_controls =\n      {\n        [\"trees\"] =\n        {\n          frequency = 1,\n          size = 0.5\n        }\n      }\n    }\n  }\n}\n```"],"abstract":false,"typename":"map-gen-presets","instance_limit":1,"deprecated":false,"properties":[{"name":"name","order":1,"description":"Name of the map gen presets. Base game uses \"default\".","override":false,"type":"string","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"map-gen-presets"},"optional":false}],"custom_properties":{"description":"Presets are defined as uniquely named [MapGenPreset](prototype:MapGenPreset) properties of the prototype. Zero or more named presets can be specified within the prototype.","key_type":"string","value_type":"MapGenPreset"}},{"name":"MapSettings","order":157,"description":"The default map settings.","abstract":false,"typename":"map-settings","instance_limit":1,"deprecated":false,"properties":[{"name":"asteroids","order":10,"description":"","override":false,"type":"AsteroidSettings","optional":false},{"name":"difficulty_settings","order":9,"description":"","override":false,"type":"DifficultySettings","optional":false},{"name":"enemy_evolution","order":4,"description":"","override":false,"type":"EnemyEvolutionSettings","optional":false},{"name":"enemy_expansion","order":5,"description":"","override":false,"type":"EnemyExpansionSettings","optional":false},{"name":"max_failed_behavior_count","order":8,"description":"If a behavior fails this many times, the enemy (or enemy group) is destroyed. This solves biters stuck within their own base.","override":false,"type":"uint32","optional":false},{"name":"name","order":1,"description":"Name of the map-settings. Base game uses \"map-settings\".","override":false,"type":"string","optional":false},{"name":"path_finder","order":7,"description":"","override":false,"type":"PathFinderSettings","optional":false},{"name":"pollution","order":2,"description":"","override":false,"type":"PollutionSettings","optional":false},{"name":"steering","order":3,"description":"","override":false,"type":"SteeringSettings","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"map-settings"},"optional":false},{"name":"unit_group","order":6,"description":"","override":false,"type":"UnitGroupSettings","optional":false}]},{"name":"MarketPrototype","order":158,"description":"Offers can be added to a market and they are shown when opening the entity. Offers allow to spend items to get research bonuses or items.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"market","deprecated":false,"properties":[{"name":"allow_access_to_all_forces","order":1,"description":"Whether all forces are allowed to open this market.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"picture","order":0,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"MiningDrillPrototype","order":159,"description":"A mining drill for automatically extracting resources from [resource entities](prototype:ResourceEntityPrototype). This prototype type is used by [burner mining drill](https://wiki.factorio.com/Burner_mining_drill), [electric mining drill](https://wiki.factorio.com/Electric_mining_drill) and [pumpjack](https://wiki.factorio.com/Pumpjack) in vanilla.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"mining-drill","deprecated":false,"properties":[{"name":"allowed_effects","order":16,"description":"Sets the [modules](prototype:ModulePrototype) and [beacon](prototype:BeaconPrototype) effects that are allowed to be used on this mining drill.","override":false,"type":"EffectTypeLimitation","optional":true,"default":"All effects are allowed"},{"name":"allowed_module_categories","order":17,"description":"Sets the [module categories](prototype:ModuleCategory) that are allowed to be inserted into this machine.","override":false,"type":{"complex_type":"array","value":"ModuleCategoryID"},"optional":true,"default":"All module categories are allowed"},{"name":"base_picture","order":12,"description":"Used by the [pumpjack](https://wiki.factorio.com/Pumpjack) to have a static 4 way sprite.","override":false,"type":"Sprite4Way","optional":true},{"name":"base_render_layer","order":22,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"lower-object"}},{"name":"circuit_connector","order":33,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_wire_max_distance","order":19,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":21,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":20,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"drilling_sound","order":29,"description":"","override":false,"type":"InterruptibleSound","optional":true},{"name":"drilling_sound_animation_end_frame","order":31,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"drilling_sound_animation_start_frame","order":30,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"drops_full_belt_stacks","order":25,"description":"","visibility":["space_age"],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"effect_receiver","order":13,"description":"","override":false,"type":"EffectReceiver","optional":true},{"name":"energy_source","order":5,"description":"The energy source of this mining drill.","override":false,"type":"EnergySource","optional":false},{"name":"energy_usage","order":3,"description":"The amount of energy used by the drill while mining. Can't be less than or equal to 0.","examples":["```\nenergy_usage = \"150kW\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"filter_count","order":34,"description":"How many filters this mining drill has. Maximum count of filtered resources in a mining drill is 5.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"graphics_set","order":9,"description":"","override":false,"type":"MiningDrillGraphicsSet","optional":true},{"name":"input_fluid_box","order":8,"description":"","override":false,"type":"FluidBox","optional":true},{"name":"mining_speed","order":4,"description":"The speed of this drill.","override":false,"type":"double","optional":false},{"name":"module_slots","order":14,"description":"The number of module slots in this machine.","override":false,"type":"ItemStackIndex","optional":true},{"name":"monitor_visualization_tint","order":32,"description":"When this mining drill is connected to the circuit network, the resource that it is reading (either the entire resource patch, or the resource in the mining area of the drill, depending on circuit network setting), is tinted in this color when mousing over the mining drill.","override":false,"type":"Color","optional":true},{"name":"moving_sound","order":28,"description":"","override":false,"type":"InterruptibleSound","optional":true},{"name":"output_fluid_box","order":7,"description":"","override":false,"type":"FluidBox","optional":true},{"name":"perceived_performance","order":11,"description":"Affects animation speed.","override":false,"type":"PerceivedPerformance","optional":true},{"name":"quality_affects_mining_radius","order":27,"description":"If set, [QualityPrototype::mining_drill_mining_radius_bonus](prototype:QualityPrototype::mining_drill_mining_radius_bonus) will be added to resource_searching_radius.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"quality_affects_module_slots","order":15,"description":"If set, [QualityPrototype::mining_drill_module_slots_bonus](prototype:QualityPrototype::mining_drill_module_slots_bonus) will be added to module slots count.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"radius_visualisation_picture","order":18,"description":"The sprite used to show the range of the mining drill.","override":false,"type":"Sprite","optional":true},{"name":"resource_categories","order":6,"description":"The names of the [ResourceCategory](prototype:ResourceCategory) that can be mined by this drill. For a list of built-in categories, see [here](https://wiki.factorio.com/Data.raw#resource-category).\n\nNote: Categories containing resources which produce items, fluids, or items+fluids may be combined on the same entity, but may not work as expected. Examples: Miner does not rotate fluid-resulting resources until depletion. Fluid isn't output (fluid resource change and fluidbox matches previous fluid). Miner with no `vector_to_place_result` can't output an item result and halts.","override":false,"type":{"complex_type":"array","value":"ResourceCategoryID"},"optional":false},{"name":"resource_drain_rate_percent","order":23,"description":"May not be `0` or larger than `100`.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":100}},{"name":"resource_searching_offset","order":2,"description":"Offset of the `resource_searching_radius` from the entity center when the mining drill is facing north.","override":false,"type":"Vector","optional":true,"default":"`{0, 0}`"},{"name":"resource_searching_radius","order":1,"description":"The distance from the center of the mining drill to search for resources in.\n\nThis is 2.49 for electric mining drills (a 5x5 area) and 0.99 for burner mining drills (a 2x2 area). The drill searches resource outside its natural boundary box, which is 0.01 (the middle of the entity); making it 2.5 and 1.0 gives it another block radius.","override":false,"type":"double","optional":false},{"name":"shuffle_resources_to_mine","order":24,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"uses_force_mining_productivity_bonus","order":26,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"vector_to_place_result","order":0,"description":"The position where any item results are placed, when the mining drill is facing north (default direction). If the drill does not produce any solid items but uses a fluidbox output instead (e.g. pumpjacks), a vector of `{0,0}` disables the yellow arrow alt-mode indicator for the placed item location.","override":false,"type":"Vector","optional":false},{"name":"wet_mining_graphics_set","order":10,"description":"","override":false,"type":"MiningDrillGraphicsSet","optional":true}]},{"name":"ModData","order":160,"description":"Block of arbitrary data set by mods in data stage.","parent":"Prototype","abstract":false,"typename":"mod-data","deprecated":false,"properties":[{"name":"data","order":1,"description":"","override":false,"type":{"complex_type":"dictionary","key":"string","value":"AnyBasic"},"optional":false},{"name":"data_type","order":0,"description":"Arbitrary string that mods can use to declare type of data. Can be used for mod compatibility when one mod declares block of data that is expected to be discovered by another mod.","examples":["```\ndata_type = \"my-mod.my_structure\"\n```"],"override":false,"type":"string","optional":true}]},{"name":"ModuleCategory","order":161,"description":"A module category. The built-in categories can be found [here](https://wiki.factorio.com/Data.raw#module-category). See [ModulePrototype::category](prototype:ModulePrototype::category).","parent":"Prototype","abstract":false,"typename":"module-category","instance_limit":255,"deprecated":false,"properties":[]},{"name":"ModulePrototype","order":162,"description":"A [module](https://wiki.factorio.com/Module). They are used to affect the capabilities of existing machines, for example by increasing the crafting speed of a [crafting machine](prototype:CraftingMachinePrototype).","parent":"ItemPrototype","abstract":false,"typename":"module","deprecated":false,"properties":[{"name":"art_style","order":4,"description":"Chooses with what art style the module is shown inside [beacons](prototype:BeaconPrototype). See [BeaconModuleVisualizations::art_style](prototype:BeaconModuleVisualizations::art_style). Vanilla uses `\"vanilla\"` here.","override":false,"type":"string","optional":true},{"name":"beacon_tint","order":5,"description":"","override":false,"type":"BeaconVisualizationTints","optional":true},{"name":"category","order":0,"description":"Used when upgrading modules: Ctrl + click modules into an entity and it will replace lower tier modules of the same category with higher tier modules.","override":false,"type":"ModuleCategoryID","optional":false},{"name":"effect","order":2,"description":"The effect of the module on the machine it's inserted in, such as increased pollution.","override":false,"type":"Effect","optional":false},{"name":"requires_beacon_alt_mode","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"tier","order":1,"description":"Tier of the module inside its category. Used when upgrading modules: Ctrl + click modules into an entity and it will replace lower tier modules with higher tier modules if they have the same category.","override":false,"type":"uint32","optional":false}]},{"name":"ModuleTransferAchievementPrototype","order":163,"description":"This prototype is used for receiving an achievement when the player moves a module with the cursor.","parent":"AchievementPrototype","abstract":false,"typename":"module-transfer-achievement","deprecated":false,"properties":[{"name":"amount","order":1,"description":"How many modules need to be transferred.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"limited_to_one_game","order":2,"description":"If this is false, the player carries over their statistics from this achievement through all their saves.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"module","order":0,"description":"This will trigger the achievement, if this module is transferred.","examples":["```\nmodule = \"quality-module\"\n```"],"override":false,"type":{"complex_type":"union","options":["ItemID",{"complex_type":"array","value":"ItemID"}],"full_format":false},"optional":false}]},{"name":"MouseCursor","order":164,"description":"Used by [SelectionToolPrototype::mouse_cursor](prototype:SelectionToolPrototype::mouse_cursor).","examples":["```\n{\n  type = \"mouse-cursor\",\n  name = \"selection-tool-cursor\",\n  filename = \"__core__/graphics/cross-select-x32.png\",\n  hot_pixel_x = 16,\n  hot_pixel_y = 16\n}\n```","```\n{\n  type = \"mouse-cursor\",\n  name = \"system-crosshair\",\n  system_cursor = \"crosshair\"\n}\n```"],"abstract":false,"typename":"mouse-cursor","deprecated":false,"properties":[{"name":"filename","order":3,"description":"Mandatory if `system_cursor` is not defined.","override":false,"type":"FileName","optional":true},{"name":"hot_pixel_x","order":4,"description":"Mandatory if `system_cursor` is not defined.","override":false,"type":"int16","optional":true},{"name":"hot_pixel_y","order":5,"description":"Mandatory if `system_cursor` is not defined.","override":false,"type":"int16","optional":true},{"name":"name","order":1,"description":"Name of the prototype.","override":false,"type":"string","optional":false},{"name":"system_cursor","order":2,"description":"Either this or the other three properties have to be present.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"arrow"},{"complex_type":"literal","value":"i-beam"},{"complex_type":"literal","value":"crosshair"},{"complex_type":"literal","value":"wait-arrow"},{"complex_type":"literal","value":"size-all"},{"complex_type":"literal","value":"no"},{"complex_type":"literal","value":"hand"}],"full_format":false},"optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"mouse-cursor"},"optional":false}]},{"name":"MovementBonusEquipmentPrototype","order":165,"description":"Used by [exoskeleton](https://wiki.factorio.com/Exoskeleton). Increases max speed of characters or acceleration of vehicles if they have this equipment in their grid.","parent":"EquipmentPrototype","abstract":false,"typename":"movement-bonus-equipment","deprecated":false,"properties":[{"name":"energy_consumption","order":0,"description":"","override":false,"type":"Energy","optional":false},{"name":"movement_bonus","order":1,"description":"Multiplier of the character speed/vehicle acceleration.","override":false,"type":"double","optional":false}]},{"name":"NamedNoiseExpression","order":166,"description":"A [NoiseExpression](prototype:NoiseExpression) with a name. The base game uses named noise expressions to specify functions for many map properties to be used in map generation; e.g. the \"elevation\" expression is used to calculate elevation for every point on a map. For a list of the built-in named noise expressions, see [data.raw](https://wiki.factorio.com/Data.raw#noise-expression).\n\nNamed noise expressions can be used by [MapGenSettings](prototype:MapGenSettings) and [MapGenPreset](prototype:MapGenPreset) to override which named expression is used to calculate a given property by having an entry in `property_expression_names`, e.g. `elevation = \"elevation_island\"`.\n\nAlternate expressions can be made available in the map generator GUI by setting their `intended_property` to the name of the property they should override.\n\nNamed noise expressions can also be used as [noise variables](runtime:noise-expressions) e.g. `var(\"my-noise-expression\")`.","examples":["```\n{\n  type = \"noise-expression\",\n  name = \"distance\",\n  expression = \"distance_from_nearest_point{x = x, y = y, points = starting_positions}\"\n}\n```"],"parent":"Prototype","abstract":false,"typename":"noise-expression","deprecated":false,"properties":[{"name":"expression","order":0,"description":"The noise expression itself. This is where most of the noise magic happens.","override":false,"type":"NoiseExpression","optional":false},{"name":"intended_property","order":3,"description":"Names the property that this expression is intended to provide a value for, if any. This will make the expression show up as an option in the map generator GUI, unless it is the only expression with that intended property, in which case it will be hidden and selected by default.\n\nFor example if a noise expression is intended to be used as an alternative temperature generator, `intended_property` should be \"temperature\".","override":false,"type":"string","optional":true},{"name":"local_expressions","order":1,"description":"A map of expression name to expression.\n\nLocal expressions are meant to store data locally similar to local variables in Lua. Their purpose is to hold noise expressions used multiple times in the named noise expression, or just to tell the reader that the local expression has a specific purpose. Local expressions can access other local definitions, but recursive definitions aren't supported.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"NoiseExpression"},"optional":true},{"name":"local_functions","order":2,"description":"A map of function name to function.\n\nLocal functions serve the same purpose as local expressions - they aren't visible outside of the specific prototype and they have access to other local definitions.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"NoiseFunction"},"optional":true},{"name":"order","order":4,"description":"Used to order alternative expressions in the map generator GUI. For a given property (e.g. 'temperature'), the NamedNoiseExpression with that property's name as its `intended_property` with the lowest order will be chosen as the default in the GUI.\n\nIf no order is specified, it defaults to \"2000\" if the property name matches the expression name (making it the 'technical default' generator for the property if none is specified in MapGenSettings), or \"3000\" otherwise. A generator defined with an order less than \"2000\" but with a unique name can thereby override the default generator used when creating a new map through the GUI without automatically overriding the 'technical default' generator, which is probably used by existing maps.","override":true,"type":"Order","optional":true}]},{"name":"NamedNoiseFunction","order":167,"description":"Named noise functions are defined in the same way as [NamedNoiseExpression](prototype:NamedNoiseExpression) except that they also have parameters.\n\nNamed noise functions are available to be used in [NoiseExpressions](prototype:NoiseExpression).","examples":["```\n{\n  type = \"noise-function\",\n  name = \"random_between\",\n  parameters = {\"from\", \"to\"},\n  expression = \"random_penalty{x = x, y = y, source = to, amplitude = to - from}\"\n}\n```","```\n{\n  type = \"noise-function\",\n  name = \"finish_elevation\",\n  parameters = {\"elevation\", \"segmentation_multiplier\"},\n  expression = \"min((elevation - water_level) / segmentation_multiplier, <more stuff>, starting_lake_distance / 16 + starting_lake_noise / 2)\",\n  local_expressions =\n  {\n    starting_lake_distance = \"distance_from_nearest_point{x = x, y = y, points = starting_lake_positions, maximum_distance = 1024}\",\n    starting_lake_noise = \"quick_multioctave_noise_persistence{<more stuff>}\"\n  }\n}\n```"],"parent":"Prototype","abstract":false,"typename":"noise-function","deprecated":false,"properties":[{"name":"expression","order":1,"description":"","override":false,"type":"NoiseExpression","optional":false},{"name":"local_expressions","order":2,"description":"A map of expression name to expression.\n\nLocal expressions are meant to store data locally similar to local variables in Lua. Their purpose is to hold noise expressions used multiple times in the named noise expression, or just to tell the reader that the local expression has a specific purpose. Local expressions can access other local definitions and also function parameters, but recursive definitions aren't supported.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"NoiseExpression"},"optional":true},{"name":"local_functions","order":3,"description":"A map of function name to function.\n\nLocal functions serve the same purpose as local expressions - they aren't visible outside of the specific prototype and they have access to other local definitions.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"NoiseFunction"},"optional":true},{"name":"parameters","order":0,"description":"The order of the parameters matters because functions can also be called with positional arguments.\n\nA function can't have more than 255 parameters.","override":false,"type":{"complex_type":"array","value":"string"},"optional":false}]},{"name":"NightVisionEquipmentPrototype","order":168,"description":"Used by [nightvision](https://wiki.factorio.com/Nightvision).","parent":"EquipmentPrototype","abstract":false,"typename":"night-vision-equipment","deprecated":false,"properties":[{"name":"activate_sound","order":3,"description":"","override":false,"type":"Sound","optional":true},{"name":"color_lookup","order":1,"description":"","override":false,"type":"DaytimeColorLookupTable","optional":false},{"name":"darkness_to_turn_on","order":2,"description":"Must be >= 0 and <= 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"deactivate_sound","order":4,"description":"","override":false,"type":"Sound","optional":true},{"name":"energy_input","order":0,"description":"","override":false,"type":"Energy","optional":false}]},{"name":"OffshorePumpPrototype","order":169,"description":"An [offshore pump](https://wiki.factorio.com/Offshore_pump).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"offshore-pump","deprecated":false,"properties":[{"name":"always_draw_fluid","order":8,"description":"If false, the offshore pump will not show fluid present (visually) before there is an output connected. The pump will also animate yet not show fluid when the fluid is 100% extracted (e.g. such as with a pump).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"circuit_connector","order":12,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_wire_max_distance","order":9,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":11,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":10,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_source","order":5,"description":"Defines how the offshore pump is powered.\n\nWhen using an electric energy source and `drain` is not specified, it will be set to `energy_usage \u00f7 30` automatically.","override":false,"type":"EnergySource","optional":false},{"name":"energy_usage","order":6,"description":"Sets how much energy this offshore pump consumes. Energy usage has to be positive.","examples":["```\nenergy_usage = \"60kW\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"fluid_box","order":0,"description":"","override":false,"type":"FluidBox","optional":false},{"name":"fluid_source_offset","order":2,"description":"","override":false,"type":"Vector","optional":false},{"name":"graphics_set","order":4,"description":"","override":false,"type":"OffshorePumpGraphicsSet","optional":true},{"name":"perceived_performance","order":3,"description":"Affects animation speed.","override":false,"type":"PerceivedPerformance","optional":true},{"name":"pumping_speed","order":1,"description":"How many units of fluid are produced per tick. Must be > 0.","override":false,"type":"FluidAmount","optional":false},{"name":"remove_on_tile_collision","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"ParticlePrototype","order":170,"description":"An entity with a limited lifetime that can use trigger effects.","parent":"Prototype","abstract":false,"typename":"optimized-particle","deprecated":false,"properties":[{"name":"draw_shadow_when_on_ground","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"ended_in_water_trigger_effect","order":5,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"ended_on_ground_trigger_effect","order":6,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"fade_away_duration","order":14,"description":"Defaults to `life_time` / 5, but at most 60. If this is 0, it is silently changed to 1.","override":false,"type":"uint16","optional":true},{"name":"life_time","order":1,"description":"Can't be 1.","override":false,"type":"uint16","optional":false},{"name":"mining_particle_frame_speed","order":13,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"movement_modifier","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"movement_modifier_when_on_ground","order":10,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.8}},{"name":"pictures","order":0,"description":"Picture variation count and individual frame count must be equal to shadow variation count.","override":false,"type":"AnimationVariations","optional":true},{"name":"regular_trigger_effect","order":4,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"regular_trigger_effect_frequency","order":9,"description":"Can't be 1.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"render_layer","order":7,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"render_layer_when_on_ground","order":8,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"lower-object"}},{"name":"shadows","order":2,"description":"Shadow variation variation count and individual frame count must be equal to picture variation count.","override":false,"type":"AnimationVariations","optional":true},{"name":"vertical_acceleration","order":12,"description":"Has to be >= -0.01 and <= 0.01.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":-0.004}}]},{"name":"ParticleSourcePrototype","order":171,"description":"Creates particles.","parent":"EntityPrototype","abstract":false,"typename":"particle-source","deprecated":false,"properties":[{"name":"height","order":2,"description":"","override":false,"type":"float","optional":false},{"name":"height_deviation","order":9,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"horizontal_speed","order":4,"description":"","override":false,"type":"float","optional":false},{"name":"horizontal_speed_deviation","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"particle","order":5,"description":"Mandatory if `smoke` is not defined.","override":false,"type":"ParticleID","optional":true},{"name":"smoke","order":6,"description":"Mandatory if `particle` is not defined.","override":false,"type":{"complex_type":"array","value":"SmokeSource"},"optional":true},{"name":"time_before_start","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"time_before_start_deviation","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"time_to_live","order":0,"description":"","override":false,"type":"float","optional":false},{"name":"time_to_live_deviation","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"vertical_speed","order":3,"description":"","override":false,"type":"float","optional":false},{"name":"vertical_speed_deviation","order":10,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"PipePrototype","order":172,"description":"An entity to transport fluids over a distance and between machines.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"pipe","deprecated":false,"properties":[{"name":"fluid_box","order":0,"description":"The area of the entity where fluid/gas inputs, and outputs.","override":false,"type":"FluidBox","optional":false},{"name":"horizontal_window_bounding_box","order":1,"description":"","override":false,"type":"BoundingBox","optional":false},{"name":"pictures","order":3,"description":"All graphics for this pipe.","override":false,"type":"PipePictures","optional":true},{"name":"vertical_window_bounding_box","order":2,"description":"","override":false,"type":"BoundingBox","optional":false}]},{"name":"PipeToGroundPrototype","order":173,"description":"A [pipe to ground](https://wiki.factorio.com/Pipe_to_ground).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"pipe-to-ground","deprecated":false,"properties":[{"name":"disabled_visualization","order":4,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"draw_fluid_icon_override","order":5,"description":"Causes fluid icon to always be drawn, ignoring the usual pair requirement.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"fluid_box","order":0,"description":"","override":false,"type":"FluidBox","optional":false},{"name":"frozen_patch","order":2,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"pictures","order":1,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"visualization","order":3,"description":"","override":false,"type":"Sprite4Way","optional":true}]},{"name":"PlaceEquipmentAchievementPrototype","order":174,"description":"","parent":"AchievementPrototype","abstract":false,"typename":"place-equipment-achievement","deprecated":false,"properties":[{"name":"amount","order":3,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"armor","order":0,"description":"","override":false,"type":"ItemID","optional":false},{"name":"limit_equip_quality","order":2,"description":"","override":false,"type":"QualityID","optional":false},{"name":"limit_quality","order":1,"description":"","override":false,"type":"QualityID","optional":false},{"name":"limited_to_one_game","order":4,"description":"If this is false, the player carries over their statistics from this achievement through all their saves.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"PlanetPrototype","order":175,"description":"","parent":"SpaceLocationPrototype","abstract":false,"typename":"planet","deprecated":false,"properties":[{"name":"entities_require_heating","order":1,"description":"","visibility":["space_age"],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"lightning_properties","order":9,"description":"","override":false,"type":"LightningProperties","optional":true},{"name":"map_gen_settings","order":7,"description":"","override":false,"type":"PlanetPrototypeMapGenSettings","optional":true},{"name":"map_seed_offset","order":0,"description":"","override":false,"type":"uint32","optional":true,"default":"CRC checksum of `name`"},{"name":"persistent_ambient_sounds","order":3,"description":"","override":false,"type":"PersistentWorldAmbientSoundsDefinition","optional":true},{"name":"player_effects","order":5,"description":"","override":false,"type":"Trigger","optional":true},{"name":"pollutant_type","order":2,"description":"","override":false,"type":"AirbornePollutantID","optional":true},{"name":"surface_properties","order":8,"description":"","override":false,"type":{"complex_type":"dictionary","key":"SurfacePropertyID","value":"double"},"optional":true},{"name":"surface_render_parameters","order":4,"description":"","override":false,"type":"SurfaceRenderParameters","optional":true},{"name":"ticks_between_player_effects","order":6,"description":"","override":false,"type":"MapTick","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"PlantPrototype","order":176,"description":"","visibility":["space_age"],"parent":"TreePrototype","abstract":false,"typename":"plant","deprecated":false,"properties":[{"name":"agricultural_tower_tint","order":2,"description":"","override":false,"type":"RecipeTints","optional":true},{"name":"growth_ticks","order":0,"description":"Must be positive.","override":false,"type":"MapTick","optional":false},{"name":"harvest_emissions","order":1,"description":"The burst of pollution to emit when the plant is harvested.","override":false,"type":{"complex_type":"dictionary","key":"AirbornePollutantID","value":"double"},"optional":true}]},{"name":"PlayerDamagedAchievementPrototype","order":177,"description":"This prototype is used for receiving an achievement when the player receives damage.","parent":"AchievementPrototype","abstract":false,"typename":"player-damaged-achievement","deprecated":false,"properties":[{"name":"minimum_damage","order":0,"description":"This will trigger the achievement, if the amount of damage taken by the dealer, is more than this.","examples":["```\nminimum_damage = 500\n```"],"override":false,"type":"float","optional":false},{"name":"should_survive","order":1,"description":"This sets the achievement to only trigger, if you survive the minimum amount of damage. If you don't need to survive, false.","examples":["```\nshould_survive = true\n```"],"override":false,"type":"boolean","optional":false},{"name":"type_of_dealer","order":2,"description":"This will trigger the achievement, if the player takes damage from this specific entity type.","examples":["```\ntype_of_dealer = \"locomotive\"\n```"],"override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}}]},{"name":"PlayerPortPrototype","order":178,"description":"Deprecated in 2.0.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"player-port","deprecated":true,"properties":[]},{"name":"PowerSwitchPrototype","order":179,"description":"A [power switch](https://wiki.factorio.com/Power_switch).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"power-switch","deprecated":false,"properties":[{"name":"circuit_wire_connection_point","order":7,"description":"","override":false,"type":"WireConnectionPoint","optional":false},{"name":"draw_circuit_wires","order":12,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":11,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"frozen_patch","order":5,"description":"","override":false,"type":"Sprite","optional":true},{"name":"led_off","order":4,"description":"","override":false,"type":"Sprite","optional":true},{"name":"led_on","order":3,"description":"","override":false,"type":"Sprite","optional":true},{"name":"left_wire_connection_point","order":8,"description":"","override":false,"type":"WireConnectionPoint","optional":false},{"name":"overlay_loop","order":2,"description":"","override":false,"type":"Animation","optional":true},{"name":"overlay_start","order":1,"description":"","override":false,"type":"Animation","optional":true},{"name":"overlay_start_delay","order":6,"description":"","override":false,"type":"uint8","optional":false},{"name":"power_on_animation","order":0,"description":"","override":false,"type":"Animation","optional":true},{"name":"right_wire_connection_point","order":9,"description":"","override":false,"type":"WireConnectionPoint","optional":false},{"name":"wire_max_distance","order":10,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"ProcessionLayerInheritanceGroup","order":180,"description":"Helps [ProcessionLayers](prototype:ProcessionLayer) pass properties between subsequent transitions if they belong to the same group.","parent":"Prototype","abstract":false,"typename":"procession-layer-inheritance-group","instance_limit":255,"deprecated":false,"properties":[{"name":"arrival_application","order":1,"description":"","override":false,"type":"TransitionApplication","optional":true},{"name":"intermezzo_application","order":0,"description":"","override":false,"type":"TransitionApplication","optional":true}]},{"name":"ProcessionPrototype","order":181,"description":"Describes the duration and visuals of a departure, arrival or an intermezzo while traveling between surfaces. Usually provided inside of a [ProcessionSet](prototype:ProcessionSet).","parent":"Prototype","abstract":false,"typename":"procession","deprecated":false,"properties":[{"name":"ground_timeline","order":1,"description":"Used alternatively when landing to ground.","override":false,"type":"ProcessionTimeline","optional":true},{"name":"procession_style","order":3,"description":"Indexes used to match transitions from different surfaces together. Only a single intermezzo of a given procession_style may exist.","examples":["```\nGoing from Surface A -> Surface B\nSurface A has departures: [1, 3, 4]\nSurface B has arrivals:   [2, 3, 5]\nThis trip will select:\nDeparture 3 -> (Intermezzo 3) -> Arrival 3\n```"],"override":false,"type":{"complex_type":"union","options":["uint32",{"complex_type":"array","value":"uint32"}],"full_format":false},"optional":false},{"name":"timeline","order":0,"description":"Used when leaving or arriving to a station.","override":false,"type":"ProcessionTimeline","optional":false},{"name":"usage","order":2,"description":"Arrival and Departure are to be referenced by name. All intermezzos are collected during loading and filled in by `procession_style`.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"departure"},{"complex_type":"literal","value":"arrival"},{"complex_type":"literal","value":"intermezzo"}],"full_format":false},"optional":false}]},{"name":"ProduceAchievementPrototype","order":182,"description":"This prototype is used for receiving an achievement when the player produces more than the specified amount of items.","parent":"AchievementPrototype","abstract":false,"typename":"produce-achievement","deprecated":false,"properties":[{"name":"amount","order":0,"description":"This will set the amount of items or fluids needed to craft, for the player to complete the achievement.","examples":["```\namount = 100\n```"],"override":false,"type":"MaterialAmountType","optional":false},{"name":"fluid_product","order":3,"description":"Mandatory if `item_product` is not defined.\n\nThis will tell the achievement what fluid the player needs to craft, to get the achievement.","examples":["```\nfluid_product = \"heavy-oil\"\n```"],"override":false,"type":"FluidID","optional":true},{"name":"item_product","order":2,"description":"Mandatory if `fluid_product` is not defined.\n\nThis will tell the achievement what item the player needs to craft, to get the achievement.","examples":["```\nitem_product = \"pistol\"\n```"],"override":false,"type":"ItemIDFilter","optional":true},{"name":"limited_to_one_game","order":1,"description":"If this is false, the player carries over their statistics from this achievement through all their saves.","override":false,"type":"boolean","optional":false}]},{"name":"ProducePerHourAchievementPrototype","order":183,"description":"This prototype is used for receiving an achievement when the player crafts a specified item a certain amount, in an hour.","parent":"AchievementPrototype","abstract":false,"typename":"produce-per-hour-achievement","deprecated":false,"properties":[{"name":"amount","order":0,"description":"This is how much the player has to craft in an hour, to receive the achievement.","examples":["```\namount = 1000\n```"],"override":false,"type":"MaterialAmountType","optional":false},{"name":"fluid_product","order":2,"description":"Mandatory if `item_product` is not defined.\n\nThis will tell the achievement what fluid the player needs to craft, to get the achievement.","examples":["```\nfluid_product = \"light-oil\"\n```"],"override":false,"type":"FluidID","optional":true},{"name":"item_product","order":1,"description":"Mandatory if `fluid_product` is not defined.\n\nThis will tell the achievement what item the player needs to craft, to get the achievement.","examples":["```\nitem_product = \"landfill\"\n```"],"override":false,"type":"ItemIDFilter","optional":true}]},{"name":"ProgrammableSpeakerPrototype","order":184,"description":"A [programmable speaker](https://wiki.factorio.com/Programmable_speaker).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"programmable-speaker","deprecated":false,"properties":[{"name":"audible_distance_modifier","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"circuit_connector","order":9,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":6,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_source","order":0,"description":"","override":false,"type":{"complex_type":"union","options":["ElectricEnergySource","VoidEnergySource"],"full_format":false},"optional":false},{"name":"energy_usage_per_tick","order":1,"description":"","override":false,"type":"Energy","optional":false},{"name":"instruments","order":4,"description":"","override":false,"type":{"complex_type":"array","value":"ProgrammableSpeakerInstrument"},"optional":false},{"name":"maximum_polyphony","order":3,"description":"","override":false,"type":"uint32","optional":false},{"name":"sprite","order":2,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"ProjectilePrototype","order":185,"description":"Entity with limited lifetime that can hit other entities and has triggers when this happens.","parent":"EntityPrototype","abstract":false,"typename":"projectile","deprecated":false,"properties":[{"name":"acceleration","order":0,"description":"Must be != 0 if `turning_speed_increases_exponentially_with_projectile_speed` is true.","override":false,"type":"double","optional":false},{"name":"action","order":12,"description":"Executed when the projectile hits something.","override":false,"type":"Trigger","optional":true},{"name":"animation","order":1,"description":"","override":false,"type":"RotatedAnimationVariations","optional":true},{"name":"direction_only","order":4,"description":"Setting this to true can be used to disable projectile homing behaviour.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"enable_drawing_with_mask","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"final_action","order":13,"description":"Executed when the projectile hits something, after `action` and only if the entity that was hit was destroyed. The projectile is destroyed right after the final_action.","override":false,"type":"Trigger","optional":true},{"name":"force_condition","order":6,"description":"","override":false,"type":"ForceCondition","optional":true,"default":{"complex_type":"literal","value":"all"}},{"name":"height","order":11,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"hit_at_collision_position","order":5,"description":"When true the entity is hit at the position on its collision box the projectile first collides with. When false the entity is hit at its own position.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"hit_collision_mask","order":16,"description":"Defaults to the mask from [UtilityConstants::default_collision_masks](prototype:UtilityConstants::default_collision_masks) when indexed by `\"projectile/hit\"`.","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"light","order":14,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"max_speed","order":8,"description":"Must be greater than or equal to 0.","override":false,"type":"double","optional":true,"default":"MAX_DOUBLE"},{"name":"piercing_damage","order":7,"description":"Whenever an entity is hit by the projectile, this number gets reduced by the health of the entity. If the number is then below 0, the `final_action` is applied and the projectile destroyed. Otherwise, the projectile simply continues to its destination.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"rotatable","order":2,"description":"Whether the animation of the projectile is rotated to match the direction of travel.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"shadow","order":18,"description":"","override":false,"type":"RotatedAnimationVariations","optional":true},{"name":"smoke","order":15,"description":"","override":false,"type":{"complex_type":"array","value":"SmokeSource"},"optional":true},{"name":"speed_modifier","order":10,"description":"","override":false,"type":"Vector","optional":true,"default":"`{1, 1}`"},{"name":"turn_speed","order":9,"description":"Must be greater than or equal to 0.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"turning_speed_increases_exponentially_with_projectile_speed","order":17,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"Prototype","order":186,"description":"","parent":"PrototypeBase","abstract":true,"deprecated":false,"properties":[{"name":"custom_tooltip_fields","order":1,"description":"Allows to add extra description items to the tooltip and Factoriopedia.","override":false,"type":{"complex_type":"array","value":"CustomTooltipField"},"optional":true},{"name":"factoriopedia_alternative","order":0,"description":"The ID type corresponding to the prototype that inherits from this.\n\nFor example, if this is an [EntityPrototype](prototype:EntityPrototype), this property's type is [EntityID](prototype:EntityID).","override":false,"type":"string","optional":true}]},{"name":"PrototypeBase","order":187,"description":"The abstract base for prototypes. PrototypeBase defines the common features of prototypes, such as localization and order.","abstract":true,"deprecated":false,"properties":[{"name":"factoriopedia_description","order":5,"description":"Provides additional description used in factoriopedia.","override":false,"type":"LocalisedString","optional":true},{"name":"factoriopedia_simulation","order":10,"description":"The simulation shown when looking at this prototype in the Factoriopedia GUI.","override":false,"type":"SimulationDefinition","optional":true},{"name":"hidden","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"hidden_in_factoriopedia","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":"Value of `hidden`"},{"name":"localised_description","order":4,"description":"Overwrites the description set in the [locale file](https://wiki.factorio.com/Tutorial:Localisation). The description is usually shown in the tooltip of the prototype.","override":false,"type":"LocalisedString","optional":true},{"name":"localised_name","order":3,"description":"Overwrites the name set in the [locale file](https://wiki.factorio.com/Tutorial:Localisation). Can be used to easily set a procedurally-generated name because the LocalisedString format allows to insert parameters into the name directly from the Lua script.","override":false,"type":"LocalisedString","optional":true},{"name":"name","order":1,"description":"Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters.\n\nFor a list of all names used in vanilla, see [data.raw](https://wiki.factorio.com/Data.raw).","override":false,"type":"string","optional":false},{"name":"order","order":2,"description":"Used to order prototypes in inventory, recipes and GUIs. May not exceed a length of 200 characters.","override":false,"type":"Order","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"parameter","order":9,"description":"Whether the prototype is a special type which can be used to parametrize blueprints and doesn't have other function.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"subgroup","order":6,"description":"The name of an [ItemSubGroup](prototype:ItemSubGroup).","override":false,"type":"ItemSubGroupID","optional":true},{"name":"type","order":0,"description":"Specifies the kind of prototype this is.\n\nFor a list of all possible types, see the [prototype overview](prototype:prototypes).","override":false,"type":"string","optional":false}]},{"name":"ProxyContainerPrototype","order":188,"description":"A container that must be set to point at other entity and inventory index so it can forward all inventory interactions to the other entity.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"proxy-container","deprecated":false,"properties":[{"name":"circuit_connector","order":5,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":2,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_inventory_content","order":1,"description":"If the content of the inventory should be rendered in alt mode.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"picture","order":0,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"PumpPrototype","order":189,"description":"The pump is used to transfer fluids between tanks, fluid wagons and pipes.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"pump","deprecated":false,"properties":[{"name":"animations","order":4,"description":"The animation for the pump.","override":false,"type":"Animation4Way","optional":true},{"name":"circuit_connector","order":15,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_wire_max_distance","order":12,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":14,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":13,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_source","order":1,"description":"The type of energy the pump uses.","override":false,"type":"EnergySource","optional":false},{"name":"energy_usage","order":2,"description":"The amount of energy the pump uses.","override":false,"type":"Energy","optional":false},{"name":"flow_scaling","order":8,"description":"When true, pump will reduce pumping speed based on fullness of the input fluid segment.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"fluid_animation","order":9,"description":"","override":false,"type":"Animation4Way","optional":true},{"name":"fluid_box","order":0,"description":"The area of the entity where fluid travels.","override":false,"type":"FluidBox","optional":false},{"name":"fluid_wagon_connector_alignment_tolerance","order":6,"description":"","override":false,"type":"double","optional":true,"default":"2 / 32.0"},{"name":"fluid_wagon_connector_frame_count","order":7,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"fluid_wagon_connector_graphics","order":16,"description":"","override":false,"type":"FluidWagonConnectorGraphics","optional":true},{"name":"fluid_wagon_connector_speed","order":5,"description":"","override":false,"type":"double","optional":true,"default":"1 / 64.0"},{"name":"frozen_patch","order":11,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"glass_pictures","order":10,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"pumping_speed","order":3,"description":"The amount of fluid this pump transfers per tick.","override":false,"type":"FluidAmount","optional":false}]},{"name":"QualityPrototype","order":190,"description":"One quality step. Its effects are specified by the level and the various multiplier and bonus properties. Properties ending in `_multiplier` are applied multiplicatively to their base property, properties ending in `_bonus` are applied additively.","parent":"Prototype","abstract":false,"typename":"quality","instance_limit":255,"deprecated":false,"properties":[{"name":"accumulator_capacity_multiplier","order":21,"description":"Must be >= 0.01.","override":false,"type":"double","optional":true,"default":"1 + `level`"},{"name":"asteroid_collector_collection_radius_bonus","order":24,"description":"Must be >= 0.\n\nPerformance warning: the navigation has to pre-calculate ranges for the highest tier collector possible, so you should keep this collection radius within reasonable values.","override":false,"type":"double","optional":true,"default":"Value of `level`"},{"name":"beacon_module_slots_bonus","order":32,"description":"Only affects beacons with [BeaconPrototype::quality_affects_module_slots](prototype:BeaconPrototype::quality_affects_module_slots) set.","override":false,"type":"ItemStackIndex","optional":true,"default":"Value of `level`"},{"name":"beacon_power_usage_multiplier","order":8,"description":"Must be >= 0.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"beacon_supply_area_distance_bonus","order":29,"description":"Only affects beacons with [BeaconPrototype::quality_affects_supply_area_distance](prototype:BeaconPrototype::quality_affects_supply_area_distance) set.\n\nMust be >= 0 and <= 64.","override":false,"type":"float","optional":true,"default":"clamp(`level`, 0, 64)"},{"name":"color","order":1,"description":"","override":false,"type":"Color","optional":false},{"name":"crafting_machine_energy_usage_multiplier","order":18,"description":"Must be >= 0.01.\n\nOnly affects crafting machines with [CraftingMachinePrototype::quality_affects_energy_usage](prototype:CraftingMachinePrototype::quality_affects_energy_usage) set.\n\nWill be ignored by crafting machines with [CraftingMachinePrototype::energy_usage_quality_multiplier](prototype:CraftingMachinePrototype::energy_usage_quality_multiplier) set.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"crafting_machine_module_slots_bonus","order":33,"description":"Only affects crafting machines with [CraftingMachinePrototype::quality_affects_module_slots](prototype:CraftingMachinePrototype::quality_affects_module_slots) set.\n\nWill be ignored by crafting machines with [CraftingMachinePrototype::module_slots_quality_bonus](prototype:CraftingMachinePrototype::module_slots_quality_bonus) set.","override":false,"type":"ItemStackIndex","optional":true,"default":"Value of `level`"},{"name":"crafting_machine_speed_multiplier","order":17,"description":"Must be >= 0.01.\n\nWill be ignored by crafting machines with [CraftingMachinePrototype::crafting_speed_quality_multiplier](prototype:CraftingMachinePrototype::crafting_speed_quality_multiplier) set.","override":false,"type":"double","optional":true,"default":"Value of `default_multiplier`"},{"name":"default_multiplier","order":12,"description":"Must be >= 0.01.","override":false,"type":"double","optional":true,"default":"1 + 0.3 * `level`"},{"name":"draw_sprite_by_default","order":0,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"electric_pole_supply_area_distance_bonus","order":28,"description":"Must be >= 0.","override":false,"type":"float","optional":true,"default":"Value of `level`"},{"name":"electric_pole_wire_reach_bonus","order":27,"description":"Must be >= 0.","override":false,"type":"float","optional":true,"default":"2 * `level`"},{"name":"equipment_grid_height_bonus","order":26,"description":"","override":false,"type":"int16","optional":true,"default":"Value of `level`"},{"name":"equipment_grid_width_bonus","order":25,"description":"","override":false,"type":"int16","optional":true,"default":"Value of `level`"},{"name":"fluid_wagon_capacity_multiplier","order":14,"description":"Must be >= 0.01.\n\nOnly affects fluid wagons with [FluidWagonPrototype::quality_affects_capacity](prototype:FluidWagonPrototype::quality_affects_capacity) set.","override":false,"type":"double","optional":true,"default":"Value of `default_multiplier`"},{"name":"flying_robot_max_energy_multiplier","order":22,"description":"Must be >= 0.01.","override":false,"type":"double","optional":true,"default":"1 + `level`"},{"name":"icon","order":6,"description":"Path to the icon file.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":7,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":5,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"inserter_speed_multiplier","order":13,"description":"Must be >= 0.01.","override":false,"type":"double","optional":true,"default":"Value of `default_multiplier`"},{"name":"inventory_size_multiplier","order":15,"description":"Must be >= 0.01.","override":false,"type":"double","optional":true,"default":"Value of `default_multiplier`"},{"name":"lab_module_slots_bonus","order":35,"description":"Only affects labs with [LabPrototype::quality_affects_module_slots](prototype:LabPrototype::quality_affects_module_slots) set.","override":false,"type":"ItemStackIndex","optional":true,"default":"Value of `level`"},{"name":"lab_research_speed_multiplier","order":16,"description":"Must be >= 0.01.","override":false,"type":"double","optional":true,"default":"Value of `default_multiplier`"},{"name":"level","order":2,"description":"Requires Space Age to use level greater than `0`.","override":false,"type":"uint32","optional":false},{"name":"logistic_cell_charging_energy_multiplier","order":19,"description":"Must be >= 0.01.","override":false,"type":"double","optional":true,"default":"Value of `default_multiplier`"},{"name":"logistic_cell_charging_station_count_bonus","order":31,"description":"Only affects roboports with [RoboportPrototype::charging_station_count_affected_by_quality](prototype:RoboportPrototype::charging_station_count_affected_by_quality) set.\n\nOnly affects roboport equipment with [RoboportEquipmentPrototype::charging_station_count_affected_by_quality](prototype:RoboportEquipmentPrototype::charging_station_count_affected_by_quality) set.","override":false,"type":"uint32","optional":true,"default":"Value of `level`"},{"name":"mining_drill_mining_radius_bonus","order":30,"description":"Only affects mining drills with [MiningDrillPrototype::quality_affects_mining_radius](prototype:MiningDrillPrototype::quality_affects_mining_radius) set.\n\nMust be >= 0.","override":false,"type":"float","optional":true,"default":"Value of `level`"},{"name":"mining_drill_module_slots_bonus","order":34,"description":"Only affects mining drills with [MiningDrillPrototype::quality_affects_module_slots](prototype:MiningDrillPrototype::quality_affects_module_slots) set.","override":false,"type":"ItemStackIndex","optional":true,"default":"Value of `level`"},{"name":"mining_drill_resource_drain_multiplier","order":9,"description":"Must be in range `[0, 1]`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"name","order":11,"description":"Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters.\n\nRequires Space Age to create prototypes with name other than `normal` or `quality-unknown`.","override":true,"type":"string","optional":false},{"name":"next","order":3,"description":"","override":false,"type":"QualityID","optional":true},{"name":"next_probability","order":4,"description":"The quality [effect of the module](prototype:ModulePrototype::effect) is multiplied by this. For example, if a module's quality effect is 0.2 and the current quality's next_probability is 0.1, then the chance to get the next quality item is 2%.\n\nMust be in range [0, 1.0].","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"range_multiplier","order":23,"description":"Must be within `[1, 3]`.\n\nAffects the range of [attack parameters](prototype:AttackParameters), e.g. those used by combat robots, units, guns and turrets.","override":false,"type":"double","optional":true,"default":"min(1 + 0.1 * `level`, 3)"},{"name":"science_pack_drain_multiplier","order":10,"description":"Must be in range `[0, 1]`.\n\nOnly affects labs with [LabPrototype::uses_quality_drain_modifier](prototype:LabPrototype::uses_quality_drain_modifier) set.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"tool_durability_multiplier","order":20,"description":"Must be >= 0.01.\n\nAffects the durability of [tool items](prototype:ToolPrototype) like science packs, repair tools and armor.","override":false,"type":"double","optional":true,"default":"1 + `level`"}]},{"name":"RadarPrototype","order":191,"description":"A [radar](https://wiki.factorio.com/Radar).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"radar","deprecated":false,"properties":[{"name":"circuit_connector","order":11,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":8,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"connects_to_other_radars","order":14,"description":"If set to true, radars on the same surface will connect to other radars on the same surface using hidden wires with [radar](runtime:defines.wire_origin.radars) origin.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_circuit_wires","order":10,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":9,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_fraction_to_connect","order":16,"description":"Must be between 0 and 1. Must be larger than or equal to `energy_fraction_to_disconnect`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.9}},{"name":"energy_fraction_to_disconnect","order":17,"description":"Must be between 0 and 1. Must be less than or equal to `energy_fraction_to_connect`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"energy_per_nearby_scan","order":2,"description":"The amount of energy the radar has to consume for nearby scan to be performed. This value doesn't have any effect on sector scanning.\n\nPerformance warning: nearby scan causes re-charting of many chunks, which is expensive operation. If you want to make a radar that updates map more in real time, you should keep its range low. If you are making radar with high range, you should set this value such that nearby scan is performed once a second or so. For example if you set `energy_usage` to 100kW, setting `energy_per_nearby_scan` to 100kJ will cause nearby scan to happen once per second.","examples":["```\nenergy_per_nearby_scan = \"250kJ\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"energy_per_sector","order":1,"description":"The amount of energy it takes to scan a sector. This value doesn't have any effect on nearby scanning.","examples":["```\nenergy_per_sector = \"10MJ\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"energy_source","order":3,"description":"The energy source for this radar.","override":false,"type":"EnergySource","optional":false},{"name":"energy_usage","order":0,"description":"The amount of energy this radar uses.","examples":["```\nenergy_usage = \"300kW\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"frozen_patch","order":5,"description":"","override":false,"type":"Sprite","optional":true},{"name":"is_military_target","order":18,"description":"Whether this prototype should be a high priority target for enemy forces. See [Military units and structures](https://wiki.factorio.com/Military_units_and_structures).","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"max_distance_of_nearby_sector_revealed","order":7,"description":"The radius of the area constantly revealed by this radar, in chunks.","override":false,"type":"uint32","optional":false},{"name":"max_distance_of_sector_revealed","order":6,"description":"The radius of the area this radar can chart, in chunks.","override":false,"type":"uint32","optional":false},{"name":"pictures","order":4,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"radius_minimap_visualisation_color","order":12,"description":"","override":false,"type":"Color","optional":true},{"name":"reset_orientation_when_frozen","order":15,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"rotation_speed","order":13,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.01}}]},{"name":"RailChainSignalPrototype","order":192,"description":"A [rail chain signal](https://wiki.factorio.com/Rail_chain_signal).","parent":"RailSignalBasePrototype","abstract":false,"typename":"rail-chain-signal","deprecated":false,"properties":[]},{"name":"RailPlannerPrototype","order":193,"description":"A [rail planner](https://wiki.factorio.com/Rail_planner).","parent":"ItemPrototype","abstract":false,"typename":"rail-planner","deprecated":false,"properties":[{"name":"manual_length_limit","order":2,"description":"","override":false,"type":"double","optional":true,"default":"8 * 2 + 1.41 + 0.5"},{"name":"rails","order":0,"description":"May not be an empty array. Entities must be rails and their first item-to-place must be this item.","override":false,"type":{"complex_type":"array","value":"EntityID"},"optional":false},{"name":"support","order":1,"description":"Name of a rail support.","override":false,"type":"EntityID","optional":true}]},{"name":"RailPrototype","order":194,"description":"The abstract base of all rail prototypes.","parent":"EntityWithOwnerPrototype","abstract":true,"deprecated":false,"properties":[{"name":"build_grid_size","order":9,"description":"Has to be 2 for 2x2 grid.","override":true,"type":{"complex_type":"literal","value":2},"optional":true,"default":{"complex_type":"literal","value":2}},{"name":"deconstruction_marker_positions","order":7,"description":"","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":true},{"name":"ending_shifts","order":6,"description":"","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":true},{"name":"extra_planner_goal_penalty","order":4,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"extra_planner_penalty","order":3,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"fence_pictures","order":2,"description":"","override":false,"type":"RailFenceGraphicsSet","optional":true},{"name":"forced_fence_segment_count","order":5,"description":"Must be 0, 2 or 4. Can't be non-zero if `fence_pictures` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"pictures","order":1,"description":"","override":false,"type":"RailPictureSet","optional":false},{"name":"removes_soft_decoratives","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"selection_box","order":10,"description":"The rail [selection_boxes](prototype:EntityPrototype::selection_box) are automatically calculated from the collision boxes, which are hardcoded. So effectively the selection boxes also hardcoded.","override":true,"type":"BoundingBox","optional":true},{"name":"walking_sound","order":0,"description":"Sound played when a character walks over this rail.","override":false,"type":"Sound","optional":true}]},{"name":"RailRampPrototype","order":195,"description":"A rail ramp.","parent":"RailPrototype","abstract":false,"typename":"rail-ramp","deprecated":false,"properties":[{"name":"collision_box","order":2,"description":"The [collision_box](prototype:EntityPrototype::collision_box) of straight rail is hardcoded to `{{-1.6, -7.6}, {1.6, 7.6}}`.","override":true,"type":"BoundingBox","optional":true,"default":"`{{-1.6, -7.6}, {1.6, 7.6}}`"},{"name":"collision_mask_allow_on_deep_oil_ocean","order":1,"description":"Defaults to the mask from [UtilityConstants::default_collision_masks](prototype:UtilityConstants::default_collision_masks) when indexed by `\"rail-ramp/allow_on_deep_oil_ocean\"`.","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"name","order":3,"description":"Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters.\n\nRequires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built.","override":true,"type":"string","optional":false},{"name":"support_range","order":0,"description":"Must be lower than 500 and at least 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":15.0}}]},{"name":"RailRemnantsPrototype","order":196,"description":"Used for rail corpses.","parent":"CorpsePrototype","abstract":false,"typename":"rail-remnants","deprecated":false,"properties":[{"name":"build_grid_size","order":3,"description":"Has to be 2 for 2x2 grid.","override":true,"type":{"complex_type":"literal","value":2},"optional":true,"default":{"complex_type":"literal","value":2}},{"name":"collision_box","order":4,"description":"\"Rail remnant entities must have a non-zero [collision_box](prototype:EntityPrototype::collision_box) defined.","override":true,"type":"BoundingBox","optional":true,"default":"Empty = `{{0, 0}, {0, 0}}`"},{"name":"pictures","order":0,"description":"","override":false,"type":"RailPictureSet","optional":false},{"name":"related_rail","order":1,"description":"","override":false,"type":"EntityID","optional":false},{"name":"secondary_collision_box","order":2,"description":"","override":false,"type":"BoundingBox","optional":true}]},{"name":"RailSignalBasePrototype","order":197,"description":"The abstract base entity for both rail signals.","parent":"EntityWithOwnerPrototype","abstract":true,"deprecated":false,"properties":[{"name":"circuit_wire_max_distance","order":2,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"collision_box","order":11,"description":"The [collision_box](prototype:EntityPrototype::collision_box) of rail signals is hardcoded to `{{-0.2, -0.2}, {0.2, 0.2}}`.","override":true,"type":"BoundingBox","optional":true,"default":"`{{-0.2, -0.2}, {0.2, 0.2}}`"},{"name":"default_blue_output_signal","order":8,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_green_output_signal","order":7,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_orange_output_signal","order":6,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_red_output_signal","order":5,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"draw_circuit_wires","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"elevated_collision_mask","order":9,"description":"Defaults to the mask from [UtilityConstants::default_collision_masks](prototype:UtilityConstants::default_collision_masks) when indexed by  `type .. \"/elevated\"`.","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"elevated_picture_set","order":1,"description":"","override":false,"type":"RailSignalPictureSet","optional":false},{"name":"elevated_selection_priority","order":10,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":55}},{"name":"flags","order":12,"description":"The \"placeable-off-grid\" flag will be ignored for rail signals.","override":true,"type":"EntityPrototypeFlags","optional":true},{"name":"ground_picture_set","order":0,"description":"","override":false,"type":"RailSignalPictureSet","optional":false}]},{"name":"RailSignalPrototype","order":198,"description":"A [rail signal](https://wiki.factorio.com/Rail_signal).","parent":"RailSignalBasePrototype","abstract":false,"typename":"rail-signal","deprecated":false,"properties":[]},{"name":"RailSupportPrototype","order":199,"description":"","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"rail-support","deprecated":false,"properties":[{"name":"build_grid_size","order":6,"description":"Has to be 2 for 2x2 grid.","override":true,"type":{"complex_type":"literal","value":2},"optional":true,"default":{"complex_type":"literal","value":2}},{"name":"collision_mask_allow_on_deep_oil_ocean","order":4,"description":"Defaults to the mask from [UtilityConstants::default_collision_masks](prototype:UtilityConstants::default_collision_masks) when indexed by `\"rail-support/allow_on_deep_oil_ocean\"`.","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"elevated_selection_boxes","order":5,"description":"Array must contain 8 items.","override":false,"type":{"complex_type":"array","value":"BoundingBox"},"optional":true},{"name":"graphics_set","order":0,"description":"","override":false,"type":"RailSupportGraphicsSet","optional":false},{"name":"name","order":7,"description":"Unique textual identification of the prototype. May only contain alphanumeric characters, dashes and underscores. May not exceed a length of 200 characters.\n\nRequires Space Age to create prototypes with name not starting with `dummy-`. Dummy prototypes cannot be built.","override":true,"type":"string","optional":false},{"name":"not_buildable_if_no_rails","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"snap_to_spots_distance","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"support_range","order":1,"description":"Must be lower than 500 and at least 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":15.0}}]},{"name":"ReactorPrototype","order":200,"description":"A [reactor](https://wiki.factorio.com/Reactor).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"reactor","deprecated":false,"properties":[{"name":"circuit_connector","order":21,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":18,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"connection_patches_connected","order":5,"description":"If defined, number of variations must be at least equal to count of [connections](prototype:HeatBuffer::connections) defined in `heat_buffer`. Each variation represents connected heat buffer connection of corresponding index.","override":false,"type":"SpriteVariations","optional":true},{"name":"connection_patches_disconnected","order":6,"description":"If defined, number of variations must be at least equal to count of [connections](prototype:HeatBuffer::connections) defined in `heat_buffer`. Each variation represents unconnected heat buffer connection of corresponding index.","override":false,"type":"SpriteVariations","optional":true},{"name":"consumption","order":4,"description":"How much energy this reactor can consume (from the input energy source) and then output as heat.","override":false,"type":"Energy","optional":false},{"name":"default_fuel_glow_color","order":17,"description":"When `use_fuel_glow_color` is true, this is the color used as `working_light_picture` tint for fuels that don't have glow color defined.","override":false,"type":"Color","optional":true,"default":"`{1, 1, 1, 1} (white)`"},{"name":"default_temperature_signal","order":22,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"draw_circuit_wires","order":20,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":19,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_source","order":3,"description":"May not be a heat energy source.\n\nThe input energy source, in vanilla it is a burner energy source.","override":false,"type":"EnergySource","optional":false},{"name":"heat_buffer","order":1,"description":"The energy output as heat.","override":false,"type":"HeatBuffer","optional":false},{"name":"heat_connection_patches_connected","order":7,"description":"If defined, number of variations must be at least equal to count of [connections](prototype:HeatBuffer::connections) defined in `heat_buffer`. When reactor is heated, corresponding variations are drawn over `connection_patches_connected`.","override":false,"type":"SpriteVariations","optional":true},{"name":"heat_connection_patches_disconnected","order":8,"description":"If defined, number of variations must be at least equal to count of [connections](prototype:HeatBuffer::connections) defined in `heat_buffer`. When reactor is heated, corresponding variations are drawn over `connection_patches_disconnected`.","override":false,"type":"SpriteVariations","optional":true},{"name":"heat_lower_layer_picture","order":10,"description":"","override":false,"type":"Sprite","optional":true},{"name":"heating_radius","order":2,"description":"Must be >= 0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"light","order":12,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"lower_layer_picture","order":9,"description":"","override":false,"type":"Sprite","optional":true},{"name":"meltdown_action","order":13,"description":"The action is triggered when the reactor dies (is destroyed) at over 90% of max temperature.","override":false,"type":"Trigger","optional":true},{"name":"neighbour_bonus","order":14,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"picture","order":11,"description":"","override":false,"type":"Sprite","optional":true},{"name":"scale_energy_usage","order":15,"description":"When this is true, the reactor will stop consuming fuel/energy when the temperature has reached the maximum.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"use_fuel_glow_color","order":16,"description":"Whether the reactor should use [fuel_glow_color](prototype:ItemPrototype::fuel_glow_color) from the fuel item prototype as light color and tint for `working_light_picture`. [Forum post.](https://forums.factorio.com/71121)","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"working_light_picture","order":0,"description":"","override":false,"type":"Animation","optional":true}]},{"name":"RecipeCategory","order":201,"description":"A recipe category. The built-in categories can be found [here](https://wiki.factorio.com/Data.raw#recipe-category). See [RecipePrototype::category](prototype:RecipePrototype::category). Recipe categories can be used to specify which [machine](prototype:CraftingMachinePrototype::crafting_categories) can craft which [recipes](prototype:RecipePrototype).\n\nThe recipe category with the name \"crafting\" cannot contain recipes with fluid ingredients or products.","examples":["```\n{\n  type = \"recipe-category\",\n  name = \"my-category\"\n}\n```"],"parent":"Prototype","abstract":false,"typename":"recipe-category","deprecated":false,"properties":[]},{"name":"RecipePrototype","order":202,"description":"A recipe. It can be a crafting recipe, a smelting recipe, or a custom type of recipe, see [RecipeCategory](prototype:RecipeCategory).","examples":["```\n{\n  type = \"recipe\",\n  name = \"iron-plate\",\n  category = \"smelting\",\n  energy_required = 3.5,\n  ingredients = {{type = \"item\", name = \"iron-ore\", amount = 1}},\n  results = {{type = \"item\", name = \"iron-plate\", amount = 1}}\n}\n```","```\n{\n  type = \"recipe\",\n  name = \"coal-liquefaction\",\n  category = \"oil-processing\",\n  subgroup = \"fluid-recipes\",\n  order = \"a[oil-processing]-c[coal-liquefaction]\",\n  enabled = false,\n  energy_required = 5,\n  icon = \"__base__/graphics/icons/fluid/coal-liquefaction.png\",\n  icon_size = 32,\n  ingredients =\n  {\n    {type = \"item\", name = \"coal\", amount = 10},\n    {type = \"fluid\", name = \"heavy-oil\", amount = 25},\n    {type = \"fluid\", name = \"steam\", amount = 50}\n  },\n  results=\n  {\n    {type = \"fluid\", name = \"heavy-oil\", amount = 35},\n    {type = \"fluid\", name = \"light-oil\", amount = 15},\n    {type = \"fluid\", name = \"petroleum-gas\", amount = 20}\n  },\n  allow_decomposition = false\n}\n```"],"parent":"Prototype","abstract":false,"typename":"recipe","deprecated":false,"properties":[{"name":"additional_categories","order":1,"description":"","override":false,"type":{"complex_type":"array","value":"RecipeCategoryID"},"optional":true},{"name":"allow_as_intermediate","order":20,"description":"Whether the recipe can be used as an intermediate recipe in hand-crafting.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_consumption","order":36,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_consumption_message","order":29,"description":"","override":false,"type":"LocalisedString","optional":true,"default":"`{\"item-limitation.consumption-effect\"}`"},{"name":"allow_decomposition","order":19,"description":"Whether this recipe is allowed to be broken down for the recipe tooltip \"Total raw\" calculations.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_inserter_overload","order":14,"description":"Whether the recipe is allowed to have the extra inserter overload bonus applied (4 * stack inserter stack size).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_intermediates","order":21,"description":"Whether the recipe is allowed to use intermediate recipes when hand-crafting.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_pollution","order":39,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_pollution_message","order":32,"description":"","override":false,"type":"LocalisedString","optional":true,"default":"`{\"item-limitation.pollution-effect\"}`"},{"name":"allow_productivity","order":38,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"allow_productivity_message","order":31,"description":"","override":false,"type":"LocalisedString","optional":true,"default":"`{\"item-limitation.productivity-effect\"}`"},{"name":"allow_quality","order":40,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_quality_message","order":33,"description":"","override":false,"type":"LocalisedString","optional":true,"default":"`{\"item-limitation.quality-effect\"}`"},{"name":"allow_speed","order":37,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_speed_message","order":30,"description":"","override":false,"type":"LocalisedString","optional":true,"default":"`{\"item-limitation.speed-effect\"}`"},{"name":"allowed_module_categories","order":41,"description":"Sets the [module categories](prototype:ModuleCategory) that are allowed to be used with this recipe.","override":false,"type":{"complex_type":"array","value":"ModuleCategoryID"},"optional":true,"default":"All module categories are allowed"},{"name":"alternative_unlock_methods","order":42,"description":"Additional technologies to list under \"Unlocked by\" on a recipe's Factoriopedia page.","override":false,"type":{"complex_type":"array","value":"TechnologyID"},"optional":true},{"name":"always_show_made_in","order":22,"description":"Whether the \"Made in: <Machine>\" part of the tool-tip should always be present, and not only when the recipe can't be hand-crafted.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"always_show_products","order":24,"description":"Whether the products are always shown in the recipe tooltip.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"auto_recycle","order":43,"description":"Whether the recipe should be included in the recycling recipes automatically generated by the quality mod.\n\nThis property is not read by the game engine itself, but the quality mod's recycling.lua file. This means it is discarded by the game engine after loading finishes.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"category","order":0,"description":"The [category](prototype:RecipeCategory) of this recipe. Controls which machines can craft this recipe.\n\nThe built-in categories can be found [here](https://wiki.factorio.com/Data.raw#recipe-category). The base `\"crafting\"` category can not contain recipes with fluid ingredients or products.","examples":["```\ncategory = \"smelting\"\n```"],"override":false,"type":"RecipeCategoryID","optional":true,"default":{"complex_type":"literal","value":"crafting"}},{"name":"crafting_machine_tint","order":2,"description":"Used by [WorkingVisualisations::working_visualisations](prototype:WorkingVisualisations::working_visualisations) to tint certain layers with the recipe color. [WorkingVisualisation::apply_recipe_tint](prototype:WorkingVisualisation::apply_recipe_tint) determines which of the four colors is used for that layer, if any.","override":false,"type":"RecipeTints","optional":true},{"name":"emissions_multiplier","order":10,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"enabled","order":15,"description":"This can be `false` to disable the recipe at the start of the game, or `true` to leave it enabled.\n\nIf a recipe is unlocked via technology, this should be set to `false`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_required","order":9,"description":"The amount of time it takes to make this recipe. Must be `> 0.001`. Equals the number of seconds it takes to craft at crafting speed `1`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"hidden","order":44,"description":"Hides the recipe from crafting menus and other recipe selection lists.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"hide_from_bonus_gui","order":18,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"hide_from_player_crafting","order":17,"description":"Hides the recipe from the player's crafting screen. The recipe will still show up for selection in machines.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"hide_from_signal_gui","order":35,"description":"If left unset, this property will be determined automatically: If the recipe is not `hidden`, and no item, fluid, or virtual signal has the same icon as this recipe, this property will be set to `false`. It'll be `true` otherwise.","override":false,"type":"boolean","optional":true},{"name":"hide_from_stats","order":16,"description":"Hides the recipe from item/fluid production statistics.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"icon","order":4,"description":"If given, this determines the recipe's icon. Otherwise, the icon of `main_product` or the singular product is used.\n\nOnly loaded if `icons` is not defined.\n\nMandatory if `icons` is not defined for a recipe with more than one product and no `main_product`, or no product.","examples":["```\nicon = \"__base__/graphics/icons/fluid/heavy-oil.png\"\n```"],"override":false,"type":"FileName","optional":true},{"name":"icon_size","order":5,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":3,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"ingredients","order":6,"description":"A table containing ingredient names and amounts. Can also contain information about fluid temperature and whether some of the amount is ignored by production statistics.\n\nThe maximum ingredient amount is 65 535. Can be set to an empty table to create a recipe that needs no ingredients.\n\nDuplicate ingredients, e.g. two entries with the same name, are *not* allowed. In-game, the item ingredients are ordered by [ItemGroup::order_in_recipe](prototype:ItemGroup::order_in_recipe).","examples":["```\n-- Recipe with items\ningredients =\n{\n  {type = \"item\", name = \"iron-stick\", amount = 2},\n  {type = \"item\", name = \"iron-plate\", amount = 3}\n}\n```","```\n-- Recipe with fluids\ningredients =\n{\n  {type = \"fluid\", name = \"water\", amount = 50},\n  {type = \"fluid\", name = \"crude-oil\", amount = 100}\n}\n```"],"override":false,"type":{"complex_type":"array","value":"IngredientPrototype"},"optional":true},{"name":"main_product","order":8,"description":"For recipes with one or more products: Subgroup, localised_name and icon default to the values of the singular/main product, but can be overwritten by the recipe. Setting the main_product to an empty string (`\"\"`) forces the title in the recipe tooltip to use the recipe's name (not that of the product) and shows the products in the tooltip.\n\nIf 1) there are multiple products and this property is nil, 2) this property is set to an empty string (`\"\"`), or 3) there are no products, the recipe will use the localised_name, icon, and subgroup of the recipe. icon and subgroup become non-optional.","override":false,"type":"string","optional":true},{"name":"maximum_productivity","order":11,"description":"Must be >= 0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":3.0}},{"name":"overload_multiplier","order":13,"description":"Used to determine how many extra items are put into an assembling machine before it's considered \"full enough\". See [insertion limits](https://wiki.factorio.com/Inserters#Insertion_limits).\n\nIf set to `0`, it instead uses the following formula: `1.166 / (energy_required / the assembler's crafting_speed)`, rounded up, and clamped to be between`2` and `100`. The numbers used in this formula can be changed by the [UtilityConstants](prototype:UtilityConstants) properties `dynamic_recipe_overload_factor`, `minimum_recipe_overload_multiplier`, and `maximum_recipe_overload_multiplier`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"preserve_products_in_machine_output","order":26,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"requester_paste_multiplier","order":12,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":30}},{"name":"reset_freshness_on_craft","order":28,"description":"When set to true, if the recipe successfully finishes crafting without spoiling, the result is produced fresh (non-spoiled).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"result_is_always_fresh","order":27,"description":"When set to true, the recipe will always produce fresh (non-spoiled) item even when the ingredients are spoiled.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"results","order":7,"description":"A table containing result names and amounts. Products also contain information such as fluid temperature, probability of results and whether some of the amount is ignored by productivity.\n\nCan be set to an empty table to create a recipe that produces nothing. Duplicate results, e.g. two entries with the same name, are allowed.","examples":["```\nresults =\n{\n  {type = \"fluid\", name= \"heavy-oil\", amount = 3},\n  {type = \"fluid\", name= \"light-oil\", amount = 3},\n  {type = \"fluid\", name= \"petroleum-gas\", amount = 4}\n}\n```","```\nresults =\n{\n  {type = \"item\", name = \"iron-plate\", amount = 9},\n  {type = \"item\", name = \"copper-plate\", amount = 1}\n}\n```","```\nresults = {{type = \"fluid\", name = \"steam\", amount = 1, temperature = 165}}\n```"],"override":false,"type":{"complex_type":"array","value":"ProductPrototype"},"optional":true},{"name":"show_amount_in_title","order":23,"description":"Whether the recipe name should have the product amount in front of it. E.g. \"2x Transport belt\".","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"surface_conditions","order":34,"description":"","visibility":["space_age"],"override":false,"type":{"complex_type":"array","value":"SurfaceCondition"},"optional":true},{"name":"unlock_results","order":25,"description":"Whether enabling this recipe unlocks its item products to show in selection lists (item filters, logistic requests, etc.).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"RemoteControllerPrototype","order":203,"description":"Properties of the remote controller.","abstract":false,"typename":"remote-controller","instance_limit":1,"deprecated":false,"properties":[{"name":"movement_speed","order":2,"description":"Must be >= 0.34375.","override":false,"type":"double","optional":false},{"name":"name","order":1,"description":"Name of the remote controller. Base game uses \"default\".","override":false,"type":"string","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"remote-controller"},"optional":false}]},{"name":"RepairToolPrototype","order":204,"description":"A [repair pack](https://wiki.factorio.com/Repair_pack). Using the tool decreases durability to restore entity health.","parent":"ToolPrototype","abstract":false,"typename":"repair-tool","deprecated":false,"properties":[{"name":"speed","order":0,"description":"Entity health repaired per used [ToolPrototype::durability](prototype:ToolPrototype::durability). E.g. a repair tool with 5 durability and a repair speed of 2 will restore 10 health.\n\nThis is then multiplied by the [EntityWithHealthPrototype::repair_speed_modifier](prototype:EntityWithHealthPrototype::repair_speed_modifier) of the entity.","override":false,"type":"float","optional":false}]},{"name":"ResearchAchievementPrototype","order":205,"description":"This prototype is used for receiving an achievement when the player completes a specific research.","parent":"AchievementPrototype","abstract":false,"typename":"research-achievement","deprecated":false,"properties":[{"name":"research_all","order":1,"description":"Mandatory if `technology` is not defined.\n\nThis will only trigger if the player has learned every research in the game.","examples":["```\nresearch_all = true\n```"],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"technology","order":0,"description":"Mandatory if `research_all` is not defined.\n\nResearching this technology will trigger the achievement.","examples":["```\ntechnology = \"oil-processing\"\n```"],"override":false,"type":"TechnologyID","optional":true}]},{"name":"ResearchWithSciencePackAchievementPrototype","order":206,"description":"","parent":"AchievementPrototype","abstract":false,"typename":"research-with-science-pack-achievement","deprecated":false,"properties":[{"name":"amount","order":1,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"science_pack","order":0,"description":"","override":false,"type":"ItemID","optional":false}]},{"name":"ResourceCategory","order":207,"description":"A resource category. The built-in categories can be found [here](https://wiki.factorio.com/Data.raw#resource-category). See [ResourceEntityPrototype::category](prototype:ResourceEntityPrototype::category).","parent":"Prototype","abstract":false,"typename":"resource-category","instance_limit":255,"deprecated":false,"properties":[]},{"name":"ResourceEntityPrototype","order":208,"description":"A mineable/gatherable entity.","examples":["```\n{\n  type = \"resource\",\n  name = \"crude-oil\",\n  icon = \"__base__/graphics/icons/crude-oil.png\",\n  icon_size = 32,\n  flags = {\"placeable-neutral\"},\n  category = \"basic-fluid\",\n  order=\"a-b-a\",\n  infinite = true,\n  highlight = true,\n  minimum = 60000,\n  normal = 300000,\n  infinite_depletion_amount = 10,\n  resource_patch_search_radius = 12,\n  tree_removal_probability = 0.7,\n  tree_removal_max_distance = 32 * 32,\n  minable =\n  {\n    mining_time = 1,\n    results =\n    {\n      {\n        type = \"fluid\",\n        name = \"crude-oil\",\n        amount_min = 10,\n        amount_max = 10,\n        probability = 1\n      }\n    }\n  },\n  collision_box = {{ -1.4, -1.4}, {1.4, 1.4}},\n  selection_box = {{ -0.5, -0.5}, {0.5, 0.5}},\n  autoplace = resource_autoplace.resource_autoplace_settings{\n    name = \"crude-oil\",\n    order = \"c\", -- Other resources are \"b\"; oil won't get placed if something else is already there.\n    base_density = 8.2,\n    base_spots_per_km2 = 1.8,\n    random_probability = 1/48,\n    random_spot_size_minimum = 1,\n    random_spot_size_maximum = 1, -- don't randomize spot size\n    additional_richness = 220000, -- this increases the total everywhere, so base_density needs to be decreased to compensate\n    has_starting_area_placement = false,\n    resource_index = resource_autoplace.resource_indexes[\"crude-oil\"],\n    regular_rq_factor_multiplier = 1\n  },\n  stage_counts = {0},\n  stages =\n  {\n    sheet =\n    {\n      filename = \"__base__/graphics/entity/crude-oil/crude-oil.png\",\n      priority = \"extra-high\",\n      width = 75,\n      height = 61,\n      frame_count = 4,\n      variation_count = 1\n    }\n  },\n  map_color = {r=0.78, g=0.2, b=0.77},\n  map_grid = false\n}\n```"],"parent":"EntityPrototype","abstract":false,"typename":"resource","deprecated":false,"properties":[{"name":"category","order":11,"description":"The category for the resource. Available categories in vanilla can be found [here](https://wiki.factorio.com/Data.raw#resource-category).","override":false,"type":"ResourceCategoryID","optional":true,"default":{"complex_type":"literal","value":"basic-solid"}},{"name":"cliff_removal_probability","order":21,"description":"Must be greater than or equal to `0`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"draw_stateless_visualisation_under_building","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"driving_sound","order":13,"description":"Sound played when a [CarPrototype](prototype:CarPrototype) drives over this resource.","override":false,"type":"InterruptibleSound","optional":true},{"name":"effect_animation_period","order":15,"description":"How long it takes `stages_effect` to go from `min_effect_alpha` to `max_effect_alpha`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"effect_animation_period_deviation","order":16,"description":"How much `effect_animation_period` can deviate from its original value. Used to make the stages effect alpha change look less uniform.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"effect_darkness_multiplier","order":17,"description":"How much the surface darkness should affect the alpha of `stages_effect`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"highlight","order":3,"description":"If the resource should be highlighted when holding a mining drill that can mine it (holding a pumpjack highlights crude-oil in the base game).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"infinite","order":2,"description":"If the ore is infinitely minable, or if it will eventually run out of resource.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"infinite_depletion_amount","order":9,"description":"Every time an infinite-type resource is decreased by mining, its current resource amount is lowered by this number.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"map_grid","order":5,"description":"Whether the resource should have a grid pattern on the map instead of a solid map color.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"max_effect_alpha","order":19,"description":"Maximal alpha value of `stages_effect`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"min_effect_alpha","order":18,"description":"Minimal alpha value of `stages_effect`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"minimum","order":7,"description":"Must be not 0 when `infinite = true`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"mining_visualisation_tint","order":23,"description":"Defaults to the resources map color if left unset and map color is set, otherwise defaults to white if left unset.","override":false,"type":"Color","optional":true},{"name":"normal","order":8,"description":"Must be not 0 when `infinite = true`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"randomize_visual_position","order":4,"description":"Whether there should be a slight offset to graphics of the resource. Used to make patches a little less uniform in appearance.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"resource_patch_search_radius","order":10,"description":"When hovering over this resource in the map view: How far to search for other resource patches of this type to display as one (summing amount, white outline).","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":3}},{"name":"stage_counts","order":1,"description":"Number of stages the animation has.","override":false,"type":{"complex_type":"array","value":"uint32"},"optional":false},{"name":"stages","order":0,"description":"Entity's graphics, using a graphic sheet, with variation and depletion. At least one stage must be defined.\n\nWhen using [AnimationVariations::sheet](prototype:AnimationVariations::sheet), `frame_count` is the amount of frames per row in the spritesheet. `variation_count` is the amount of rows in the spritesheet. Each row in the spritesheet is one stage of the animation.","override":false,"type":"AnimationVariations","optional":true},{"name":"stages_effect","order":14,"description":"An effect that can be overlaid above the normal ore graphics. Used in the base game to make [uranium ore](https://wiki.factorio.com/Uranium_ore) glow.","override":false,"type":"AnimationVariations","optional":true},{"name":"tree_removal_max_distance","order":22,"description":"Must be positive when `tree_removal_probability` is set.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"tree_removal_probability","order":20,"description":"Must be greater than or equal to `0`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"walking_sound","order":12,"description":"Sound played when the player walks over this resource.","override":false,"type":"Sound","optional":true}]},{"name":"RoboportEquipmentPrototype","order":209,"description":"Used by [personal roboport](https://wiki.factorio.com/Personal_roboport).","parent":"EquipmentPrototype","abstract":false,"typename":"roboport-equipment","deprecated":false,"properties":[{"name":"burner","order":21,"description":"Add this is if the roboport should be fueled directly instead of using power from the equipment grid.","override":false,"type":"BurnerEnergySource","optional":true},{"name":"charge_approach_distance","order":2,"description":"Presumably, the distance from the roboport at which robots will wait to charge.","override":false,"type":"float","optional":false},{"name":"charging_distance","order":12,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"charging_energy","order":4,"description":"","examples":["```\ncharging_energy = \"1000kW\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"charging_offsets","order":19,"description":"The offsets from the center of the roboport at which robots will charge. Only used if `charging_station_count` is equal to 0.","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":true},{"name":"charging_station_count","order":10,"description":"How many charging points this roboport has. If this is 0, the length of the charging_offsets table is used to calculate the charging station count.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"charging_station_count_affected_by_quality","order":11,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"charging_station_shift","order":13,"description":"","override":false,"type":"Vector","optional":true},{"name":"charging_threshold_distance","order":14,"description":"Distance in tiles. This defines how far away a robot can be from the charging spot and still be charged, however the bot is still required to reach a charging spot in the first place.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"construction_radius","order":3,"description":"Can't be negative.","override":false,"type":"float","optional":false},{"name":"draw_construction_radius_visualization","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_logistic_radius_visualization","order":7,"description":"Unused, as roboport equipment does not have a logistic radius that could be drawn.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"power","order":22,"description":"Mandatory if `burner` is defined.\n\nThe size of the buffer of the burner energy source, so effectively the amount of power that the energy source can produce per tick.","override":false,"type":"Energy","optional":true},{"name":"recharging_animation","order":0,"description":"The animation played at each charging point when a robot is charging there.","override":false,"type":"Animation","optional":true},{"name":"recharging_light","order":9,"description":"The light emitted when charging a robot.","override":false,"type":"LightDefinition","optional":true},{"name":"robot_limit","order":17,"description":"How many robots can exist in the network (cumulative).","override":false,"type":"ItemCountType","optional":true,"default":"max uint"},{"name":"robot_vertical_acceleration","order":15,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.01}},{"name":"robots_shrink_when_entering_and_exiting","order":18,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"spawn_and_station_height","order":1,"description":"Presumably states the height of the charging stations and thus an additive offset for the charging_offsets.","override":false,"type":"float","optional":false},{"name":"spawn_and_station_shadow_height_offset","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"spawn_minimum","order":20,"description":"Minimum amount of energy that needs to available inside the roboport's buffer so that robots can be spawned.","override":false,"type":"Energy","optional":true,"default":"0.2 * energy_source.buffer_capacity"},{"name":"stationing_offset","order":16,"description":"The offset from the center of the roboport at which robots will enter and exit.","override":false,"type":"Vector","optional":true},{"name":"stationing_render_layer_swap_height","order":6,"description":"When robot ascends or descends to this roboport, at which height is should switch between `\"air-object\"` and `\"object\"` [render layer](prototype:RenderLayer).","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.87}}]},{"name":"RoboportPrototype","order":210,"description":"A [roboport](https://wiki.factorio.com/Roboport).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"roboport","deprecated":false,"properties":[{"name":"base","order":5,"description":"","override":false,"type":"Sprite","optional":true},{"name":"base_animation","order":8,"description":"The animation played when the roboport is idle.","override":false,"type":"Animation","optional":true},{"name":"base_patch","order":6,"description":"","override":false,"type":"Sprite","optional":true},{"name":"charge_approach_distance","order":16,"description":"The distance (in tiles) from the roboport at which robots will wait to charge. Notably, if the robot is already in range, then it will simply wait at its current position.","override":false,"type":"float","optional":false},{"name":"charging_distance","order":40,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"charging_energy","order":19,"description":"The maximum power provided to each charging station.","examples":["```\ncharging_energy = \"1000kW\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"charging_offsets","order":47,"description":"The offsets from the center of the roboport at which robots will charge. Only used if `charging_station_count` is equal to 0.","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":true},{"name":"charging_station_count","order":38,"description":"How many charging points this roboport has. If this is 0, the length of the charging_offsets table is used to calculate the charging station count.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"charging_station_count_affected_by_quality","order":39,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"charging_station_shift","order":41,"description":"","override":false,"type":"Vector","optional":true},{"name":"charging_threshold_distance","order":42,"description":"Unused.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"circuit_connector","order":30,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":27,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"close_door_trigger_effect","order":21,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"construction_radius","order":18,"description":"Can't be negative.","override":false,"type":"float","optional":false},{"name":"default_available_construction_output_signal","order":24,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_available_logistic_output_signal","order":22,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_roboport_count_output_signal","order":26,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_total_construction_output_signal","order":25,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_total_logistic_output_signal","order":23,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"door_animation_down","order":10,"description":"","override":false,"type":"Animation","optional":true},{"name":"door_animation_up","order":9,"description":"","override":false,"type":"Animation","optional":true},{"name":"draw_circuit_wires","order":29,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_construction_radius_visualization","order":36,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":28,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_logistic_radius_visualization","order":35,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"energy_source","order":0,"description":"The roboport's energy source.","override":false,"type":{"complex_type":"union","options":["ElectricEnergySource","VoidEnergySource"],"full_format":false},"optional":false},{"name":"energy_usage","order":1,"description":"The amount of energy the roboport uses when idle.","examples":["```\nenergy_usage = \"50kW\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"frozen_patch","order":7,"description":"","override":false,"type":"Sprite","optional":true},{"name":"logistics_connection_distance","order":48,"description":"Must be >= `logistics_radius`.","override":false,"type":"float","optional":true,"default":"value of `logistics_radius`"},{"name":"logistics_radius","order":17,"description":"Can't be negative.","override":false,"type":"float","optional":false},{"name":"material_slots_count","order":4,"description":"The number of repair pack slots in the roboport.","override":false,"type":"ItemStackIndex","optional":false},{"name":"max_logistic_slots","order":32,"description":"","override":false,"type":"LogisticFilterIndex","optional":true},{"name":"open_door_trigger_effect","order":20,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"radar_range","order":12,"description":"In chunks. The radius of how many chunks this roboport charts around itself. Defaults to the max of logistic range or construction range rounded up to chunks.","override":false,"type":"uint32","optional":true},{"name":"radar_visualisation_color","order":13,"description":"","override":false,"type":"Color","optional":true},{"name":"recharge_minimum","order":2,"description":"Minimum charge that the roboport has to have after a blackout (0 charge/buffered energy) to begin working again. Additionally, freshly placed roboports will have their energy buffer filled with `0.25 \u00d7 recharge_minimum` energy.\n\nMust be larger than or equal to `energy_usage` otherwise during low power the roboport will toggle on and off every tick.","examples":["```\nrecharge_minimum = \"40MJ\"\n```"],"override":false,"type":"Energy","optional":false},{"name":"recharging_animation","order":14,"description":"The animation played at each charging point when a robot is charging there.","override":false,"type":"Animation","optional":true},{"name":"recharging_light","order":37,"description":"The light emitted when charging a robot.","override":false,"type":"LightDefinition","optional":true},{"name":"render_recharge_icon","order":31,"description":"Whether to render the [no charge](prototype:UtilitySprites::recharge_icon) icon if the roboport has less energy than `recharge_minimum` in its internal buffer and is recovering from a blackout.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"request_to_open_door_timeout","order":11,"description":"","override":false,"type":"uint32","optional":false},{"name":"robot_limit","order":45,"description":"Unused.","override":false,"type":"ItemCountType","optional":true,"default":"max uint"},{"name":"robot_slots_count","order":3,"description":"The number of robot slots in the roboport.","override":false,"type":"ItemStackIndex","optional":false},{"name":"robot_vertical_acceleration","order":43,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.01}},{"name":"robots_shrink_when_entering_and_exiting","order":46,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"spawn_and_station_height","order":15,"description":"Presumably states the height of the charging stations and thus an additive offset for the charging_offsets.","override":false,"type":"float","optional":false},{"name":"spawn_and_station_shadow_height_offset","order":33,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"stationing_offset","order":44,"description":"The offset from the center of the roboport at which robots will enter and exit.","override":false,"type":"Vector","optional":true},{"name":"stationing_render_layer_swap_height","order":34,"description":"When robot ascends or descends to this roboport, at which height is should switch between `\"air-object\"` and `\"object\"` [render layer](prototype:RenderLayer).","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.87}}]},{"name":"RobotWithLogisticInterfacePrototype","order":211,"description":"The common properties of logistic and construction robots represented by an abstract prototype.","parent":"FlyingRobotPrototype","abstract":true,"deprecated":false,"properties":[{"name":"charging_sound","order":8,"description":"","override":false,"type":"InterruptibleSound","optional":true},{"name":"destroy_action","order":6,"description":"Applied when the robot expires (runs out of energy and [FlyingRobotPrototype::speed_multiplier_when_out_of_energy](prototype:FlyingRobotPrototype::speed_multiplier_when_out_of_energy) is 0).","override":false,"type":"Trigger","optional":true},{"name":"draw_cargo","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"idle","order":2,"description":"Only the first frame of the animation is drawn. This means that the graphics for the idle state cannot be animated.","override":false,"type":"RotatedAnimation","optional":true},{"name":"in_motion","order":3,"description":"Only the first frame of the animation is drawn. This means that the graphics for the in_motion state cannot be animated.","override":false,"type":"RotatedAnimation","optional":true},{"name":"max_payload_size","order":0,"description":"The robot's cargo carrying capacity. Can be increased by [worker robot cargo size research](prototype:WorkerRobotStorageModifier).","override":false,"type":"ItemCountType","optional":false},{"name":"max_payload_size_after_bonus","order":1,"description":"The robot's maximum possible cargo carrying capacity, including bonuses. Useful to limit the impact of [worker robot cargo size research](prototype:WorkerRobotStorageModifier).\n\nMust be >= max_payload_size.","override":false,"type":"ItemCountType","optional":true,"default":"max ItemCountType"},{"name":"shadow_idle","order":4,"description":"Only the first frame of the animation is drawn. This means that the graphics for the idle state cannot be animated.","override":false,"type":"RotatedAnimation","optional":true},{"name":"shadow_in_motion","order":5,"description":"Only the first frame of the animation is drawn. This means that the graphics for the in_motion state cannot be animated.","override":false,"type":"RotatedAnimation","optional":true}]},{"name":"RocketSiloPrototype","order":212,"description":"A [rocket silo](https://wiki.factorio.com/Rocket_silo).","parent":"AssemblingMachinePrototype","abstract":false,"typename":"rocket-silo","deprecated":false,"properties":[{"name":"active_energy_usage","order":0,"description":"Additional energy used during the following parts of the [launch sequence](runtime:defines.rocket_silo_status): doors_opening, rocket_rising, arms_advance, engine_starting, arms_retract, doors_closing.","override":false,"type":"Energy","optional":false},{"name":"alarm_sound","order":46,"description":"Played when switching into the [lights_blinking_open](runtime:defines.rocket_silo_status.lights_blinking_open) state.","override":false,"type":"Sound","optional":true},{"name":"alarm_trigger","order":41,"description":"Applied when switching into the [lights_blinking_open](runtime:defines.rocket_silo_status.lights_blinking_open) state.","override":false,"type":"TriggerEffect","optional":true},{"name":"arm_01_back_animation","order":4,"description":"","override":false,"type":"Animation","optional":true},{"name":"arm_02_right_animation","order":3,"description":"","override":false,"type":"Animation","optional":true},{"name":"arm_03_front_animation","order":5,"description":"","override":false,"type":"Animation","optional":true},{"name":"base_day_sprite","order":13,"description":"","override":false,"type":"Sprite","optional":true},{"name":"base_engine_light","order":36,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"base_front_frozen","order":18,"description":"","override":false,"type":"Sprite","optional":true},{"name":"base_front_sprite","order":14,"description":"","override":false,"type":"Sprite","optional":true},{"name":"base_frozen","order":17,"description":"","override":false,"type":"Sprite","optional":true},{"name":"base_light","order":35,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"base_night_sprite","order":34,"description":"Drawn instead of `base_day_sprite` during the night, that is when [LuaSurface::darkness](runtime:LuaSurface::darkness) is larger than 0.3.","override":false,"type":"Sprite","optional":true},{"name":"can_launch_without_landing_pads","order":56,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"cargo_station_parameters","order":54,"description":"Must have exactly one entry in [CargoStationParameters::hatch_definitions](prototype:CargoStationParameters::hatch_definitions).","override":false,"type":"CargoStationParameters","optional":false},{"name":"clamps_off_sound","order":49,"description":"Played when switching into the [arms_retract](runtime:defines.rocket_silo_status.arms_retract) state.","override":false,"type":"Sound","optional":true},{"name":"clamps_off_trigger","order":43,"description":"Applied when switching into the [arms_retract](runtime:defines.rocket_silo_status.arms_retract) state.","override":false,"type":"TriggerEffect","optional":true},{"name":"clamps_on_sound","order":48,"description":"Played when switching into the [arms_advance](runtime:defines.rocket_silo_status.arms_advance) state.","override":false,"type":"Sound","optional":true},{"name":"clamps_on_trigger","order":42,"description":"Applied when switching into the [arms_advance](runtime:defines.rocket_silo_status.arms_advance) state.","override":false,"type":"TriggerEffect","optional":true},{"name":"door_back_frozen","order":20,"description":"","override":false,"type":"Sprite","optional":true},{"name":"door_back_open_offset","order":23,"description":"","override":false,"type":"Vector","optional":false},{"name":"door_back_sprite","order":11,"description":"","override":false,"type":"Sprite","optional":true},{"name":"door_front_frozen","order":21,"description":"","override":false,"type":"Sprite","optional":true},{"name":"door_front_open_offset","order":24,"description":"","override":false,"type":"Vector","optional":false},{"name":"door_front_sprite","order":12,"description":"","override":false,"type":"Sprite","optional":true},{"name":"door_opening_speed","order":29,"description":"The inverse of the duration in ticks of [doors_opening](runtime:defines.rocket_silo_status.doors_opening) and [closing](runtime:defines.rocket_silo_status.doors_closing).","examples":["```\ndoor_opening_speed = 1 / (4 * 60) -- doors opening and closing takes 4 seconds\n```"],"override":false,"type":"double","optional":false},{"name":"doors_sound","order":50,"description":"Played when switching into the [doors_opening](runtime:defines.rocket_silo_status.doors_opening) and [doors_closing](runtime:defines.rocket_silo_status.doors_closing) states.","override":false,"type":"Sound","optional":true},{"name":"doors_trigger","order":44,"description":"Applied when switching into the [doors_opening](runtime:defines.rocket_silo_status.doors_opening) and [doors_closing](runtime:defines.rocket_silo_status.doors_closing) states.","override":false,"type":"TriggerEffect","optional":true},{"name":"hole_clipping_box","order":22,"description":"","override":false,"type":"BoundingBox","optional":false},{"name":"hole_frozen","order":19,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hole_light_sprite","order":8,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hole_sprite","order":7,"description":"","override":false,"type":"Sprite","optional":true},{"name":"lamp_energy_usage","order":1,"description":"May be 0.\n\nAdditional energy used during the night, that is when [LuaSurface::darkness](runtime:LuaSurface::darkness) is larger than 0.3.","override":false,"type":"Energy","optional":false},{"name":"launch_to_space_platforms","order":55,"description":"Enables 'Space Age' functionality for this rocket silo, allowing it to supply space platforms.","visibility":["space_age"],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"launch_wait_time","order":38,"description":"The time to wait in the [launch_started](runtime:defines.rocket_silo_status.launch_started) state before switching to [engine_starting](runtime:defines.rocket_silo_status.engine_starting).","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":120}},{"name":"light_blinking_speed","order":28,"description":"The inverse of the duration in ticks of [lights_blinking_open](runtime:defines.rocket_silo_status.lights_blinking_open) and [lights_blinking_close](runtime:defines.rocket_silo_status.lights_blinking_close).","examples":["```\nlight_blinking_speed = 1 / (2 * 60) -- lights blinking takes 120 ticks\n```"],"override":false,"type":"double","optional":false},{"name":"logistic_trash_inventory_size","order":53,"description":"","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"quick_alarm_sound","order":47,"description":"Played when switching from [rocket_flying](runtime:defines.rocket_silo_status.rocket_flying) into the [doors_opened](runtime:defines.rocket_silo_status.doors_opened) state when a quick follow-up rocket is ready.","override":false,"type":"Sound","optional":true},{"name":"raise_rocket_sound","order":51,"description":"Played when switching into the [rocket_rising](runtime:defines.rocket_silo_status.rocket_rising) state.","override":false,"type":"Sound","optional":true},{"name":"raise_rocket_trigger","order":45,"description":"Applied when switching into the [rocket_rising](runtime:defines.rocket_silo_status.rocket_rising) state.","override":false,"type":"TriggerEffect","optional":true},{"name":"red_lights_back_sprites","order":15,"description":"Drawn from the start of the [lights_blinking_open](runtime:defines.rocket_silo_status.lights_blinking_open) state until the end of the [lights_blinking_close](runtime:defines.rocket_silo_status.lights_blinking_close) state.","override":false,"type":"Sprite","optional":true},{"name":"red_lights_front_sprites","order":16,"description":"Drawn from the start of the [lights_blinking_open](runtime:defines.rocket_silo_status.lights_blinking_open) state until the end of the [lights_blinking_close](runtime:defines.rocket_silo_status.lights_blinking_close) state.","override":false,"type":"Sprite","optional":true},{"name":"render_not_in_network_icon","order":39,"description":"Whether the \"no network\" icon should be rendered on this entity if the entity is not within a logistics network.","images":[{"filename":"too-far-from-roboport-icon.png"}],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"rocket_entity","order":2,"description":"Name of a [RocketSiloRocketPrototype](prototype:RocketSiloRocketPrototype).","override":false,"type":"EntityID","optional":false},{"name":"rocket_glow_overlay_sprite","order":10,"description":"","override":false,"type":"Sprite","optional":true},{"name":"rocket_parts_required","order":30,"description":"The number of crafts that must complete to produce a rocket. This includes bonus crafts from productivity. Recipe products are ignored.","override":false,"type":"uint32","optional":false},{"name":"rocket_parts_storage_cap","order":40,"description":"Must be at least `rocket_parts_required`.","override":false,"type":"uint32","optional":true,"default":"Value of `rocket_parts_required`"},{"name":"rocket_quick_relaunch_start_offset","order":31,"description":"","override":false,"type":"double","optional":false},{"name":"rocket_rising_delay","order":37,"description":"The time to wait in the [doors_opened](runtime:defines.rocket_silo_status.doors_opened) state before switching to [rocket_rising](runtime:defines.rocket_silo_status.rocket_rising).","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":30}},{"name":"rocket_shadow_overlay_sprite","order":9,"description":"","override":false,"type":"Sprite","optional":true},{"name":"satellite_animation","order":32,"description":"","override":false,"type":"Animation","optional":true},{"name":"satellite_shadow_animation","order":33,"description":"","override":false,"type":"Animation","optional":true},{"name":"shadow_sprite","order":6,"description":"","override":false,"type":"Sprite","optional":true},{"name":"silo_fade_out_end_distance","order":26,"description":"","override":false,"type":"double","optional":false},{"name":"silo_fade_out_start_distance","order":25,"description":"","override":false,"type":"double","optional":false},{"name":"times_to_blink","order":27,"description":"How many times the `red_lights_back_sprites` and `red_lights_front_sprites` should blink during [lights_blinking_open](runtime:defines.rocket_silo_status.lights_blinking_open) and [lights_blinking_close](runtime:defines.rocket_silo_status.lights_blinking_close).\n\nDoes not affect the duration of the launch sequence.","override":false,"type":"uint8","optional":false},{"name":"to_be_inserted_to_rocket_inventory_size","order":52,"description":"","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"RocketSiloRocketPrototype","order":213,"description":"The rocket inside the rocket silo.","parent":"EntityPrototype","abstract":false,"typename":"rocket-silo-rocket","deprecated":false,"properties":[{"name":"cargo_attachment_offset","order":17,"description":"","override":false,"type":"Vector","optional":true},{"name":"cargo_pod_entity","order":1,"description":"Name of a [CargoPodPrototype](prototype:CargoPodPrototype).","override":false,"type":"EntityID","optional":false},{"name":"dying_explosion","order":2,"description":"","override":false,"type":"EntityID","optional":true},{"name":"effects_fade_in_end_distance","order":24,"description":"","override":false,"type":"double","optional":false},{"name":"effects_fade_in_start_distance","order":23,"description":"","override":false,"type":"double","optional":false},{"name":"engine_starting_speed","order":32,"description":"","override":false,"type":"double","optional":false},{"name":"flying_acceleration","order":34,"description":"","override":false,"type":"double","optional":false},{"name":"flying_sound","order":36,"description":"","override":false,"type":"Sound","optional":true},{"name":"flying_speed","order":33,"description":"","override":false,"type":"double","optional":false},{"name":"flying_trigger","order":35,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"full_render_layer_switch_distance","order":21,"description":"","override":false,"type":"double","optional":false},{"name":"glow_light","order":3,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"inventory_size","order":37,"description":"","override":false,"type":"ItemStackIndex","optional":false},{"name":"rising_speed","order":31,"description":"","override":false,"type":"double","optional":false},{"name":"rocket_above_wires_slice_offset_from_center","order":28,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":-3}},{"name":"rocket_air_object_slice_offset_from_center","order":29,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":-6}},{"name":"rocket_flame_animation","order":12,"description":"","override":false,"type":"Animation","optional":true},{"name":"rocket_flame_left_animation","order":13,"description":"","override":false,"type":"Animation","optional":true},{"name":"rocket_flame_left_rotation","order":18,"description":"","override":false,"type":"float","optional":false},{"name":"rocket_flame_right_animation","order":14,"description":"","override":false,"type":"Animation","optional":true},{"name":"rocket_flame_right_rotation","order":19,"description":"","override":false,"type":"float","optional":false},{"name":"rocket_fog_mask","order":30,"description":"","override":false,"type":"FogMaskShapeDefinition","optional":true,"default":"`{rect={{-30, -30}, {30, rocket_above_wires_slice_offset_from_center}}, falloff=1}`"},{"name":"rocket_glare_overlay_sprite","order":6,"description":"","override":false,"type":"Sprite","optional":true},{"name":"rocket_initial_offset","order":15,"description":"","override":false,"type":"Vector","optional":true},{"name":"rocket_launch_offset","order":22,"description":"","override":false,"type":"Vector","optional":false},{"name":"rocket_render_layer_switch_distance","order":20,"description":"","override":false,"type":"double","optional":false},{"name":"rocket_rise_offset","order":16,"description":"","override":false,"type":"Vector","optional":false},{"name":"rocket_shadow_sprite","order":5,"description":"","override":false,"type":"Sprite","optional":true},{"name":"rocket_smoke_bottom1_animation","order":7,"description":"","override":false,"type":"Animation","optional":true},{"name":"rocket_smoke_bottom2_animation","order":8,"description":"","override":false,"type":"Animation","optional":true},{"name":"rocket_smoke_top1_animation","order":9,"description":"","override":false,"type":"Animation","optional":true},{"name":"rocket_smoke_top2_animation","order":10,"description":"","override":false,"type":"Animation","optional":true},{"name":"rocket_smoke_top3_animation","order":11,"description":"","override":false,"type":"Animation","optional":true},{"name":"rocket_sprite","order":4,"description":"","override":false,"type":"Sprite","optional":true},{"name":"rocket_visible_distance_from_center","order":27,"description":"","override":false,"type":"float","optional":false},{"name":"shadow_fade_out_end_ratio","order":26,"description":"","override":false,"type":"double","optional":false},{"name":"shadow_fade_out_start_ratio","order":25,"description":"","override":false,"type":"double","optional":false},{"name":"shadow_slave_entity","order":0,"description":"","override":false,"type":"EntityID","optional":true}]},{"name":"RocketSiloRocketShadowPrototype","order":214,"description":"The shadow of the rocket inside the rocket silo.","examples":["```\n{\n  type = \"rocket-silo-rocket-shadow\",\n  name = \"rocket-silo-rocket-shadow\",\n  flags = {\"not-on-map\"},\n  hidden = true,\n  collision_mask = {layers={}, not_colliding_with_itself=true},\n  collision_box = {{0, 0}, {10, 3.5}},\n  selection_box = {{0, 0}, {0, 0}}\n}\n```"],"parent":"EntityPrototype","abstract":false,"typename":"rocket-silo-rocket-shadow","deprecated":false,"properties":[]},{"name":"RollingStockPrototype","order":215,"description":"The abstract base of all rolling stock.","parent":"VehiclePrototype","abstract":true,"deprecated":false,"properties":[{"name":"air_resistance","order":1,"description":"","override":false,"type":"double","optional":false},{"name":"allow_manual_color","order":15,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_robot_dispatch_in_automatic_mode","order":16,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"back_light","order":10,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"color","order":14,"description":"","override":false,"type":"Color","optional":true},{"name":"connection_distance","order":3,"description":"The distance between the joint of this rolling stock and its connected rolling stocks joint.\n\nMaximum connection distance is 15.","override":false,"type":"double","optional":false},{"name":"default_copy_color_from_train_stop","order":17,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"door_closing_sound","order":24,"description":"Cannot use `fade_ticks`.","override":false,"type":"InterruptibleSound","optional":true},{"name":"door_opening_sound","order":23,"description":"Cannot use `fade_ticks`.","override":false,"type":"InterruptibleSound","optional":true},{"name":"drive_over_elevated_tie_trigger","order":22,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"drive_over_tie_trigger","order":7,"description":"Usually a sound to play when the rolling stock drives over a tie. The rolling stock is considered to be driving over a tie every `tie_distance` tiles.","override":false,"type":"TriggerEffect","optional":true},{"name":"drive_over_tie_trigger_minimal_speed","order":8,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"elevated_collision_mask","order":19,"description":"Defaults to the mask from [UtilityConstants::default_collision_masks](prototype:UtilityConstants::default_collision_masks) when indexed by  `type .. \"/elevated\"`.","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"elevated_rail_sound","order":21,"description":"","override":false,"type":"MainSound","optional":true},{"name":"elevated_selection_priority","order":20,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":56}},{"name":"horizontal_doors","order":12,"description":"","override":false,"type":"Animation","optional":true},{"name":"joint_distance","order":2,"description":"The length between this rolling stocks front and rear joints. Joints are the point where connection_distance is measured from when rolling stock are connected to one another. Wheels sprite are placed based on the joint position.\n\nMaximum joint distance is 15.\n\nNote: There needs to be border at least 0.2 between the [bounding box](prototype:EntityPrototype::collision_box) edge and joint. This means that the collision_box must be at least `{{-0,-0.2},{0,0.2}}`.","override":false,"type":"double","optional":false},{"name":"max_speed","order":0,"description":"Maximum speed of the rolling stock in tiles/tick.\n\nIn-game, the max speed of a train is `min(all_rolling_stock_max_speeds) \u00d7 average(all_fuel_modifiers_in_all_locomotives)`. This calculated train speed is then silently capped to 7386.3km/h.","override":false,"type":"double","optional":false},{"name":"pictures","order":4,"description":"","override":false,"type":"RollingStockRotatedSlopedGraphics","optional":true},{"name":"stand_by_light","order":11,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"tie_distance","order":9,"description":"In tiles. Used to determine how often `drive_over_tie_trigger` is triggered.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":10.0}},{"name":"transition_collision_mask","order":18,"description":"Defaults to the mask from [UtilityConstants::default_collision_masks](prototype:UtilityConstants::default_collision_masks) when indexed by  `type .. \"/transition\"`.","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"vertical_doors","order":13,"description":"","override":false,"type":"Animation","optional":true},{"name":"vertical_selection_shift","order":6,"description":"","override":false,"type":"double","optional":false},{"name":"wheels","order":5,"description":"","override":false,"type":"RollingStockRotatedSlopedGraphics","optional":true}]},{"name":"SegmentPrototype","order":216,"description":"Entity representing an individual segment in a [SegmentedUnitPrototype](prototype:SegmentedUnitPrototype)","visibility":["space_age"],"parent":"EntityWithOwnerPrototype","abstract":false,"typename":"segment","deprecated":false,"properties":[{"name":"animation","order":2,"description":"The animation to use of the entity.","override":false,"type":"RotatedAnimation","optional":false},{"name":"backward_overlap","order":5,"description":"The number of segments behind this one that should always be rendered atop this one, giving the illusion that at all orientations, those following segments overlap this current segment.\n\nMust be 0 or greater, and the sum of `forward_overlap` and `backward_overlap` must be less than or equal to 4.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"backward_padding","order":7,"description":"The number of tiles of spacing to add behind this segment. Can be negative. Scales with the segment scale when used in a [SegmentEngineSpecification](prototype:SegmentEngineSpecification).","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"dying_sound","order":0,"description":"The sound to play when the entity dies.\n\nIf not specified, [UtilitySounds::segment_dying_sound](prototype:UtilitySounds::segment_dying_sound) is used.","override":false,"type":"Sound","optional":true},{"name":"dying_sound_volume_modifier","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"forward_overlap","order":4,"description":"The number of segments ahead of this one that should always be rendered atop this one, giving the illusion that at all orientations, those preceding segments overlap this current segment.\n\nMust be 0 or greater, and the sum of `forward_overlap` and `backward_overlap` must be less than or equal to 4.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"forward_padding","order":6,"description":"The number of tiles of spacing to add in front of this segment. Can be negative. Scales with the segment scale when used in a [SegmentEngineSpecification](prototype:SegmentEngineSpecification).","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"render_layer","order":3,"description":"The layer to render the entity in.","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"update_effects","order":8,"description":"The effects to trigger every tick.","override":false,"type":{"complex_type":"array","value":"TriggerEffectWithCooldown"},"optional":true},{"name":"update_effects_while_enraged","order":9,"description":"The effects to trigger every tick while enraged, in addition to `update_effects`.","override":false,"type":{"complex_type":"array","value":"TriggerEffectWithCooldown"},"optional":true}]},{"name":"SegmentedUnitPrototype","order":217,"description":"Entity composed of multiple segment entities that trail behind the head.","visibility":["space_age"],"parent":"SegmentPrototype","abstract":false,"typename":"segmented-unit","deprecated":false,"properties":[{"name":"acceleration_rate","order":9,"description":"The acceleration rate when moving from one state to another. Cannot be negative.","override":false,"type":"double","optional":false},{"name":"attack_parameters","order":1,"description":"Attack parameters for when a segmented unit is attacking something.","override":false,"type":"AttackParameters","optional":true},{"name":"attacking_speed","order":7,"description":"The movement speed while attacking, in tiles per tick. Cannot be negative.","override":false,"type":"double","optional":false},{"name":"enraged_duration","order":4,"description":"The number of ticks to remain enraged after last taking damage.","override":false,"type":"MapTick","optional":false},{"name":"enraged_speed","order":8,"description":"The movement speed while enraged, in tiles per tick. Cannot be negative.","override":false,"type":"double","optional":false},{"name":"hurt_roar","order":17,"description":"Sound which plays when health ratio drops below any of `hurt_thresholds`.","override":false,"type":"Sound","optional":true},{"name":"hurt_thresholds","order":18,"description":"Only loaded, and mandatory if `hurt_roar` is defined.","override":false,"type":{"complex_type":"array","value":"float"},"optional":true},{"name":"investigating_speed","order":6,"description":"The movement speed while investigating, in tiles per tick. Cannot be negative.","override":false,"type":"double","optional":false},{"name":"patrolling_speed","order":5,"description":"The movement speed while patrolling, in tiles per tick. Cannot be negative.","override":false,"type":"double","optional":false},{"name":"patrolling_turn_radius","order":11,"description":"Cannot be negative.","override":false,"type":"double","optional":true,"default":"Value of `turn_radius`"},{"name":"revenge_attack_parameters","order":2,"description":"Attack parameters for when a segmented unit is attacking something in retaliation because the target first attacked it.","override":false,"type":"AttackParameters","optional":true},{"name":"roar","order":15,"description":"","override":false,"type":"Sound","optional":true},{"name":"roar_probability","order":16,"description":"The default is 1.0f / (6.0f * 60.0f), average pause between roars is 6 seconds.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.00277777785}},{"name":"segment_engine","order":14,"description":"Specification of the segment engine, which should contain a list of the segments that compose the entity's body.","override":false,"type":"SegmentEngineSpecification","optional":false},{"name":"territory_radius","order":3,"description":"The territory radius in chunks. The chunk in which the entity spawned is included.","override":false,"type":"uint32","optional":false},{"name":"ticks_per_scan","order":13,"description":"The number of ticks between territory scans. Greater values means longer time between scans, which means a slower reaction time. Cannot be `0`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":120}},{"name":"turn_radius","order":10,"description":"Turn radius, in tiles. Cannot be negative.","override":false,"type":"double","optional":false},{"name":"turn_smoothing","order":12,"description":"Attempts to smooth out tight turns by limiting how quickly the unit can change turning directions. 0 means no turn smoothing, 1 means no turning whatsoever. Must be between 0 and 1.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"vision_distance","order":0,"description":"Vision distance, affects scanning radius for enemies to attack. Must be non-negative. Max 100.","override":false,"type":"double","optional":false}]},{"name":"SelectionToolPrototype","order":218,"description":"Used in the base game as a base for the blueprint item and the deconstruction item.","parent":"ItemWithLabelPrototype","abstract":false,"typename":"selection-tool","deprecated":false,"properties":[{"name":"alt_reverse_select","order":4,"description":"Settings for how the selection tool alt-reverse-selects things in-game (using SHIFT + Right mouse button).","override":false,"type":"SelectionModeData","optional":true},{"name":"alt_select","order":1,"description":"","override":false,"type":"SelectionModeData","optional":false},{"name":"always_include_tiles","order":5,"description":"If tiles should be included in the selection regardless of entities also being in the selection. This is a visual only setting.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"mouse_cursor","order":6,"description":"","override":false,"type":"MouseCursorID","optional":true,"default":{"complex_type":"literal","value":"selection-tool-cursor"}},{"name":"reverse_select","order":3,"description":"","override":false,"type":"SelectionModeData","optional":true},{"name":"select","order":0,"description":"","override":false,"type":"SelectionModeData","optional":false},{"name":"skip_fog_of_war","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"super_forced_select","order":2,"description":"","override":false,"type":"SelectionModeData","optional":true}]},{"name":"SelectorCombinatorPrototype","order":219,"description":"","parent":"CombinatorPrototype","abstract":false,"typename":"selector-combinator","deprecated":false,"properties":[{"name":"count_symbol_sprites","order":2,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"max_symbol_sprites","order":0,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"min_symbol_sprites","order":1,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"quality_symbol_sprites","order":6,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"random_symbol_sprites","order":3,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"rocket_capacity_sprites","order":5,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"stack_size_sprites","order":4,"description":"","override":false,"type":"Sprite4Way","optional":true}]},{"name":"ShootAchievementPrototype","order":220,"description":"This prototype is used for receiving an achievement when the player shoots certain ammo.","parent":"AchievementPrototype","abstract":false,"typename":"shoot-achievement","deprecated":false,"properties":[{"name":"ammo_type","order":0,"description":"This will trigger the achievement, if this ammo is shot.","examples":["```\nammo_type = \"atomic-bomb\"\n```"],"override":false,"type":"ItemID","optional":true},{"name":"amount","order":1,"description":"How much of the ammo needs to be shot.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"ShortcutPrototype","order":221,"description":"Definition for a shortcut button in the [shortcut bar](https://wiki.factorio.com/Shortcut_bar).\n\nThis is **not** a custom keybinding (keyboard shortcut), for that see [CustomInputPrototype](prototype:CustomInputPrototype).","examples":["```\n{\n  type = \"shortcut\",\n  name = \"give-deconstruction-planner\",\n  order = \"b[blueprints]-i[deconstruction-planner]\",\n  action = \"spawn-item\",\n  localised_name = {\"shortcut.make-deconstruction-planner\"},\n  associated_control_input = \"give-deconstruction-planner\",\n  technology_to_unlock = \"construction-robotics\",\n  item_to_spawn = \"deconstruction-planner\",\n  style = \"red\",\n  icon = \"__base__/graphics/icons/shortcut-toolbar/mip/new-deconstruction-planner-x56.png\",\n  icon_size = 56,\n  small_icon = \"__base__/graphics/icons/shortcut-toolbar/mip/new-deconstruction-planner-x24.png\",\n  small_icon_size = 24\n}\n```"],"parent":"Prototype","abstract":false,"typename":"shortcut","deprecated":false,"properties":[{"name":"action","order":0,"description":"If this is `\"lua\"`, [on_lua_shortcut](runtime:on_lua_shortcut) is raised when the shortcut is clicked.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"toggle-alt-mode"},{"complex_type":"literal","value":"undo"},{"complex_type":"literal","value":"redo"},{"complex_type":"literal","value":"paste"},{"complex_type":"literal","value":"import-string"},{"complex_type":"literal","value":"toggle-personal-roboport"},{"complex_type":"literal","value":"toggle-personal-logistic-requests"},{"complex_type":"literal","value":"toggle-equipment-movement-bonus"},{"complex_type":"literal","value":"spawn-item"},{"complex_type":"literal","value":"lua"}],"full_format":false},"optional":false},{"name":"associated_control_input","order":11,"description":"Name of a custom input or vanilla control. This is **only** used to show the keybind in the tooltip of the shortcut.","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"icon","order":2,"description":"Path to the icon file.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":3,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nThe base game uses 32px icons for shortcuts.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":1,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"item_to_spawn","order":7,"description":"The item to create when clicking on a shortcut with the action set to `\"spawn-item\"`. The item must have the [spawnable](prototype:ItemPrototypeFlags::spawnable) flag set.","override":false,"type":"ItemID","optional":true},{"name":"order","order":13,"description":"Used to order the shortcuts in the [quick panel](https://wiki.factorio.com/Quick_panel), which replaces the shortcut bar when using a controller (game pad). It [is recommended](https://forums.factorio.com/106661) to order modded shortcuts after the vanilla shortcuts.","override":true,"type":"Order","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"small_icon","order":5,"description":"Path to the icon file. Used in the shortcut selection popup.\n\nOnly loaded, and mandatory if `small_icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"small_icon_size","order":6,"description":"The size of the small icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nThe base game uses 24px small icons for shortcuts.\n\nOnly loaded if `small_icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"small_icons","order":4,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"style","order":12,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"default"},{"complex_type":"literal","value":"blue"},{"complex_type":"literal","value":"red"},{"complex_type":"literal","value":"green"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"default"}},{"name":"technology_to_unlock","order":8,"description":"The technology that must be researched before this shortcut can be used. Once a shortcut is unlocked in one save file, it is unlocked for all future save files.","override":false,"type":"TechnologyID","optional":true},{"name":"toggleable","order":10,"description":"Must be enabled for the Factorio API to be able to set the toggled state on the shortcut button, see [LuaPlayer::set_shortcut_toggled](runtime:LuaPlayer::set_shortcut_toggled).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"unavailable_until_unlocked","order":9,"description":"If `true`, the shortcut will not be available until its `technology_to_unlock` is researched, even if it was already researched in a different game.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"SimpleEntityPrototype","order":222,"description":"An extremely basic entity with no special functionality. Used for minable rocks. Cannot be rotated.","parent":"EntityWithHealthPrototype","abstract":false,"typename":"simple-entity","deprecated":false,"properties":[{"name":"animations","order":7,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"count_as_rock_for_filtered_deconstruction","order":0,"description":"Whether this entity should be treated as a rock for the purpose of deconstruction and for [CarPrototype::immune_to_rock_impacts](prototype:CarPrototype::immune_to_rock_impacts).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"lower_pictures","order":9,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"lower_render_layer","order":8,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"lower-object"}},{"name":"picture","order":6,"description":"Takes priority over `animations`. Only the `north` sprite is used because this entity cannot be rotated.","override":false,"type":"Sprite4Way","optional":true},{"name":"pictures","order":5,"description":"Takes priority over `picture` and `animations`.","override":false,"type":"SpriteVariations","optional":true},{"name":"random_animation_offset","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"random_variation_on_create","order":4,"description":"Whether a random graphics variation is chosen when placing the entity/creating it via script/creating it via map generation. If this is `false`, the entity will use the first variation instead of a random one.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"render_layer","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"secondary_draw_order","order":2,"description":"Used to determine render order for entities with the same `render_layer` in the same position. Entities with a higher `secondary_draw_order` are drawn on top.","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"stateless_visualisation_variations","order":10,"description":"Loaded and drawn with all `pictures`, `picture` and `animations`. If graphics variation is larger than number of `lower_pictures` variations this layer is not drawn.","override":false,"type":{"complex_type":"array","value":{"complex_type":"union","options":["StatelessVisualisation",{"complex_type":"array","value":"StatelessVisualisation"}],"full_format":false}},"optional":true}]},{"name":"SimpleEntityWithForcePrototype","order":223,"description":"By default, this entity will be a priority target for units/turrets, who will choose to attack it even if it does not block their path. Setting [EntityWithOwnerPrototype::is_military_target](prototype:EntityWithOwnerPrototype::is_military_target) to `false` will turn this off, which then makes this type equivalent to [SimpleEntityWithOwnerPrototype](prototype:SimpleEntityWithOwnerPrototype).","parent":"SimpleEntityWithOwnerPrototype","abstract":false,"typename":"simple-entity-with-force","deprecated":false,"properties":[{"name":"is_military_target","order":0,"description":"Whether this prototype should be a high priority target for enemy forces. See [Military units and structures](https://wiki.factorio.com/Military_units_and_structures).","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"SimpleEntityWithOwnerPrototype","order":224,"description":"Has a force, but unlike [SimpleEntityWithForcePrototype](prototype:SimpleEntityWithForcePrototype) it is only attacked if the biters get stuck on it (or if [EntityWithOwnerPrototype::is_military_target](prototype:EntityWithOwnerPrototype::is_military_target) set to true to make the two entity types equivalent).\n\nCan be rotated in 4 directions. `picture` can be used to specify different graphics per direction.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"simple-entity-with-owner","deprecated":false,"properties":[{"name":"animations","order":6,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"force_visibility","order":10,"description":"If the entity is not visible to a player, the player cannot select it.","override":false,"type":"ForceCondition","optional":true,"default":{"complex_type":"literal","value":"all"}},{"name":"lower_pictures","order":8,"description":"Loaded and drawn with all `pictures`, `picture` and `animations`. If graphics variation is larger than number of `lower_pictures` variations this layer is not drawn.","override":false,"type":"SpriteVariations","optional":true},{"name":"lower_render_layer","order":7,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"lower-object"}},{"name":"picture","order":5,"description":"Takes priority over `animations`.","override":false,"type":"Sprite4Way","optional":true},{"name":"pictures","order":4,"description":"Takes priority over `picture` and `animations`.","override":false,"type":"SpriteVariations","optional":true},{"name":"random_animation_offset","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"random_variation_on_create","order":3,"description":"Whether a random graphics variation is chosen when placing the entity/creating it via script/creating it via map generation. If this is false, the entity will use the first variation instead of a random one.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"render_layer","order":0,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"secondary_draw_order","order":1,"description":"Used to determine render order for entities with the same `render_layer` in the same position. Entities with a higher `secondary_draw_order` are drawn on top.","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"stateless_visualisation_variations","order":9,"description":"","override":false,"type":{"complex_type":"array","value":{"complex_type":"union","options":["StatelessVisualisation",{"complex_type":"array","value":"StatelessVisualisation"}],"full_format":false}},"optional":true}]},{"name":"SmokePrototype","order":225,"description":"Abstract entity that has an animation.","parent":"EntityPrototype","abstract":true,"deprecated":false,"properties":[{"name":"affected_by_wind","order":9,"description":"Smoke always moves randomly unless `movement_slow_down_factor` is 0. If `affected_by_wind` is true, the smoke will also be moved by wind.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"animation","order":0,"description":"","override":false,"type":"Animation","optional":true},{"name":"collision_box","order":15,"description":"Must have a collision box size of zero.","examples":["```\ncollision_box = {{0, 0}, {0, 0}}\n```"],"override":true,"type":"BoundingBox","optional":true,"default":"Empty = `{{0, 0}, {0, 0}}`"},{"name":"color","order":8,"description":"","override":false,"type":"Color","optional":true,"default":"`{r=0.375, g=0.375, b=0.375, a=0.375}`"},{"name":"cyclic","order":1,"description":"If this is false then the smoke expires when the animation has played once.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"duration","order":2,"description":"May not be 0 if `cyclic` is true. If `cyclic` is false then the smoke will be expire when the animation has played once, even if there would still be duration left.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"end_scale","order":7,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"fade_away_duration","order":4,"description":"`fade_in_duration` + `fade_away_duration` must be <= `duration`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"fade_in_duration","order":5,"description":"`fade_in_duration` + `fade_away_duration` must be <= `duration`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"glow_animation","order":14,"description":"","override":false,"type":"Animation","optional":true},{"name":"glow_fade_away_duration","order":13,"description":"","override":false,"type":"uint32","optional":true,"default":"The value of `fade_away_duration`"},{"name":"movement_slow_down_factor","order":12,"description":"Value between 0 and 1, with 0 being no movement.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.995}},{"name":"render_layer","order":11,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"smoke"}},{"name":"show_when_smoke_off","order":10,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"spread_duration","order":3,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"start_scale","order":6,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}}]},{"name":"SmokeWithTriggerPrototype","order":226,"description":"An entity with animation and a trigger.","parent":"SmokePrototype","abstract":false,"typename":"smoke-with-trigger","deprecated":false,"properties":[{"name":"action","order":0,"description":"","override":false,"type":"Trigger","optional":true},{"name":"action_cooldown","order":1,"description":"0 means never apply.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"attach_to_target","order":10,"description":"If true, causes the smoke to move with the target entity if one is specified.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"fade_when_attachment_is_destroyed","order":11,"description":"If true, the smoke will immediately start fading away when the entity it is attached to is destroyed. If it was never attached to an entity in the first place, then the smoke will fade away immediately after being created.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"particle_count","order":2,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"particle_distance_scale_factor","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"particle_duration_variation","order":5,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"particle_scale_factor","order":7,"description":"","override":false,"type":"Vector","optional":true},{"name":"particle_spread","order":6,"description":"","override":false,"type":"Vector","optional":true},{"name":"spread_duration_variation","order":4,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"wave_distance","order":8,"description":"","override":false,"type":"Vector","optional":true},{"name":"wave_speed","order":9,"description":"","override":false,"type":"Vector","optional":true}]},{"name":"SolarPanelEquipmentPrototype","order":227,"description":"A [portable solar panel](https://wiki.factorio.com/Portable_solar_panel).","parent":"EquipmentPrototype","abstract":false,"typename":"solar-panel-equipment","deprecated":false,"properties":[{"name":"performance_at_day","order":1,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"performance_at_night","order":2,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"power","order":0,"description":"How much power should be provided.","override":false,"type":"Energy","optional":false},{"name":"solar_coefficient_property","order":3,"description":"Surface property must have a positive [default value](prototype:SurfacePropertyPrototype::default_value). When [SolarPanelEquipmentPrototype::solar_coefficient_property](prototype:SolarPanelEquipmentPrototype::solar_coefficient_property) is set to point at a different surface property than \"solar-power\", then [LuaSurface::solar_power_multiplier](runtime:LuaSurface::solar_power_multiplier) and [SpaceLocationPrototype::solar_power_in_space](prototype:SpaceLocationPrototype::solar_power_in_space) will be ignored as the solar panel power output will be only affected by value of this surface property set on the surface using [PlanetPrototype::surface_properties](prototype:PlanetPrototype::surface_properties) or [LuaSurface::set_property](runtime:LuaSurface::set_property).\n\nDue to equipment grid overall description, when solar_coefficient_property is not solar-power, a different locale will be used to show total energy production of solar panels: `description.solar-panel-power-X` where X is the surface property name.","override":false,"type":"SurfacePropertyID","optional":true,"default":{"complex_type":"literal","value":"solar-power"}}]},{"name":"SolarPanelPrototype","order":228,"description":"A [solar panel](https://wiki.factorio.com/Solar_panel).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"solar-panel","deprecated":false,"properties":[{"name":"energy_source","order":0,"description":"Sets how this solar panel connects to the energy network. The most relevant property seems to be the output_priority.","override":false,"type":"ElectricEnergySource","optional":false},{"name":"overlay","order":3,"description":"Overlay has to be empty or have same number of variations as `picture`.","override":false,"type":"SpriteVariations","optional":true},{"name":"performance_at_day","order":4,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"performance_at_night","order":5,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"picture","order":1,"description":"The picture displayed for this solar panel.","override":false,"type":"SpriteVariations","optional":true},{"name":"production","order":2,"description":"The maximum amount of power this solar panel can produce.","override":false,"type":"Energy","optional":false},{"name":"solar_coefficient_property","order":6,"description":"Surface property must have a positive [default value](prototype:SurfacePropertyPrototype::default_value). When [SolarPanelPrototype::solar_coefficient_property](prototype:SolarPanelPrototype::solar_coefficient_property) is set to point at a different surface property than \"solar-power\", then [LuaSurface::solar_power_multiplier](runtime:LuaSurface::solar_power_multiplier) and [SpaceLocationPrototype::solar_power_in_space](prototype:SpaceLocationPrototype::solar_power_in_space) will be ignored as the solar panel power output will be only affected by value of this surface property set on the surface using [PlanetPrototype::surface_properties](prototype:PlanetPrototype::surface_properties) or [LuaSurface::set_property](runtime:LuaSurface::set_property).","override":false,"type":"SurfacePropertyID","optional":true,"default":{"complex_type":"literal","value":"solar-power"}}]},{"name":"SoundPrototype","order":229,"description":"Specifies a sound that can be used with [SoundPath](runtime:SoundPath) at runtime.","abstract":false,"typename":"sound","deprecated":false,"properties":[{"name":"advanced_volume_control","order":8,"description":"","override":false,"type":"AdvancedVolumeControl","optional":true},{"name":"aggregation","order":4,"description":"","override":false,"type":"AggregationSpecification","optional":true},{"name":"allow_random_repeat","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"audible_distance_modifier","order":6,"description":"Modifies how far a sound can be heard. Must be between `0` and `1` inclusive.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"category","order":2,"description":"","override":false,"type":"SoundType","optional":true,"default":{"complex_type":"literal","value":"game-effect"}},{"name":"filename","order":11,"description":"Supported sound file formats are `.ogg` (Vorbis and Opus) and `.wav`.\n\nOnly loaded, and mandatory if `variations` is not defined.","override":false,"type":"FileName","optional":true},{"name":"game_controller_vibration_data","order":7,"description":"","override":false,"type":"GameControllerVibrationData","optional":true},{"name":"max_speed","order":18,"description":"Must be `>= min_speed`.\n\nOnly loaded if `variations` is not defined. Only loaded, and mandatory if `min_speed` is defined.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"max_volume","order":14,"description":"Only loaded if `variations` is not defined.\n\nOnly loaded if `min_volume` is defined.\n\nMust be `>= min_volume`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"min_speed","order":17,"description":"Must be `>= 1 / 64`.\n\nOnly loaded if both `variations` and `speed` are not defined.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"min_volume","order":13,"description":"Only loaded if `variations` and `volume` are not defined.\n\nMust be `>= 0`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"modifiers","order":19,"description":"Only loaded if `variations` is not defined.","override":false,"type":{"complex_type":"union","options":["SoundModifier",{"complex_type":"array","value":"SoundModifier"}],"full_format":false},"optional":true},{"name":"name","order":1,"description":"Name of the sound. Can be used as a [SoundPath](runtime:SoundPath) at runtime.","override":false,"type":"string","optional":false},{"name":"preload","order":15,"description":"Only loaded if `variations` is not defined.","override":false,"type":"boolean","optional":true},{"name":"priority","order":3,"description":"Sounds with higher priority will replace a sound with lower priority if the maximum sounds limit is reached.\n\n0 is the highest priority, 255 is the lowest priority.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":127}},{"name":"speed","order":16,"description":"Speed must be `>= 1 / 64`. This sets both min and max speeds.\n\nOnly loaded if `variations` is not defined.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"speed_smoothing_window_size","order":9,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"sound"},"optional":false},{"name":"variations","order":10,"description":"","override":false,"type":{"complex_type":"union","options":["SoundDefinition",{"complex_type":"array","value":"SoundDefinition"}],"full_format":false},"optional":true},{"name":"volume","order":12,"description":"Only loaded if `variations` is not defined.\n\nThis sets both min and max volumes.\n\nMust be `>= 0`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}}]},{"name":"SpaceConnectionDistanceTraveledAchievementPrototype","order":230,"description":"","parent":"AchievementPrototype","abstract":false,"typename":"space-connection-distance-traveled-achievement","deprecated":false,"properties":[{"name":"distance","order":1,"description":"How far a platform must travel to gain this achievement. Repeated trips over a shorter distance do not count.","override":false,"type":"uint32","optional":false},{"name":"reversed","order":2,"description":"The achievement is unidirectional, this property controls the direction (using space connection definition).\n\nWhen false, a platform must go through [from](prototype:SpaceConnectionPrototype::from) location and travel in [to](prototype:SpaceConnectionPrototype::to) direction. When true, a platform must go through `to` location and travel in `from` direction.","override":false,"type":"boolean","optional":false},{"name":"tracked_connection","order":0,"description":"","override":false,"type":"SpaceConnectionID","optional":false}]},{"name":"SpaceConnectionPrototype","order":231,"description":"","parent":"Prototype","abstract":false,"typename":"space-connection","deprecated":false,"properties":[{"name":"asteroid_spawn_definitions","order":3,"description":"","override":false,"type":{"complex_type":"array","value":"SpaceConnectionAsteroidSpawnDefinition"},"optional":true},{"name":"from","order":0,"description":"","override":false,"type":"SpaceLocationID","optional":false},{"name":"icon","order":5,"description":"Path to the icon file.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":6,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":4,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"length","order":2,"description":"Length of the space connection in km.\n\nCannot be 0.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":600}},{"name":"to","order":1,"description":"","override":false,"type":"SpaceLocationID","optional":false}]},{"name":"SpaceLocationPrototype","order":232,"description":"A space location, such as a planet or the solar system edge.","parent":"Prototype","abstract":false,"typename":"space-location","deprecated":false,"properties":[{"name":"asteroid_spawn_definitions","order":22,"description":"","override":false,"type":{"complex_type":"array","value":"SpaceLocationAsteroidSpawnDefinition"},"optional":true},{"name":"asteroid_spawn_influence","order":8,"description":"If greater than 0, `asteroid_spawn_definitions` will be used on space connections of this location, interpolated based on distance. The number specifies the percentage of the route where the location stops spawning its asteroids.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"auto_save_on_first_trip","order":10,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"distance","order":1,"description":"Distance from the sun in map coordinates.","override":false,"type":"double","optional":false},{"name":"draw_orbit","order":6,"description":"If `false`, the orbital ring around the sun will not be drawn for this location.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"fly_condition","order":9,"description":"When set to true, it means that this connection offers fly condition rather than wait condition at the destination","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"gravity_pull","order":0,"description":"A value which modifies platform speed; is subtracted when traveling from this location and added when traveling to this location.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"hidden","order":23,"description":"Hides the space location from the planet selection lists and the space map.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"icon","order":16,"description":"Path to the icon file.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":17,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":15,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"label_orientation","order":5,"description":"The orientation where the location's name will be drawn.","override":false,"type":"RealOrientation","optional":true,"default":{"complex_type":"literal","value":0.25}},{"name":"magnitude","order":3,"description":"The apparent size of the space location in map coordinates.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"orientation","order":2,"description":"Angle in relation to the sun.","override":false,"type":"RealOrientation","optional":false},{"name":"parked_platforms_orientation","order":4,"description":"The orientation where parked space platforms will be drawn.","override":false,"type":"RealOrientation","optional":true,"default":"same as orientation"},{"name":"planet_procession_set","order":14,"description":"These transitions are used for anything traveling from the surface associated with this location.","override":false,"type":"ProcessionSet","optional":true},{"name":"platform_procession_set","order":13,"description":"These transitions are used for any platform stopped at this location.","override":false,"type":"ProcessionSet","optional":true},{"name":"procession_audio_catalogue","order":12,"description":"","override":false,"type":"ProcessionAudioCatalogue","optional":true},{"name":"procession_graphic_catalogue","order":11,"description":"","override":false,"type":"ProcessionGraphicCatalogue","optional":true},{"name":"solar_power_in_space","order":7,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"starmap_icon","order":19,"description":"Path to the icon file.\n\nOnly loaded if `starmap_icons` is not defined.","visibility":["space_age"],"override":false,"type":"FileName","optional":true},{"name":"starmap_icon_orientation","order":21,"description":"Orientation of the starmap icon, defaults to pointing towards the sun.","override":false,"type":"RealOrientation","optional":true},{"name":"starmap_icon_size","order":20,"description":"The size of the starmap icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `starmap_icons` is not defined.","visibility":["space_age"],"override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"starmap_icons","order":18,"description":"Can't be an empty array.","visibility":["space_age"],"override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true}]},{"name":"SpacePlatformHubPrototype","order":233,"description":"","visibility":["space_age"],"parent":"EntityWithOwnerPrototype","abstract":false,"typename":"space-platform-hub","deprecated":false,"properties":[{"name":"build_grid_size","order":14,"description":"Has to be 256 to make blueprints snap to (0, 0) most of the time.","override":true,"type":{"complex_type":"literal","value":256},"optional":true,"default":{"complex_type":"literal","value":256}},{"name":"cargo_station_parameters","order":13,"description":"","override":false,"type":"CargoStationParameters","optional":false},{"name":"circuit_connector","order":8,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":5,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"default_damage_taken_signal","order":10,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_speed_signal","order":9,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"draw_circuit_wires","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"dump_container","order":2,"description":"Name of a [ContainerPrototype](prototype:ContainerPrototype).","override":false,"type":"EntityID","optional":false},{"name":"graphics_set","order":0,"description":"","override":false,"type":"CargoBayConnectableGraphicsSet","optional":true},{"name":"inventory_size","order":1,"description":"","override":false,"type":"ItemStackIndex","optional":false},{"name":"persistent_ambient_sounds","order":3,"description":"","override":false,"type":"PersistentWorldAmbientSoundsDefinition","optional":true},{"name":"platform_repair_speed_modifier","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"surface_render_parameters","order":4,"description":"","override":false,"type":"SurfaceRenderParameters","optional":true},{"name":"weight","order":12,"description":"","override":false,"type":"Weight","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"SpacePlatformStarterPackPrototype","order":234,"description":"","parent":"ItemPrototype","abstract":false,"typename":"space-platform-starter-pack","deprecated":false,"properties":[{"name":"create_electric_network","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"initial_items","order":4,"description":"The quality of the items will match the quality of the starter pack.","override":false,"type":{"complex_type":"array","value":"ItemProductPrototype"},"optional":true},{"name":"surface","order":1,"description":"","override":false,"type":"SurfaceID","optional":true},{"name":"tiles","order":3,"description":"","override":false,"type":{"complex_type":"array","value":"SpacePlatformTileDefinition"},"optional":true},{"name":"trigger","order":0,"description":"","override":false,"type":"Trigger","optional":true}]},{"name":"SpectatorControllerPrototype","order":235,"description":"Properties of the spectator controller.","abstract":false,"typename":"spectator-controller","instance_limit":1,"deprecated":false,"properties":[{"name":"movement_speed","order":2,"description":"Must be >= 0.34375.","override":false,"type":"double","optional":false},{"name":"name","order":1,"description":"Name of the spectator controller. Base game uses \"default\".","override":false,"type":"string","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"spectator-controller"},"optional":false}]},{"name":"SpeechBubblePrototype","order":236,"description":"A speech bubble. It floats in the world and can display text.","parent":"EntityPrototype","abstract":false,"typename":"speech-bubble","deprecated":false,"properties":[{"name":"fade_in_out_ticks","order":3,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":60}},{"name":"style","order":0,"description":"Needs a style of the type \"speech_bubble_style\", defined inside the gui styles.","override":false,"type":"string","optional":false},{"name":"wrapper_flow_style","order":1,"description":"Needs a style of the type \"flow_style\", defined inside the gui styles.","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":"flow_style"}},{"name":"y_offset","order":2,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"SpiderLegPrototype","order":237,"description":"Used by [SpiderLegSpecification](prototype:SpiderLegSpecification) for [SpiderVehiclePrototype](prototype:SpiderVehiclePrototype), also known as [spidertron](https://wiki.factorio.com/Spidertron).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"spider-leg","deprecated":false,"properties":[{"name":"ankle_height","order":4,"description":"The height of the foot from the ground when at rest.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"base_position_selection_distance","order":9,"description":"","override":false,"type":"double","optional":false},{"name":"graphics_set","order":11,"description":"","override":false,"type":"SpiderLegGraphicsSet","optional":true},{"name":"hip_flexibility","order":1,"description":"The flexibility of hip. Must be between 0 and 1 inclusive. 0 means the hip doesn't flex at all, and 1 means the hip can bend the entire range, from straight up to straight down. Values less than one will dampen the hip flexibility and cause the upper and lower leg parts to stretch and squish more to compensate. Does not affect movement, only graphics.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"initial_movement_speed","order":5,"description":"","override":false,"type":"double","optional":false},{"name":"knee_distance_factor","order":3,"description":"The placement of the knee relative to the torso of the spider and the end of the foot when at rest. Used to calculate the shape of the leg and the length of the individual parts. Values between 0 and 1 place the knee between the torso and the leg. Values closer to 0 will place the knee closer to the torso.","override":false,"type":"double","optional":false},{"name":"knee_height","order":2,"description":"The resting height of the knee from the ground. Used to derive leg part length and size. If set too low, this could cause the knee to invert, bending inwards underneath the spider.","override":false,"type":"double","optional":false},{"name":"lower_leg_dying_trigger_effects","order":15,"description":"","override":false,"type":{"complex_type":"array","value":"SpiderLegTriggerEffect"},"optional":true},{"name":"minimal_step_size","order":8,"description":"","override":false,"type":"double","optional":false},{"name":"movement_acceleration","order":6,"description":"","override":false,"type":"double","optional":false},{"name":"movement_based_position_selection_distance","order":10,"description":"","override":false,"type":"double","optional":false},{"name":"stretch_force_scalar","order":0,"description":"A scalar that controls the amount of influence this leg has over the position of the torso. Must be greater than 0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.715}},{"name":"target_position_randomisation_distance","order":7,"description":"","override":false,"type":"double","optional":false},{"name":"upper_leg_dying_trigger_effects","order":14,"description":"","override":false,"type":{"complex_type":"array","value":"SpiderLegTriggerEffect"},"optional":true},{"name":"walking_sound_speed_modifier","order":13,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"walking_sound_volume_modifier","order":12,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"SpiderUnitPrototype","order":238,"description":"","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"spider-unit","deprecated":false,"properties":[{"name":"absorptions_to_join_attack","order":5,"description":"","override":false,"type":{"complex_type":"dictionary","key":"AirbornePollutantID","value":"float"},"optional":true},{"name":"ai_settings","order":15,"description":"","override":false,"type":"UnitAISettings","optional":true},{"name":"attack_parameters","order":8,"description":"","override":false,"type":"AttackParameters","optional":false},{"name":"distraction_cooldown","order":12,"description":"","override":false,"type":"uint32","optional":false},{"name":"dying_sound","order":9,"description":"","override":false,"type":"Sound","optional":true},{"name":"graphics_set","order":4,"description":"","override":false,"type":"SpiderTorsoGraphicsSet","optional":true},{"name":"height","order":1,"description":"The height of the spider affects the shooting height and the drawing of the graphics and lights.","override":false,"type":"float","optional":false},{"name":"max_pursue_distance","order":14,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":50}},{"name":"min_pursue_time","order":13,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":600}},{"name":"radar_range","order":7,"description":"In chunks. The radius of how many chunks this spider unit charts around itself.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"spawning_time_modifier","order":6,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"spider_engine","order":0,"description":"","override":false,"type":"SpiderEngineSpecification","optional":false},{"name":"torso_bob_speed","order":2,"description":"Cannot be negative.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"torso_rotation_speed","order":3,"description":"The orientation of the torso of the spider affects the shooting direction and the drawing of the graphics and lights.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"vision_distance","order":11,"description":"Must be less than or equal to 100.","override":false,"type":"double","optional":false},{"name":"warcry","order":10,"description":"A sound the spider unit makes when it sets out to attack.","override":false,"type":"Sound","optional":true}]},{"name":"SpiderVehiclePrototype","order":239,"description":"A [spidertron](https://wiki.factorio.com/Spidertron).","parent":"VehiclePrototype","abstract":false,"typename":"spider-vehicle","deprecated":false,"properties":[{"name":"automatic_weapon_cycling","order":6,"description":"","override":false,"type":"boolean","optional":false},{"name":"chain_shooting_cooldown_modifier","order":7,"description":"This is applied whenever the spider shoots (manual and automatic targeting), `automatic_weapon_cycling` is true and the next gun in line (which is then selected) has ammo. When all of the above is the case, the chain_shooting_cooldown_modifier is a multiplier on the remaining shooting cooldown: `cooldown = (remaining_cooldown \u00d7 chain_shooting_cooldown_modifier)`.\n\nchain_shooting_cooldown_modifier is intended to be in the range of 0 to 1. This means that setting chain_shooting_cooldown_modifier to 0 reduces the remaining shooting cooldown to 0 while a chain_shooting_cooldown_modifier of 1 does not affect the remaining shooting cooldown at all.","override":false,"type":"float","optional":false},{"name":"energy_source","order":0,"description":"","override":false,"type":{"complex_type":"union","options":["BurnerEnergySource","VoidEnergySource"],"full_format":false},"optional":false},{"name":"graphics_set","order":2,"description":"","override":false,"type":"SpiderVehicleGraphicsSet","optional":true},{"name":"guns","order":11,"description":"The guns this spider vehicle uses.","override":false,"type":{"complex_type":"array","value":"ItemID"},"optional":true},{"name":"height","order":4,"description":"The height of the spider affects the shooting height and the drawing of the graphics and lights.","override":false,"type":"float","optional":false},{"name":"inventory_size","order":1,"description":"","override":false,"type":"ItemStackIndex","optional":false},{"name":"movement_energy_consumption","order":5,"description":"","override":false,"type":"Energy","optional":false},{"name":"spider_engine","order":3,"description":"","override":false,"type":"SpiderEngineSpecification","optional":false},{"name":"torso_bob_speed","order":9,"description":"Cannot be negative.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"torso_rotation_speed","order":8,"description":"The orientation of the torso of the spider affects the shooting direction and the drawing of the graphics and lights.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"trash_inventory_size","order":10,"description":"If set to 0 then the spider will not have a Logistics tab.","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"SpidertronRemotePrototype","order":240,"description":"The [spidertron remote](https://wiki.factorio.com/Spidertron_remote). This remote can only be used for entities of type [SpiderVehiclePrototype](prototype:SpiderVehiclePrototype).","parent":"SelectionToolPrototype","abstract":false,"typename":"spidertron-remote","deprecated":false,"properties":[{"name":"icon_color_indicator_mask","order":0,"description":"Color mask for the icon. This is used to show the color of the spidertron remote LEDS in the GUI.","override":false,"type":"FileName","optional":true},{"name":"stack_size","order":1,"description":"Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `\"not-stackable\"` flag is set.","examples":["```\nstack_size = 1\n```"],"override":true,"type":{"complex_type":"literal","value":1},"optional":false}]},{"name":"SplitterPrototype","order":241,"description":"A [splitter](https://wiki.factorio.com/Splitter).","parent":"TransportBeltConnectablePrototype","abstract":false,"typename":"splitter","deprecated":false,"properties":[{"name":"circuit_connector","order":9,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_wire_max_distance","order":6,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"default_input_left_condition","order":10,"description":"","override":false,"type":"CircuitConditionConnector","optional":true},{"name":"default_input_right_condition","order":11,"description":"","override":false,"type":"CircuitConditionConnector","optional":true},{"name":"default_output_left_condition","order":12,"description":"","override":false,"type":"CircuitConditionConnector","optional":true},{"name":"default_output_right_condition","order":13,"description":"","override":false,"type":"CircuitConditionConnector","optional":true},{"name":"draw_circuit_wires","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"frozen_patch","order":2,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"related_transport_belt","order":5,"description":"The name of the [TransportBeltPrototype](prototype:TransportBeltPrototype) which is used for the sound of the underlying belt.","override":false,"type":"EntityID","optional":true},{"name":"structure","order":0,"description":"","override":false,"type":"Animation4Way","optional":true},{"name":"structure_animation_movement_cooldown","order":4,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"structure_animation_speed_coefficient","order":3,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"structure_patch","order":1,"description":"Drawn 1 tile north of `structure` when the splitter is facing east or west.","override":false,"type":"Animation4Way","optional":true}]},{"name":"SpritePrototype","order":242,"description":"Specifies an image that can be used with [SpritePath](runtime:SpritePath) at runtime.","examples":["```\n{\n  type = \"sprite\"\n  name = \"accumulator-sprite\",\n  filename = \"__base__/graphics/entity/basic-accumulator/basic-accumulator.png\",\n  priority = \"extra-high\",\n  width = 124,\n  height = 103,\n  shift = {0.7, -0.2}\n}\n```"],"abstract":false,"typename":"sprite","deprecated":false,"properties":[{"name":"allow_forced_downscale","order":30,"description":"Only loaded if `layers` is not defined.\n\nIf `true`, the sprite may be downsampled to half its size on load even when 'Sprite quality' graphics setting is set to 'High'. Whether downsampling happens depends on detected hardware and other graphics settings.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"apply_runtime_tint","order":23,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"apply_special_effect","order":17,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"blend_mode","order":27,"description":"Only loaded if `layers` is not defined.","override":false,"type":"BlendMode","optional":true,"default":{"complex_type":"literal","value":"normal"}},{"name":"dice","order":4,"description":"Only loaded if `layers` is not defined.\n\nNumber of slices this is sliced into when using the \"optimized atlas packing\" option. If you are a modder, you can just ignore this property. Example: If this is 4, the sprite will be sliced into a 4x4 grid.","override":false,"type":"SpriteSizeType","optional":true},{"name":"dice_x","order":5,"description":"Only loaded if `layers` is not defined.\n\nSame as `dice` above, but this specifies only how many slices there are on the x axis.","override":false,"type":"SpriteSizeType","optional":true},{"name":"dice_y","order":6,"description":"Only loaded if `layers` is not defined.\n\nSame as `dice` above, but this specifies only how many slices there are on the y axis.","override":false,"type":"SpriteSizeType","optional":true},{"name":"draw_as_glow","order":20,"description":"Only loaded if `layers` is not defined.\n\nOnly one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. This takes precedence over `draw_as_light`.\n\nDraws first as a normal sprite, then again as a light layer. See [https://forums.factorio.com/91682](https://forums.factorio.com/91682).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"draw_as_light","order":21,"description":"Only loaded if `layers` is not defined.\n\nOnly one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"draw_as_shadow","order":19,"description":"Only loaded if `layers` is not defined.\n\nOnly one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. This takes precedence over `draw_as_glow` and `draw_as_light`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"filename","order":3,"description":"Only loaded, and mandatory if `layers` is not defined.\n\nThe path to the sprite file to use.","override":false,"type":"FileName","optional":true},{"name":"flags","order":8,"description":"Only loaded if `layers` is not defined.","override":false,"type":"SpriteFlags","optional":true},{"name":"generate_sdf","order":31,"description":"Only loaded if `layers` is not defined.\n\nUnused.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"height","order":11,"description":"Only loaded if `layers` is not defined. Mandatory if `size` is not defined.\n\nHeight of the picture in pixels, from 0-4096.","override":false,"type":"SpriteSizeType","optional":true},{"name":"invert_colors","order":25,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"layers","order":2,"description":"If this property is present, all Sprite definitions have to be placed as entries in the array, and they will all be loaded from there. `layers` may not be an empty table. Each definition in the array may also have the `layers` property.\n\nIf this property is present, all other properties besides `name` and `type` are ignored.","override":false,"type":{"complex_type":"array","value":"Sprite"},"optional":true},{"name":"load_in_minimal_mode","order":28,"description":"Only loaded if `layers` is not defined.\n\nMinimal mode is entered when mod loading fails. You are in it when you see the gray box after (part of) the loading screen that tells you a mod error. Modders can ignore this property.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"mipmap_count","order":22,"description":"Only loaded if `layers` is not defined.\n\nOnly loaded if this is an icon, that is it has the flag `\"group=icon\"` or `\"group=gui\"`.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"name","order":1,"description":"Name of the sprite. Can be used as a [SpritePath](runtime:SpritePath) at runtime.","override":false,"type":"string","optional":false},{"name":"position","order":14,"description":"Only loaded if `layers` is not defined.\n\nLoaded only when `x` and `y` are both `0`. The first member of the tuple is `x` and the second is `y`.","override":false,"type":{"complex_type":"tuple","values":["SpriteSizeType","SpriteSizeType"]},"optional":true},{"name":"premul_alpha","order":29,"description":"Only loaded if `layers` is not defined.\n\nWhether alpha should be pre-multiplied.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"priority","order":7,"description":"Only loaded if `layers` is not defined.","override":false,"type":"SpritePriority","optional":true,"default":{"complex_type":"literal","value":"medium"}},{"name":"rotate_shift","order":16,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"scale","order":18,"description":"Only loaded if `layers` is not defined.\n\nValues other than `1` specify the scale of the sprite on default zoom. A scale of `2` means that the picture will be two times bigger on screen (and thus more pixelated).","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"shift","order":15,"description":"Only loaded if `layers` is not defined.\n\nThe shift in tiles. `util.by_pixel()` can be used to divide the shift by 32 which is the usual pixel height/width of 1 tile in normal resolution. Note that 32 pixel tile height/width is not enforced anywhere - any other tile height or width is also possible.","override":false,"type":"Vector","optional":true,"default":"`{0, 0}`"},{"name":"size","order":9,"description":"Only loaded if `layers` is not defined.\n\nThe width and height of the sprite. If this is a tuple, the first member of the tuple is the width and the second is the height. Otherwise the size is both width and height. Width and height may only be in the range of 0-4096.","override":false,"type":{"complex_type":"union","options":["SpriteSizeType",{"complex_type":"tuple","values":["SpriteSizeType","SpriteSizeType"]}],"full_format":false},"optional":true},{"name":"surface","order":32,"description":"Only loaded if `layers` is not defined.\n\nProvides hint to sprite atlas system, so it can try to put sprites that are intended to be used at the same locations to the same sprite atlas.","override":false,"type":"SpriteUsageSurfaceHint","optional":true,"default":{"complex_type":"literal","value":"any"}},{"name":"tint","order":26,"description":"Only loaded if `layers` is not defined.","override":false,"type":"Color","optional":true,"default":"`{r=1, g=1, b=1, a=1}`"},{"name":"tint_as_overlay","order":24,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"sprite"},"optional":false},{"name":"usage","order":33,"description":"Only loaded if `layers` is not defined.\n\nProvides hint to sprite atlas system, so it can pack sprites that are related to each other to the same sprite atlas.","override":false,"type":"SpriteUsageHint","optional":true,"default":{"complex_type":"literal","value":"any"}},{"name":"width","order":10,"description":"Only loaded if `layers` is not defined. Mandatory if `size` is not defined.\n\nWidth of the picture in pixels, from 0-4096.","override":false,"type":"SpriteSizeType","optional":true},{"name":"x","order":12,"description":"Only loaded if `layers` is not defined.\n\nHorizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"y","order":13,"description":"Only loaded if `layers` is not defined.\n\nVertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"StickerPrototype","order":243,"description":"Entity that sticks to another entity, and damages/slows it. Stickers can only be attached to [UnitPrototype](prototype:UnitPrototype), [CharacterPrototype](prototype:CharacterPrototype), [CarPrototype](prototype:CarPrototype) and [SpiderVehiclePrototype](prototype:SpiderVehiclePrototype).","parent":"EntityPrototype","abstract":false,"typename":"sticker","deprecated":false,"properties":[{"name":"animation","order":1,"description":"","override":false,"type":"Animation","optional":true},{"name":"damage_interval","order":3,"description":"Interval between application of `damage_per_tick`, in ticks.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"damage_per_tick","order":11,"description":"Applied every `damage_interval` ticks, so may not necessarily be \"per tick\".","override":false,"type":"DamageParameters","optional":true},{"name":"duration_in_ticks","order":0,"description":"Must be > 0.","override":false,"type":"uint32","optional":false},{"name":"fire_spread_cooldown","order":5,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":30}},{"name":"fire_spread_radius","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"force_visibility","order":8,"description":"","override":false,"type":"ForceCondition","optional":true,"default":{"complex_type":"literal","value":"all"}},{"name":"ground_target","order":18,"description":"If true, causes the target entity to become \"grounded\", disabling flight. This only applies to Character entities wearing mech armor.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"hidden","order":30,"description":"The `hidden` property of stickers is hardcoded to `true`.","override":true,"type":{"complex_type":"literal","value":true},"optional":false},{"name":"hidden_in_factoriopedia","order":31,"description":"The `hidden_in_factoriopedia` property of stickers is hardcoded to `true`.","override":true,"type":{"complex_type":"literal","value":true},"optional":false},{"name":"render_layer","order":2,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"selection_box_type","order":28,"description":"Using this property marks the sticker as a \"selection sticker\", meaning that the selection box will be rendered around the entity when the sticker is on it.","override":false,"type":"CursorBoxType","optional":true,"default":{"complex_type":"literal","value":"entity"}},{"name":"single_particle","order":9,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"spread_fire_entity","order":4,"description":"If this is given, this sticker is considered a \"fire sticker\" for some functions, such as [BaseAttackParameters::fire_penalty](prototype:BaseAttackParameters::fire_penalty) and [EntityPrototypeFlags::not-flammable](prototype:EntityPrototypeFlags::not_flammable).","override":false,"type":"EntityID","optional":true},{"name":"stickers_per_square_meter","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":15}},{"name":"target_movement_max","order":15,"description":"The maximum movement speed for the target.\n\nNegative values are ignored.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":-1}},{"name":"target_movement_max_from","order":16,"description":"The maximum movement speed for the target when the sticker is attached. It linearly changes over time to reach `target_movement_max_to`.\n\nNegative values are ignored.","override":false,"type":"float","optional":true,"default":"Value of `target_movement_speed`"},{"name":"target_movement_max_to","order":17,"description":"The maximum movement speed for the target when the sticker expires. It linearly changes over time starting from `target_movement_max_from`.\n\nNegative values are ignored.","override":false,"type":"float","optional":true,"default":"Value of `target_movement_speed`"},{"name":"target_movement_modifier","order":12,"description":"Less than 1 to reduce movement speed, more than 1 to increase it.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"target_movement_modifier_from","order":13,"description":"The modifier value when the sticker is attached. It linearly changes over time to reach `target_movement_modifier_to`.","override":false,"type":"float","optional":true,"default":"Value of `target_movement_modifier`"},{"name":"target_movement_modifier_to","order":14,"description":"The modifier value when the sticker expires. It linearly changes over time starting from `target_movement_modifier_from`.","override":false,"type":"float","optional":true,"default":"Value of `target_movement_modifier`"},{"name":"update_effects","order":29,"description":"Effects (with cooldowns) to trigger every tick.","override":false,"type":{"complex_type":"array","value":"TriggerEffectWithCooldown"},"optional":true},{"name":"use_damage_substitute","order":10,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"vehicle_friction_modifier","order":25,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"vehicle_friction_modifier_from","order":26,"description":"Works similarly to `target_movement_modifier_from`.","override":false,"type":"float","optional":true,"default":"Value of `vehicle_friction_modifier`"},{"name":"vehicle_friction_modifier_to","order":27,"description":"Works similarly to `target_movement_modifier_to`.","override":false,"type":"float","optional":true,"default":"Value of `vehicle_friction_modifier`"},{"name":"vehicle_speed_max","order":22,"description":"The maximum movement speed for vehicles.\n\nNegative values are ignored.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":-1}},{"name":"vehicle_speed_max_from","order":23,"description":"The maximum movement speed for vehicles when the sticker is attached. It linearly changes over time to reach `vehicle_speed_max_to`.\n\nNegative values are ignored.","override":false,"type":"float","optional":true,"default":"Value of `vehicle_speed_max`"},{"name":"vehicle_speed_max_to","order":24,"description":"The maximum movement speed for vehicles when the sticker expires. It linearly changes over time starting from `vehicle_speed_max_from`.\n\nNegative values are ignored.","override":false,"type":"float","optional":true,"default":"Value of `vehicle_speed_max`"},{"name":"vehicle_speed_modifier","order":19,"description":"Less than 1 to reduce vehicle speed, more than 1 to increase it.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"vehicle_speed_modifier_from","order":20,"description":"Works similarly to `target_movement_modifier_from`.","override":false,"type":"float","optional":true,"default":"Value of `vehicle_speed_modifier`"},{"name":"vehicle_speed_modifier_to","order":21,"description":"Works similarly to `target_movement_modifier_to`.","override":false,"type":"float","optional":true,"default":"Value of `vehicle_speed_modifier`"}]},{"name":"StorageTankPrototype","order":244,"description":"A [storage tank](https://wiki.factorio.com/Storage_tank).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"storage-tank","deprecated":false,"properties":[{"name":"circuit_connector","order":9,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_wire_max_distance","order":6,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"flow_length_in_ticks","order":3,"description":"Must be positive.\n\nUsed for determining the x position inside the `flow_sprite` when drawing the storage tank. Does not affect gameplay.\n\nThe x position of the sprite will be `((game.tick % flow_length_in_ticks) \u00f7 flow_length_in_ticks) \u00d7 (flow_sprite.width - 32)`. This means, that over `flow_length_in_ticks` ticks, the part of the `flow_sprite` that is drawn in-game is incrementally moved from most-left to most-right inside the actual sprite, that part always has a width of 32px. After `flow_length_in_ticks`, the part of the `flow_sprite` that is drawn will start from the left again.","override":false,"type":"uint32","optional":false},{"name":"fluid_box","order":0,"description":"","override":false,"type":"FluidBox","optional":false},{"name":"pictures","order":2,"description":"","override":false,"type":"StorageTankPictures","optional":true},{"name":"show_fluid_icon","order":5,"description":"Whether the \"alt-mode icon\" should be drawn at all.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"two_direction_only","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"window_bounding_box","order":1,"description":"The location of the window showing the contents. Note that for `window_background` the width and height are determined by the sprite and window_bounding_box only determines the drawing location. For `fluid_background` the width is determined by the sprite and the height and drawing location are determined by window_bounding_box.","override":false,"type":"BoundingBox","optional":false}]},{"name":"StraightRailPrototype","order":245,"description":"A straight rail.","parent":"RailPrototype","abstract":false,"typename":"straight-rail","deprecated":false,"properties":[{"name":"collision_box","order":0,"description":"The [collision_box](prototype:EntityPrototype::collision_box) of straight rail is hardcoded to `{{-0.7, -0.99}, {0.7, 0.99}}`.","override":true,"type":"BoundingBox","optional":true,"default":"`{{-0.7, -0.99}, {0.7, 0.99}}`"}]},{"name":"SurfacePropertyPrototype","order":246,"description":"","parent":"Prototype","abstract":false,"typename":"surface-property","deprecated":false,"properties":[{"name":"default_value","order":1,"description":"","override":false,"type":"double","optional":false},{"name":"is_time","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"localised_unit_key","order":0,"description":"The locale key of the unit of the property. In-game, the locale is provided the `__1__` parameter, which is the value of the property.","override":false,"type":"string","optional":true,"default":"surface-property-unit.[prototype name]"}]},{"name":"SurfacePrototype","order":247,"description":"","parent":"Prototype","abstract":false,"typename":"surface","deprecated":false,"properties":[{"name":"icon","order":2,"description":"Path to the icon file.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":3,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":1,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"surface_properties","order":0,"description":"","override":false,"type":{"complex_type":"dictionary","key":"SurfacePropertyID","value":"double"},"optional":true}]},{"name":"TechnologyPrototype","order":248,"description":"A [technology](https://wiki.factorio.com/Technologies).","examples":["```\n{\n  type = \"technology\",\n  name = \"steel-processing\",\n  icon_size = 256,\n  icon = \"__base__/graphics/technology/steel-processing.png\",\n  effects =\n  {\n    {\n      type = \"unlock-recipe\",\n      recipe = \"steel-plate\"\n    },\n    {\n      type = \"unlock-recipe\",\n      recipe = \"steel-chest\"\n    }\n  },\n  unit =\n  {\n    count = 50,\n    ingredients = {{\"automation-science-pack\", 1}},\n    time = 5\n  },\n  order = \"c-a\"\n}\n```"],"parent":"Prototype","abstract":false,"typename":"technology","deprecated":false,"properties":[{"name":"allows_productivity","order":9,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"effects","order":15,"description":"List of effects of the technology (applied when the technology is researched).","examples":["```\n{\n  {\n    type  = \"unlock-recipe\",\n    recipe = \"land-mine\"\n  }\n}\n```"],"override":false,"type":{"complex_type":"array","value":"Modifier"},"optional":true},{"name":"enabled","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"essential","order":6,"description":"Whether the technology should be shown in the technology tree GUI when \"Show only essential technologies\" is enabled.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"hidden","order":16,"description":"Hides the technology from the tech screen.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"icon","order":2,"description":"Path to the icon file.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":3,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nThe base game uses 256px icons for technologies.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":1,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"ignore_tech_cost_multiplier","order":8,"description":"Controls whether the technology cost ignores the tech cost multiplier set in the [DifficultySettings](runtime:DifficultySettings). E.g. `4` for the default expensive difficulty.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"max_level","order":12,"description":"`\"infinite\"` for infinite technologies, otherwise `uint32`.\n\nDefaults to the same level as the technology, which is `0` for non-upgrades, and the level of the upgrade for upgrades.","override":false,"type":{"complex_type":"union","options":["uint32",{"complex_type":"literal","value":"infinite"}],"full_format":false},"optional":true},{"name":"name","order":0,"description":"If this name ends with `-<number>`, that number is ignored for localization purposes. E.g. if the name is `technology-3`, the game looks for the `technology-name.technology` localization. The technology tree will also show the number on the technology icon.","override":true,"type":"string","optional":false},{"name":"prerequisites","order":13,"description":"List of technologies needed to be researched before this one can be researched.","examples":["```\nprerequisites = {\"explosives\", \"military-2\"}\n```"],"override":false,"type":{"complex_type":"array","value":"TechnologyID"},"optional":true},{"name":"research_trigger","order":10,"description":"Mandatory if `unit` is not defined.","override":false,"type":"TechnologyTrigger","optional":true},{"name":"show_levels_info","order":14,"description":"Can be used to enable or disable showing levels info in technology slot.","override":false,"type":"boolean","optional":true},{"name":"unit","order":11,"description":"Determines the cost in items and time of the technology.\n\nMandatory if `research_trigger` is not defined.","override":false,"type":"TechnologyUnit","optional":true},{"name":"upgrade","order":4,"description":"When set to true, and the technology contains several levels, only the relevant one is displayed in the technology screen.","examples":["```\n{\n  type = \"technology\",\n  name = \"physical-projectile-damage-2\",\n  [...]\n  upgrade = true\n}\n```"],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"visible_when_disabled","order":7,"description":"Controls whether the technology is shown in the tech GUI when it is not `enabled`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"TemporaryContainerPrototype","order":249,"description":"A container that can automatically destroy itself when it is emptied or after it has existed for a certain time.","parent":"ContainerPrototype","abstract":false,"typename":"temporary-container","deprecated":false,"properties":[{"name":"alert_after_time","order":2,"description":"If the container has existed for this long, [an alert](prototype:UtilitySprites::unclaimed_cargo_icon) is show on it. In ticks, 0 for no alert.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"destroy_on_empty","order":0,"description":"Whether the container is automatically destroyed when it is emptied.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"time_to_live","order":1,"description":"Duration after which the container and its contents are automatically destroyed. In ticks, 0 for infinite.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"ThrusterPrototype","order":250,"description":"Consumes two fluids as fuel to produce thrust for a space platform.","visibility":["space_age"],"parent":"EntityWithOwnerPrototype","abstract":false,"typename":"thruster","deprecated":false,"properties":[{"name":"fuel_fluid_box","order":2,"description":"If a [filter](prototype:FluidBox::filter) is set for this fluidbox it determines what the thruster considers the first fuel.","override":false,"type":"FluidBox","optional":false},{"name":"graphics_set","order":4,"description":"","override":false,"type":"ThrusterGraphicsSet","optional":true},{"name":"max_performance","order":1,"description":"`max_performance.fluid_volume` must not be smaller than `min_performance.fluid_volume`.","override":false,"type":"ThrusterPerformancePoint","optional":false},{"name":"min_performance","order":0,"description":"","override":false,"type":"ThrusterPerformancePoint","optional":false},{"name":"oxidizer_fluid_box","order":3,"description":"If a [filter](prototype:FluidBox::filter) is set for this fluidbox it determines what the thruster considers the second fuel.","override":false,"type":"FluidBox","optional":false},{"name":"plumes","order":5,"description":"","override":false,"type":"PlumesSpecification","optional":true}]},{"name":"TileEffectDefinition","order":251,"description":"Used to define the parameters for tile shaders.","abstract":false,"typename":"tile-effect","instance_limit":32,"deprecated":false,"properties":[{"name":"name","order":1,"description":"Name of the tile-effect.","override":false,"type":"string","optional":false},{"name":"puddle","order":5,"description":"Only loaded, and mandatory if `shader` is `\"puddle\"`.","visibility":["space_age"],"override":false,"type":"PuddleTileEffectParameters","optional":true},{"name":"shader","order":2,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"water"},{"complex_type":"literal","value":"space"},{"complex_type":"literal","value":"puddle"}],"full_format":false},"optional":false},{"name":"space","order":4,"description":"Only loaded, and mandatory if `shader` is `\"space\"`.","visibility":["space_age"],"override":false,"type":"SpaceTileEffectParameters","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"tile-effect"},"optional":false},{"name":"water","order":3,"description":"Only loaded, and mandatory if `shader` is `\"water\"`.","override":false,"type":"WaterTileEffectParameters","optional":true}]},{"name":"TileGhostPrototype","order":252,"description":"The entity used for tile ghosts.","examples":["```\n{\n  type = \"tile-ghost\",\n  name = \"tile-ghost\",\n  flags = {\"not-on-map\"},\n  minable = { mining_time = 0, results={}},\n  collision_box = {{-0.5, -0.5}, {0.5, 0.5}},\n  selection_priority = 45\n}\n```"],"parent":"EntityPrototype","abstract":false,"typename":"tile-ghost","deprecated":false,"properties":[]},{"name":"TilePrototype","order":253,"description":"A [tile](https://wiki.factorio.com/Tile).","parent":"Prototype","abstract":false,"typename":"tile","instance_limit":65535,"deprecated":false,"properties":[{"name":"absorptions_per_second","order":39,"description":"","override":false,"type":{"complex_type":"dictionary","key":"AirbornePollutantID","value":"double"},"optional":true},{"name":"allowed_neighbors","order":26,"description":"Array of tile names that are allowed next to this one.","override":false,"type":{"complex_type":"array","value":"TileID"},"optional":true,"default":"All tiles"},{"name":"allows_being_covered","order":34,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"ambient_sounds","order":56,"description":"","override":false,"type":{"complex_type":"union","options":["WorldAmbientSoundDefinition",{"complex_type":"array","value":"WorldAmbientSoundDefinition"}],"full_format":false},"optional":true},{"name":"ambient_sounds_group","order":55,"description":"","override":false,"type":"TileID","optional":true},{"name":"autoplace","order":52,"description":"","override":false,"type":"AutoplaceSpecification","optional":true},{"name":"bound_decoratives","order":54,"description":"","override":false,"type":{"complex_type":"union","options":["DecorativeID",{"complex_type":"array","value":"DecorativeID"}],"full_format":false},"optional":true},{"name":"build_animations","order":3,"description":"The build animation used when this tile is built on a space platform.","override":false,"type":"Animation4Way","optional":true},{"name":"build_animations_background","order":4,"description":"","override":false,"type":"Animation4Way","optional":true},{"name":"build_sound","order":21,"description":"If this is loaded as one Sound, it is loaded as the \"small\" build sound.","override":false,"type":{"complex_type":"union","options":["Sound","TileBuildSound"],"full_format":false},"optional":true},{"name":"built_animation_frame","order":5,"description":"When the build_animations frame reaches this point the tile is built.\n\nMandatory if `build_animations` is defined.","override":false,"type":"uint32","optional":true},{"name":"can_be_part_of_blueprint","order":31,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"check_collision_with_entities","order":47,"description":"If set to true, the game will check for collisions with entities before building or mining the tile. If entities are in the way it is not possible to mine/build the tile.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"collision_mask","order":0,"description":"","override":false,"type":"CollisionMaskConnector","optional":false},{"name":"decorative_removal_probability","order":25,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"default_cover_tile","order":40,"description":"","override":false,"type":"TileID","optional":true},{"name":"default_destroyed_dropped_item_trigger","order":45,"description":"The effect/trigger that runs when an item is destroyed by being dropped on this tile.\n\nIf the item defines [its own trigger](prototype:ItemPrototype::destroyed_by_dropping_trigger) it will override this.\n\nIf this is defined, `destroys_dropped_items` must be `true`.","override":false,"type":"Trigger","optional":true},{"name":"destroys_dropped_items","order":33,"description":"If items dropped on this tile are destroyed.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"driving_sound","order":20,"description":"","override":false,"type":"InterruptibleSound","optional":true},{"name":"dying_explosion","order":38,"description":"Triggers when a foundation tile is destroyed by an asteroid.","override":false,"type":{"complex_type":"union","options":["ExplosionDefinition",{"complex_type":"array","value":"ExplosionDefinition"}],"full_format":false},"optional":true},{"name":"effect","order":43,"description":"","override":false,"type":"TileEffectDefinitionID","optional":true},{"name":"effect_color","order":15,"description":"","override":false,"type":"Color","optional":true,"default":"`{r=1, g=1, b=1, a=1} (white)`"},{"name":"effect_color_secondary","order":48,"description":"Used by the [pollution](https://wiki.factorio.com/Pollution) shader.","override":false,"type":"Color","optional":true},{"name":"effect_is_opaque","order":49,"description":"","override":false,"type":"boolean","optional":true,"default":"true if `effect_color` alpha equals 1"},{"name":"fluid","order":29,"description":"","override":false,"type":"FluidID","optional":true},{"name":"frozen_variant","order":41,"description":"","override":false,"type":"TileID","optional":true},{"name":"icon","order":9,"description":"Path to the icon file. If this and `icons` is not set, the `material_background` in `variants` is used as the icon.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":10,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":8,"description":"Can't be an empty array. If this and `icon` is not set, the `material_background` in `variants` is used as the icon.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"is_foundation","order":32,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"landing_steps_sound","order":19,"description":"","override":false,"type":"Sound","optional":true},{"name":"layer","order":1,"description":"Specifies transition drawing priority. This represents the positive offset from this tile's `layer_group`. Internally, the final layer is computed as `layer_group + layer` (a [uint16](prototype:uint16)), wrapping back to `\"zero\"` after the `\"top\"` layer.","override":false,"type":"uint8","optional":false},{"name":"layer_group","order":2,"description":"The base group of render layers this tile belongs to. It can be moved up inside this group using the `layer` property. See the [TileRenderLayer](prototype:TileRenderLayer) page to see the sizes of all layer groups.","override":false,"type":"TileRenderLayer","optional":true,"default":{"complex_type":"literal","value":"ground-natural"}},{"name":"lowland_fog","order":11,"description":"For surfaces that use [fog effect](prototype:SurfaceRenderParameters::fog) of type `gleba`, this property determines whether given tile should contribute to fog intensity on a chunk or not.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"map_color","order":7,"description":"","override":false,"type":"Color","optional":false},{"name":"max_health","order":36,"description":"Must be equal to or greater than 0.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"minable","order":28,"description":"If you want the tile to not be mineable, don't specify the minable property. Only non-mineable tiles become hidden tiles when placing mineable tiles on top of them.","override":false,"type":"MinableProperties","optional":true},{"name":"mined_sound","order":22,"description":"","override":false,"type":"Sound","optional":true},{"name":"needs_correction","order":27,"description":"Whether the tile needs tile correction logic applied when it's generated in the world, to prevent graphical artifacts. The tile correction logic disallows 1-wide stripes of the tile, see [Friday Facts #346](https://factorio.com/blog/post/fff-346).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"next_direction","order":30,"description":"","override":false,"type":"TileID","optional":true},{"name":"particle_tints","order":17,"description":"","override":false,"type":"TileBasedParticleTints","optional":true},{"name":"placeable_by","order":53,"description":"","override":false,"type":{"complex_type":"union","options":["ItemToPlace",{"complex_type":"array","value":"ItemToPlace"}],"full_format":false},"optional":true},{"name":"scorch_mark_color","order":46,"description":"","override":false,"type":"Color","optional":true},{"name":"searchable","order":35,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"sprite_usage_surface","order":13,"description":"","override":false,"type":"SpriteUsageSurfaceHint","optional":true,"default":{"complex_type":"literal","value":"any"}},{"name":"thawed_variant","order":42,"description":"","override":false,"type":"TileID","optional":true},{"name":"tint","order":16,"description":"","override":false,"type":"Color","optional":true,"default":"`{r=1, g=1, b=1, a=1} (white)`"},{"name":"transition_merges_with_tile","order":14,"description":"","override":false,"type":"TileID","optional":true},{"name":"transition_overlay_layer_offset","order":12,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"transitions","order":50,"description":"Extra transitions.","override":false,"type":{"complex_type":"array","value":"TileTransitionsToTiles"},"optional":true},{"name":"transitions_between_transitions","order":51,"description":"","override":false,"type":{"complex_type":"array","value":"TileTransitionsBetweenTransitions"},"optional":true},{"name":"trigger_effect","order":44,"description":"Called by [InvokeTileEffectTriggerEffectItem](prototype:InvokeTileEffectTriggerEffectItem).","override":false,"type":"TriggerEffect","optional":true},{"name":"variants","order":6,"description":"Graphics for this tile.","override":false,"type":"TileTransitionsVariants","optional":false},{"name":"vehicle_friction_modifier","order":24,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"walking_sound","order":18,"description":"","override":false,"type":"Sound","optional":true},{"name":"walking_speed_modifier","order":23,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"weight","order":37,"description":"","override":false,"type":"Weight","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"TipsAndTricksItem","order":254,"description":"A tips and tricks entry.","parent":"PrototypeBase","abstract":false,"typename":"tips-and-tricks-item","deprecated":false,"properties":[{"name":"category","order":3,"description":"Name of a [TipsAndTricksItemCategory](prototype:TipsAndTricksItemCategory), used for the sorting of this tips and tricks entry. Tips and trick entries are sorted first by category and then by their `order` within that category.","override":false,"type":"string","optional":true,"default":"the `name` of this prototype"},{"name":"dependencies","order":10,"description":"An array of names of other tips and tricks items. This tips and tricks entry is only shown to the player once they have marked all dependencies as read.","override":false,"type":{"complex_type":"array","value":"string"},"optional":true,"default":"none"},{"name":"icon","order":13,"description":"Path to the icon file.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":14,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":12,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"image","order":0,"description":"","override":false,"type":"FileName","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"indent","order":4,"description":"The tips and tricks entry is indented by `indent`\u00d76 spaces.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"is_title","order":5,"description":"Whether the tip title on the left in the tips and tricks GUI should use the \"title_tip_item\" style (semi bold font).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"order","order":15,"description":"Used to order prototypes in inventory, recipes and GUIs. May not exceed a length of 200 characters.","override":true,"type":"Order","optional":true,"default":"Value of `name`"},{"name":"player_input_method_filter","order":11,"description":"","override":false,"type":"PlayerInputMethodFilter","optional":true,"default":{"complex_type":"literal","value":"all"}},{"name":"simulation","order":1,"description":"","override":false,"type":"SimulationDefinition","optional":true},{"name":"skip_trigger","order":7,"description":"Condition for never showing the tip notification to the player.","override":false,"type":"TipTrigger","optional":true},{"name":"starting_status","order":9,"description":"","override":false,"type":"TipStatus","optional":true,"default":{"complex_type":"literal","value":"locked"}},{"name":"tag","order":2,"description":"String to add in front of the tips and trick entries name. Can be anything, the base game tends to use [rich text](https://wiki.factorio.com/Rich_text) tags for items, e.g. `[item=wooden-chest]` here.","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"trigger","order":6,"description":"Condition for when the tip notification should be shown to the player.","override":false,"type":"TipTrigger","optional":true},{"name":"tutorial","order":8,"description":"Name of a [TutorialDefinition](prototype:TutorialDefinition).","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}}]},{"name":"TipsAndTricksItemCategory","order":255,"description":"A [TipsAndTricksItem](prototype:TipsAndTricksItem) category, used for sorting of tips and tricks entries: Tips and trick entries are sorted first by category and then by their order within that category.","abstract":false,"typename":"tips-and-tricks-item-category","deprecated":false,"properties":[{"name":"name","order":1,"description":"","override":false,"type":"string","optional":false},{"name":"order","order":2,"description":"Tips and trick categories are sorted by `order`, and then the tips and tips entries are sorted by their own order within those categories.","override":false,"type":"Order","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"tips-and-tricks-item-category"},"optional":false}]},{"name":"ToolPrototype","order":256,"description":"Items with a \"durability\". Used for [science packs](https://wiki.factorio.com/Science_pack).","parent":"ItemPrototype","abstract":false,"typename":"tool","deprecated":false,"properties":[{"name":"durability","order":0,"description":"The durability of this tool. Must be positive. Mandatory if `infinite` is false. Ignored if <code>infinite</code> is true.","override":false,"type":"double","optional":true},{"name":"durability_description_key","order":1,"description":"May not be longer than 200 characters.","override":false,"type":"string","optional":true},{"name":"durability_description_value","order":2,"description":"May not be longer than 200 characters.\n\nIn-game, the game provides the locale with three [parameters](https://wiki.factorio.com/Tutorial:Localisation#Localising_with_parameters):\n\n`__1__`: remaining durability\n\n`__2__`: total durability\n\n`__3__`: durability as a percentage\n\nSo when a locale key that has the following translation\n\n`Remaining durability is __1__ out of __2__ which is __3__ %`\n\nis applied to a tool with 2 remaining durability out of 8 it will be displayed as\n\n`Remaining durability is 2 out of 8 which is 25 %`","override":false,"type":"string","optional":true},{"name":"infinite","order":3,"description":"Whether this tool has infinite durability. If this is false, `durability` must be specified.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"TrainPathAchievementPrototype","order":257,"description":"This prototype is used for receiving an achievement when the player has a specified train path length.","parent":"AchievementPrototype","abstract":false,"typename":"train-path-achievement","deprecated":false,"properties":[{"name":"minimum_distance","order":0,"description":"The achievement will trigger if a train path is longer than this.","examples":["```\namount = 1000\n```"],"override":false,"type":"double","optional":false}]},{"name":"TrainStopPrototype","order":258,"description":"A [train stop](https://wiki.factorio.com/Train_stop).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"train-stop","deprecated":false,"properties":[{"name":"animation_ticks_per_frame","order":0,"description":"","override":false,"type":"uint32","optional":false},{"name":"animations","order":2,"description":"","override":false,"type":"Animation4Way","optional":true},{"name":"build_grid_size","order":17,"description":"Has to be 2 for 2x2 grid.","override":true,"type":{"complex_type":"literal","value":2},"optional":true,"default":{"complex_type":"literal","value":2}},{"name":"chart_name","order":12,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"circuit_connector","order":16,"description":"","override":false,"type":{"complex_type":"tuple","values":["CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition","CircuitConnectorDefinition"]},"optional":true},{"name":"circuit_wire_max_distance","order":8,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"color","order":11,"description":"","override":false,"type":"Color","optional":true},{"name":"default_priority_signal","order":7,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_train_stopped_signal","order":4,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_trains_count_signal","order":5,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"default_trains_limit_signal","order":6,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"draw_circuit_wires","order":10,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":9,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"drawing_boxes","order":15,"description":"","override":false,"type":"TrainStopDrawingBoxes","optional":true},{"name":"light1","order":13,"description":"","override":false,"type":"TrainStopLight","optional":true},{"name":"light2","order":14,"description":"","override":false,"type":"TrainStopLight","optional":true},{"name":"rail_overlay_animations","order":1,"description":"","override":false,"type":"Animation4Way","optional":true},{"name":"top_animations","order":3,"description":"","override":false,"type":"Animation4Way","optional":true}]},{"name":"TransportBeltConnectablePrototype","order":259,"description":"Abstract class that anything that is a belt or can connect to belts uses.","parent":"EntityWithOwnerPrototype","abstract":true,"deprecated":false,"properties":[{"name":"animation_speed_coefficient","order":2,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"belt_animation_set","order":0,"description":"","override":false,"type":"TransportBeltAnimationSet","optional":true},{"name":"collision_box","order":3,"description":"Transport belt connectable entities must have [collision_box](prototype:EntityPrototype::collision_box) of an appropriate minimal size, they should occupy more than half of every tile the entity covers.","examples":["```\ncollision_box = {{-0.4, -0.4}, {0.4, 0.4}}\n```"],"override":true,"type":"BoundingBox","optional":true,"default":"Empty = `{{0, 0}, {0, 0}}`"},{"name":"flags","order":4,"description":"Transport belt connectable entities cannot have the `\"building-direction-8-way\"` flag.","override":true,"type":"EntityPrototypeFlags","optional":true},{"name":"speed","order":1,"description":"The speed of the belt: `speed \u00d7 480 = x Items/second`.\n\nThe raw value is expressed as the number of tiles traveled by each item on the belt per tick, relative to the belt's maximum density - e.g. `x items/second \u00f7 (4 items/lane \u00d7 2 lanes/belt \u00d7 60 ticks/second) = <speed> belts/tick` where a \"belt\" is the size of one tile. See [Transport_belts/Physics](https://wiki.factorio.com/Transport_belts/Physics) for more details.\n\nMust be a positive non-infinite number. The number is a fixed point number with 8 bits reserved for decimal precision, meaning the smallest value step is `1/2^8 = 0.00390625`. In the simple case of a non-curved belt, the rate is multiples of `1.875` items/s, even though the entity tooltip may show a different rate.","override":false,"type":"double","optional":false}]},{"name":"TransportBeltPrototype","order":260,"description":"A [transport belt](https://wiki.factorio.com/Transport_belt).","parent":"TransportBeltConnectablePrototype","abstract":false,"typename":"transport-belt","deprecated":false,"properties":[{"name":"belt_animation_set","order":5,"description":"","override":true,"type":"TransportBeltAnimationSetWithCorners","optional":true},{"name":"circuit_connector","order":4,"description":"Set of 7 [circuit connector definitions](prototype:CircuitConnectorDefinition) in order: X, H, V, SE, SW, NE and NW.","override":false,"type":{"complex_type":"array","value":"CircuitConnectorDefinition"},"optional":true},{"name":"circuit_wire_max_distance","order":1,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"connector_frame_sprites","order":0,"description":"","override":false,"type":"TransportBeltConnectorFrame","optional":true},{"name":"draw_circuit_wires","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"related_underground_belt","order":6,"description":"The name of the [UndergroundBeltPrototype](prototype:UndergroundBeltPrototype) which is used in quick-replace fashion when the smart belt dragging behavior is triggered.","override":false,"type":"EntityID","optional":true}]},{"name":"TreePrototype","order":261,"description":"A [tree](https://wiki.factorio.com/Tree).","parent":"EntityWithHealthPrototype","abstract":false,"typename":"tree","deprecated":false,"properties":[{"name":"colors","order":4,"description":"Mandatory if `variations` is defined.","override":false,"type":{"complex_type":"array","value":"Color"},"optional":true},{"name":"darkness_of_burnt_tree","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"healing_per_tick","order":6,"description":"The amount of health automatically regenerated. Trees will regenerate every 60 ticks with `healing_per_tick \u00d7 60`.","examples":["```\nhealing_per_tick = 0.01\n```"],"override":true,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.001666}},{"name":"pictures","order":2,"description":"Mandatory if `variations` is not defined.","override":false,"type":"SpriteVariations","optional":true},{"name":"stateless_visualisation_variations","order":5,"description":"","override":false,"type":{"complex_type":"array","value":{"complex_type":"union","options":["StatelessVisualisation",{"complex_type":"array","value":"StatelessVisualisation"}],"full_format":false}},"optional":true},{"name":"variation_weights","order":0,"description":"","override":false,"type":{"complex_type":"array","value":"float"},"optional":true},{"name":"variations","order":3,"description":"If defined, it can't be empty.","override":false,"type":{"complex_type":"array","value":"TreeVariation"},"optional":true}]},{"name":"TriggerTargetType","order":262,"description":"The base game always internally defines a \"common\" trigger target type. See [Design discussion: Trigger target type](https://forums.factorio.com/71657).","abstract":false,"typename":"trigger-target-type","instance_limit":56,"deprecated":false,"properties":[{"name":"name","order":1,"description":"","override":false,"type":"string","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"trigger-target-type"},"optional":false}]},{"name":"TrivialSmokePrototype","order":263,"description":"Smoke, but it's not an entity for optimization purposes.","parent":"Prototype","abstract":false,"typename":"trivial-smoke","instance_limit":255,"deprecated":false,"properties":[{"name":"affected_by_wind","order":12,"description":"Smoke always moves randomly unless `movement_slow_down_factor` is 0. If `affected_by_wind` is true, the smoke will also be moved by wind.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"animation","order":0,"description":"","override":false,"type":"Animation","optional":false},{"name":"color","order":3,"description":"","override":false,"type":"Color","optional":true,"default":"`{r=0.375, g=0.375, b=0.375, a=0.375}`"},{"name":"cyclic","order":11,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"duration","order":1,"description":"Can't be 0 - the smoke will never render.","override":false,"type":"uint32","optional":false},{"name":"end_scale","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"fade_away_duration","order":8,"description":"`fade_in_duration` + `fade_away_duration` must be <= `duration`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"fade_in_duration","order":9,"description":"`fade_in_duration` + `fade_away_duration` must be <= `duration`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"glow_animation","order":2,"description":"","override":false,"type":"Animation","optional":true},{"name":"glow_fade_away_duration","order":10,"description":"","override":false,"type":"uint32","optional":true,"default":"Value of `fade_away_duration`"},{"name":"movement_slow_down_factor","order":6,"description":"Value between 0 and 1, with 1 being no slowdown and 0 being no movement.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.995}},{"name":"render_layer","order":14,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"smoke"}},{"name":"show_when_smoke_off","order":13,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"spread_duration","order":7,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"start_scale","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}}]},{"name":"TurretPrototype","order":264,"description":"A turret that needs no extra ammunition. See the children for turrets that need some kind of ammunition.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"turret","deprecated":false,"properties":[{"name":"alert_when_attacking","order":73,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_turning_when_starting_attack","order":10,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"attack_from_start_frame","order":9,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"attack_parameters","order":0,"description":"Requires ammo_type in attack_parameters unless this is a [AmmoTurretPrototype](prototype:AmmoTurretPrototype).","override":false,"type":"AttackParameters","optional":false},{"name":"attack_target_mask","order":3,"description":"","override":false,"type":"TriggerTargetMask","optional":true,"default":"all masks"},{"name":"attacking_animation","order":18,"description":"","override":false,"type":"RotatedAnimation8Way","optional":true},{"name":"attacking_speed","order":63,"description":"Controls the speed of the attacking_animation: `1 \u00f7 attacking_speed = duration of the attacking_animation`","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"call_for_help_radius","order":2,"description":"","override":false,"type":"double","optional":false},{"name":"can_retarget_while_starting_attack","order":79,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"circuit_connector","order":84,"description":"Set of [circuit connector definitions](prototype:CircuitConnectorDefinition) for all directions used by this turret. Required amount of elements is based on other prototype values: 8 elements if building-direction-8-way flag is set, or 16 elements if building-direction-16-way flag is set, or 4 elements if turret_base_has_direction is set to true, or 1 element.","override":false,"type":{"complex_type":"array","value":"CircuitConnectorDefinition"},"optional":true},{"name":"circuit_wire_max_distance","order":81,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"default_speed","order":34,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"default_speed_secondary","order":35,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed`"},{"name":"default_speed_when_killed","order":36,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed`"},{"name":"default_starting_progress_when_killed","order":37,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_circuit_wires","order":83,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":82,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"dying_sound","order":28,"description":"","override":false,"type":"Sound","optional":true},{"name":"ending_attack_animation","order":21,"description":"","override":false,"type":"RotatedAnimation8Way","optional":true},{"name":"ending_attack_speed","order":64,"description":"Controls the speed of the ending_attack_animation: `1 \u00f7 ending_attack_speed = duration of the ending_attack_animation`","override":false,"type":"float","optional":true,"default":"Value of `default_speed`"},{"name":"ending_attack_speed_secondary","order":65,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_secondary`"},{"name":"ending_attack_speed_when_killed","order":66,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_when_killed`"},{"name":"ending_attack_starting_progress_when_killed","order":67,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_starting_progress_when_killed`"},{"name":"energy_glow_animation","order":19,"description":"","override":false,"type":"RotatedAnimation8Way","optional":true},{"name":"energy_glow_animation_flicker_strength","order":26,"description":"The range of the flickering of the alpha of `energy_glow_animation`. Default is range 0.2, so animation alpha can be anywhere between 0.8 and 1.0.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.2}},{"name":"folded_animation","order":1,"description":"","override":false,"type":"RotatedAnimation8Way","optional":false},{"name":"folded_animation_is_stateless","order":75,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"folded_speed","order":46,"description":"It's randomized whether a particular turret uses the primary or the secondary speed for its animations.\n\nControls the speed of the folded_animation: `1 \u00f7 folded_speed = duration of the folded_animation`","override":false,"type":"float","optional":true,"default":"Value of `default_speed`"},{"name":"folded_speed_secondary","order":47,"description":"It's randomized whether a particular turret uses the primary or the secondary speed for its animations.\n\nControls the speed of the folded_animation: `1 \u00f7 folded_speed_secondary = duration of the folded_animation`","override":false,"type":"float","optional":true,"default":"Value of `default_speed_secondary`"},{"name":"folded_speed_when_killed","order":48,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_when_killed`"},{"name":"folded_starting_progress_when_killed","order":49,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_starting_progress_when_killed`"},{"name":"folded_state_corpse","order":78,"description":"","override":false,"type":{"complex_type":"union","options":["EntityID",{"complex_type":"array","value":"EntityID"}],"full_format":false},"optional":true},{"name":"folding_animation","order":22,"description":"","override":false,"type":"RotatedAnimation8Way","optional":true},{"name":"folding_sound","order":30,"description":"","override":false,"type":"Sound","optional":true},{"name":"folding_speed","order":68,"description":"Controls the speed of the folding_animation: `1 \u00f7 folding_speed = duration of the folding_animation`","override":false,"type":"float","optional":true,"default":"Value of `default_speed`"},{"name":"folding_speed_secondary","order":69,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_secondary`"},{"name":"folding_speed_when_killed","order":70,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_when_killed`"},{"name":"folding_starting_progress_when_killed","order":71,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_starting_progress_when_killed`"},{"name":"glow_light_intensity","order":25,"description":"The intensity of light in the form of `energy_glow_animation` drawn on top of `energy_glow_animation`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"graphics_set","order":13,"description":"","override":false,"type":"TurretGraphicsSet","optional":false},{"name":"gun_animation_render_layer","order":12,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"gun_animation_secondary_draw_order","order":11,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"ignore_target_mask","order":4,"description":"","override":false,"type":"TriggerTargetMask","optional":true,"default":"no masks"},{"name":"integration","order":23,"description":"","override":false,"type":"Sprite","optional":true},{"name":"is_military_target","order":80,"description":"Whether this prototype should be a high priority target for enemy forces. See [Military units and structures](https://wiki.factorio.com/Military_units_and_structures).","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"prepare_range","order":72,"description":"","override":false,"type":"double","optional":true,"default":"The range defined in the `attack_parameters`"},{"name":"prepared_alternative_animation","order":16,"description":"","override":false,"type":"RotatedAnimation8Way","optional":true},{"name":"prepared_alternative_chance","order":58,"description":"The chance for `prepared_alternative_animation` to be used.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"prepared_alternative_sound","order":32,"description":"","override":false,"type":"Sound","optional":true},{"name":"prepared_alternative_speed","order":54,"description":"It's randomized whether a particular turret uses the primary or the secondary speed for its animations.\n\nControls the speed of the prepared_alternative_animation: `1 \u00f7 prepared_alternative_speed = duration of the prepared_alternative_animation`","override":false,"type":"float","optional":true,"default":"Value of `default_speed`"},{"name":"prepared_alternative_speed_secondary","order":55,"description":"It's randomized whether a particular turret uses the primary or the secondary speed for its animations.\n\nControls the speed of the prepared_alternative_animation: `1 \u00f7 prepared_alternative_speed_secondary = duration of the prepared_alternative_animation`","override":false,"type":"float","optional":true,"default":"Value of `default_speed_secondary`"},{"name":"prepared_alternative_speed_when_killed","order":56,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_when_killed`"},{"name":"prepared_alternative_starting_progress_when_killed","order":57,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_starting_progress_when_killed`"},{"name":"prepared_animation","order":15,"description":"","override":false,"type":"RotatedAnimation8Way","optional":true},{"name":"prepared_sound","order":31,"description":"","override":false,"type":"Sound","optional":true},{"name":"prepared_speed","order":50,"description":"It's randomized whether a particular turret uses the primary or the secondary speed for its animations.\n\nControls the speed of the prepared_animation: `1 \u00f7 prepared_speed = duration of the prepared_animation`","override":false,"type":"float","optional":true,"default":"Value of `default_speed`"},{"name":"prepared_speed_secondary","order":51,"description":"It's randomized whether a particular turret uses the primary or the secondary speed for its animations.\n\nControls the speed of the prepared_animation: `1 \u00f7 prepared_speed_secondary = duration of the prepared_animation`","override":false,"type":"float","optional":true,"default":"Value of `default_speed_secondary`"},{"name":"prepared_speed_when_killed","order":52,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_when_killed`"},{"name":"prepared_starting_progress_when_killed","order":53,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_starting_progress_when_killed`"},{"name":"preparing_animation","order":14,"description":"","override":false,"type":"RotatedAnimation8Way","optional":true},{"name":"preparing_sound","order":29,"description":"","override":false,"type":"Sound","optional":true},{"name":"preparing_speed","order":42,"description":"Controls the speed of the preparing_animation: `1 \u00f7 preparing_speed = duration of the preparing_animation`","override":false,"type":"float","optional":true,"default":"Value of `default_speed`"},{"name":"preparing_speed_secondary","order":43,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_secondary`"},{"name":"preparing_speed_when_killed","order":44,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_when_killed`"},{"name":"preparing_starting_progress_when_killed","order":45,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_starting_progress_when_killed`"},{"name":"random_animation_offset","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"resource_indicator_animation","order":20,"description":"","override":false,"type":"RotatedAnimation8Way","optional":true},{"name":"rotating_sound","order":33,"description":"","override":false,"type":"InterruptibleSound","optional":true},{"name":"rotation_speed","order":38,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed`"},{"name":"rotation_speed_secondary","order":39,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_secondary`"},{"name":"rotation_speed_when_killed","order":40,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_when_killed`"},{"name":"rotation_starting_progress_when_killed","order":41,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_starting_progress_when_killed`"},{"name":"shoot_in_prepare_state","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"spawn_decoration","order":77,"description":"Decoratives to be created when the spawner is created by the [map generator](https://wiki.factorio.com/Map_generator). Placed when enemies expand if `spawn_decorations_on_expansion` is set to true.","override":false,"type":{"complex_type":"array","value":"CreateDecorativesTriggerEffectItem"},"optional":true},{"name":"spawn_decorations_on_expansion","order":74,"description":"Whether `spawn_decoration` should be spawned when this turret is created through [enemy expansion](https://wiki.factorio.com/Enemies#Expansions).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"special_effect","order":24,"description":"","override":false,"type":"TurretSpecialEffect","optional":true},{"name":"start_attacking_only_when_can_shoot","order":6,"description":"When `false` the turret will enter `starting_attack` state without checking its ammo or energy levels. [FluidTurretPrototype](prototype:FluidTurretPrototype) forces this to `true`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"starting_attack_animation","order":17,"description":"","override":false,"type":"RotatedAnimation8Way","optional":true},{"name":"starting_attack_sound","order":27,"description":"","override":false,"type":"Sound","optional":true},{"name":"starting_attack_speed","order":59,"description":"Controls the speed of the starting_attack_animation: `1 \u00f7 starting_attack_speed = duration of the starting_attack_animation`","override":false,"type":"float","optional":true,"default":"Value of `default_speed`"},{"name":"starting_attack_speed_secondary","order":60,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_secondary`"},{"name":"starting_attack_speed_when_killed","order":61,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_speed_when_killed`"},{"name":"starting_attack_starting_progress_when_killed","order":62,"description":"","override":false,"type":"float","optional":true,"default":"Value of `default_starting_progress_when_killed`"},{"name":"turret_base_has_direction","order":7,"description":"When `true` the turret's collision box will affected by its rotation.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"unfolds_before_dying","order":76,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"TutorialDefinition","order":265,"description":"The definition of the tutorial to be used in the tips and tricks, see [TipsAndTricksItem](prototype:TipsAndTricksItem). The actual tutorial scripting code is defined in the tutorial scenario. The scenario must be placed in the `tutorials` folder in the mod.","parent":"PrototypeBase","abstract":false,"typename":"tutorial","deprecated":false,"properties":[{"name":"order","order":1,"description":"Used to order prototypes in inventory, recipes and GUIs. May not exceed a length of 200 characters.","override":true,"type":"Order","optional":true,"default":"Value of `name`"},{"name":"scenario","order":0,"description":"Name of the folder for this tutorial scenario in the [`tutorials` folder](runtime:mod-structure).","override":false,"type":"string","optional":false}]},{"name":"UndergroundBeltPrototype","order":266,"description":"An [underground belt](https://wiki.factorio.com/Underground_belt).","parent":"TransportBeltConnectablePrototype","abstract":false,"typename":"underground-belt","deprecated":false,"properties":[{"name":"max_distance","order":0,"description":"","override":false,"type":"uint8","optional":false},{"name":"max_distance_tint","order":6,"description":"","override":false,"type":"Color","optional":true},{"name":"max_distance_underground_remove_belts_sprite","order":4,"description":"","override":false,"type":"Sprite","optional":true},{"name":"structure","order":1,"description":"","override":false,"type":"UndergroundBeltStructure","optional":true},{"name":"underground_collision_mask","order":5,"description":"","override":false,"type":"CollisionMaskConnector","optional":true,"default":"no masks"},{"name":"underground_remove_belts_sprite","order":3,"description":"","override":false,"type":"Sprite","optional":true},{"name":"underground_sprite","order":2,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"UnitPrototype","order":267,"description":"Entity that moves around and attacks players, for example [biters and spitters](https://wiki.factorio.com/Enemies#Creatures).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"unit","deprecated":false,"properties":[{"name":"absorptions_to_join_attack","order":19,"description":"","override":false,"type":{"complex_type":"dictionary","key":"AirbornePollutantID","value":"float"},"optional":true},{"name":"affected_by_tiles","order":16,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"ai_settings","order":13,"description":"","override":false,"type":"UnitAISettings","optional":true},{"name":"allow_run_time_change_of_is_military_target","order":25,"description":"If this is true, this entities `is_military_target property` can be changed runtime (on the entity, not on the prototype itself).","override":true,"type":{"complex_type":"literal","value":false},"optional":true,"default":{"complex_type":"literal","value":false}},{"name":"alternative_attacking_frame_sequence","order":22,"description":"","override":false,"type":"UnitAlternativeFrameSequence","optional":true},{"name":"attack_parameters","order":1,"description":"Requires animation in attack_parameters. Requires ammo_type in attack_parameters.","override":false,"type":"AttackParameters","optional":false},{"name":"can_open_gates","order":15,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"distance_per_frame","order":4,"description":"How fast the `run_animation` frames are advanced. The animations are advanced animation_speed frames per `distance_per_frame` that the unit moves.\n\n`frames_advanced = (distance_moved \u00f7 distance_per_frame) * animation_speed`","override":false,"type":"float","optional":false},{"name":"distraction_cooldown","order":5,"description":"","override":false,"type":"uint32","optional":false},{"name":"dying_sound","order":8,"description":"The sound file to play when entity dies.","override":false,"type":"Sound","optional":true},{"name":"has_belt_immunity","order":10,"description":"If the unit is immune to movement by belts.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"is_military_target","order":24,"description":"Whether this prototype should be a high priority target for enemy forces. See [Military units and structures](https://wiki.factorio.com/Military_units_and_structures).","override":true,"type":{"complex_type":"literal","value":true},"optional":true,"default":{"complex_type":"literal","value":true}},{"name":"light","order":18,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"max_pursue_distance","order":11,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":50}},{"name":"min_pursue_time","order":9,"description":"In ticks.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":600}},{"name":"move_while_shooting","order":14,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"movement_speed","order":3,"description":"Movement speed of the unit in the world, in tiles per tick. Must be equal to or greater than 0.","override":false,"type":"float","optional":false},{"name":"radar_range","order":12,"description":"In chunks. The radius of how many chunks this unit charts around itself.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"render_layer","order":17,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"rotation_speed","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.025}},{"name":"run_animation","order":0,"description":"","override":false,"type":"RotatedAnimation","optional":false},{"name":"running_sound_animation_positions","order":23,"description":"Only loaded if `walking_sound` is defined.","override":false,"type":{"complex_type":"array","value":"float"},"optional":true},{"name":"spawning_time_modifier","order":20,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"vision_distance","order":6,"description":"Max is 100.\n\nNote: Setting to 50 or above can lead to undocumented behavior of individual units creating groups on their own when attacking or being attacked.","override":false,"type":"double","optional":false},{"name":"walking_sound","order":21,"description":"","override":false,"type":"Sound","optional":true},{"name":"warcry","order":2,"description":"A sound the unit makes when it sets out to attack.","override":false,"type":"Sound","optional":true}]},{"name":"UpgradeItemPrototype","order":268,"description":"An [upgrade planner](https://wiki.factorio.com/Upgrade_planner).\n\nFor an entity to be allowed as an upgrade source, it must be minable, may not have \"not-upgradable\" flag set and may not be [hidden](prototype:PrototypeBase::hidden). Additionally, the source entity's mining result must not be an item product that is [hidden](prototype:ItemPrototype::hidden). Mining results with no item products are allowed.\n\nFor an entity to be allowed as an upgrade target, it must have least 1 item that builds it that isn't hidden.\n\nFor two entities to be upgrades of each other, the two entities must have the same [fast replaceable group](prototype:EntityPrototype::fast_replaceable_group), the same [collision box](prototype:EntityPrototype::collision_box) and the same [collision mask](prototype:EntityPrototype::collision_mask). Additionally, [underground belts](prototype:UndergroundBeltPrototype) cannot be upgraded to [transport belts](prototype:TransportBeltPrototype) and vice versa.\n\nFor an entity to be automatically upgraded to another entity without configuring the upgrade planner, the [next upgrade](prototype:EntityPrototype::next_upgrade) of the upgrade source entity must be set.","parent":"SelectionToolPrototype","abstract":false,"typename":"upgrade-item","deprecated":false,"properties":[{"name":"alt_select","order":3,"description":"The [SelectionModeData::mode](prototype:SelectionModeData::mode) is hardcoded to `\"cancel-upgrade\"`.\n\nThe filters are parsed, but then ignored and forced to be empty.","override":true,"type":"SelectionModeData","optional":false},{"name":"always_include_tiles","order":4,"description":"This property is hardcoded to `false`.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"draw_label_for_cursor_render","order":1,"description":"If the item will draw its label when held in the cursor in place of the item count.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"select","order":2,"description":"The [SelectionModeData::mode](prototype:SelectionModeData::mode) is hardcoded to `\"upgrade\"`.\n\nThe filters are parsed, but then ignored and forced to be empty.","override":true,"type":"SelectionModeData","optional":false},{"name":"stack_size","order":0,"description":"Count of items of the same name that can be stored in one inventory slot. Must be 1 when the `\"not-stackable\"` flag is set.","examples":["```\nstack_size = 1\n```"],"override":true,"type":{"complex_type":"literal","value":1},"optional":false}]},{"name":"UseEntityInEnergyProductionAchievementPrototype","order":269,"description":"This prototype is used for receiving an achievement when the player produces energy by entity.","parent":"AchievementPrototype","abstract":false,"typename":"use-entity-in-energy-production-achievement","deprecated":false,"properties":[{"name":"consumed_condition","order":1,"description":"This item need to be consumed before gaining the achievement.","examples":["```\nconsumed_condition = \"uranium-fuel-cell\"\n```"],"override":false,"type":"ItemIDFilter","optional":true},{"name":"entity","order":0,"description":"This entity is needed to produce energy, for the player to complete the achievement.","examples":["```\nentity = \"steam-engine\"\n```"],"override":false,"type":"EntityID","optional":false},{"name":"produced_condition","order":2,"description":"This item needs to be produced before gaining the achievement.","override":false,"type":"ItemIDFilter","optional":true},{"name":"required_to_build","order":3,"description":"This item need to be built before gaining the achievement.","examples":["```\nrequired_to_build = \"nuclear-reactor\"\n```"],"override":false,"type":"EntityID","optional":true}]},{"name":"UseItemAchievementPrototype","order":270,"description":"This prototype is used for receiving an achievement when the player uses a capsule.","parent":"AchievementPrototype","abstract":false,"typename":"use-item-achievement","deprecated":false,"properties":[{"name":"amount","order":2,"description":"How many capsules need to be used.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"limit_quality","order":1,"description":"","override":false,"type":"QualityID","optional":false},{"name":"limited_to_one_game","order":3,"description":"If this is false, the player carries over their statistics from this achievement through all their saves.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"to_use","order":0,"description":"This will trigger the achievement, if this capsule is used.","examples":["```\nto_use = \"raw-fish\"\n```"],"override":false,"type":"ItemID","optional":false}]},{"name":"UtilityConstants","order":271,"description":"Constants used by the game that are not specific to certain prototypes. See [utility-constants.lua](https://github.com/wube/factorio-data/blob/master/core/prototypes/utility-constants.lua) for the values used by the base game.","parent":"PrototypeBase","abstract":false,"typename":"utility-constants","instance_limit":1,"deprecated":false,"properties":[{"name":"agricultural_range_visualization_color","order":18,"description":"","override":false,"type":"Color","optional":false},{"name":"artillery_range_visualization_color","order":19,"description":"","override":false,"type":"Color","optional":false},{"name":"asteroid_collector_blockage_update_tile_distance","order":122,"description":"","override":false,"type":"uint32","optional":false},{"name":"asteroid_collector_max_nurbs_control_point_separation","order":123,"description":"","override":false,"type":"double","optional":false},{"name":"asteroid_collector_navmesh_refresh_tick_interval","order":121,"description":"","override":false,"type":"uint32","optional":false},{"name":"asteroid_collector_static_head_swing_segment_count","order":125,"description":"","override":false,"type":"uint32","optional":false},{"name":"asteroid_collector_static_head_swing_strength_scale","order":124,"description":"","override":false,"type":"float","optional":false},{"name":"asteroid_fading_range","order":118,"description":"","override":false,"type":"float","optional":false},{"name":"asteroid_position_offset_to_speed_coefficient","order":120,"description":"","override":false,"type":"double","optional":false},{"name":"asteroid_spawning_offset","order":117,"description":"","override":false,"type":"SimpleBoundingBox","optional":false},{"name":"asteroid_spawning_with_random_orientation_max_speed","order":119,"description":"","override":false,"type":"double","optional":false},{"name":"blueprint_big_slots_per_row","order":185,"description":"Will be clamped to the range [2, 100].","override":false,"type":"uint8","optional":false},{"name":"blueprint_small_slots_per_row","order":186,"description":"Will be clamped to the range [2, 100].","override":false,"type":"uint8","optional":false},{"name":"bonus_gui_ordering","order":56,"description":"The base game uses more entries here that are applied via the ammo-category.lua file.","override":false,"type":"BonusGuiOrdering","optional":false},{"name":"building_buildable_tint","order":2,"description":"","override":false,"type":"Color","optional":false},{"name":"building_buildable_too_far_tint","order":1,"description":"","override":false,"type":"Color","optional":false},{"name":"building_collision_mask","order":153,"description":"","override":false,"type":"CollisionMaskConnector","optional":false},{"name":"building_ignorable_tint","order":4,"description":"","override":false,"type":"Color","optional":false},{"name":"building_no_tint","order":5,"description":"","override":false,"type":"Color","optional":false},{"name":"building_not_buildable_tint","order":3,"description":"","override":false,"type":"Color","optional":false},{"name":"capsule_range_visualization_color","order":17,"description":"","override":false,"type":"Color","optional":false},{"name":"capture_water_mask_at_layer","order":176,"description":"Layer within `ground-natural` [tile render layer](prototype:TileRenderLayer) group, before which terrain lightmap alpha channel is copied into water mask. Decals, which need to be masked by water should have their [DecorativePrototype::tile_layer](prototype:DecorativePrototype::tile_layer) set to only slightly larger value than `capture_water_mask_at_layer`, to avoid risk of undefined behavior caused by rendering tiles into layers between `capture_water_mask_at_layer` and decal's `tile_layer`.","override":false,"type":"uint8","optional":false},{"name":"chart","order":20,"description":"Chart means map and minimap.","override":false,"type":"ChartUtilityConstants","optional":false},{"name":"chart_search_highlight","order":32,"description":"","override":false,"type":"Color","optional":false},{"name":"checkerboard_black","order":64,"description":"","override":false,"type":"Color","optional":false},{"name":"checkerboard_white","order":63,"description":"","override":false,"type":"Color","optional":false},{"name":"clear_cursor_volume_modifier","order":112,"description":"","override":false,"type":"float","optional":false},{"name":"clipboard_history_size","order":79,"description":"","override":false,"type":"uint32","optional":false},{"name":"color_filters","order":109,"description":"","override":false,"type":{"complex_type":"array","value":"ColorFilterData"},"optional":true},{"name":"construction_robots_use_busy_robots_queue","order":178,"description":"","override":false,"type":"boolean","optional":false},{"name":"count_button_size","order":29,"description":"","override":false,"type":"int32","optional":false},{"name":"crafting_queue_slots_per_row","order":183,"description":"Will be clamped to the range [1, 100].","override":false,"type":"uint8","optional":false},{"name":"daytime_color_lookup","order":58,"description":"","override":false,"type":"DaytimeColorLookupTable","optional":false},{"name":"deconstruct_mark_tint","order":27,"description":"","override":false,"type":"Color","optional":false},{"name":"default_alert_icon_scale","order":53,"description":"","override":false,"type":"float","optional":false},{"name":"default_alert_icon_scale_by_type","order":55,"description":"","override":false,"type":{"complex_type":"dictionary","key":"string","value":"float"},"optional":true},{"name":"default_alert_icon_shift_by_type","order":54,"description":"","override":false,"type":{"complex_type":"dictionary","key":"string","value":"Vector"},"optional":true},{"name":"default_collision_masks","order":151,"description":"The strings can be entity types or custom strings.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"CollisionMaskConnector"},"optional":false},{"name":"default_enemy_force_color","order":25,"description":"","override":false,"type":"Color","optional":false},{"name":"default_item_weight","order":134,"description":"","override":false,"type":"Weight","optional":false},{"name":"default_other_force_color","order":26,"description":"","override":false,"type":"Color","optional":false},{"name":"default_pipeline_extent","order":138,"description":"The default value of [FluidBox::max_pipeline_extent](prototype:FluidBox::max_pipeline_extent).","override":false,"type":"double","optional":false},{"name":"default_planet_procession_set","order":140,"description":"Must contain arrival and departure with [procession_style](prototype:ProcessionPrototype::procession_style) containing 0.","override":false,"type":"ProcessionSet","optional":false},{"name":"default_platform_procession_set","order":139,"description":"Must contain arrival and departure with [procession_style](prototype:ProcessionPrototype::procession_style) containing 0.","override":false,"type":"ProcessionSet","optional":false},{"name":"default_player_force_color","order":24,"description":"","override":false,"type":"Color","optional":false},{"name":"default_scorch_mark_color","order":108,"description":"","override":false,"type":"Color","optional":false},{"name":"default_trigger_target_mask_by_type","order":85,"description":"The strings are entity types.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"TriggerTargetMask"},"optional":true},{"name":"disabled_recipe_slot_background_tint","order":47,"description":"","override":false,"type":"Color","optional":false},{"name":"disabled_recipe_slot_tint","order":46,"description":"","override":false,"type":"Color","optional":false},{"name":"drop_item_radius","order":62,"description":"","override":false,"type":"float","optional":false},{"name":"dynamic_recipe_overload_factor","order":88,"description":"","override":false,"type":"double","optional":false},{"name":"ejected_item_direction_variation","order":148,"description":"Silently clamped to be between 0 and 0.99.","override":false,"type":"double","optional":false},{"name":"ejected_item_friction","order":149,"description":"Silently clamped to be between 0 and 1.","override":false,"type":"double","optional":false},{"name":"ejected_item_lifetime","order":146,"description":"Silently clamped to be between 1 tick and 5 minutes (`5 * 60 * 60` ticks).","override":false,"type":"MapTick","optional":false},{"name":"ejected_item_speed","order":147,"description":"Silently clamped to be between 0 and 1/60.","override":false,"type":"double","optional":false},{"name":"enabled_recipe_slot_tint","order":45,"description":"","override":false,"type":"Color","optional":false},{"name":"enemies_in_simulation_volume_modifier","order":115,"description":"","override":false,"type":"float","optional":false},{"name":"entity_button_background_color","order":0,"description":"","override":false,"type":"Color","optional":false},{"name":"entity_renderer_search_box_limits","order":91,"description":"","override":false,"type":"EntityRendererSearchBoxLimits","optional":false},{"name":"environment_sounds_transition_fade_in_ticks","order":170,"description":"","override":false,"type":"uint32","optional":false},{"name":"equipment_default_background_border_color","order":14,"description":"","override":false,"type":"Color","optional":false},{"name":"equipment_default_background_color","order":13,"description":"","override":false,"type":"Color","optional":false},{"name":"equipment_default_grabbed_background_color","order":15,"description":"","override":false,"type":"Color","optional":false},{"name":"explosions_in_simulation_volume_modifier","order":114,"description":"","override":false,"type":"float","optional":false},{"name":"factoriopedia_recycling_recipe_categories","order":136,"description":"","override":false,"type":{"complex_type":"array","value":"RecipeCategoryID"},"optional":false},{"name":"feedback_screenshot_file_name","order":107,"description":"","override":false,"type":"string","optional":false},{"name":"feedback_screenshot_subfolder_name","order":106,"description":"","override":false,"type":"string","optional":false},{"name":"filter_outline_color","order":74,"description":"","override":false,"type":"Color","optional":false},{"name":"flying_text_ttl","order":191,"description":"Must be >= 1.","override":false,"type":"uint32","optional":false},{"name":"forced_enabled_recipe_slot_background_tint","order":48,"description":"","override":false,"type":"Color","optional":false},{"name":"freezing_temperature","order":159,"description":"","override":false,"type":"double","optional":false},{"name":"frozen_color_lookup","order":60,"description":"","override":false,"type":"ColorLookupTable","optional":false},{"name":"ghost_layer","order":155,"description":"","override":false,"type":"CollisionLayerID","optional":false},{"name":"ghost_shader_tint","order":8,"description":"","override":false,"type":"GhostTintSet","optional":false},{"name":"ghost_shaderless_tint","order":9,"description":"","override":false,"type":"GhostTintSet","optional":false},{"name":"ghost_shimmer_settings","order":10,"description":"","override":false,"type":"GhostShimmerConfig","optional":false},{"name":"gui_remark_color","order":21,"description":"","override":false,"type":"Color","optional":false},{"name":"gui_search_match_background_color","order":23,"description":"","override":false,"type":"Color","optional":false},{"name":"gui_search_match_foreground_color","order":22,"description":"","override":false,"type":"Color","optional":false},{"name":"huge_platform_animation_sound_area","order":41,"description":"","override":false,"type":"float","optional":false},{"name":"icon_shadow_color","order":78,"description":"","override":false,"type":"Color","optional":false},{"name":"icon_shadow_inset","order":76,"description":"","override":false,"type":"float","optional":false},{"name":"icon_shadow_radius","order":75,"description":"","override":false,"type":"float","optional":false},{"name":"icon_shadow_sharpness","order":77,"description":"","override":false,"type":"float","optional":false},{"name":"inserter_hand_stack_items_per_sprite","order":162,"description":"Must be >= 1.","override":false,"type":"ItemCountType","optional":false},{"name":"inserter_hand_stack_max_sprites","order":163,"description":"Must be >= 1.","override":false,"type":"ItemCountType","optional":false},{"name":"inventory_width","order":187,"description":"Will be clamped to the range [1, 100].","override":false,"type":"uint8","optional":false},{"name":"item_ammo_magazine_left_bar_color","order":72,"description":"","override":false,"type":"Color","optional":false},{"name":"item_default_random_tint_strength","order":69,"description":"","override":false,"type":"Color","optional":false},{"name":"item_health_bar_colors","order":71,"description":"There must be one array item with a threshold of `0`.","override":false,"type":{"complex_type":"array","value":"ItemHealthColorData"},"optional":false},{"name":"item_outline_color","order":65,"description":"","override":false,"type":"Color","optional":false},{"name":"item_outline_inset","order":67,"description":"","override":false,"type":"float","optional":false},{"name":"item_outline_radius","order":66,"description":"","override":false,"type":"float","optional":false},{"name":"item_outline_sharpness","order":68,"description":"","override":false,"type":"float","optional":false},{"name":"item_tool_durability_bar_color","order":73,"description":"","override":false,"type":"Color","optional":false},{"name":"landing_area_clear_zone_radius","order":141,"description":"Radius of area where cargo pods won't land.","override":false,"type":"float","optional":false},{"name":"landing_area_max_radius","order":142,"description":"Max radius where cargo pods will land.","override":false,"type":"float","optional":false},{"name":"landing_squash_immunity","order":145,"description":"","override":false,"type":"MapTick","optional":false},{"name":"large_area_size","order":40,"description":"","override":false,"type":"float","optional":false},{"name":"large_blueprint_area_size","order":44,"description":"","override":false,"type":"float","optional":false},{"name":"light_renderer_search_distance_limit","order":92,"description":"Can be set to anything from range 0 to 255, but larger values will be clamped to 160. Setting it to larger values can have performance impact (growing geometrically).","override":false,"type":"uint8","optional":false},{"name":"lightning_attractor_collection_range_color","order":143,"description":"","override":false,"type":"Color","optional":false},{"name":"lightning_attractor_protection_range_color","order":144,"description":"","override":false,"type":"Color","optional":false},{"name":"logistic_gui_selected_network_highlight_tint","order":31,"description":"","override":false,"type":"Color","optional":false},{"name":"logistic_gui_unselected_network_highlight_tint","order":30,"description":"","override":false,"type":"Color","optional":false},{"name":"logistic_robots_use_busy_robots_queue","order":177,"description":"","override":false,"type":"boolean","optional":false},{"name":"logistic_slots_per_row","order":184,"description":"Will be clamped to the range [2, 100].","override":false,"type":"uint8","optional":false},{"name":"low_energy_robot_estimate_multiplier","order":116,"description":"","override":false,"type":"double","optional":false},{"name":"main_menu_background_image_location","order":102,"description":"","override":false,"type":"FileName","optional":false},{"name":"main_menu_background_vignette_intensity","order":104,"description":"","override":false,"type":"float","optional":false},{"name":"main_menu_background_vignette_sharpness","order":105,"description":"","override":false,"type":"float","optional":false},{"name":"main_menu_simulations","order":103,"description":"The strings represent the names of the simulations.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"SimulationDefinition"},"optional":true},{"name":"manual_rail_building_reach_modifier","order":81,"description":"","override":false,"type":"double","optional":false},{"name":"map_editor","order":61,"description":"","override":false,"type":"MapEditorConstants","optional":false},{"name":"max_belt_stack_size","order":161,"description":"Must be >= 1.","override":false,"type":"uint8","optional":false},{"name":"max_fluid_flow","order":137,"description":"","override":false,"type":"FluidAmount","optional":false},{"name":"max_logistic_filter_count","order":36,"description":"","override":false,"type":"LogisticFilterIndex","optional":false},{"name":"max_terrain_building_size","order":37,"description":"","override":false,"type":"uint8","optional":false},{"name":"maximum_quality_jump","order":180,"description":"Cap for how many steps of quality the output of something (miner/crafter) may be higher than the input (resource/ingredients). Must be >= 1.","override":false,"type":"uint8","optional":false},{"name":"maximum_recipe_overload_multiplier","order":90,"description":"","override":false,"type":"uint32","optional":false},{"name":"medium_area_size","order":39,"description":"","override":false,"type":"float","optional":false},{"name":"medium_blueprint_area_size","order":43,"description":"","override":false,"type":"float","optional":false},{"name":"merge_bonus_gui_production_bonuses","order":57,"description":"If not set, defaults to 'true' when modded and 'false' when vanilla.","override":false,"type":"boolean","optional":true},{"name":"minimap_slot_clicked_tint","order":111,"description":"","override":false,"type":"Color","optional":false},{"name":"minimap_slot_hovered_tint","order":110,"description":"","override":false,"type":"Color","optional":false},{"name":"minimum_recipe_overload_multiplier","order":89,"description":"","override":false,"type":"uint32","optional":false},{"name":"missing_preview_sprite_location","order":101,"description":"","override":false,"type":"FileName","optional":false},{"name":"module_inventory_width","order":188,"description":"Will be clamped to the range [1, 100].","override":false,"type":"uint8","optional":false},{"name":"moving_sound_count_reduction_rate","order":169,"description":"Silently clamped to be between 0 and 1.","override":false,"type":"float","optional":false},{"name":"player_colors","order":50,"description":"The table with `name = \"default\"` must exist and be the first member of the array.","override":false,"type":{"complex_type":"array","value":"PlayerColorData"},"optional":false},{"name":"probability_product_count_tint","order":11,"description":"","override":false,"type":"Color","optional":false},{"name":"quality_selector_dropdown_threshold","order":179,"description":"","override":false,"type":"uint8","optional":false},{"name":"rail_planner_count_button_color","order":28,"description":"","override":false,"type":"Color","optional":false},{"name":"rail_segment_colors","order":49,"description":"","override":false,"type":{"complex_type":"array","value":"Color"},"optional":false},{"name":"recipe_step_limit","order":80,"description":"","override":false,"type":"uint32","optional":false},{"name":"remote_view_LPF_max_cutoff_frequency","order":165,"description":"","override":false,"type":"float","optional":false},{"name":"remote_view_LPF_min_cutoff_frequency","order":164,"description":"","override":false,"type":"float","optional":false},{"name":"rocket_lift_weight","order":135,"description":"","override":false,"type":"Weight","optional":false},{"name":"script_command_console_chat_color","order":52,"description":"","override":false,"type":"Color","optional":false},{"name":"select_group_row_count","order":181,"description":"Will be clamped to the range [1, 100].","override":false,"type":"uint8","optional":false},{"name":"select_slot_row_count","order":182,"description":"Will be clamped to the range [1, 100].","override":false,"type":"uint8","optional":false},{"name":"selected_chart_search_highlight","order":33,"description":"","override":false,"type":"Color","optional":false},{"name":"server_command_console_chat_color","order":51,"description":"","override":false,"type":"Color","optional":false},{"name":"show_chunk_components_collision_mask","order":152,"description":"","override":false,"type":"CollisionMaskConnector","optional":false},{"name":"small_area_size","order":38,"description":"","override":false,"type":"float","optional":false},{"name":"small_blueprint_area_size","order":42,"description":"","override":false,"type":"float","optional":false},{"name":"space_LPF_max_cutoff_frequency","order":167,"description":"","override":false,"type":"float","optional":false},{"name":"space_LPF_min_cutoff_frequency","order":166,"description":"","override":false,"type":"float","optional":false},{"name":"space_platform_acceleration_expression","order":126,"description":"Variables: speed, thrust, weight, width, height","override":false,"type":"MathExpression","optional":false},{"name":"space_platform_asteroid_chunk_trajectory_updates_per_tick","order":133,"description":"How many asteroid chunks should be processed per tick, see [space_platform_max_relative_speed_deviation_for_asteroid_chunks_update](prototype:UtilityConstants::space_platform_max_relative_speed_deviation_for_asteroid_chunks_update).","override":false,"type":"uint32","optional":false},{"name":"space_platform_dump_cooldown","order":130,"description":"Determines how fast space platforms will send items in drop slots to the surface. Each item type has its own cooldown.","override":false,"type":"uint32","optional":false},{"name":"space_platform_manual_dump_cooldown","order":131,"description":"Delay after manual transfer until space platform sends items in drop slots to the surface. Overrides remaining space_platform_dump_cooldown in this instance.","override":false,"type":"uint32","optional":false},{"name":"space_platform_max_relative_speed_deviation_for_asteroid_chunks_update","order":132,"description":"Space platform remembers relative speed range which asteroids use while it moves. When the range is larger than the specified deviation, the platform will start updating cached trajectories of all asteroid chunks over multiple ticks.","override":false,"type":"float","optional":false},{"name":"space_platform_max_size","order":129,"description":"","override":false,"type":"SimpleBoundingBox","optional":false},{"name":"space_platform_relative_speed_factor","order":127,"description":"","override":false,"type":"double","optional":false},{"name":"space_platform_starfield_movement_vector","order":128,"description":"","override":false,"type":"Vector","optional":false},{"name":"spawner_evolution_factor_health_modifier","order":70,"description":"","override":false,"type":"float","optional":false},{"name":"starmap_orbit_clicked_color","order":173,"description":"","override":false,"type":"Color","optional":false},{"name":"starmap_orbit_default_color","order":171,"description":"","override":false,"type":"Color","optional":false},{"name":"starmap_orbit_disabled_color","order":174,"description":"","override":false,"type":"Color","optional":false},{"name":"starmap_orbit_hovered_color","order":172,"description":"","override":false,"type":"Color","optional":false},{"name":"time_to_show_full_health_bar","order":175,"description":"The number of ticks to show a segmented unit's health bar after fully regenerating.","override":false,"type":"MapTick","optional":false},{"name":"tooltip_monitor_edge_border","order":190,"description":"Must be >= 1.","override":false,"type":"int32","optional":false},{"name":"train_inactivity_wait_condition_default","order":84,"description":"","override":false,"type":"uint32","optional":false},{"name":"train_on_elevated_rail_shadow_shift_multiplier","order":160,"description":"","override":false,"type":"Vector","optional":false},{"name":"train_path_finding","order":192,"description":"","override":false,"type":"TrainPathFinderConstants","optional":false},{"name":"train_pushed_by_player_ignores_friction","order":158,"description":"","override":false,"type":"boolean","optional":false},{"name":"train_pushed_by_player_max_acceleration","order":157,"description":"","override":false,"type":"double","optional":false},{"name":"train_pushed_by_player_max_speed","order":156,"description":"","override":false,"type":"double","optional":false},{"name":"train_temporary_stop_wait_time","order":82,"description":"","override":false,"type":"uint32","optional":false},{"name":"train_time_wait_condition_default","order":83,"description":"","override":false,"type":"uint32","optional":false},{"name":"train_visualization","order":150,"description":"","override":false,"type":"TrainVisualizationConstants","optional":false},{"name":"trash_inventory_width","order":189,"description":"Will be clamped to the range [1, 100].","override":false,"type":"uint8","optional":false},{"name":"tree_leaf_distortion_distortion_far","order":94,"description":"","override":false,"type":"Vector","optional":false},{"name":"tree_leaf_distortion_distortion_near","order":97,"description":"","override":false,"type":"Vector","optional":false},{"name":"tree_leaf_distortion_speed_far","order":95,"description":"","override":false,"type":"Vector","optional":false},{"name":"tree_leaf_distortion_speed_near","order":98,"description":"","override":false,"type":"Vector","optional":false},{"name":"tree_leaf_distortion_strength_far","order":93,"description":"","override":false,"type":"Vector","optional":false},{"name":"tree_leaf_distortion_strength_near","order":96,"description":"","override":false,"type":"Vector","optional":false},{"name":"tree_shadow_roughness","order":99,"description":"","override":false,"type":"float","optional":false},{"name":"tree_shadow_speed","order":100,"description":"","override":false,"type":"float","optional":false},{"name":"turret_range_visualization_color","order":16,"description":"","override":false,"type":"Color","optional":false},{"name":"underground_belt_max_distance_tint","order":6,"description":"","override":false,"type":"Color","optional":false},{"name":"underground_pipe_max_distance_tint","order":7,"description":"","override":false,"type":"Color","optional":false},{"name":"unit_group_max_pursue_distance","order":87,"description":"","override":false,"type":"double","optional":false},{"name":"unit_group_pathfind_resolution","order":86,"description":"","override":false,"type":"int8","optional":false},{"name":"walking_sound_count_reduction_rate","order":168,"description":"Silently clamped to be between 0 and 1.","override":false,"type":"float","optional":false},{"name":"water_collision_mask","order":154,"description":"","override":false,"type":"CollisionMaskConnector","optional":false},{"name":"weapons_in_simulation_volume_modifier","order":113,"description":"","override":false,"type":"float","optional":false},{"name":"zero_count_value_tint","order":12,"description":"","override":false,"type":"Color","optional":false},{"name":"zoom_to_world_can_use_nightvision","order":34,"description":"","override":false,"type":"boolean","optional":false},{"name":"zoom_to_world_daytime_color_lookup","order":59,"description":"","override":false,"type":"DaytimeColorLookupTable","optional":false},{"name":"zoom_to_world_effect_strength","order":35,"description":"","override":false,"type":"float","optional":false}]},{"name":"UtilitySounds","order":272,"description":"Sounds used by the game that are not specific to certain prototypes.","parent":"PrototypeBase","abstract":false,"typename":"utility-sounds","instance_limit":1,"deprecated":false,"properties":[{"name":"achievement_unlocked","order":46,"description":"","override":false,"type":"Sound","optional":false},{"name":"alert_destroyed","order":31,"description":"","override":false,"type":"Sound","optional":false},{"name":"armor_insert","order":44,"description":"","override":false,"type":"Sound","optional":false},{"name":"armor_remove","order":45,"description":"","override":false,"type":"Sound","optional":false},{"name":"axe_fighting","order":30,"description":"","override":false,"type":"Sound","optional":false},{"name":"axe_mining_ore","order":27,"description":"","override":false,"type":"Sound","optional":false},{"name":"axe_mining_stone","order":28,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_animated_huge","order":17,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_animated_large","order":16,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_animated_medium","order":15,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_animated_small","order":14,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_blueprint_huge","order":11,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_blueprint_large","order":10,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_blueprint_medium","order":9,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_blueprint_small","order":8,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_ghost_upgrade","order":12,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_ghost_upgrade_cancel","order":13,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_huge","order":6,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_large","order":5,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_medium","order":4,"description":"","override":false,"type":"Sound","optional":false},{"name":"build_small","order":3,"description":"","override":false,"type":"Sound","optional":false},{"name":"cannot_build","order":7,"description":"","override":false,"type":"Sound","optional":false},{"name":"clear_cursor","order":43,"description":"","override":false,"type":"Sound","optional":false},{"name":"confirm","order":59,"description":"","override":false,"type":"Sound","optional":false},{"name":"console_message","order":32,"description":"","override":false,"type":"Sound","optional":false},{"name":"crafting_finished","order":40,"description":"","override":false,"type":"Sound","optional":false},{"name":"deconstruct_huge","order":21,"description":"","override":false,"type":"Sound","optional":false},{"name":"deconstruct_large","order":20,"description":"","override":false,"type":"Sound","optional":false},{"name":"deconstruct_medium","order":19,"description":"","override":false,"type":"Sound","optional":false},{"name":"deconstruct_robot","order":22,"description":"","override":false,"type":"Sound","optional":false},{"name":"deconstruct_small","order":18,"description":"","override":false,"type":"Sound","optional":false},{"name":"default_driving_sound","order":63,"description":"","override":false,"type":"InterruptibleSound","optional":false},{"name":"default_landing_steps","order":64,"description":"","override":false,"type":"Sound","optional":false},{"name":"default_manual_repair","order":39,"description":"","override":false,"type":"Sound","optional":false},{"name":"drop_item","order":61,"description":"","override":false,"type":"Sound","optional":false},{"name":"entity_settings_copied","order":57,"description":"","override":false,"type":"Sound","optional":false},{"name":"entity_settings_pasted","order":56,"description":"","override":false,"type":"Sound","optional":false},{"name":"game_lost","order":35,"description":"","override":false,"type":"Sound","optional":false},{"name":"game_won","order":36,"description":"","override":false,"type":"Sound","optional":false},{"name":"gui_click","order":0,"description":"","override":false,"type":"Sound","optional":false},{"name":"gui_switch","order":1,"description":"","override":false,"type":"Sound","optional":false},{"name":"inventory_click","order":41,"description":"","override":false,"type":"Sound","optional":false},{"name":"inventory_move","order":42,"description":"","override":false,"type":"Sound","optional":false},{"name":"item_deleted","order":55,"description":"","override":false,"type":"Sound","optional":false},{"name":"item_spawned","order":58,"description":"","override":false,"type":"Sound","optional":false},{"name":"list_box_click","order":2,"description":"","override":false,"type":"Sound","optional":false},{"name":"metal_walking_sound","order":37,"description":"","override":false,"type":"Sound","optional":false},{"name":"mining_wood","order":29,"description":"","override":false,"type":"Sound","optional":false},{"name":"new_objective","order":34,"description":"","override":false,"type":"Sound","optional":false},{"name":"paste_activated","order":54,"description":"","override":false,"type":"Sound","optional":false},{"name":"picked_up_item","order":53,"description":"","override":false,"type":"Sound","optional":false},{"name":"rail_plan_start","order":62,"description":"","override":false,"type":"Sound","optional":false},{"name":"research_completed","order":38,"description":"","override":false,"type":"Sound","optional":false},{"name":"rotated_huge","order":26,"description":"","override":false,"type":"Sound","optional":false},{"name":"rotated_large","order":25,"description":"","override":false,"type":"Sound","optional":false},{"name":"rotated_medium","order":24,"description":"","override":false,"type":"Sound","optional":false},{"name":"rotated_small","order":23,"description":"","override":false,"type":"Sound","optional":false},{"name":"scenario_message","order":33,"description":"","override":false,"type":"Sound","optional":false},{"name":"segment_dying_sound","order":65,"description":"Only present when the Space Age mod is loaded.","override":false,"type":"Sound","optional":true},{"name":"smart_pipette","order":51,"description":"","override":false,"type":"Sound","optional":false},{"name":"switch_gun","order":52,"description":"","override":false,"type":"Sound","optional":false},{"name":"tutorial_notice","order":50,"description":"","override":false,"type":"Sound","optional":false},{"name":"undo","order":60,"description":"","override":false,"type":"Sound","optional":false},{"name":"wire_connect_pole","order":47,"description":"","override":false,"type":"Sound","optional":false},{"name":"wire_disconnect","order":48,"description":"","override":false,"type":"Sound","optional":false},{"name":"wire_pickup","order":49,"description":"","override":false,"type":"Sound","optional":false}]},{"name":"UtilitySprites","order":273,"description":"Sprites used by the game that are not specific to certain prototypes.","parent":"PrototypeBase","abstract":false,"typename":"utility-sprites","instance_limit":1,"deprecated":false,"properties":[{"name":"achievement_label","order":238,"description":"","override":false,"type":"Sprite","optional":false},{"name":"achievement_label_completed","order":239,"description":"","override":false,"type":"Sprite","optional":false},{"name":"achievement_label_failed","order":240,"description":"","override":false,"type":"Sprite","optional":false},{"name":"achievement_warning","order":237,"description":"","override":false,"type":"Sprite","optional":false},{"name":"add","order":65,"description":"","override":false,"type":"Sprite","optional":false},{"name":"add_white","order":66,"description":"","override":false,"type":"Sprite","optional":false},{"name":"alert_arrow","order":298,"description":"","override":false,"type":"Sprite","optional":false},{"name":"ammo_damage_modifier_constant","order":504,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ammo_damage_modifier_icon","order":503,"description":"","override":false,"type":"Sprite","optional":false},{"name":"ammo_icon","order":86,"description":"","override":false,"type":"Sprite","optional":false},{"name":"and_or","order":214,"description":"","override":false,"type":"Sprite","optional":false},{"name":"any_quality","order":63,"description":"","override":false,"type":"Sprite","optional":false},{"name":"area_icon","order":192,"description":"","override":false,"type":"Sprite","optional":false},{"name":"arrow_button","order":481,"description":"","override":false,"type":"Animation","optional":false},{"name":"artillery_range_modifier_constant","order":550,"description":"","override":false,"type":"Sprite","optional":true},{"name":"artillery_range_modifier_icon","order":549,"description":"","override":false,"type":"Sprite","optional":false},{"name":"asteroid_chunk_editor_icon","order":178,"description":"","override":false,"type":"Sprite","optional":false},{"name":"asteroid_collector_path_blocked_icon","order":101,"description":"","override":false,"type":"Sprite","optional":false},{"name":"backward_arrow","order":15,"description":"","override":false,"type":"Sprite","optional":false},{"name":"backward_arrow_black","order":16,"description":"","override":false,"type":"Sprite","optional":false},{"name":"bar_gray_pip","order":115,"description":"","override":false,"type":"Sprite","optional":false},{"name":"battery","order":158,"description":"","override":false,"type":"Sprite","optional":false},{"name":"beacon_distribution_modifier_constant","order":578,"description":"","override":false,"type":"Sprite","optional":true},{"name":"beacon_distribution_modifier_icon","order":577,"description":"","override":false,"type":"Sprite","optional":false},{"name":"belt_stack_size_bonus_modifier_constant","order":580,"description":"","override":false,"type":"Sprite","optional":true},{"name":"belt_stack_size_bonus_modifier_icon","order":579,"description":"","override":false,"type":"Sprite","optional":false},{"name":"bookmark","order":2,"description":"","override":false,"type":"Sprite","optional":false},{"name":"brush_circle_shape","order":198,"description":"","override":false,"type":"Sprite","optional":false},{"name":"brush_icon","order":189,"description":"","override":false,"type":"Sprite","optional":false},{"name":"brush_square_shape","order":197,"description":"","override":false,"type":"Sprite","optional":false},{"name":"buildability_collision","order":165,"description":"","override":false,"type":"Sprite","optional":false},{"name":"buildability_collision_elevated","order":169,"description":"","override":false,"type":"Sprite","optional":false},{"name":"buildability_elevated_collision_bottom","order":168,"description":"","override":false,"type":"Sprite","optional":false},{"name":"buildability_elevated_collision_line","order":166,"description":"","override":false,"type":"Sprite","optional":false},{"name":"buildability_elevated_collision_top","order":167,"description":"","override":false,"type":"Sprite","optional":false},{"name":"bulk_inserter_capacity_bonus_modifier_constant","order":488,"description":"","override":false,"type":"Sprite","optional":true},{"name":"bulk_inserter_capacity_bonus_modifier_icon","order":487,"description":"","override":false,"type":"Sprite","optional":false},{"name":"cable_editor_icon","order":175,"description":"","override":false,"type":"Sprite","optional":false},{"name":"cargo_bay_not_connected_icon","order":104,"description":"","override":false,"type":"Sprite","optional":false},{"name":"cargo_landing_pad_count_modifier_constant","order":566,"description":"","override":false,"type":"Sprite","optional":true},{"name":"cargo_landing_pad_count_modifier_icon","order":565,"description":"","override":false,"type":"Sprite","optional":false},{"name":"center","order":3,"description":"","override":false,"type":"Sprite","optional":false},{"name":"change_recipe","order":22,"description":"","override":false,"type":"Sprite","optional":false},{"name":"change_recipe_productivity_modifier_constant","order":568,"description":"","override":false,"type":"Sprite","optional":true},{"name":"change_recipe_productivity_modifier_icon","order":567,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_additional_mining_categories_modifier_constant","order":554,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_additional_mining_categories_modifier_icon","order":553,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_build_distance_modifier_constant","order":518,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_build_distance_modifier_icon","order":517,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_crafting_speed_modifier_constant","order":512,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_crafting_speed_modifier_icon","order":511,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_health_bonus_modifier_constant","order":538,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_health_bonus_modifier_icon","order":537,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_inventory_slots_bonus_modifier_constant","order":530,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_inventory_slots_bonus_modifier_icon","order":529,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_item_drop_distance_modifier_constant","order":520,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_item_drop_distance_modifier_icon","order":519,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_item_pickup_distance_modifier_constant","order":526,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_item_pickup_distance_modifier_icon","order":525,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_logistic_requests_modifier_constant","order":556,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_logistic_requests_modifier_icon","order":555,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_logistic_trash_slots_modifier_constant","order":492,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_logistic_trash_slots_modifier_icon","order":491,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_loot_pickup_distance_modifier_constant","order":528,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_loot_pickup_distance_modifier_icon","order":527,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_mining_speed_modifier_constant","order":514,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_mining_speed_modifier_icon","order":513,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_reach_distance_modifier_constant","order":522,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_reach_distance_modifier_icon","order":521,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_resource_reach_distance_modifier_constant","order":524,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_resource_reach_distance_modifier_icon","order":523,"description":"","override":false,"type":"Sprite","optional":false},{"name":"character_running_speed_modifier_constant","order":516,"description":"","override":false,"type":"Sprite","optional":true},{"name":"character_running_speed_modifier_icon","order":515,"description":"","override":false,"type":"Sprite","optional":false},{"name":"check_mark","order":4,"description":"","override":false,"type":"Sprite","optional":false},{"name":"check_mark_dark_green","order":7,"description":"","override":false,"type":"Sprite","optional":false},{"name":"check_mark_green","order":6,"description":"","override":false,"type":"Sprite","optional":false},{"name":"check_mark_white","order":5,"description":"","override":false,"type":"Sprite","optional":false},{"name":"circuit_network_panel","order":233,"description":"","override":false,"type":"Sprite","optional":false},{"name":"cliff_deconstruction_enabled_modifier_constant","order":570,"description":"","override":false,"type":"Sprite","optional":true},{"name":"cliff_deconstruction_enabled_modifier_icon","order":569,"description":"","override":false,"type":"Sprite","optional":false},{"name":"cliff_editor_icon","order":188,"description":"","override":false,"type":"Sprite","optional":false},{"name":"clock","order":126,"description":"","override":false,"type":"Sprite","optional":false},{"name":"clone","order":67,"description":"","override":false,"type":"Sprite","optional":false},{"name":"clone_editor_icon","order":183,"description":"","override":false,"type":"Sprite","optional":false},{"name":"close","order":13,"description":"","override":false,"type":"Sprite","optional":false},{"name":"close_black","order":14,"description":"","override":false,"type":"Sprite","optional":false},{"name":"close_fat","order":12,"description":"","override":false,"type":"Sprite","optional":false},{"name":"close_map_preview","order":20,"description":"","override":false,"type":"Sprite","optional":false},{"name":"clouds","order":480,"description":"","override":false,"type":"Animation","optional":false},{"name":"collapse","order":286,"description":"","override":false,"type":"Sprite","optional":false},{"name":"collapse_dark","order":287,"description":"","override":false,"type":"Sprite","optional":false},{"name":"color_effect","order":125,"description":"","override":false,"type":"Sprite","optional":false},{"name":"color_picker","order":21,"description":"","override":false,"type":"Sprite","optional":false},{"name":"confirm_slot","order":171,"description":"","override":false,"type":"Sprite","optional":false},{"name":"construction_radius_visualization","order":248,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_a","order":320,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_b","order":321,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_back","order":324,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_a","order":342,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_b","order":343,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_back","order":346,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_dpdown","order":353,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_dpleft","order":354,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_dpright","order":355,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_dpup","order":352,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_left_stick","order":362,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_leftshoulder","order":350,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_leftstick","order":348,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_lefttrigger","order":361,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_paddle1","order":356,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_paddle2","order":357,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_paddle3","order":358,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_paddle4","order":359,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_right_stick","order":363,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_rightshoulder","order":351,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_rightstick","order":349,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_righttrigger","order":360,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_start","order":347,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_x","order":344,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_black_y","order":345,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_dpdown","order":331,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_dpleft","order":332,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_dpright","order":333,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_dpup","order":330,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_left_stick","order":340,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_leftshoulder","order":328,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_leftstick","order":326,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_lefttrigger","order":339,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_paddle1","order":334,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_paddle2","order":335,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_paddle3","order":336,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_paddle4","order":337,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_right_stick","order":341,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_rightshoulder","order":329,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_rightstick","order":327,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_righttrigger","order":338,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_start","order":325,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_x","order":322,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_joycon_y","order":323,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_a","order":400,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_b","order":401,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_back","order":404,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_a","order":418,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_b","order":419,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_back","order":422,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_dpdown","order":429,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_dpleft","order":430,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_dpright","order":431,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_dpup","order":428,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_left_stick","order":434,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_leftshoulder","order":426,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_leftstick","order":424,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_lefttrigger","order":433,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_right_stick","order":435,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_rightshoulder","order":427,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_rightstick","order":425,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_righttrigger","order":432,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_start","order":423,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_x","order":420,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_black_y","order":421,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_dpdown","order":411,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_dpleft","order":412,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_dpright","order":413,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_dpup","order":410,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_left_stick","order":416,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_leftshoulder","order":408,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_leftstick","order":406,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_lefttrigger","order":415,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_right_stick","order":417,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_rightshoulder","order":409,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_rightstick","order":407,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_righttrigger","order":414,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_start","order":405,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_x","order":402,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_ps_y","order":403,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_a","order":436,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_b","order":437,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_back","order":440,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_a","order":458,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_b","order":459,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_back","order":462,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_dpdown","order":469,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_dpleft","order":470,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_dpright","order":471,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_dpup","order":468,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_left_stick","order":478,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_leftshoulder","order":466,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_leftstick","order":464,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_lefttrigger","order":477,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_paddle1","order":472,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_paddle2","order":473,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_paddle3","order":474,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_paddle4","order":475,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_right_stick","order":479,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_rightshoulder","order":467,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_rightstick","order":465,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_righttrigger","order":476,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_start","order":463,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_x","order":460,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_black_y","order":461,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_dpdown","order":447,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_dpleft","order":448,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_dpright","order":449,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_dpup","order":446,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_left_stick","order":456,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_leftshoulder","order":444,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_leftstick","order":442,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_lefttrigger","order":455,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_paddle1","order":450,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_paddle2","order":451,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_paddle3","order":452,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_paddle4","order":453,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_right_stick","order":457,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_rightshoulder","order":445,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_rightstick","order":443,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_righttrigger","order":454,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_start","order":441,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_x","order":438,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_steamdeck_y","order":439,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_a","order":364,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_b","order":365,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_back","order":368,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_a","order":382,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_b","order":383,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_back","order":386,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_dpdown","order":393,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_dpleft","order":394,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_dpright","order":395,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_dpup","order":392,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_left_stick","order":398,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_leftshoulder","order":390,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_leftstick","order":388,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_lefttrigger","order":397,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_right_stick","order":399,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_rightshoulder","order":391,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_rightstick","order":389,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_righttrigger","order":396,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_start","order":387,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_x","order":384,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_black_y","order":385,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_dpdown","order":375,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_dpleft","order":376,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_dpright","order":377,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_dpup","order":374,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_left_stick","order":380,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_leftshoulder","order":372,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_leftstick","order":370,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_lefttrigger","order":379,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_right_stick","order":381,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_rightshoulder","order":373,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_rightstick","order":371,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_righttrigger","order":378,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_start","order":369,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_x","order":366,"description":"","override":false,"type":"Sprite","optional":false},{"name":"controller_xbox_y","order":367,"description":"","override":false,"type":"Sprite","optional":false},{"name":"copper_wire","order":207,"description":"","override":false,"type":"Sprite","optional":false},{"name":"copper_wire_highlight","order":210,"description":"","override":false,"type":"Sprite","optional":false},{"name":"copy","order":48,"description":"","override":false,"type":"Sprite","optional":false},{"name":"covered_chunk","order":265,"description":"","override":false,"type":"Sprite","optional":false},{"name":"crafting_machine_recipe_not_unlocked","order":269,"description":"","override":false,"type":"Sprite","optional":false},{"name":"create_ghost_on_entity_death_modifier_constant","order":500,"description":"","override":false,"type":"Sprite","optional":true},{"name":"create_ghost_on_entity_death_modifier_icon","order":499,"description":"","override":false,"type":"Sprite","optional":false},{"name":"cross_select","order":283,"description":"","override":false,"type":"Sprite","optional":false},{"name":"crosshair","order":284,"description":"","override":false,"type":"Sprite","optional":false},{"name":"cursor_box","order":0,"description":"","override":false,"type":"CursorBoxSpecification","optional":false},{"name":"cursor_icon","order":191,"description":"","override":false,"type":"Sprite","optional":false},{"name":"custom_tag_icon","order":272,"description":"","override":false,"type":"Sprite","optional":false},{"name":"custom_tag_in_map_view","order":264,"description":"","override":false,"type":"Sprite","optional":false},{"name":"danger_icon","order":89,"description":"","override":false,"type":"Sprite","optional":false},{"name":"deconstruction_mark","order":164,"description":"","override":false,"type":"Sprite","optional":false},{"name":"deconstruction_time_to_live_modifier_constant","order":532,"description":"","override":false,"type":"Sprite","optional":true},{"name":"deconstruction_time_to_live_modifier_icon","order":531,"description":"","override":false,"type":"Sprite","optional":false},{"name":"decorative_editor_icon","order":177,"description":"","override":false,"type":"Sprite","optional":false},{"name":"default_ammo_damage_modifier_icon","order":127,"description":"","override":false,"type":"Sprite","optional":false},{"name":"default_gun_speed_modifier_icon","order":128,"description":"","override":false,"type":"Sprite","optional":false},{"name":"default_turret_attack_modifier_icon","order":129,"description":"","override":false,"type":"Sprite","optional":false},{"name":"destination_full_icon","order":93,"description":"","override":false,"type":"Sprite","optional":false},{"name":"destroyed_icon","order":90,"description":"","override":false,"type":"Sprite","optional":false},{"name":"down_arrow","order":217,"description":"","override":false,"type":"Sprite","optional":false},{"name":"downloaded","order":25,"description":"","override":false,"type":"Sprite","optional":false},{"name":"downloading","order":24,"description":"","override":false,"type":"Sprite","optional":false},{"name":"dropdown","order":23,"description":"","override":false,"type":"Sprite","optional":false},{"name":"editor_pause","order":73,"description":"","override":false,"type":"Sprite","optional":false},{"name":"editor_play","order":74,"description":"","override":false,"type":"Sprite","optional":false},{"name":"editor_selection","order":196,"description":"","override":false,"type":"Sprite","optional":false},{"name":"editor_speed_down","order":72,"description":"","override":false,"type":"Sprite","optional":false},{"name":"editor_speed_up","order":75,"description":"","override":false,"type":"Sprite","optional":false},{"name":"electricity_icon","order":83,"description":"","override":false,"type":"Sprite","optional":false},{"name":"electricity_icon_unplugged","order":107,"description":"","override":false,"type":"Sprite","optional":false},{"name":"empty_ammo_slot","order":148,"description":"","override":false,"type":"Sprite","optional":false},{"name":"empty_armor_slot","order":146,"description":"","override":false,"type":"Sprite","optional":false},{"name":"empty_drop_cargo_slot","order":153,"description":"","override":false,"type":"Sprite","optional":false},{"name":"empty_gun_slot","order":147,"description":"","override":false,"type":"Sprite","optional":false},{"name":"empty_inserter_hand_slot","order":151,"description":"","override":false,"type":"Sprite","optional":false},{"name":"empty_module_slot","order":145,"description":"","override":false,"type":"Sprite","optional":false},{"name":"empty_robot_material_slot","order":150,"description":"","override":false,"type":"Sprite","optional":false},{"name":"empty_robot_slot","order":149,"description":"","override":false,"type":"Sprite","optional":false},{"name":"empty_trash_slot","order":152,"description":"","override":false,"type":"Sprite","optional":false},{"name":"enemy_force_icon","order":201,"description":"","override":false,"type":"Sprite","optional":false},{"name":"enter","order":218,"description":"","override":false,"type":"Sprite","optional":false},{"name":"entity_editor_icon","order":180,"description":"","override":false,"type":"Sprite","optional":false},{"name":"entity_info_dark_background","order":119,"description":"","override":false,"type":"Sprite","optional":false},{"name":"equipment_collision","order":157,"description":"","override":false,"type":"Sprite","optional":false},{"name":"equipment_grid","order":26,"description":"","override":false,"type":"Sprite","optional":false},{"name":"equipment_grid_small","order":27,"description":"","override":false,"type":"Sprite","optional":false},{"name":"equipment_slot","order":156,"description":"","override":false,"type":"Sprite","optional":false},{"name":"expand","order":285,"description":"","override":false,"type":"Sprite","optional":false},{"name":"expand_dots","order":28,"description":"","override":false,"type":"Sprite","optional":false},{"name":"explosion_chart_visualization","order":482,"description":"","override":false,"type":"Animation","optional":false},{"name":"export","order":29,"description":"","override":false,"type":"Sprite","optional":false},{"name":"export_slot","order":172,"description":"","override":false,"type":"Sprite","optional":false},{"name":"feedback","order":302,"description":"","override":false,"type":"Sprite","optional":false},{"name":"filter_blacklist","order":270,"description":"","override":false,"type":"Sprite","optional":false},{"name":"fluid_icon","order":87,"description":"The sprite will be drawn on top of [fluid turrets](prototype:FluidTurretPrototype) that are out of fluid ammunition and don't have [FluidTurretPrototype::out_of_ammo_alert_icon](prototype:FluidTurretPrototype::out_of_ammo_alert_icon) set.","override":false,"type":"Sprite","optional":false},{"name":"fluid_indication_arrow","order":134,"description":"","override":false,"type":"Sprite","optional":false},{"name":"fluid_indication_arrow_both_ways","order":135,"description":"","override":false,"type":"Sprite","optional":false},{"name":"fluid_visualization_connection","order":306,"description":"","override":false,"type":"Sprite","optional":false},{"name":"fluid_visualization_connection_both_ways","order":307,"description":"","override":false,"type":"Sprite","optional":false},{"name":"fluid_visualization_connection_underground","order":308,"description":"","override":false,"type":"Sprite","optional":false},{"name":"fluid_visualization_extent_arrow","order":309,"description":"","override":false,"type":"Sprite","optional":false},{"name":"follower_robot_lifetime_modifier_constant","order":548,"description":"","override":false,"type":"Sprite","optional":true},{"name":"follower_robot_lifetime_modifier_icon","order":547,"description":"","override":false,"type":"Sprite","optional":false},{"name":"force_editor_icon","order":182,"description":"","override":false,"type":"Sprite","optional":false},{"name":"force_ghost_cursor","order":281,"description":"","override":false,"type":"Sprite","optional":false},{"name":"force_tile_ghost_cursor","order":282,"description":"","override":false,"type":"Sprite","optional":false},{"name":"forward_arrow","order":17,"description":"","override":false,"type":"Sprite","optional":false},{"name":"forward_arrow_black","order":18,"description":"","override":false,"type":"Sprite","optional":false},{"name":"frozen_icon","order":105,"description":"","override":false,"type":"Sprite","optional":false},{"name":"fuel_icon","order":85,"description":"","override":false,"type":"Sprite","optional":false},{"name":"game_stopped_visualization","order":110,"description":"","override":false,"type":"Sprite","optional":false},{"name":"ghost_bar_pip","order":114,"description":"","override":false,"type":"Sprite","optional":false},{"name":"ghost_cursor","order":279,"description":"","override":false,"type":"Sprite","optional":false},{"name":"give_item_modifier_constant","order":506,"description":"","override":false,"type":"Sprite","optional":true},{"name":"give_item_modifier_icon","order":505,"description":"","override":false,"type":"Sprite","optional":false},{"name":"go_to_arrow","order":68,"description":"","override":false,"type":"Sprite","optional":false},{"name":"gps_map_icon","order":271,"description":"","override":false,"type":"Sprite","optional":false},{"name":"gradient","order":293,"description":"","override":false,"type":"Sprite","optional":false},{"name":"green_circle","order":159,"description":"","override":false,"type":"Sprite","optional":false},{"name":"green_dot","order":160,"description":"","override":false,"type":"Sprite","optional":false},{"name":"green_wire","order":208,"description":"","override":false,"type":"Sprite","optional":false},{"name":"green_wire_highlight","order":211,"description":"","override":false,"type":"Sprite","optional":false},{"name":"grey_placement_indicator_leg","order":246,"description":"","override":false,"type":"Sprite","optional":false},{"name":"grey_rail_signal_placement_indicator","order":245,"description":"","override":false,"type":"Sprite","optional":false},{"name":"grid_view","order":53,"description":"","override":false,"type":"Sprite","optional":false},{"name":"gun_speed_modifier_constant","order":508,"description":"","override":false,"type":"Sprite","optional":true},{"name":"gun_speed_modifier_icon","order":507,"description":"","override":false,"type":"Sprite","optional":false},{"name":"hand","order":117,"description":"","override":false,"type":"Sprite","optional":false},{"name":"hand_black","order":118,"description":"","override":false,"type":"Sprite","optional":false},{"name":"health_bar_green_pip","order":111,"description":"","override":false,"type":"Sprite","optional":false},{"name":"health_bar_red_pip","order":113,"description":"","override":false,"type":"Sprite","optional":false},{"name":"health_bar_yellow_pip","order":112,"description":"","override":false,"type":"Sprite","optional":false},{"name":"heat_exchange_indication","order":136,"description":"","override":false,"type":"Sprite","optional":false},{"name":"hint_arrow_down","order":131,"description":"","override":false,"type":"Sprite","optional":false},{"name":"hint_arrow_left","order":133,"description":"","override":false,"type":"Sprite","optional":false},{"name":"hint_arrow_right","order":132,"description":"","override":false,"type":"Sprite","optional":false},{"name":"hint_arrow_up","order":130,"description":"","override":false,"type":"Sprite","optional":false},{"name":"import","order":30,"description":"","override":false,"type":"Sprite","optional":false},{"name":"import_slot","order":173,"description":"","override":false,"type":"Sprite","optional":false},{"name":"indication_arrow","order":137,"description":"","override":false,"type":"Sprite","optional":false},{"name":"indication_line","order":142,"description":"","override":false,"type":"Sprite","optional":false},{"name":"inserter_stack_size_bonus_modifier_constant","order":486,"description":"","override":false,"type":"Sprite","optional":true},{"name":"inserter_stack_size_bonus_modifier_icon","order":485,"description":"","override":false,"type":"Sprite","optional":false},{"name":"item_editor_icon","order":181,"description":"","override":false,"type":"Sprite","optional":false},{"name":"item_to_be_delivered_symbol","order":61,"description":"","override":false,"type":"Sprite","optional":false},{"name":"laboratory_productivity_modifier_constant","order":546,"description":"","override":false,"type":"Sprite","optional":true},{"name":"laboratory_productivity_modifier_icon","order":545,"description":"","override":false,"type":"Sprite","optional":false},{"name":"laboratory_speed_modifier_constant","order":490,"description":"","override":false,"type":"Sprite","optional":true},{"name":"laboratory_speed_modifier_icon","order":489,"description":"","override":false,"type":"Sprite","optional":false},{"name":"left_arrow","order":215,"description":"","override":false,"type":"Sprite","optional":false},{"name":"light_cone","order":124,"description":"","override":false,"type":"Sprite","optional":false},{"name":"light_medium","order":122,"description":"","override":false,"type":"Sprite","optional":false},{"name":"light_small","order":123,"description":"","override":false,"type":"Sprite","optional":false},{"name":"lightning_warning_icon","order":84,"description":"","override":false,"type":"Sprite","optional":false},{"name":"line_icon","order":193,"description":"","override":false,"type":"Sprite","optional":false},{"name":"list_view","order":52,"description":"","override":false,"type":"Sprite","optional":false},{"name":"logistic_network_panel_black","order":235,"description":"","override":false,"type":"Sprite","optional":false},{"name":"logistic_network_panel_white","order":234,"description":"","override":false,"type":"Sprite","optional":false},{"name":"logistic_radius_visualization","order":247,"description":"","override":false,"type":"Sprite","optional":false},{"name":"lua_snippet_tool_icon","order":195,"description":"","override":false,"type":"Sprite","optional":false},{"name":"map","order":31,"description":"","override":false,"type":"Sprite","optional":false},{"name":"map_exchange_string","order":32,"description":"","override":false,"type":"Sprite","optional":false},{"name":"max_distance_underground_remove_belts","order":276,"description":"","override":false,"type":"Sprite","optional":false},{"name":"max_failed_attempts_per_tick_per_construction_queue_modifier_constant","order":534,"description":"","override":false,"type":"Sprite","optional":true},{"name":"max_failed_attempts_per_tick_per_construction_queue_modifier_icon","order":533,"description":"","override":false,"type":"Sprite","optional":false},{"name":"max_successful_attempts_per_tick_per_construction_queue_modifier_constant","order":536,"description":"","override":false,"type":"Sprite","optional":true},{"name":"max_successful_attempts_per_tick_per_construction_queue_modifier_icon","order":535,"description":"","override":false,"type":"Sprite","optional":false},{"name":"maximum_following_robots_count_modifier_constant","order":494,"description":"","override":false,"type":"Sprite","optional":true},{"name":"maximum_following_robots_count_modifier_icon","order":493,"description":"","override":false,"type":"Sprite","optional":false},{"name":"medium_gui_arrow","order":120,"description":"","override":false,"type":"Sprite","optional":false},{"name":"mining_drill_productivity_bonus_modifier_constant","order":540,"description":"","override":false,"type":"Sprite","optional":true},{"name":"mining_drill_productivity_bonus_modifier_icon","order":539,"description":"","override":false,"type":"Sprite","optional":false},{"name":"mining_with_fluid_modifier_constant","order":572,"description":"","override":false,"type":"Sprite","optional":true},{"name":"mining_with_fluid_modifier_icon","order":571,"description":"","override":false,"type":"Sprite","optional":false},{"name":"missing_icon","order":163,"description":"","override":false,"type":"Sprite","optional":false},{"name":"missing_mod_icon","order":33,"description":"","override":false,"type":"Sprite","optional":false},{"name":"mod_category","order":58,"description":"","override":false,"type":"Sprite","optional":false},{"name":"mod_dependency_arrow","order":64,"description":"","override":false,"type":"Sprite","optional":false},{"name":"mod_downloads_count","order":60,"description":"","override":false,"type":"Sprite","optional":false},{"name":"mod_last_updated","order":59,"description":"","override":false,"type":"Sprite","optional":false},{"name":"mouse_cursor","order":56,"description":"","override":false,"type":"Sprite","optional":false},{"name":"mouse_cursor_macos","order":57,"description":"","override":false,"type":"Sprite","optional":false},{"name":"move_tag","order":219,"description":"","override":false,"type":"Sprite","optional":false},{"name":"multiplayer_waiting_icon","order":204,"description":"","override":false,"type":"Sprite","optional":false},{"name":"nature_icon","order":202,"description":"","override":false,"type":"Sprite","optional":false},{"name":"navmesh_pending_icon","order":484,"description":"","override":false,"type":"Animation","optional":false},{"name":"neutral_force_icon","order":200,"description":"","override":false,"type":"Sprite","optional":false},{"name":"no_building_material_icon","order":98,"description":"","override":false,"type":"Sprite","optional":false},{"name":"no_nature_icon","order":203,"description":"","override":false,"type":"Sprite","optional":false},{"name":"no_path_icon","order":92,"description":"","override":false,"type":"Sprite","optional":false},{"name":"no_platform_storage_space_icon","order":100,"description":"","override":false,"type":"Sprite","optional":false},{"name":"no_roboport_storage_space_icon","order":103,"description":"","override":false,"type":"Sprite","optional":false},{"name":"no_storage_space_icon","order":99,"description":"","override":false,"type":"Sprite","optional":false},{"name":"none_editor_icon","order":174,"description":"","override":false,"type":"Sprite","optional":false},{"name":"not_available","order":34,"description":"","override":false,"type":"Sprite","optional":false},{"name":"not_available_black","order":35,"description":"","override":false,"type":"Sprite","optional":false},{"name":"not_enough_construction_robots_icon","order":97,"description":"","override":false,"type":"Sprite","optional":false},{"name":"not_enough_repair_packs_icon","order":96,"description":"","override":false,"type":"Sprite","optional":false},{"name":"not_played_yet_dark_green","order":9,"description":"","override":false,"type":"Sprite","optional":false},{"name":"not_played_yet_green","order":8,"description":"","override":false,"type":"Sprite","optional":false},{"name":"nothing_modifier_constant","order":552,"description":"","override":false,"type":"Sprite","optional":true},{"name":"nothing_modifier_icon","order":551,"description":"","override":false,"type":"Sprite","optional":false},{"name":"notification","order":297,"description":"","override":false,"type":"Sprite","optional":false},{"name":"output_console_gradient","order":294,"description":"","override":false,"type":"Sprite","optional":false},{"name":"paint_bucket_icon","order":185,"description":"","override":false,"type":"Sprite","optional":false},{"name":"parametrise","order":305,"description":"","override":false,"type":"Sprite","optional":false},{"name":"pause","order":69,"description":"","override":false,"type":"Sprite","optional":false},{"name":"pin_arrow","order":299,"description":"","override":false,"type":"Sprite","optional":false},{"name":"pin_center","order":300,"description":"","override":false,"type":"Sprite","optional":false},{"name":"pipeline_disabled_icon","order":106,"description":"","override":false,"type":"Sprite","optional":false},{"name":"placement_indicator_leg","order":244,"description":"","override":false,"type":"Sprite","optional":false},{"name":"platform_entity_build_animations","order":1,"description":"Only present when the Space Age mod is loaded.","override":false,"type":"EntityBuildAnimations","optional":true},{"name":"play","order":36,"description":"","override":false,"type":"Sprite","optional":false},{"name":"played_dark_green","order":11,"description":"","override":false,"type":"Sprite","optional":false},{"name":"played_green","order":10,"description":"","override":false,"type":"Sprite","optional":false},{"name":"player_force_icon","order":199,"description":"","override":false,"type":"Sprite","optional":false},{"name":"preset","order":38,"description":"","override":false,"type":"Sprite","optional":false},{"name":"pump_cannot_connect_icon","order":95,"description":"","override":false,"type":"Sprite","optional":false},{"name":"questionmark","order":206,"description":"","override":false,"type":"Sprite","optional":false},{"name":"rail_path_not_possible","order":141,"description":"","override":false,"type":"Sprite","optional":false},{"name":"rail_planner_allow_elevated_rails_modifier_constant","order":576,"description":"","override":false,"type":"Sprite","optional":true},{"name":"rail_planner_allow_elevated_rails_modifier_icon","order":575,"description":"","override":false,"type":"Sprite","optional":false},{"name":"rail_planner_indication_arrow","order":138,"description":"","override":false,"type":"Sprite","optional":false},{"name":"rail_planner_indication_arrow_anchored","order":139,"description":"","override":false,"type":"Sprite","optional":false},{"name":"rail_planner_indication_arrow_too_far","order":140,"description":"","override":false,"type":"Sprite","optional":false},{"name":"rail_signal_placement_indicator","order":241,"description":"","override":false,"type":"Sprite","optional":false},{"name":"rail_support_on_deep_oil_ocean_modifier_constant","order":574,"description":"","override":false,"type":"Sprite","optional":true},{"name":"rail_support_on_deep_oil_ocean_modifier_icon","order":573,"description":"","override":false,"type":"Sprite","optional":false},{"name":"rail_support_placement_indicator","order":243,"description":"","override":false,"type":"Sprite","optional":false},{"name":"reassign","order":49,"description":"","override":false,"type":"Sprite","optional":false},{"name":"rebuild_mark","order":62,"description":"","override":false,"type":"Sprite","optional":false},{"name":"recharge_icon","order":91,"description":"","override":false,"type":"Sprite","optional":false},{"name":"recipe_arrow","order":19,"description":"","override":false,"type":"Sprite","optional":false},{"name":"red_wire","order":209,"description":"","override":false,"type":"Sprite","optional":false},{"name":"red_wire_highlight","order":212,"description":"","override":false,"type":"Sprite","optional":false},{"name":"reference_point","order":55,"description":"","override":false,"type":"Sprite","optional":false},{"name":"refresh","order":39,"description":"","override":false,"type":"Sprite","optional":false},{"name":"refresh_white","order":483,"description":"","override":false,"type":"Animation","optional":false},{"name":"rename_icon","order":236,"description":"","override":false,"type":"Sprite","optional":false},{"name":"reset","order":40,"description":"","override":false,"type":"Sprite","optional":false},{"name":"reset_white","order":41,"description":"","override":false,"type":"Sprite","optional":false},{"name":"resource_editor_icon","order":179,"description":"","override":false,"type":"Sprite","optional":false},{"name":"resources_depleted_icon","order":109,"description":"","override":false,"type":"Sprite","optional":false},{"name":"right_arrow","order":216,"description":"","override":false,"type":"Sprite","optional":false},{"name":"robot_slot","order":161,"description":"","override":false,"type":"Sprite","optional":false},{"name":"scripting_editor_icon","order":184,"description":"","override":false,"type":"Sprite","optional":false},{"name":"search","order":44,"description":"","override":false,"type":"Sprite","optional":false},{"name":"search_icon","order":79,"description":"","override":false,"type":"Sprite","optional":false},{"name":"select_icon_black","order":296,"description":"","override":false,"type":"Sprite","optional":false},{"name":"select_icon_white","order":295,"description":"","override":false,"type":"Sprite","optional":false},{"name":"set_bar_slot","order":162,"description":"","override":false,"type":"Sprite","optional":false},{"name":"shield_bar_pip","order":116,"description":"","override":false,"type":"Sprite","optional":false},{"name":"shoot_cursor_green","order":81,"description":"","override":false,"type":"Sprite","optional":false},{"name":"shoot_cursor_red","order":82,"description":"","override":false,"type":"Sprite","optional":false},{"name":"short_indication_line","order":143,"description":"","override":false,"type":"Sprite","optional":false},{"name":"short_indication_line_green","order":144,"description":"","override":false,"type":"Sprite","optional":false},{"name":"show_electric_network_in_map_view","order":252,"description":"","override":false,"type":"Sprite","optional":false},{"name":"show_logistics_network_in_map_view","order":251,"description":"","override":false,"type":"Sprite","optional":false},{"name":"show_pipelines_in_map_view","order":260,"description":"","override":false,"type":"Sprite","optional":false},{"name":"show_player_names_in_map_view","order":255,"description":"","override":false,"type":"Sprite","optional":false},{"name":"show_rail_signal_states_in_map_view","order":258,"description":"","override":false,"type":"Sprite","optional":false},{"name":"show_recipe_icons_in_map_view","order":259,"description":"","override":false,"type":"Sprite","optional":false},{"name":"show_tags_in_map_view","order":256,"description":"","override":false,"type":"Sprite","optional":false},{"name":"show_train_station_names_in_map_view","order":254,"description":"","override":false,"type":"Sprite","optional":false},{"name":"show_turret_range_in_map_view","order":253,"description":"","override":false,"type":"Sprite","optional":false},{"name":"show_worker_robots_in_map_view","order":257,"description":"","override":false,"type":"Sprite","optional":false},{"name":"shuffle","order":42,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_achievements_icon","order":226,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_blueprint_library_icon","order":220,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_bonus_icon","order":222,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_factoriopedia_icon","order":224,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_logistic_networks_icon","order":231,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_map_icon","order":228,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_menu_icon","order":227,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_players_icon","order":232,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_production_icon","order":221,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_space_platforms_icon","order":229,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_technology_icon","order":230,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_train_icon","order":225,"description":"","override":false,"type":"Sprite","optional":false},{"name":"side_menu_tutorials_icon","order":223,"description":"","override":false,"type":"Sprite","optional":false},{"name":"slot","order":155,"description":"","override":false,"type":"Sprite","optional":false},{"name":"slots_view","order":54,"description":"","override":false,"type":"Sprite","optional":false},{"name":"small_gui_arrow","order":121,"description":"","override":false,"type":"Sprite","optional":false},{"name":"sort_by_name","order":303,"description":"","override":false,"type":"Sprite","optional":false},{"name":"sort_by_time","order":304,"description":"","override":false,"type":"Sprite","optional":false},{"name":"space_age_icon","order":273,"description":"","override":false,"type":"Sprite","optional":false},{"name":"spawn_flag","order":205,"description":"","override":false,"type":"Sprite","optional":false},{"name":"speed_down","order":70,"description":"","override":false,"type":"Sprite","optional":false},{"name":"speed_up","order":71,"description":"","override":false,"type":"Sprite","optional":false},{"name":"spray_icon","order":190,"description":"","override":false,"type":"Sprite","optional":false},{"name":"starmap_platform_moving","order":310,"description":"","override":false,"type":"Sprite","optional":false},{"name":"starmap_platform_moving_clicked","order":312,"description":"","override":false,"type":"Sprite","optional":false},{"name":"starmap_platform_moving_hovered","order":311,"description":"","override":false,"type":"Sprite","optional":false},{"name":"starmap_platform_stacked","order":316,"description":"","override":false,"type":"Sprite","optional":false},{"name":"starmap_platform_stacked_clicked","order":318,"description":"","override":false,"type":"Sprite","optional":false},{"name":"starmap_platform_stacked_hovered","order":317,"description":"","override":false,"type":"Sprite","optional":false},{"name":"starmap_platform_stopped","order":313,"description":"","override":false,"type":"Sprite","optional":false},{"name":"starmap_platform_stopped_clicked","order":315,"description":"","override":false,"type":"Sprite","optional":false},{"name":"starmap_platform_stopped_hovered","order":314,"description":"","override":false,"type":"Sprite","optional":false},{"name":"starmap_star","order":319,"description":"","override":false,"type":"Sprite","optional":false},{"name":"station_name","order":43,"description":"","override":false,"type":"Sprite","optional":false},{"name":"status_blue","order":291,"description":"","override":false,"type":"Sprite","optional":false},{"name":"status_inactive","order":292,"description":"","override":false,"type":"Sprite","optional":false},{"name":"status_not_working","order":289,"description":"","override":false,"type":"Sprite","optional":false},{"name":"status_working","order":288,"description":"","override":false,"type":"Sprite","optional":false},{"name":"status_yellow","order":290,"description":"","override":false,"type":"Sprite","optional":false},{"name":"stop","order":37,"description":"","override":false,"type":"Sprite","optional":false},{"name":"surface_editor_icon","order":186,"description":"","override":false,"type":"Sprite","optional":false},{"name":"sync_mods","order":45,"description":"","override":false,"type":"Sprite","optional":false},{"name":"technology_white","order":301,"description":"","override":false,"type":"Sprite","optional":false},{"name":"tick_custom","order":78,"description":"","override":false,"type":"Sprite","optional":false},{"name":"tick_once","order":76,"description":"","override":false,"type":"Sprite","optional":false},{"name":"tick_sixty","order":77,"description":"","override":false,"type":"Sprite","optional":false},{"name":"tile_editor_icon","order":176,"description":"","override":false,"type":"Sprite","optional":false},{"name":"tile_ghost_cursor","order":280,"description":"","override":false,"type":"Sprite","optional":false},{"name":"time_editor_icon","order":187,"description":"","override":false,"type":"Sprite","optional":false},{"name":"tip_icon","order":274,"description":"","override":false,"type":"Sprite","optional":false},{"name":"too_far","order":80,"description":"","override":false,"type":"Sprite","optional":false},{"name":"too_far_from_roboport_icon","order":94,"description":"","override":false,"type":"Sprite","optional":false},{"name":"tooltip_category_spoilable","order":108,"description":"","override":false,"type":"Sprite","optional":false},{"name":"track_button","order":249,"description":"","override":false,"type":"Sprite","optional":false},{"name":"track_button_white","order":250,"description":"","override":false,"type":"Sprite","optional":false},{"name":"train_braking_force_bonus_modifier_constant","order":542,"description":"","override":false,"type":"Sprite","optional":true},{"name":"train_braking_force_bonus_modifier_icon","order":541,"description":"","override":false,"type":"Sprite","optional":false},{"name":"train_stop_disabled_in_map_view","order":262,"description":"","override":false,"type":"Sprite","optional":false},{"name":"train_stop_full_in_map_view","order":263,"description":"","override":false,"type":"Sprite","optional":false},{"name":"train_stop_in_map_view","order":261,"description":"","override":false,"type":"Sprite","optional":false},{"name":"train_stop_placement_indicator","order":242,"description":"","override":false,"type":"Sprite","optional":false},{"name":"trash","order":46,"description":"","override":false,"type":"Sprite","optional":false},{"name":"trash_white","order":47,"description":"","override":false,"type":"Sprite","optional":false},{"name":"turret_attack_modifier_constant","order":502,"description":"","override":false,"type":"Sprite","optional":true},{"name":"turret_attack_modifier_icon","order":501,"description":"","override":false,"type":"Sprite","optional":false},{"name":"unclaimed_cargo_icon","order":102,"description":"","override":false,"type":"Sprite","optional":false},{"name":"underground_pipe_connection","order":278,"description":"","override":false,"type":"Sprite","optional":false},{"name":"underground_remove_belts","order":275,"description":"","override":false,"type":"Sprite","optional":false},{"name":"underground_remove_pipes","order":277,"description":"","override":false,"type":"Sprite","optional":false},{"name":"unlock_circuit_network_modifier_constant","order":564,"description":"","override":false,"type":"Sprite","optional":true},{"name":"unlock_circuit_network_modifier_icon","order":563,"description":"","override":false,"type":"Sprite","optional":false},{"name":"unlock_quality_modifier_constant","order":560,"description":"","override":false,"type":"Sprite","optional":true},{"name":"unlock_quality_modifier_icon","order":559,"description":"","override":false,"type":"Sprite","optional":false},{"name":"unlock_recipe_modifier_constant","order":510,"description":"","override":false,"type":"Sprite","optional":true},{"name":"unlock_recipe_modifier_icon","order":509,"description":"","override":false,"type":"Sprite","optional":false},{"name":"unlock_space_location_modifier_constant","order":558,"description":"","override":false,"type":"Sprite","optional":true},{"name":"unlock_space_location_modifier_icon","order":557,"description":"","override":false,"type":"Sprite","optional":false},{"name":"unlock_space_platforms_modifier_constant","order":562,"description":"","override":false,"type":"Sprite","optional":true},{"name":"unlock_space_platforms_modifier_icon","order":561,"description":"","override":false,"type":"Sprite","optional":false},{"name":"upgrade_blueprint","order":154,"description":"","override":false,"type":"Sprite","optional":false},{"name":"upgrade_mark","order":170,"description":"","override":false,"type":"Sprite","optional":false},{"name":"variations_tool_icon","order":194,"description":"","override":false,"type":"Sprite","optional":false},{"name":"vehicle_logistics_modifier_constant","order":582,"description":"","override":false,"type":"Sprite","optional":true},{"name":"vehicle_logistics_modifier_icon","order":581,"description":"","override":false,"type":"Sprite","optional":false},{"name":"warning","order":50,"description":"","override":false,"type":"Sprite","optional":false},{"name":"warning_icon","order":88,"description":"","override":false,"type":"Sprite","optional":false},{"name":"warning_white","order":51,"description":"","override":false,"type":"Sprite","optional":false},{"name":"white_mask","order":268,"description":"","override":false,"type":"Sprite","optional":false},{"name":"white_square","order":266,"description":"","override":false,"type":"Sprite","optional":false},{"name":"white_square_icon","order":267,"description":"","override":false,"type":"Sprite","optional":false},{"name":"wire_shadow","order":213,"description":"","override":false,"type":"Sprite","optional":false},{"name":"worker_robot_battery_modifier_constant","order":544,"description":"","override":false,"type":"Sprite","optional":true},{"name":"worker_robot_battery_modifier_icon","order":543,"description":"","override":false,"type":"Sprite","optional":false},{"name":"worker_robot_speed_modifier_constant","order":496,"description":"","override":false,"type":"Sprite","optional":true},{"name":"worker_robot_speed_modifier_icon","order":495,"description":"","override":false,"type":"Sprite","optional":false},{"name":"worker_robot_storage_modifier_constant","order":498,"description":"","override":false,"type":"Sprite","optional":true},{"name":"worker_robot_storage_modifier_icon","order":497,"description":"","override":false,"type":"Sprite","optional":false}]},{"name":"ValvePrototype","order":274,"description":"A passive device that provides limited control of fluid flow between pipelines.","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"valve","deprecated":false,"properties":[{"name":"animations","order":4,"description":"","override":false,"type":"Animation4Way","optional":true},{"name":"flow_rate","order":3,"description":"The max flow rate through the valve per tick.","override":false,"type":"FluidAmount","optional":false},{"name":"fluid_box","order":2,"description":"Must have at least one `\"output\"` [FluidFlowDirection](prototype:FluidFlowDirection) and at least one `\"input-output\"` [FluidFlowDirection](prototype:FluidFlowDirection).","override":false,"type":"FluidBox","optional":false},{"name":"frozen_patch","order":5,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"mode","order":0,"description":"","override":false,"type":"ValveMode","optional":false},{"name":"threshold","order":1,"description":"Ignored if [ValvePrototype::mode](prototype:ValvePrototype::mode) is `\"one-way\"`. Must be between `0` and `1` inclusive.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"VehiclePrototype","order":275,"description":"Abstract base of all vehicles.","parent":"EntityWithOwnerPrototype","abstract":true,"deprecated":false,"properties":[{"name":"allow_passengers","order":12,"description":"Determines whether this vehicle accepts passengers. This includes both drivers and gunners, if applicable.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"allow_remote_driving","order":15,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"braking_power","order":1,"description":"Must be positive. There is no functional difference between the two ways to set braking power/force.","alt_name":"braking_force","override":false,"type":{"complex_type":"union","options":["Energy","double"],"full_format":false},"optional":false},{"name":"chunk_exploration_radius","order":14,"description":"In chunks. The radius of the radar range of the vehicle, so how many chunks it charts around itself.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"crash_trigger","order":7,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"deliver_category","order":13,"description":"Name of a [DeliverCategory](prototype:DeliverCategory).","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"energy_per_hit_point","order":3,"description":"The (movement) energy used per hit point (1 hit point = 1 health damage) taken and dealt for this vehicle during collisions. The smaller the number, the more damage this vehicle and the rammed entity take during collisions: `damage = energy / energy_per_hit_point`.","override":false,"type":"double","optional":false},{"name":"equipment_grid","order":9,"description":"The name of the [EquipmentGridPrototype](prototype:EquipmentGridPrototype) this vehicle has.","override":false,"type":"EquipmentGridID","optional":true},{"name":"friction","order":2,"description":"Must be positive. There is no functional difference between the two ways to set friction force.","alt_name":"friction_force","override":false,"type":"double","optional":false},{"name":"impact_speed_to_volume_ratio","order":5,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":5.0}},{"name":"minimap_representation","order":10,"description":"The sprite that represents this vehicle on the map/minimap.","override":false,"type":"Sprite","optional":true},{"name":"selected_minimap_representation","order":11,"description":"The sprite that represents this vehicle on the map/minimap when it is selected.","override":false,"type":"Sprite","optional":true},{"name":"stop_trigger","order":8,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"stop_trigger_speed","order":6,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"terrain_friction_modifier","order":4,"description":"Must be in the [0, 1] interval.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"weight","order":0,"description":"Must be positive. Weight of the entity used for physics calculation when car hits something.","override":false,"type":"double","optional":false}]},{"name":"VirtualSignalPrototype","order":276,"description":"A [virtual signal](https://wiki.factorio.com/Circuit_network#Virtual_signals).","parent":"Prototype","abstract":false,"typename":"virtual-signal","deprecated":false,"properties":[{"name":"icon","order":1,"description":"Path to the icon file that is used to represent this virtual signal.\n\nOnly loaded, and mandatory if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":2,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":0,"description":"The icon that is used to represent this virtual signal. Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true}]},{"name":"WallPrototype","order":277,"description":"A [wall](https://wiki.factorio.com/Wall).","parent":"EntityWithOwnerPrototype","abstract":false,"typename":"wall","deprecated":false,"properties":[{"name":"circuit_connector","order":5,"description":"","override":false,"type":"CircuitConnectorDefinition","optional":true},{"name":"circuit_wire_max_distance","order":2,"description":"The maximum circuit wire distance for this entity.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"connected_gate_visualization","order":17,"description":"","override":false,"type":"Sprite","optional":true},{"name":"default_output_signal","order":6,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"draw_circuit_wires","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_copper_wires","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"pictures","order":0,"description":"","override":false,"type":"WallPictures","optional":true},{"name":"visual_merge_group","order":1,"description":"Different walls will visually connect to each other if their merge group is the same.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"wall_diode_green","order":7,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"wall_diode_green_light_bottom","order":11,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"wall_diode_green_light_left","order":12,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"wall_diode_green_light_right","order":10,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"wall_diode_green_light_top","order":9,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"wall_diode_red","order":8,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"wall_diode_red_light_bottom","order":15,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"wall_diode_red_light_left","order":16,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"wall_diode_red_light_right","order":14,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"wall_diode_red_light_top","order":13,"description":"","override":false,"type":"LightDefinition","optional":true}]}],"types":[{"name":"ActivateEquipmentCapsuleAction","order":0,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"equipment","order":1,"description":"Activation is only implemented for [ActiveDefenseEquipmentPrototype](prototype:ActiveDefenseEquipmentPrototype).","override":false,"type":"EquipmentID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"equipment-remote"},"optional":false}]},{"name":"ActivateImpactTriggerEffectItem","order":1,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"deliver_category","order":1,"description":"Name of a [DeliverCategory](prototype:DeliverCategory).","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"activate-impact"},"optional":false}]},{"name":"ActivatePasteTipTrigger","order":2,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"activate-paste"},"optional":false}]},{"name":"ActiveTriggerID","order":3,"description":"The name of an [ActiveTriggerPrototype](prototype:ActiveTriggerPrototype).","examples":["```\n\"chain-lightning-chain\"\n```","```\n\"chain-lightning-turret-chain\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"ActivityBarStyleSpecification","order":4,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"bar","order":5,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"bar_background","order":4,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"bar_size_ratio","order":6,"description":"","override":false,"type":"float","optional":true},{"name":"bar_width","order":2,"description":"The thickness of the bar, not the horizontal size.","override":false,"type":"uint32","optional":true},{"name":"color","order":3,"description":"","override":false,"type":"Color","optional":true},{"name":"speed","order":1,"description":"","override":false,"type":"float","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"activity_bar_style"},"optional":false}]},{"name":"ActivityMatchingModifiers","order":5,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"inverted","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"maximum","order":2,"description":"","override":false,"type":"float","optional":true,"default":"infinity"},{"name":"minimum","order":1,"description":"Cannot be larger than `maximum`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"multiplier","order":0,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"offset","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"AdvancedMapGenSettings","order":6,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"asteroids","order":0,"description":"","override":false,"type":"MapGenPresetAsteroidSettings","optional":true},{"name":"difficulty_settings","order":4,"description":"","override":false,"type":"MapGenPresetDifficultySettings","optional":true},{"name":"enemy_evolution","order":2,"description":"","override":false,"type":"MapGenPresetEnemyEvolutionSettings","optional":true},{"name":"enemy_expansion","order":3,"description":"","override":false,"type":"MapGenPresetEnemyExpansionSettings","optional":true},{"name":"pollution","order":1,"description":"","override":false,"type":"MapGenPresetPollutionSettings","optional":true}]},{"name":"AdvancedVolumeControl","order":7,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"attenuation","order":0,"description":"Volume reduction (fade-out) controlled by distance (fraction of audible distance).","override":false,"type":"Fade","optional":true},{"name":"darkness_threshold","order":2,"description":"Has to be in the range [-1.0, 1.0].\n\nPositive values are used for night sounds, the volume of the sound is 1.0 when darkness = threshold, 0.0 when darkness = 0.0 and linearly interpolated in between.\n\nNegative values are used for day sounds, the sound of the sound is 0.0  when darkness = -threshold, 1.0 when darkness = 1.0 and linearly interpolated in between.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"fades","order":1,"description":"Volume reduction (fade-out) or increase (fade-in) controlled by zoom level.","override":false,"type":"Fades","optional":true}]},{"name":"AggregationSpecification","order":8,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count_already_playing","order":4,"description":"If `true`, already playing sounds are taken into account when checking `max_count`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"max_count","order":0,"description":"","override":false,"type":"uint32","optional":false},{"name":"priority","order":5,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"closest"},{"complex_type":"literal","value":"farthest"},{"complex_type":"literal","value":"newest"},{"complex_type":"literal","value":"oldest"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"closest"}},{"name":"progress_threshold","order":1,"description":"If `count_already_playing` is `true`, this will determine maximum progress when instance is counted toward playing sounds.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"remove","order":3,"description":"If `false`, the volume of sound instances above `max_count` is calculated according to the formula `volume = (x + 1) ^ (-volume_reduction_rate)`, where `x` is the order number of an instance above the threshold.\n\nIf `true`, sound instances above `max_count` are removed.","override":false,"type":"boolean","optional":false},{"name":"volume_reduction_rate","order":2,"description":"Has to be greater than or equal to 0.0.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":2.0}}]},{"name":"AgriculturalCraneProperties","order":9,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"min_arm_extent","order":1,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"min_grappler_extent","order":2,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.2}},{"name":"operation_angle","order":3,"description":"In degrees.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":45}},{"name":"origin","order":5,"description":"","override":false,"type":"Vector3D","optional":false},{"name":"parts","order":7,"description":"","override":false,"type":{"complex_type":"array","value":"CranePart"},"optional":false},{"name":"shadow_direction","order":6,"description":"","override":false,"type":"Vector3D","optional":false},{"name":"speed","order":0,"description":"","override":false,"type":"AgriculturalCraneSpeed","optional":false},{"name":"telescope_default_extention","order":4,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.5}}]},{"name":"AgriculturalCraneSpeed","order":10,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"arm","order":0,"description":"","override":false,"type":"AgriculturalCraneSpeedArm","optional":false},{"name":"grappler","order":1,"description":"","override":false,"type":"AgriculturalCraneSpeedGrappler","optional":false}]},{"name":"AgriculturalCraneSpeedArm","order":11,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"extension_speed","order":1,"description":"Must be positive.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.05}},{"name":"turn_rate","order":0,"description":"May not be 0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.01}}]},{"name":"AgriculturalCraneSpeedGrappler","order":12,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"allow_transpolar_movement","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"extension_speed","order":2,"description":"Must be positive.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.01}},{"name":"horizontal_turn_rate","order":1,"description":"May not be 0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.01}},{"name":"vertical_turn_rate","order":0,"description":"May not be 0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.01}}]},{"name":"AirbornePollutantID","order":13,"description":"The name of an [AirbornePollutantPrototype](prototype:AirbornePollutantPrototype).","examples":["```\n\"pollution\"\n```","```\n\"spores\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"Alignment","order":14,"description":"A string that specifies where a GUI element should be.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"top-left","description":""},{"complex_type":"literal","value":"middle-left","description":""},{"complex_type":"literal","value":"left","description":"The same as `\"middle-left\"`"},{"complex_type":"literal","value":"bottom-left","description":""},{"complex_type":"literal","value":"top-center","description":""},{"complex_type":"literal","value":"middle-center","description":""},{"complex_type":"literal","value":"center","description":"The same as `\"middle-center\"`"},{"complex_type":"literal","value":"bottom-center","description":""},{"complex_type":"literal","value":"top-right","description":""},{"complex_type":"literal","value":"middle-right","description":""},{"complex_type":"literal","value":"right","description":"The same as `\"middle-right\"`"},{"complex_type":"literal","value":"bottom-right","description":""}],"full_format":true}},{"name":"AlternativeBuildTipTrigger","order":15,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"alternative-build"},"optional":false}]},{"name":"AmbientSoundType","order":16,"description":"Lets the game know in what instances the audio file is played.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"menu-track","description":"This track is only played in the main menu."},{"complex_type":"literal","value":"main-track","description":"This track is played interleaved (alternating) with `\"interlude\"` tracks."},{"complex_type":"literal","value":"hero-track","description":"This track is played when a character steps on a new surface for the first time. Only one `\"hero-track\"` per planet or space platform is allowed."},{"complex_type":"literal","value":"interlude","description":"This track is played interleaved (alternating) with `\"main-track\"` tracks."}],"full_format":true}},{"name":"AmmoCategoryID","order":17,"description":"The name of an [AmmoCategory](prototype:AmmoCategory).","examples":["```\n\"bullet\"\n```","```\n\"melee\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"AmmoDamageModifier","order":18,"description":"","parent":"BaseModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"ammo_category","order":3,"description":"Name of the [AmmoCategory](prototype:AmmoCategory) that is affected.","override":false,"type":"AmmoCategoryID","optional":false},{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"modifier","order":4,"description":"Modification value, which will be added to the current ammo damage modifier upon researching.","override":false,"type":"double","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"ammo-damage"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"AmmoSourceType","order":19,"description":"Used to allow specifying different ammo effects depending on which kind of entity the ammo is used in.\n\nIf ammo is used in an entity that isn't covered by the defined source_types, e.g. only `\"player\"` and `\"vehicle\"` are defined and the ammo is used by a turret, the first defined AmmoType in the [AmmoItemPrototype::ammo_type](prototype:AmmoItemPrototype::ammo_type) array is used.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"default","description":""},{"complex_type":"literal","value":"player","description":""},{"complex_type":"literal","value":"turret","description":""},{"complex_type":"literal","value":"vehicle","description":""}],"full_format":true}},{"name":"AmmoType","order":20,"description":"Definition of actual parameters used in attack.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"action","order":0,"description":"Describes actions taken upon attack happening.","override":false,"type":"Trigger","optional":true},{"name":"clamp_position","order":1,"description":"When true, the gun will be able to shoot even when the target is out of range. Only applies when `target_type` equals `\"position\"`. The gun will fire at the maximum range in the direction of the target position.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"consumption_modifier","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"cooldown_modifier","order":4,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"energy_consumption","order":2,"description":"Energy consumption of a single shot, if applicable.","override":false,"type":"Energy","optional":true},{"name":"range_modifier","order":3,"description":"Affects the `range` value of the shooting gun prototype's [BaseAttackParameters](prototype:BaseAttackParameters) to give a modified maximum range. The `min_range` value of the gun is unaffected.\n\nThis has no effect on artillery turrets and wagons even though the bonus appears in the GUI. [Forum thread](https://forums.factorio.com/103658).","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"source_type","order":7,"description":"Only exists (and is then mandatory) if the [AmmoItemPrototype::ammo_type](prototype:AmmoItemPrototype::ammo_type) this AmmoType is defined on has multiple ammo types.\n\nDefines for which kind of entity this ammo type applies. Each entity kind can only be used once per array.","override":false,"type":"AmmoSourceType","optional":true},{"name":"target_filter","order":8,"description":"List of entities that can be targeted by this ammo type.","override":false,"type":{"complex_type":"array","value":"EntityID"},"optional":true},{"name":"target_type","order":6,"description":"`\"entity\"` fires at an entity, `\"position\"` fires directly at a position, `\"direction\"` fires in a direction.\n\nIf this is `\"entity\"`, `clamp_position` is forced to be `false`.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"entity"},{"complex_type":"literal","value":"position"},{"complex_type":"literal","value":"direction"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"entity"}}]},{"name":"AndTipTrigger","order":21,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"triggers","order":1,"description":"If all of the triggers are fulfilled, this trigger is considered fulfilled.","override":false,"type":{"complex_type":"array","value":"TipTrigger"},"optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"and"},"optional":false}]},{"name":"AnimatedVector","order":22,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"direction_shift","order":2,"description":"","override":false,"type":"DirectionShift","optional":true},{"name":"render_layer","order":1,"description":"Default render layer for the rotations.","override":false,"type":"RenderLayer","optional":true},{"name":"rotations","order":0,"description":"","override":false,"type":{"complex_type":"array","value":"VectorRotation"},"optional":false}]},{"name":"Animation","order":23,"description":"Specifies an animation that can be used in the game.\n\nNote that if any frame of the animation is specified from the same source as any other [Sprite](prototype:Sprite) or frame of other animation, it will be shared.","examples":["```\n-- simple animation\nhorizontal_animation =\n{\n  filename = \"__base__/graphics/entity/steam-engine/steam-engine-H.png\",\n  width = 352,\n  height = 257,\n  frame_count = 32,\n  line_length = 8,\n  shift = {0.03125, -0.1484375}\n}\n```","```\n-- animation with layers\nhorizontal_animation =\n{\n  layers =\n  {\n    {\n      filename = \"__base__/graphics/entity/steam-engine/steam-engine-H.png\",\n      width = 352,\n      height = 257,\n      frame_count = 32,\n      line_length = 8,\n      shift = {0.03125, -0.15625}\n    },\n    {\n      filename = \"__base__/graphics/entity/steam-engine/steam-engine-H-shadow.png\",\n      width = 508,\n      height = 160,\n      frame_count = 32,\n      line_length = 8,\n      draw_as_shadow = true,\n      shift = {1.5, 0.75}\n    }\n  }\n}\n```"],"parent":"AnimationParameters","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"filename","order":1,"description":"Only loaded if `layers` is not defined. Mandatory if neither `stripes` nor `filenames` are defined.\n\nThe path to the sprite file to use.","override":true,"type":"FileName","optional":true},{"name":"filenames","order":3,"description":"Only loaded if neither `layers` nor `stripes` are defined.","override":false,"type":{"complex_type":"array","value":"FileName"},"optional":true},{"name":"layers","order":0,"description":"If this property is present, all Animation definitions have to be placed as entries in the array, and they will all be loaded from there. `layers` may not be an empty table. Each definition in the array may also have the `layers` property.\n\n`animation_speed` and `max_advance` of the first layer are used for all layers. All layers will run at the same speed.\n\nIf this property is present, all other properties, including those inherited from AnimationParameters, are ignored.","override":false,"type":{"complex_type":"array","value":"Animation"},"optional":true},{"name":"lines_per_file","order":5,"description":"Only loaded if `layers` is not defined. Mandatory if `filenames` is defined.","override":false,"type":"uint32","optional":true},{"name":"slice","order":4,"description":"Only loaded if `layers` is not defined and if `filenames` is defined.","override":false,"type":"uint32","optional":true,"default":"Value of `frame_count`"},{"name":"stripes","order":2,"description":"Only loaded if `layers` is not defined.","override":false,"type":{"complex_type":"array","value":"Stripe"},"optional":true}]},{"name":"Animation4Way","order":24,"description":"If this is loaded as a single Animation, it applies to all directions. Any direction that is not defined defaults to the north animation.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"Animation"],"full_format":false},"properties":[{"name":"east","order":2,"description":"","override":false,"type":"Animation","optional":true},{"name":"north","order":0,"description":"","override":false,"type":"Animation","optional":false},{"name":"north_east","order":1,"description":"","override":false,"type":"Animation","optional":true},{"name":"north_west","order":7,"description":"","override":false,"type":"Animation","optional":true},{"name":"south","order":4,"description":"","override":false,"type":"Animation","optional":true},{"name":"south_east","order":3,"description":"","override":false,"type":"Animation","optional":true},{"name":"south_west","order":5,"description":"","override":false,"type":"Animation","optional":true},{"name":"west","order":6,"description":"","override":false,"type":"Animation","optional":true}]},{"name":"AnimationElement","order":25,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"always_draw","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"animation","order":4,"description":"","override":false,"type":"Animation","optional":true},{"name":"apply_tint","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"render_layer","order":0,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"secondary_draw_order","order":1,"description":"Used to determine render order for sprites with the same `render_layer` in the same position. Sprites with a higher `secondary_draw_order` are drawn on top.","override":false,"type":"int8","optional":true}]},{"name":"AnimationFrameSequence","order":26,"description":"This is a list of 1-based frame indices into the spritesheet. The actual length of the animation will then be the length of the frame_sequence (times `repeat_count`, plus the length minus two if `run_mode` is `\"forward-then-backward\"`). There is a limit for (actual) animation length of 255 frames.\n\nIndices can be used in any order, repeated or not used at all. Unused frames are not loaded into VRAM at all, frames referenced multiple times are loaded just once, see [here](https://forums.factorio.com/53202).","examples":["```\n-- Trivial example - frame_sequence defines same sequence in which the animation would load by default,\n-- so it is useless in this case:\nframe_count = 4,\nframe_sequence = { 1, 2, 3, 4 }\n```","```\n-- Usage example - first five times repeat frame 2, then alternate between 4 and 3 two times. Frame 1 is not used:\nframe_count = 4,\nframe_sequence = { 2, 2, 2, 2, 2, 4, 3, 4, 3 }\n```","```\n-- Complex example - animation contains different layers with different frame counts:\nlocal custom_frame_sequence = { 2, 2, 2, 2, 2, 4, 3, 4, 3 }\nlayers =\n{\n  {\n    -- Animation with custom frame sequence\n    frame_count = 4,\n    frame_sequence = custom_frame_sequence,\n  },\n  {\n    -- Single sprite that's repeated\n    repeat_count = #custom_frame_sequence,\n  },\n  {\n    -- Other animation with different frame count\n    -- Assuming: #custom_frame_sequence < frame_count\n    frame_count = #custom_frame_sequence,\n  },\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"array","value":"uint16"}},{"name":"AnimationParameters","order":27,"description":"","parent":"SpriteParameters","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation_speed","order":6,"description":"Modifier of the animation playing speed, the default of `1` means one animation frame per tick (60 fps). The speed of playing can often vary depending on the usage (output of steam engine for example). Has to be greater than `0`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"dice","order":9,"description":"Number of slices this is sliced into when using the \"optimized atlas packing\" option. If you are a modder, you can just ignore this property. Example: If this is 4, the sprite will be sliced into a 4\u00d74 grid.","override":false,"type":"uint8","optional":true},{"name":"dice_x","order":10,"description":"Same as `dice` above, but this specifies only how many slices there are on the x axis.","override":false,"type":"uint8","optional":true},{"name":"dice_y","order":11,"description":"Same as `dice` above, but this specifies only how many slices there are on the y axis.","override":false,"type":"uint8","optional":true},{"name":"frame_count","order":4,"description":"Can't be `0`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"frame_sequence","order":12,"description":"","override":false,"type":"AnimationFrameSequence","optional":true},{"name":"generate_sdf","order":14,"description":"Unused.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"height","order":2,"description":"Mandatory if `size` is not defined.\n\nHeight of one frame in pixels, from 0-4096.","override":true,"type":"SpriteSizeType","optional":true},{"name":"line_length","order":5,"description":"Specifies how many pictures are on each horizontal line in the image file. `0` means that all the pictures are in one horizontal line. Once the specified number of pictures are loaded from a line, the pictures from the next line are loaded. This is to allow having longer animations loaded in to Factorio's graphics matrix than the game engine's width limit of 8192px per input file. The restriction on input files is to be compatible with most graphics cards.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"max_advance","order":7,"description":"Maximum amount of frames the animation can move forward in one update. Useful to cap the animation speed on entities where it is variable, such as car animations.","override":false,"type":"float","optional":true,"default":"MAX_FLOAT"},{"name":"mipmap_count","order":13,"description":"Only loaded if this is an icon, that is it has the flag `\"group=icon\"` or `\"group=gui\"`.\n\nNote that `mipmap_count` doesn't make sense in an animation, as it is not possible to layout mipmaps in a way that would load both the animation and the mipmaps correctly (besides animations with just one frame). See [here](https://forums.factorio.com/viewtopic.php?p=549058#p549058).","override":true,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"repeat_count","order":8,"description":"How many times to repeat the animation to complete an animation cycle. E.g. if one layer is 10 frames, a second layer of 1 frame would need `repeat_count = 10` to match the complete cycle.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"run_mode","order":3,"description":"","override":false,"type":"AnimationRunMode","optional":true,"default":{"complex_type":"literal","value":"forward"}},{"name":"size","order":0,"description":"The width and height of one frame. If this is a tuple, the first member of the tuple is the width and the second is the height. Otherwise the size is both width and height. Width and height may only be in the range of 0-4096.","override":true,"type":{"complex_type":"union","options":["SpriteSizeType",{"complex_type":"tuple","values":["SpriteSizeType","SpriteSizeType"]}],"full_format":false},"optional":true},{"name":"width","order":1,"description":"Mandatory if `size` is not defined.\n\nWidth of one frame in pixels, from 0-4096.","override":true,"type":"SpriteSizeType","optional":true}]},{"name":"AnimationRunMode","order":28,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"forward","description":""},{"complex_type":"literal","value":"backward","description":""},{"complex_type":"literal","value":"forward-then-backward","description":"Does not repeat the first and last frame when running backwards."}],"full_format":true}},{"name":"AnimationSheet","order":29,"description":"","parent":"AnimationParameters","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"filename","order":2,"description":"Only loaded, and mandatory if `filenames` is not defined.\n\nThe path to the animation file to use.","override":true,"type":"FileName","optional":true},{"name":"filenames","order":3,"description":"","override":false,"type":{"complex_type":"array","value":"FileName"},"optional":true},{"name":"line_length","order":1,"description":"","override":true,"type":"uint32","optional":true,"default":"Value of `variation_count`"},{"name":"lines_per_file","order":4,"description":"Mandatory if `filenames` is defined.","override":false,"type":"uint32","optional":true},{"name":"variation_count","order":0,"description":"","override":false,"type":"uint32","optional":false}]},{"name":"AnimationVariations","order":30,"description":"","examples":["```\n-- array of animations\nanimations =\n{\n  {\n    filename = \"__base__/graphics/entity/explosion-gunshot/explosion-gunshot.png\",\n    draw_as_glow = true,\n    priority = \"extra-high\",\n    width = 34,\n    height = 38,\n    frame_count = 2,\n    animation_speed = 1.5,\n    shift = {0, 0}\n  },\n  {\n    filename = \"__base__/graphics/entity/explosion-gunshot/explosion-gunshot.png\",\n    draw_as_glow = true,\n    priority = \"extra-high\",\n    width = 34,\n    height = 38,\n    x = 34 * 2,\n    frame_count = 2,\n    animation_speed = 1.5,\n    shift = {0, 0}\n  },\n  -- [...]\n}\n```","```\n-- animation sheet using \"sheet\"\npictures =\n{\n  sheet =\n  {\n    filename = \"__base__/graphics/entity/character/footprints.png\",\n    line_length = 2,\n    frame_count = 2,\n    width = 30,\n    height = 22,\n    shift = util.by_pixel(0.25, 0.25),\n    scale = 0.5,\n    variation_count = 8\n  }\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"Animation",{"complex_type":"array","value":"Animation"}],"full_format":false},"properties":[{"name":"sheet","order":0,"description":"The variations are arranged vertically in the file, one row for each variation.","override":false,"type":"AnimationSheet","optional":true},{"name":"sheets","order":1,"description":"Only loaded if `sheet` is not defined.","override":false,"type":{"complex_type":"array","value":"AnimationSheet"},"optional":true}]},{"name":"AnyBasic","order":31,"description":"Any basic type (string, number, boolean) or table.","abstract":false,"inline":false,"type":{"complex_type":"union","options":["string","boolean","number","table"],"full_format":false}},{"name":"AnyPrototype","order":32,"description":"A union of all prototypes. A specific prototype is loaded based on the value of the `type` key.\n\nSee the [Prototypes page](prototype:prototypes) for more information.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"AccumulatorPrototype","description":"`'accumulator'`"},{"complex_type":"type","value":"AchievementPrototype","description":"`'achievement'`"},{"complex_type":"type","value":"ActiveDefenseEquipmentPrototype","description":"`'active-defense-equipment'`"},{"complex_type":"type","value":"AgriculturalTowerPrototype","description":"`'agricultural-tower'`"},{"complex_type":"type","value":"AirbornePollutantPrototype","description":"`'airborne-pollutant'`"},{"complex_type":"type","value":"AmbientSound","description":"`'ambient-sound'`"},{"complex_type":"type","value":"AmmoCategory","description":"`'ammo-category'`"},{"complex_type":"type","value":"AmmoItemPrototype","description":"`'ammo'`"},{"complex_type":"type","value":"AmmoTurretPrototype","description":"`'ammo-turret'`"},{"complex_type":"type","value":"AnimationPrototype","description":"`'animation'`"},{"complex_type":"type","value":"ArithmeticCombinatorPrototype","description":"`'arithmetic-combinator'`"},{"complex_type":"type","value":"ArmorPrototype","description":"`'armor'`"},{"complex_type":"type","value":"ArrowPrototype","description":"`'arrow'`"},{"complex_type":"type","value":"ArtilleryFlarePrototype","description":"`'artillery-flare'`"},{"complex_type":"type","value":"ArtilleryProjectilePrototype","description":"`'artillery-projectile'`"},{"complex_type":"type","value":"ArtilleryTurretPrototype","description":"`'artillery-turret'`"},{"complex_type":"type","value":"ArtilleryWagonPrototype","description":"`'artillery-wagon'`"},{"complex_type":"type","value":"AssemblingMachinePrototype","description":"`'assembling-machine'`"},{"complex_type":"type","value":"AsteroidChunkPrototype","description":"`'asteroid-chunk'`"},{"complex_type":"type","value":"AsteroidCollectorPrototype","description":"`'asteroid-collector'`"},{"complex_type":"type","value":"AsteroidPrototype","description":"`'asteroid'`"},{"complex_type":"type","value":"AutoplaceControl","description":"`'autoplace-control'`"},{"complex_type":"type","value":"BatteryEquipmentPrototype","description":"`'battery-equipment'`"},{"complex_type":"type","value":"BeaconPrototype","description":"`'beacon'`"},{"complex_type":"type","value":"BeamPrototype","description":"`'beam'`"},{"complex_type":"type","value":"BeltImmunityEquipmentPrototype","description":"`'belt-immunity-equipment'`"},{"complex_type":"type","value":"BlueprintBookPrototype","description":"`'blueprint-book'`"},{"complex_type":"type","value":"BlueprintItemPrototype","description":"`'blueprint'`"},{"complex_type":"type","value":"BoilerPrototype","description":"`'boiler'`"},{"complex_type":"type","value":"BuildEntityAchievementPrototype","description":"`'build-entity-achievement'`"},{"complex_type":"type","value":"BurnerGeneratorPrototype","description":"`'burner-generator'`"},{"complex_type":"type","value":"BurnerUsagePrototype","description":"`'burner-usage'`"},{"complex_type":"type","value":"CapsulePrototype","description":"`'capsule'`"},{"complex_type":"type","value":"CaptureRobotPrototype","description":"`'capture-robot'`"},{"complex_type":"type","value":"CarPrototype","description":"`'car'`"},{"complex_type":"type","value":"CargoBayPrototype","description":"`'cargo-bay'`"},{"complex_type":"type","value":"CargoLandingPadPrototype","description":"`'cargo-landing-pad'`"},{"complex_type":"type","value":"CargoPodPrototype","description":"`'cargo-pod'`"},{"complex_type":"type","value":"CargoWagonPrototype","description":"`'cargo-wagon'`"},{"complex_type":"type","value":"ChainActiveTriggerPrototype","description":"`'chain-active-trigger'`"},{"complex_type":"type","value":"ChangedSurfaceAchievementPrototype","description":"`'change-surface-achievement'`"},{"complex_type":"type","value":"CharacterCorpsePrototype","description":"`'character-corpse'`"},{"complex_type":"type","value":"CharacterPrototype","description":"`'character'`"},{"complex_type":"type","value":"CliffPrototype","description":"`'cliff'`"},{"complex_type":"type","value":"CollisionLayerPrototype","description":"`'collision-layer'`"},{"complex_type":"type","value":"CombatRobotCountAchievementPrototype","description":"`'combat-robot-count-achievement'`"},{"complex_type":"type","value":"CombatRobotPrototype","description":"`'combat-robot'`"},{"complex_type":"type","value":"CompleteObjectiveAchievementPrototype","description":"`'complete-objective-achievement'`"},{"complex_type":"type","value":"ConstantCombinatorPrototype","description":"`'constant-combinator'`"},{"complex_type":"type","value":"ConstructWithRobotsAchievementPrototype","description":"`'construct-with-robots-achievement'`"},{"complex_type":"type","value":"ConstructionRobotPrototype","description":"`'construction-robot'`"},{"complex_type":"type","value":"ContainerPrototype","description":"`'container'`"},{"complex_type":"type","value":"CopyPasteToolPrototype","description":"`'copy-paste-tool'`"},{"complex_type":"type","value":"CorpsePrototype","description":"`'corpse'`"},{"complex_type":"type","value":"CreatePlatformAchievementPrototype","description":"`'create-platform-achievement'`"},{"complex_type":"type","value":"CurvedRailAPrototype","description":"`'curved-rail-a'`"},{"complex_type":"type","value":"CurvedRailBPrototype","description":"`'curved-rail-b'`"},{"complex_type":"type","value":"CustomEventPrototype","description":"`'custom-event'`"},{"complex_type":"type","value":"CustomInputPrototype","description":"`'custom-input'`"},{"complex_type":"type","value":"DamageType","description":"`'damage-type'`"},{"complex_type":"type","value":"DeciderCombinatorPrototype","description":"`'decider-combinator'`"},{"complex_type":"type","value":"DeconstructWithRobotsAchievementPrototype","description":"`'deconstruct-with-robots-achievement'`"},{"complex_type":"type","value":"DeconstructibleTileProxyPrototype","description":"`'deconstructible-tile-proxy'`"},{"complex_type":"type","value":"DeconstructionItemPrototype","description":"`'deconstruction-item'`"},{"complex_type":"type","value":"DecorativePrototype","description":"`'optimized-decorative'`"},{"complex_type":"type","value":"DelayedActiveTriggerPrototype","description":"`'delayed-active-trigger'`"},{"complex_type":"type","value":"DeliverByRobotsAchievementPrototype","description":"`'deliver-by-robots-achievement'`"},{"complex_type":"type","value":"DeliverCategory","description":"`'deliver-category'`"},{"complex_type":"type","value":"DeliverImpactCombination","description":"`'deliver-impact-combination'`"},{"complex_type":"type","value":"DepleteResourceAchievementPrototype","description":"`'deplete-resource-achievement'`"},{"complex_type":"type","value":"DestroyCliffAchievementPrototype","description":"`'destroy-cliff-achievement'`"},{"complex_type":"type","value":"DisplayPanelPrototype","description":"`'display-panel'`"},{"complex_type":"type","value":"DontBuildEntityAchievementPrototype","description":"`'dont-build-entity-achievement'`"},{"complex_type":"type","value":"DontCraftManuallyAchievementPrototype","description":"`'dont-craft-manually-achievement'`"},{"complex_type":"type","value":"DontKillManuallyAchievementPrototype","description":"`'dont-kill-manually-achievement'`"},{"complex_type":"type","value":"DontResearchBeforeResearchingAchievementPrototype","description":"`'dont-research-before-researching-achievement'`"},{"complex_type":"type","value":"DontUseEntityInEnergyProductionAchievementPrototype","description":"`'dont-use-entity-in-energy-production-achievement'`"},{"complex_type":"type","value":"EditorControllerPrototype","description":"`'editor-controller'`"},{"complex_type":"type","value":"ElectricEnergyInterfacePrototype","description":"`'electric-energy-interface'`"},{"complex_type":"type","value":"ElectricPolePrototype","description":"`'electric-pole'`"},{"complex_type":"type","value":"ElectricTurretPrototype","description":"`'electric-turret'`"},{"complex_type":"type","value":"ElevatedCurvedRailAPrototype","description":"`'elevated-curved-rail-a'`"},{"complex_type":"type","value":"ElevatedCurvedRailBPrototype","description":"`'elevated-curved-rail-b'`"},{"complex_type":"type","value":"ElevatedHalfDiagonalRailPrototype","description":"`'elevated-half-diagonal-rail'`"},{"complex_type":"type","value":"ElevatedStraightRailPrototype","description":"`'elevated-straight-rail'`"},{"complex_type":"type","value":"EnemySpawnerPrototype","description":"`'unit-spawner'`"},{"complex_type":"type","value":"EnergyShieldEquipmentPrototype","description":"`'energy-shield-equipment'`"},{"complex_type":"type","value":"EntityGhostPrototype","description":"`'entity-ghost'`"},{"complex_type":"type","value":"EquipArmorAchievementPrototype","description":"`'equip-armor-achievement'`"},{"complex_type":"type","value":"EquipmentCategory","description":"`'equipment-category'`"},{"complex_type":"type","value":"EquipmentGhostPrototype","description":"`'equipment-ghost'`"},{"complex_type":"type","value":"EquipmentGridPrototype","description":"`'equipment-grid'`"},{"complex_type":"type","value":"ExplosionPrototype","description":"`'explosion'`"},{"complex_type":"type","value":"FireFlamePrototype","description":"`'fire'`"},{"complex_type":"type","value":"FishPrototype","description":"`'fish'`"},{"complex_type":"type","value":"FluidPrototype","description":"`'fluid'`"},{"complex_type":"type","value":"FluidStreamPrototype","description":"`'stream'`"},{"complex_type":"type","value":"FluidTurretPrototype","description":"`'fluid-turret'`"},{"complex_type":"type","value":"FluidWagonPrototype","description":"`'fluid-wagon'`"},{"complex_type":"type","value":"FontPrototype","description":"`'font'`"},{"complex_type":"type","value":"FuelCategory","description":"`'fuel-category'`"},{"complex_type":"type","value":"FurnacePrototype","description":"`'furnace'`"},{"complex_type":"type","value":"FusionGeneratorPrototype","description":"`'fusion-generator'`"},{"complex_type":"type","value":"FusionReactorPrototype","description":"`'fusion-reactor'`"},{"complex_type":"type","value":"GatePrototype","description":"`'gate'`"},{"complex_type":"type","value":"GeneratorEquipmentPrototype","description":"`'generator-equipment'`"},{"complex_type":"type","value":"GeneratorPrototype","description":"`'generator'`"},{"complex_type":"type","value":"GodControllerPrototype","description":"`'god-controller'`"},{"complex_type":"type","value":"GroupAttackAchievementPrototype","description":"`'group-attack-achievement'`"},{"complex_type":"type","value":"GuiStyle","description":"`'gui-style'`"},{"complex_type":"type","value":"GunPrototype","description":"`'gun'`"},{"complex_type":"type","value":"HalfDiagonalRailPrototype","description":"`'half-diagonal-rail'`"},{"complex_type":"type","value":"HeatInterfacePrototype","description":"`'heat-interface'`"},{"complex_type":"type","value":"HeatPipePrototype","description":"`'heat-pipe'`"},{"complex_type":"type","value":"HighlightBoxEntityPrototype","description":"`'highlight-box'`"},{"complex_type":"type","value":"ImpactCategory","description":"`'impact-category'`"},{"complex_type":"type","value":"InfinityCargoWagonPrototype","description":"`'infinity-cargo-wagon'`"},{"complex_type":"type","value":"InfinityContainerPrototype","description":"`'infinity-container'`"},{"complex_type":"type","value":"InfinityPipePrototype","description":"`'infinity-pipe'`"},{"complex_type":"type","value":"InserterPrototype","description":"`'inserter'`"},{"complex_type":"type","value":"InventoryBonusEquipmentPrototype","description":"`'inventory-bonus-equipment'`"},{"complex_type":"type","value":"ItemEntityPrototype","description":"`'item-entity'`"},{"complex_type":"type","value":"ItemGroup","description":"`'item-group'`"},{"complex_type":"type","value":"ItemPrototype","description":"`'item'`"},{"complex_type":"type","value":"ItemRequestProxyPrototype","description":"`'item-request-proxy'`"},{"complex_type":"type","value":"ItemSubGroup","description":"`'item-subgroup'`"},{"complex_type":"type","value":"ItemWithEntityDataPrototype","description":"`'item-with-entity-data'`"},{"complex_type":"type","value":"ItemWithInventoryPrototype","description":"`'item-with-inventory'`"},{"complex_type":"type","value":"ItemWithLabelPrototype","description":"`'item-with-label'`"},{"complex_type":"type","value":"ItemWithTagsPrototype","description":"`'item-with-tags'`"},{"complex_type":"type","value":"KillAchievementPrototype","description":"`'kill-achievement'`"},{"complex_type":"type","value":"LabPrototype","description":"`'lab'`"},{"complex_type":"type","value":"LampPrototype","description":"`'lamp'`"},{"complex_type":"type","value":"LandMinePrototype","description":"`'land-mine'`"},{"complex_type":"type","value":"LaneSplitterPrototype","description":"`'lane-splitter'`"},{"complex_type":"type","value":"LegacyCurvedRailPrototype","description":"`'legacy-curved-rail'`"},{"complex_type":"type","value":"LegacyStraightRailPrototype","description":"`'legacy-straight-rail'`"},{"complex_type":"type","value":"LightningAttractorPrototype","description":"`'lightning-attractor'`"},{"complex_type":"type","value":"LightningPrototype","description":"`'lightning'`"},{"complex_type":"type","value":"LinkedBeltPrototype","description":"`'linked-belt'`"},{"complex_type":"type","value":"LinkedContainerPrototype","description":"`'linked-container'`"},{"complex_type":"type","value":"Loader1x1Prototype","description":"`'loader-1x1'`"},{"complex_type":"type","value":"Loader1x2Prototype","description":"`'loader'`"},{"complex_type":"type","value":"LocomotivePrototype","description":"`'locomotive'`"},{"complex_type":"type","value":"LogisticContainerPrototype","description":"`'logistic-container'`"},{"complex_type":"type","value":"LogisticRobotPrototype","description":"`'logistic-robot'`"},{"complex_type":"type","value":"MapGenPresets","description":"`'map-gen-presets'`"},{"complex_type":"type","value":"MapSettings","description":"`'map-settings'`"},{"complex_type":"type","value":"MarketPrototype","description":"`'market'`"},{"complex_type":"type","value":"MiningDrillPrototype","description":"`'mining-drill'`"},{"complex_type":"type","value":"ModData","description":"`'mod-data'`"},{"complex_type":"type","value":"ModuleCategory","description":"`'module-category'`"},{"complex_type":"type","value":"ModulePrototype","description":"`'module'`"},{"complex_type":"type","value":"ModuleTransferAchievementPrototype","description":"`'module-transfer-achievement'`"},{"complex_type":"type","value":"MouseCursor","description":"`'mouse-cursor'`"},{"complex_type":"type","value":"MovementBonusEquipmentPrototype","description":"`'movement-bonus-equipment'`"},{"complex_type":"type","value":"NamedNoiseExpression","description":"`'noise-expression'`"},{"complex_type":"type","value":"NamedNoiseFunction","description":"`'noise-function'`"},{"complex_type":"type","value":"NightVisionEquipmentPrototype","description":"`'night-vision-equipment'`"},{"complex_type":"type","value":"OffshorePumpPrototype","description":"`'offshore-pump'`"},{"complex_type":"type","value":"ParticlePrototype","description":"`'optimized-particle'`"},{"complex_type":"type","value":"ParticleSourcePrototype","description":"`'particle-source'`"},{"complex_type":"type","value":"PipePrototype","description":"`'pipe'`"},{"complex_type":"type","value":"PipeToGroundPrototype","description":"`'pipe-to-ground'`"},{"complex_type":"type","value":"PlaceEquipmentAchievementPrototype","description":"`'place-equipment-achievement'`"},{"complex_type":"type","value":"PlanetPrototype","description":"`'planet'`"},{"complex_type":"type","value":"PlantPrototype","description":"`'plant'`"},{"complex_type":"type","value":"PlayerDamagedAchievementPrototype","description":"`'player-damaged-achievement'`"},{"complex_type":"type","value":"PlayerPortPrototype","description":"`'player-port'`"},{"complex_type":"type","value":"PowerSwitchPrototype","description":"`'power-switch'`"},{"complex_type":"type","value":"ProcessionLayerInheritanceGroup","description":"`'procession-layer-inheritance-group'`"},{"complex_type":"type","value":"ProcessionPrototype","description":"`'procession'`"},{"complex_type":"type","value":"ProduceAchievementPrototype","description":"`'produce-achievement'`"},{"complex_type":"type","value":"ProducePerHourAchievementPrototype","description":"`'produce-per-hour-achievement'`"},{"complex_type":"type","value":"ProgrammableSpeakerPrototype","description":"`'programmable-speaker'`"},{"complex_type":"type","value":"ProjectilePrototype","description":"`'projectile'`"},{"complex_type":"type","value":"ProxyContainerPrototype","description":"`'proxy-container'`"},{"complex_type":"type","value":"PumpPrototype","description":"`'pump'`"},{"complex_type":"type","value":"QualityPrototype","description":"`'quality'`"},{"complex_type":"type","value":"RadarPrototype","description":"`'radar'`"},{"complex_type":"type","value":"RailChainSignalPrototype","description":"`'rail-chain-signal'`"},{"complex_type":"type","value":"RailPlannerPrototype","description":"`'rail-planner'`"},{"complex_type":"type","value":"RailRampPrototype","description":"`'rail-ramp'`"},{"complex_type":"type","value":"RailRemnantsPrototype","description":"`'rail-remnants'`"},{"complex_type":"type","value":"RailSignalPrototype","description":"`'rail-signal'`"},{"complex_type":"type","value":"RailSupportPrototype","description":"`'rail-support'`"},{"complex_type":"type","value":"ReactorPrototype","description":"`'reactor'`"},{"complex_type":"type","value":"RecipeCategory","description":"`'recipe-category'`"},{"complex_type":"type","value":"RecipePrototype","description":"`'recipe'`"},{"complex_type":"type","value":"RemoteControllerPrototype","description":"`'remote-controller'`"},{"complex_type":"type","value":"RepairToolPrototype","description":"`'repair-tool'`"},{"complex_type":"type","value":"ResearchAchievementPrototype","description":"`'research-achievement'`"},{"complex_type":"type","value":"ResearchWithSciencePackAchievementPrototype","description":"`'research-with-science-pack-achievement'`"},{"complex_type":"type","value":"ResourceCategory","description":"`'resource-category'`"},{"complex_type":"type","value":"ResourceEntityPrototype","description":"`'resource'`"},{"complex_type":"type","value":"RoboportEquipmentPrototype","description":"`'roboport-equipment'`"},{"complex_type":"type","value":"RoboportPrototype","description":"`'roboport'`"},{"complex_type":"type","value":"RocketSiloPrototype","description":"`'rocket-silo'`"},{"complex_type":"type","value":"RocketSiloRocketPrototype","description":"`'rocket-silo-rocket'`"},{"complex_type":"type","value":"RocketSiloRocketShadowPrototype","description":"`'rocket-silo-rocket-shadow'`"},{"complex_type":"type","value":"SegmentPrototype","description":"`'segment'`"},{"complex_type":"type","value":"SegmentedUnitPrototype","description":"`'segmented-unit'`"},{"complex_type":"type","value":"SelectionToolPrototype","description":"`'selection-tool'`"},{"complex_type":"type","value":"SelectorCombinatorPrototype","description":"`'selector-combinator'`"},{"complex_type":"type","value":"ShootAchievementPrototype","description":"`'shoot-achievement'`"},{"complex_type":"type","value":"ShortcutPrototype","description":"`'shortcut'`"},{"complex_type":"type","value":"SimpleEntityPrototype","description":"`'simple-entity'`"},{"complex_type":"type","value":"SimpleEntityWithForcePrototype","description":"`'simple-entity-with-force'`"},{"complex_type":"type","value":"SimpleEntityWithOwnerPrototype","description":"`'simple-entity-with-owner'`"},{"complex_type":"type","value":"SmokeWithTriggerPrototype","description":"`'smoke-with-trigger'`"},{"complex_type":"type","value":"SolarPanelEquipmentPrototype","description":"`'solar-panel-equipment'`"},{"complex_type":"type","value":"SolarPanelPrototype","description":"`'solar-panel'`"},{"complex_type":"type","value":"SoundPrototype","description":"`'sound'`"},{"complex_type":"type","value":"SpaceConnectionDistanceTraveledAchievementPrototype","description":"`'space-connection-distance-traveled-achievement'`"},{"complex_type":"type","value":"SpaceConnectionPrototype","description":"`'space-connection'`"},{"complex_type":"type","value":"SpaceLocationPrototype","description":"`'space-location'`"},{"complex_type":"type","value":"SpacePlatformHubPrototype","description":"`'space-platform-hub'`"},{"complex_type":"type","value":"SpacePlatformStarterPackPrototype","description":"`'space-platform-starter-pack'`"},{"complex_type":"type","value":"SpectatorControllerPrototype","description":"`'spectator-controller'`"},{"complex_type":"type","value":"SpeechBubblePrototype","description":"`'speech-bubble'`"},{"complex_type":"type","value":"SpiderLegPrototype","description":"`'spider-leg'`"},{"complex_type":"type","value":"SpiderUnitPrototype","description":"`'spider-unit'`"},{"complex_type":"type","value":"SpiderVehiclePrototype","description":"`'spider-vehicle'`"},{"complex_type":"type","value":"SpidertronRemotePrototype","description":"`'spidertron-remote'`"},{"complex_type":"type","value":"SplitterPrototype","description":"`'splitter'`"},{"complex_type":"type","value":"SpritePrototype","description":"`'sprite'`"},{"complex_type":"type","value":"StickerPrototype","description":"`'sticker'`"},{"complex_type":"type","value":"StorageTankPrototype","description":"`'storage-tank'`"},{"complex_type":"type","value":"StraightRailPrototype","description":"`'straight-rail'`"},{"complex_type":"type","value":"SurfacePropertyPrototype","description":"`'surface-property'`"},{"complex_type":"type","value":"SurfacePrototype","description":"`'surface'`"},{"complex_type":"type","value":"TechnologyPrototype","description":"`'technology'`"},{"complex_type":"type","value":"TemporaryContainerPrototype","description":"`'temporary-container'`"},{"complex_type":"type","value":"ThrusterPrototype","description":"`'thruster'`"},{"complex_type":"type","value":"TileEffectDefinition","description":"`'tile-effect'`"},{"complex_type":"type","value":"TileGhostPrototype","description":"`'tile-ghost'`"},{"complex_type":"type","value":"TilePrototype","description":"`'tile'`"},{"complex_type":"type","value":"TipsAndTricksItem","description":"`'tips-and-tricks-item'`"},{"complex_type":"type","value":"TipsAndTricksItemCategory","description":"`'tips-and-tricks-item-category'`"},{"complex_type":"type","value":"ToolPrototype","description":"`'tool'`"},{"complex_type":"type","value":"TrainPathAchievementPrototype","description":"`'train-path-achievement'`"},{"complex_type":"type","value":"TrainStopPrototype","description":"`'train-stop'`"},{"complex_type":"type","value":"TransportBeltPrototype","description":"`'transport-belt'`"},{"complex_type":"type","value":"TreePrototype","description":"`'tree'`"},{"complex_type":"type","value":"TriggerTargetType","description":"`'trigger-target-type'`"},{"complex_type":"type","value":"TrivialSmokePrototype","description":"`'trivial-smoke'`"},{"complex_type":"type","value":"TurretPrototype","description":"`'turret'`"},{"complex_type":"type","value":"TutorialDefinition","description":"`'tutorial'`"},{"complex_type":"type","value":"UndergroundBeltPrototype","description":"`'underground-belt'`"},{"complex_type":"type","value":"UnitPrototype","description":"`'unit'`"},{"complex_type":"type","value":"UpgradeItemPrototype","description":"`'upgrade-item'`"},{"complex_type":"type","value":"UseEntityInEnergyProductionAchievementPrototype","description":"`'use-entity-in-energy-production-achievement'`"},{"complex_type":"type","value":"UseItemAchievementPrototype","description":"`'use-item-achievement'`"},{"complex_type":"type","value":"UtilityConstants","description":"`'utility-constants'`"},{"complex_type":"type","value":"UtilitySounds","description":"`'utility-sounds'`"},{"complex_type":"type","value":"UtilitySprites","description":"`'utility-sprites'`"},{"complex_type":"type","value":"ValvePrototype","description":"`'valve'`"},{"complex_type":"type","value":"VirtualSignalPrototype","description":"`'virtual-signal'`"},{"complex_type":"type","value":"WallPrototype","description":"`'wall'`"}],"full_format":true}},{"name":"ApplyStarterPackTipTrigger","order":33,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"apply-starter-pack"},"optional":false}]},{"name":"AreaTriggerItem","order":34,"description":"","parent":"TriggerItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"collision_mode","order":6,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"distance-from-collision-box"},{"complex_type":"literal","value":"distance-from-center"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"distance-from-collision-box"}},{"name":"radius","order":1,"description":"","override":false,"type":"double","optional":false},{"name":"show_in_tooltip","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"target_enemies","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"target_entities","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"trigger_from_target","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"area"},"optional":false}]},{"name":"ArtilleryRangeModifier","order":35,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"artillery-range"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"ArtilleryRemoteCapsuleAction","order":36,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"flare","order":1,"description":"Name of an [ArtilleryFlarePrototype](prototype:ArtilleryFlarePrototype).","override":false,"type":"EntityID","optional":false},{"name":"play_sound_on_failure","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"artillery-remote"},"optional":false}]},{"name":"ArtilleryTriggerDelivery","order":37,"description":"","parent":"TriggerDeliveryItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"direction_deviation","order":4,"description":"Maximum deviation of the projectile from source orientation, in +/- (`x radians / 2`). Example: `3.14 radians -> +/- (180\u00b0 / 2)`, meaning up to 90\u00b0 deviation in either direction of rotation.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"projectile","order":1,"description":"Name of a [ArtilleryProjectilePrototype](prototype:ArtilleryProjectilePrototype).","override":false,"type":"EntityID","optional":false},{"name":"range_deviation","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"starting_speed","order":2,"description":"","override":false,"type":"float","optional":false},{"name":"starting_speed_deviation","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"trigger_fired_artillery","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"artillery"},"optional":false}]},{"name":"AsteroidChunkID","order":38,"description":"The name of an [AsteroidChunkPrototype](prototype:AsteroidChunkPrototype).","examples":["```\n\"metallic-asteroid-chunk\"\n```","```\n\"oxide-asteroid-chunk\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"AsteroidCollectorGraphicsSet","order":39,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"animation","order":0,"description":"","override":false,"type":"Animation4Way","optional":true},{"name":"arm_head_animation","order":6,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"arm_head_top_animation","order":7,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"arm_link","order":8,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"below_arm_pictures","order":4,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"below_ground_pictures","order":5,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"status_lamp_picture_full","order":2,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"status_lamp_picture_off","order":3,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"status_lamp_picture_on","order":1,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"water_reflection","order":9,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"AsteroidGraphicsSet","order":40,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"ambient_light","order":12,"description":"","override":false,"type":"Color","optional":true,"default":"`{0.05, 0.05, 0.05, 1.0}`"},{"name":"brightness","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"light_width","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"lights","order":11,"description":"","override":false,"type":{"complex_type":"union","options":["LightProperties",{"complex_type":"array","value":"LightProperties"}],"full_format":false},"optional":true},{"name":"normal_strength","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"rotation_speed","order":0,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"specular_power","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":6.0}},{"name":"specular_purity","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"specular_strength","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":5.0}},{"name":"sprite","order":9,"description":"","override":false,"type":"Sprite","optional":true},{"name":"sss_amount","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":5.0}},{"name":"sss_contrast","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"variations","order":10,"description":"","override":false,"type":{"complex_type":"union","options":["AsteroidVariation",{"complex_type":"array","value":"AsteroidVariation"}],"full_format":false},"optional":true},{"name":"water_reflection","order":13,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"AsteroidSettings","order":41,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"max_ray_portals_expanded_per_tick","order":1,"description":"","override":false,"type":"uint32","optional":false},{"name":"spawning_rate","order":0,"description":"","override":false,"type":"double","optional":false}]},{"name":"AsteroidSpawnPoint","order":42,"description":"","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"angle_when_stopped","order":2,"description":"Facing the north. Must be in `[0, 1]` range.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"probability","order":0,"description":"Must be >= 0.","override":false,"type":"double","optional":false},{"name":"speed","order":1,"description":"Must be > 0.","override":false,"type":"double","optional":false}]},{"name":"AsteroidVariation","order":43,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"color_texture","order":0,"description":"","override":false,"type":"Sprite","optional":false},{"name":"normal_map","order":1,"description":"","override":false,"type":"Sprite","optional":false},{"name":"roughness_map","order":2,"description":"","override":false,"type":"Sprite","optional":false},{"name":"shadow_shift","order":3,"description":"","override":false,"type":"Vector","optional":true}]},{"name":"AttackParameters","order":44,"description":"Loaded as one of the [BaseAttackParameters](prototype:BaseAttackParameters) extensions, based on the value of the `type` key.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"ProjectileAttackParameters","description":"Loaded when the `type` is `\"projectile\"`."},{"complex_type":"type","value":"BeamAttackParameters","description":"Loaded when the `type` is `\"beam\"`."},{"complex_type":"type","value":"StreamAttackParameters","description":"Loaded when the `type` is `\"stream\"`."}],"full_format":true}},{"name":"AttackReactionItem","order":45,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"action","order":1,"description":"","override":false,"type":"Trigger","optional":true},{"name":"damage_type","order":3,"description":"","override":false,"type":"DamageTypeID","optional":true},{"name":"range","order":0,"description":"","override":false,"type":"float","optional":false},{"name":"reaction_modifier","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"Attenuation","order":46,"description":"","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"curve_type","order":0,"description":"","override":false,"type":"AttenuationType","optional":false},{"name":"tuning_parameter","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":-1}}]},{"name":"AttenuationType","order":47,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"none","description":""},{"complex_type":"literal","value":"linear","description":""},{"complex_type":"literal","value":"logarithmic","description":""},{"complex_type":"literal","value":"exponential","description":""},{"complex_type":"literal","value":"cosine","description":""},{"complex_type":"literal","value":"S-curve","description":""}],"full_format":true}},{"name":"AutoplaceControlID","order":48,"description":"The name of an [AutoplaceControl](prototype:AutoplaceControl).","examples":["```\n\"copper-ore\"\n```","```\n\"trees\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"AutoplaceSettings","order":49,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"settings","order":1,"description":"Overrides the FrequencySizeRichness provided to the [AutoplaceSpecification](prototype:AutoplaceSpecification) of the entity/tile/decorative. Takes priority over the FrequencySizeRichness set in the [autoplace control](prototype:AutoplaceSpecification::control).","override":false,"type":{"complex_type":"dictionary","key":{"complex_type":"union","options":["EntityID","TileID","DecorativeID"],"full_format":false},"value":"FrequencySizeRichness"},"optional":true},{"name":"treat_missing_as_default","order":0,"description":"Whether missing autoplace names for this type should be default enabled.","override":false,"type":"boolean","optional":true}]},{"name":"AutoplaceSpecification","order":50,"description":"Autoplace specification is used to determine which entities are placed when generating map. Currently it is used for enemy bases, tiles, resources and other entities (trees, fishes, etc.).\n\nAutoplace specification describe conditions for placing tiles, entities, and decoratives during surface generation. Autoplace specification defines probability of placement on any given tile and richness, which has different meaning depending on the thing being placed.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"control","order":0,"description":"Name of the [AutoplaceControl](prototype:AutoplaceControl) (row in the map generator GUI) that applies to this entity.","override":false,"type":"AutoplaceControlID","optional":true},{"name":"default_enabled","order":1,"description":"Indicates whether the thing should be placed even if [MapGenSettings](runtime:MapGenSettings) do not provide frequency/size/richness for it. (either for the specific prototype or for the control named by AutoplaceSpecification.control).\n\nIf true, normal frequency/size/richness (`value=1`) are used in that case. Otherwise it is treated as if 'none' were selected.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"force","order":2,"description":"Force of the placed entity. Can be a custom force name. Only relevant for [EntityWithOwnerPrototype](prototype:EntityWithOwnerPrototype).","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"enemy"},{"complex_type":"literal","value":"player"},{"complex_type":"literal","value":"neutral"},"string"],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"neutral"}},{"name":"local_expressions","order":8,"description":"A map of expression name to expression. Used by `probability_expression` and `richness_expression`.\n\nLocal expressions are meant to store data locally similar to local variables in Lua. Their purpose is to hold noise expressions used multiple times in the named noise expression, or just to tell the reader that the local expression has a specific purpose. Local expressions can access other local definitions and also function parameters, but recursive definitions aren't supported.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"NoiseExpression"},"optional":true},{"name":"local_functions","order":9,"description":"A map of function name to function. Used by `probability_expression` and `richness_expression`.\n\nLocal functions serve the same purpose as local expressions - they aren't visible outside of the specific prototype and they have access to other local definitions.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"NoiseFunction"},"optional":true},{"name":"order","order":3,"description":"Order for placing the entity (has no effect when placing tiles). Entities whose order compares less are placed earlier (this influences placing multiple entities which collide with itself), from entities with equal order string only one with the highest probability is placed.","override":false,"type":"Order","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"placement_density","order":4,"description":"For entities and decoratives, how many times to attempt to place on each tile. Probability and collisions are taken into account each attempt.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"probability_expression","order":6,"description":"Provides a noise expression that will be evaluated at every point on the map to determine probability.","override":false,"type":"NoiseExpression","optional":false},{"name":"richness_expression","order":7,"description":"If specified, provides a noise expression that will be evaluated to determine richness. Otherwise, `probability_expression` will be used instead.","override":false,"type":"NoiseExpression","optional":true},{"name":"tile_restriction","order":5,"description":"Restricts tiles or tile transitions the entity can appear on.","override":false,"type":{"complex_type":"array","value":"TileIDRestriction"},"optional":true}]},{"name":"BaseAttackParameters","order":51,"description":"The abstract base of all [AttackParameters](prototype:AttackParameters).","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"activation_type","order":18,"description":"Used in tooltips to set the tooltip category. It is also used to get the locale keys for activation instructions and speed of the action for the tooltip.\n\nFor example, an activation_type of \"throw\" will result in the tooltip category \"thrown\" and the tooltip locale keys \"gui.instruction-to-throw\" and \"description.throwing-speed\".","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"shoot"},{"complex_type":"literal","value":"throw"},{"complex_type":"literal","value":"consume"},{"complex_type":"literal","value":"activate"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"shoot"}},{"name":"ammo_categories","order":23,"description":"Mandatory if `ammo_category` is not defined.","override":false,"type":{"complex_type":"array","value":"AmmoCategoryID"},"optional":true},{"name":"ammo_category","order":24,"description":"Mandatory if `ammo_categories` is not defined.","override":false,"type":"AmmoCategoryID","optional":true},{"name":"ammo_consumption_modifier","order":10,"description":"Must be greater than or equal to `0`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"ammo_type","order":17,"description":"Can be mandatory.","override":false,"type":"AmmoType","optional":true},{"name":"animation","order":20,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"cooldown","order":1,"description":"Number of ticks in which it will be possible to shoot again. If < 1, multiple shots can be performed in one tick.","override":false,"type":"float","optional":false},{"name":"cooldown_deviation","order":11,"description":"Must be between `0` and `1`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"cyclic_sound","order":21,"description":"Played during the attack.","override":false,"type":"CyclicSound","optional":true},{"name":"damage_modifier","order":9,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"fire_penalty","order":4,"description":"Used when searching for the nearest enemy, when this is > 0, enemies that aren't burning are preferred over burning enemies. Definition of \"burning\" for this: Entity has sticker attached to it, and the sticker has a [spread_fire_entity](prototype:StickerPrototype::spread_fire_entity) set.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"health_penalty","order":6,"description":"A higher penalty will discourage turrets from targeting units with higher health. A negative penalty will encourage turrets to target units with higher health.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"lead_target_for_projectile_delay","order":14,"description":"Setting this to anything but zero causes projectiles to aim for the predicted location based on enemy movement instead of the current enemy location. If set, this property adds a flat number of ticks atop `lead_target_for_projectile_speed` that the shooter must lead.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"lead_target_for_projectile_speed","order":13,"description":"Setting this to anything but zero causes homing projectiles to aim for the predicted location based on enemy movement instead of the current enemy location. If set, this property specifies the distance travelled per tick of the fired projectile.","examples":["```\n-- this is same as particle horizontal speed of flamethrower fire stream\nlead_target_for_projectile_speed = 0.2* 0.75 * 1.5\n```"],"override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"min_attack_distance","order":8,"description":"If less than `range`, the entity will choose a random distance between `range` and `min_attack_distance` and attack from that distance.","override":false,"type":"float","optional":true,"default":"equal to `range` property"},{"name":"min_range","order":2,"description":"The minimum distance (in tiles) between an entity and target. If a unit's target is less than this, the unit will attempt to move away before attacking. A [flamethrower turret](https://wiki.factorio.com/Flamethrower_turret) does not move, but has a minimum range. Less than this, it is unable to target an enemy.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"movement_slow_down_cooldown","order":15,"description":"","override":false,"type":"float","optional":true,"default":"equal to `cooldown` property"},{"name":"movement_slow_down_factor","order":16,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"range","order":0,"description":"Before an entity can attack, the distance (in tiles) between the entity and target must be less than or equal to this.","override":false,"type":"float","optional":false},{"name":"range_mode","order":7,"description":"","override":false,"type":"RangeMode","optional":true,"default":{"complex_type":"literal","value":"center-to-center"}},{"name":"rotate_penalty","order":5,"description":"A higher penalty will discourage turrets from targeting units that would take longer to turn to face.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"sound","order":19,"description":"Played once at the start of the attack if these are [ProjectileAttackParameters](prototype:ProjectileAttackParameters).","override":false,"type":"LayeredSound","optional":true},{"name":"true_collinear_ejection","order":25,"description":"Projectile will be creation position and orientation will be collinear with shooter and target (unless offset projectile center is specified). Used for railgun turrets to avoid unexpected friendly fire incidents.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"turn_range","order":3,"description":"If this is <= 0, it is set to 1. Arc from 0 to 1, so for example 0.25 is 90\u00b0. Used by the [flamethrower turret](https://wiki.factorio.com/Flamethrower_turret) in the base game. Arcs greater than 0.5 but less than 1 will be clamped to 0.5 as targeting in arcs larger than half circle is [not implemented](https://forums.factorio.com/94654).","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"use_shooter_direction","order":22,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"warmup","order":12,"description":"Number of ticks it takes for the weapon to actually shoot after the order for shooting has been made. This also allows to \"adjust\" the shooting animation to the effect of shooting.\n\n[CapsuleActions](prototype:CapsuleAction) cannot have attack parameters with non-zero warmup.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"BaseEnergySource","order":52,"description":"The abstract base of all [EnergySources](prototype:EnergySource). Specifies the way an entity gets its energy.","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"emissions_per_minute","order":0,"description":"The pollution an entity emits per minute at full energy consumption. This is exactly the value that is shown in the entity tooltip.","override":false,"type":{"complex_type":"dictionary","key":"AirbornePollutantID","value":"double"},"optional":true},{"name":"render_no_network_icon","order":2,"description":"Whether to render the \"no network\" icon if the entity is not connected to an electric network.","images":[{"filename":"no_network_icon.png"}],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"render_no_power_icon","order":1,"description":"Whether to render the \"no power\" icon if the entity is low on power. Also applies to the \"no fuel\" icon when using burner energy sources.","images":[{"filename":"no_power_icon.png"}],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"BaseModifier","order":53,"description":"The abstract base of all [Modifiers](prototype:Modifier).","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"hidden","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"icon","order":1,"description":"Path to the icon file.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":2,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":0,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true}]},{"name":"BaseStyleSpecification","order":54,"description":"The abstract base of all [StyleSpecifications](prototype:StyleSpecification).","examples":["```\n-- Adding a custom frame_style-type style via GuiStyle\ndata.raw[\"gui-style\"][\"default\"][\"custom_style_for_a_frame\"] =\n{\n  type = \"frame_style\",\n  parent = \"frame\",\n  use_header_filler = false,\n  drag_by_title = false\n}\n```"],"abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"bottom_margin","order":27,"description":"","override":false,"type":"int16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"bottom_padding","order":22,"description":"","override":false,"type":"int16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"effect","order":29,"description":"Name of a custom GUI effect, which are hard-coded in the game's engine. Only has one option currently.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"compilatron-hologram","description":""}],"full_format":true},"optional":true},{"name":"effect_opacity","order":30,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"height","order":15,"description":"Sets `minimal_height`, `maximal_height` and `natural_height` to the same value.","override":false,"type":"uint32","optional":true},{"name":"horizontal_align","order":1,"description":"","override":false,"type":"HorizontalAlign","optional":true,"default":{"complex_type":"literal","value":"left"}},{"name":"horizontally_squashable","order":7,"description":"","override":false,"type":"StretchRule","optional":true,"default":{"complex_type":"literal","value":"auto"}},{"name":"horizontally_stretchable","order":5,"description":"","override":false,"type":"StretchRule","optional":true,"default":{"complex_type":"literal","value":"auto"}},{"name":"ignored_by_search","order":3,"description":"","override":false,"type":"boolean","optional":true},{"name":"left_margin","order":28,"description":"","override":false,"type":"int16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"left_padding","order":23,"description":"","override":false,"type":"int16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"margin","order":24,"description":"Sets `top_margin`, `right_margin`, `bottom_margin` and `left_margin` to the same value.","override":false,"type":"int16","optional":true},{"name":"maximal_height","order":17,"description":"Maximal height ensures that the widget will never be bigger than than that size. It can't be stretched to be bigger.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"maximal_width","order":13,"description":"Maximal width ensures that the widget will never be bigger than than that size. It can't be stretched to be bigger.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"minimal_height","order":16,"description":"Minimal height ensures that the widget will never be smaller than than that size. It can't be squashed to be smaller.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"minimal_width","order":12,"description":"Minimal width ensures that the widget will never be smaller than than that size. It can't be squashed to be smaller.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"natural_height","order":18,"description":"Natural height specifies the height of the element tries to have, but it can still be squashed/stretched to have a different size.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"natural_size","order":9,"description":"If this is a tuple, the first member sets `natural_width` and the second sets `natural_height`. Otherwise, both `natural_width` and `natural_height` are set to the same value.","override":false,"type":{"complex_type":"union","options":["uint32",{"complex_type":"tuple","values":["uint32","uint32"]}],"full_format":false},"optional":true},{"name":"natural_width","order":14,"description":"Natural width specifies the width of the element tries to have, but it can still be squashed/stretched to have a different size.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"never_hide_by_search","order":4,"description":"","override":false,"type":"boolean","optional":true},{"name":"padding","order":19,"description":"Sets `top_padding`, `right_padding`, `bottom_padding` and `left_padding` to the same value.","override":false,"type":"int16","optional":true},{"name":"parent","order":0,"description":"Name of a [StyleSpecification](prototype:StyleSpecification). This style inherits all property values from its parent.\n\nStyles without a parent property default to the root style for their type. The exception to this are the root styles themselves, as they cannot have a parent set. Due to this, for root styles, some style properties are mandatory and behavior may be unexpected, such as an element not showing up because its size defaults to `0`.","override":false,"type":"string","optional":true},{"name":"right_margin","order":26,"description":"","override":false,"type":"int16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"right_padding","order":21,"description":"","override":false,"type":"int16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"size","order":10,"description":"If this is a tuple, the first member sets `width`, and the second sets `height`. Otherwise, both `width` and `height` are set to the same value.","override":false,"type":{"complex_type":"union","options":["uint32",{"complex_type":"tuple","values":["uint32","uint32"]}],"full_format":false},"optional":true},{"name":"tooltip","order":31,"description":"","override":false,"type":"LocalisedString","optional":true},{"name":"top_margin","order":25,"description":"","override":false,"type":"int16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"top_padding","order":20,"description":"","override":false,"type":"int16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"vertical_align","order":2,"description":"","override":false,"type":"VerticalAlign","optional":true,"default":{"complex_type":"literal","value":"top"}},{"name":"vertically_squashable","order":8,"description":"","override":false,"type":"StretchRule","optional":true,"default":{"complex_type":"literal","value":"auto"}},{"name":"vertically_stretchable","order":6,"description":"","override":false,"type":"StretchRule","optional":true,"default":{"complex_type":"literal","value":"auto"}},{"name":"width","order":11,"description":"Sets `minimal_width`, `maximal_width` and `natural_width` to the same value.","override":false,"type":"uint32","optional":true}]},{"name":"BeaconDistributionModifier","order":55,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"beacon-distribution"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"BeaconGraphicsSet","order":56,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation_layer","order":6,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"animation_list","order":11,"description":"","override":false,"type":{"complex_type":"array","value":"AnimationElement"},"optional":true},{"name":"animation_progress","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"apply_module_tint","order":9,"description":"Which tint set in [ModulePrototype::beacon_tint](prototype:ModulePrototype::beacon_tint) should be applied to elements of the `animation_list`, if any.","override":false,"type":"ModuleTint","optional":true,"default":{"complex_type":"literal","value":"none"}},{"name":"base_layer","order":5,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"draw_animation_when_idle","order":0,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_light_when_idle","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"frozen_patch","order":12,"description":"","override":false,"type":"Sprite","optional":true},{"name":"light","order":13,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"module_icons_suppressed","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"module_tint_mode","order":15,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"single-module"},{"complex_type":"literal","value":"mix"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"single-module"}},{"name":"module_visualisations","order":14,"description":"The visualisations available for displaying the modules in the beacon. The visualisation is chosen based on art style, see [BeaconModuleVisualizations::art_style](prototype:BeaconModuleVisualizations::art_style) and [ModulePrototype::art_style](prototype:ModulePrototype::art_style).","override":false,"type":{"complex_type":"array","value":"BeaconModuleVisualizations"},"optional":true},{"name":"no_modules_tint","order":10,"description":"","override":false,"type":"Color","optional":true,"default":"no color"},{"name":"random_animation_offset","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"reset_animation_when_frozen","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"top_layer","order":7,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"water_reflection","order":16,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"BeaconModuleVisualization","order":57,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"apply_module_tint","order":2,"description":"Which tint set in [ModulePrototype::beacon_tint](prototype:ModulePrototype::beacon_tint) should be applied to this, if any.","override":false,"type":"ModuleTint","optional":true,"default":{"complex_type":"literal","value":"none"}},{"name":"has_empty_slot","order":0,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"pictures","order":4,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"render_layer","order":3,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"secondary_draw_order","order":1,"description":"Used to determine render order for sprites with the same `render_layer` in the same position. Sprites with a higher `secondary_draw_order` are drawn on top.","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"BeaconModuleVisualizations","order":58,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"art_style","order":0,"description":"The visualization is chosen based on the [ModulePrototype::art_style](prototype:ModulePrototype::art_style), meaning if module art style equals beacon module visualization art style then this visualization is chosen. Vanilla uses `\"vanilla\"` here.","override":false,"type":"string","optional":false},{"name":"slots","order":3,"description":"The outer array contains the different slots, the inner array contains the different layers for those slots (with different tints etc). Example:","examples":["```\nslots =\n{\n  { --slot 1\n    { --layer 1 of slot 1\n      BeaconModuleVisualization data\n    },\n    { --layer 2 of slot 1\n      BeaconModuleVisualization data\n    }\n  },\n  { --slot 2\n    { --layer 1 of slot 2\n      BeaconModuleVisualization data\n    },\n    { --layer 2 of slot 2\n      BeaconModuleVisualization data\n    },\n    { --layer 3 of slot 2\n      BeaconModuleVisualization data\n    }\n  }\n}\n```"],"override":false,"type":{"complex_type":"array","value":{"complex_type":"array","value":"BeaconModuleVisualization"}},"optional":true},{"name":"tier_offset","order":2,"description":"","override":false,"type":"int32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"use_for_empty_slots","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"BeaconVisualizationTints","order":59,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"primary","order":0,"description":"","override":false,"type":"Color","optional":true,"default":"no color"},{"name":"quaternary","order":3,"description":"","override":false,"type":"Color","optional":true,"default":"no color"},{"name":"secondary","order":1,"description":"","override":false,"type":"Color","optional":true,"default":"no color"},{"name":"tertiary","order":2,"description":"","override":false,"type":"Color","optional":true,"default":"no color"}]},{"name":"BeamAnimationSet","order":60,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"body","order":4,"description":"Body segment of the beam.","override":false,"type":"AnimationVariations","optional":true},{"name":"ending","order":1,"description":"End point of the beam.","override":false,"type":"Animation","optional":true},{"name":"head","order":2,"description":"Head segment of the beam.","override":false,"type":"Animation","optional":true},{"name":"render_layer","order":5,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"projectile"}},{"name":"start","order":0,"description":"Start point of the beam.","override":false,"type":"Animation","optional":true},{"name":"tail","order":3,"description":"Tail segment of the beam.","override":false,"type":"Animation","optional":true}]},{"name":"BeamAttackParameters","order":61,"description":"","parent":"BaseAttackParameters","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"source_direction_count","order":1,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"source_offset","order":2,"description":"","override":false,"type":"Vector","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"beam"},"optional":false}]},{"name":"BeamGraphicsSet","order":62,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"beam","order":0,"description":"","override":false,"type":"BeamAnimationSet","optional":true},{"name":"desired_segment_length","order":2,"description":"Must be larger than 0.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"ground","order":1,"description":"","override":false,"type":"BeamAnimationSet","optional":true},{"name":"random_end_animation_rotation","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"randomize_animation_per_segment","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"transparent_start_end_animations","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"water_reflection","order":6,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"BeamTriggerDelivery","order":63,"description":"","parent":"TriggerDeliveryItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"add_to_shooter","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"beam","order":1,"description":"Name of a [BeamPrototype](prototype:BeamPrototype).","override":false,"type":"EntityID","optional":false},{"name":"destroy_with_source_or_target","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"duration","order":4,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"max_length","order":3,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"source_offset","order":5,"description":"","override":false,"type":"Vector","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"beam"},"optional":false}]},{"name":"BeltReaderLayer","order":64,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"render_layer","order":0,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"transport-belt-reader"}},{"name":"sprites","order":1,"description":"Must have a `frame_count` of `4`, one for each direction.","override":false,"type":"RotatedAnimation","optional":false}]},{"name":"BeltStackSizeBonusModifier","order":65,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"belt-stack-size-bonus"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"BeltTraverseTipTrigger","order":66,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"belt-traverse"},"optional":false}]},{"name":"BlendMode","order":67,"description":"Determines how sprites/animations should blend with the background. The possible values are listed below.\n\nNote that in most of Factorio it is assumed colors are in alpha pre-multiplied format, see [FFF #172 - Blending and Rendering](https://www.factorio.com/blog/post/fff-172). Sprites get pre-multiplied when loaded, unless `premul_alpha` is set to `false` on the sprite/animation itself. Since generating mipmaps doesn't respect `premul_alpha`, lower mipmap levels will be in pre-multiplied format regardless.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"normal","description":"The result color is determined with the following formula: `Result = Active_RGB + Background_RGB * ( 1 - Active_Alpha )`. Note that this is alpha blending with an assumption that `Active_RGB` is already pre-multiplied with `Active_Alpha`."},{"complex_type":"literal","value":"additive","description":"The result color is determined with the following formula: `Result = Active_RGB + Background_RGB`"},{"complex_type":"literal","value":"additive-soft","description":"The result color is determined with the following formula: `Result = Active_RGB * ( 1 - Background_RGB ) + Background_RGB`"},{"complex_type":"literal","value":"multiplicative","description":"The result color is determined with the following formula: `Result = Active_RGB * Background_RGB`"},{"complex_type":"literal","value":"multiplicative-with-alpha","description":"The result color is determined with the following formula: `Result = Active_RGB * Background_RGB * Active_Alpha + Background_RGB * ( 1 - Active_Alpha )`"},{"complex_type":"literal","value":"overwrite","description":"The result color is determined with the following formula: `Result = Active_RGBA or Background_RGBA`"}],"full_format":true}},{"name":"BoilerPictureSet","order":68,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":1,"description":"","override":false,"type":"BoilerPictures","optional":false},{"name":"north","order":0,"description":"","override":false,"type":"BoilerPictures","optional":false},{"name":"south","order":2,"description":"","override":false,"type":"BoilerPictures","optional":false},{"name":"west","order":3,"description":"","override":false,"type":"BoilerPictures","optional":false}]},{"name":"BoilerPictures","order":69,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"fire","order":2,"description":"Animation that is drawn on top of the `structure` when `burning_cooldown` is larger than 1. The animation alpha can be controlled by the energy source light intensity, depending on `fire_flicker_enabled`.\n\nThe secondary draw order of this is higher than the secondary draw order of `fire_glow`, so this is drawn above `fire_glow`.","override":false,"type":"Animation","optional":true},{"name":"fire_glow","order":3,"description":"Animation that is drawn on top of the `structure` when `burning_cooldown` is larger than 1. The animation alpha can be controlled by the energy source light intensity, depending on `fire_glow_flicker_enabled`.\n\nThe secondary draw order of this is lower than the secondary draw order of `fire`, so this is drawn below `fire`.","override":false,"type":"Animation","optional":true},{"name":"patch","order":1,"description":"Drawn above the `structure`, in the \"higher-object-under\" [RenderLayer](prototype:RenderLayer). May be useful to correct problems with neighboring pipes overlapping the structure graphics.","override":false,"type":"Sprite","optional":true},{"name":"structure","order":0,"description":"","override":false,"type":"Animation","optional":false}]},{"name":"BonusGuiOrdering","order":70,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"artillery_range","order":0,"description":"","override":false,"type":"Order","optional":false},{"name":"beacon_distribution","order":5,"description":"","override":false,"type":"Order","optional":false},{"name":"bulk_inserter","order":8,"description":"","override":false,"type":"Order","optional":false},{"name":"character","order":2,"description":"","override":false,"type":"Order","optional":false},{"name":"follower_robots","order":3,"description":"","override":false,"type":"Order","optional":false},{"name":"inserter","order":6,"description":"","override":false,"type":"Order","optional":false},{"name":"mining_productivity","order":10,"description":"","override":false,"type":"Order","optional":false},{"name":"research_speed","order":4,"description":"","override":false,"type":"Order","optional":false},{"name":"stack_inserter","order":7,"description":"","override":false,"type":"Order","optional":false},{"name":"train_braking_force","order":11,"description":"","override":false,"type":"Order","optional":false},{"name":"turret_attack","order":9,"description":"","override":false,"type":"Order","optional":false},{"name":"worker_robots","order":1,"description":"","override":false,"type":"Order","optional":false}]},{"name":"BoolModifier","order":71,"description":"","parent":"BaseModifier","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"modifier","order":0,"description":"The state this modifier will be in upon researching.","override":false,"type":"boolean","optional":false}]},{"name":"BorderImageSet","order":72,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"border_width","order":1,"description":"","override":false,"type":"int32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"bottom_end","order":15,"description":"","override":false,"type":"Sprite","optional":true},{"name":"bottom_left_corner","order":6,"description":"","override":false,"type":"Sprite","optional":true},{"name":"bottom_right_corner","order":5,"description":"","override":false,"type":"Sprite","optional":true},{"name":"bottom_t","order":10,"description":"","override":false,"type":"Sprite","optional":true},{"name":"cross","order":12,"description":"","override":false,"type":"Sprite","optional":true},{"name":"horizontal_line","order":3,"description":"","override":false,"type":"Sprite","optional":true},{"name":"left_end","order":16,"description":"","override":false,"type":"Sprite","optional":true},{"name":"left_t","order":11,"description":"","override":false,"type":"Sprite","optional":true},{"name":"right_end","order":14,"description":"","override":false,"type":"Sprite","optional":true},{"name":"right_t","order":9,"description":"","override":false,"type":"Sprite","optional":true},{"name":"scale","order":0,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"top_end","order":13,"description":"","override":false,"type":"Sprite","optional":true},{"name":"top_left_coner","order":7,"description":"","override":false,"type":"Sprite","optional":true},{"name":"top_right_corner","order":4,"description":"","override":false,"type":"Sprite","optional":true},{"name":"top_t","order":8,"description":"","override":false,"type":"Sprite","optional":true},{"name":"vertical_line","order":2,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"BoundingBox","order":73,"description":"BoundingBoxes are typically centered around the position of an entity.\n\nBoundingBoxes are usually specified with the short-hand notation of passing an array of exactly 2 or 3 items.\n\nThe first tuple item is left_top, the second tuple item is right_bottom. The third tuple item is a [float](prototype:float) that represents the orientation.\n\nPositive x goes towards east, positive y goes towards south. This means that the upper-left point is the least dimension in x and y, and lower-right is the greatest.","examples":["```\n{{-0.4, -0.4}, {0.4, 0.4}}\n```","```\n-- long definition\n{left_top = {x = -2, y = -3}, right_bottom = {x = 5, y = 8}}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["MapPosition","MapPosition"]},{"complex_type":"tuple","values":["MapPosition","MapPosition","RealOrientation"]}],"full_format":false},"properties":[{"name":"left_top","order":0,"description":"","override":false,"type":"MapPosition","optional":false},{"name":"orientation","order":2,"description":"","override":false,"type":"RealOrientation","optional":true},{"name":"right_bottom","order":1,"description":"","override":false,"type":"MapPosition","optional":false}]},{"name":"BoxSpecification","order":74,"description":"A cursor box, for use in [UtilitySprites](prototype:UtilitySprites).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"is_whole_box","order":1,"description":"Whether this is a complete box or just the top left corner. If this is true, `side_length` and `side_height` must be present. Otherwise `max_side_length` must be present.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"max_side_length","order":4,"description":"Only loaded, and mandatory if `is_whole_box` is `false`.","override":false,"type":"double","optional":true},{"name":"side_height","order":3,"description":"Only loaded, and mandatory if `is_whole_box` is `true`.","override":false,"type":"double","optional":true},{"name":"side_length","order":2,"description":"Only loaded, and mandatory if `is_whole_box` is `true`.","override":false,"type":"double","optional":true},{"name":"sprite","order":0,"description":"","override":false,"type":"Sprite","optional":false}]},{"name":"BuildEntityByRobotTipTrigger","order":75,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"build-entity-by-robot"},"optional":false}]},{"name":"BuildEntityTechnologyTrigger","order":76,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"entity","order":1,"description":"","override":false,"type":"EntityIDFilter","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"build-entity"},"optional":false}]},{"name":"BuildEntityTipTrigger","order":77,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"build_by_dragging","order":3,"description":"","override":false,"type":"boolean","optional":true},{"name":"build_in_line","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"consecutive","order":4,"description":"Building is considered consecutive when the built entity is the same as the last built entity.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"entity","order":1,"description":"","override":false,"type":"EntityID","optional":true},{"name":"linear_power_pole_line","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"match_type_only","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"quality","order":7,"description":"","override":false,"type":"QualityID","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"build-entity"},"optional":false}]},{"name":"BuildMode","order":78,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"normal","description":""},{"complex_type":"literal","value":"forced","description":""},{"complex_type":"literal","value":"superforced","description":""}],"full_format":true}},{"name":"BulkInserterCapacityBonusModifier","order":79,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"bulk-inserter-capacity-bonus"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"BurnerEnergySource","order":80,"description":"","parent":"BaseEnergySource","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"burner_usage","order":6,"description":"","override":false,"type":"BurnerUsageID","optional":true,"default":{"complex_type":"literal","value":"fuel"}},{"name":"burnt_inventory_size","order":2,"description":"","override":false,"type":"ItemStackIndex","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"effectivity","order":5,"description":"`1` means 100% effectivity. Must be greater than `0`. Multiplier of the energy output.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"fuel_categories","order":7,"description":"The energy source can be used with fuel from these [fuel categories](prototype:FuelCategory).","override":false,"type":{"complex_type":"array","value":"FuelCategoryID"},"optional":true,"default":"`{\"chemical\"}`"},{"name":"fuel_inventory_size","order":1,"description":"","override":false,"type":"ItemStackIndex","optional":false},{"name":"initial_fuel","order":8,"description":"","override":false,"type":"ItemID","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"initial_fuel_percent","order":9,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.25}},{"name":"light_flicker","order":4,"description":"","override":false,"type":"LightFlickeringDefinition","optional":true},{"name":"smoke","order":3,"description":"","override":false,"type":{"complex_type":"array","value":"SmokeSource"},"optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"burner"},"optional":false}]},{"name":"BurnerUsageID","order":81,"description":"The name of a [BurnerUsagePrototype](prototype:BurnerUsagePrototype).","examples":["```\n\"fuel\"\n```","```\n\"food\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"ButtonStyleSpecification","order":82,"description":"","parent":"StyleWithClickableGraphicalSetSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"clicked_font_color","order":4,"description":"","override":false,"type":"Color","optional":true},{"name":"clicked_vertical_offset","order":11,"description":"","override":false,"type":"uint32","optional":true},{"name":"default_font_color","order":2,"description":"","override":false,"type":"Color","optional":true},{"name":"disabled_font_color","order":5,"description":"","override":false,"type":"Color","optional":true},{"name":"draw_grayscale_picture","order":13,"description":"","override":false,"type":"boolean","optional":true},{"name":"draw_shadow_under_picture","order":12,"description":"","override":false,"type":"boolean","optional":true},{"name":"font","order":1,"description":"Name of a [FontPrototype](prototype:FontPrototype).","override":false,"type":"string","optional":true},{"name":"hovered_font_color","order":3,"description":"","override":false,"type":"Color","optional":true},{"name":"icon_horizontal_align","order":16,"description":"","override":false,"type":"HorizontalAlign","optional":true},{"name":"invert_colors_of_picture_when_disabled","order":15,"description":"","override":false,"type":"boolean","optional":true},{"name":"invert_colors_of_picture_when_hovered_or_toggled","order":14,"description":"","override":false,"type":"boolean","optional":true},{"name":"pie_progress_color","order":10,"description":"","override":false,"type":"Color","optional":true},{"name":"selected_clicked_font_color","order":8,"description":"","override":false,"type":"Color","optional":true},{"name":"selected_font_color","order":6,"description":"","override":false,"type":"Color","optional":true},{"name":"selected_hovered_font_color","order":7,"description":"","override":false,"type":"Color","optional":true},{"name":"strikethrough_color","order":9,"description":"","override":false,"type":"Color","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"button_style"},"optional":false}]},{"name":"CameraEffectTriggerEffectItem","order":83,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"delay","order":4,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"duration","order":1,"description":"","override":false,"type":"uint8","optional":false},{"name":"ease_in_duration","order":2,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"ease_out_duration","order":3,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"full_strength_max_distance","order":5,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"max_distance","order":6,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"strength","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"camera-effect"},"optional":false}]},{"name":"CameraStyleSpecification","order":84,"description":"","parent":"EmptyWidgetStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":true,"type":{"complex_type":"literal","value":"camera_style"},"optional":false}]},{"name":"CapsuleAction","order":85,"description":"Loaded as one of the capsule actions, based on the value of the `type` key.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"ThrowCapsuleAction","description":"Loaded when the `type` is `\"throw\"`."},{"complex_type":"type","value":"ActivateEquipmentCapsuleAction","description":"Loaded when the `type` is `\"equipment-remote\"`."},{"complex_type":"type","value":"UseOnSelfCapsuleAction","description":"Loaded when the `type` is `\"use-on-self\"`."},{"complex_type":"type","value":"DestroyCliffsCapsuleAction","description":"Loaded when the `type` is `\"destroy-cliffs\"`."},{"complex_type":"type","value":"ArtilleryRemoteCapsuleAction","description":"Loaded when the `type` is `\"artillery-remote\"`."}],"full_format":true}},{"name":"CaptureSpawnerTechnologyTrigger","order":86,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"entity","order":1,"description":"","override":false,"type":"EntityID","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"capture-spawner"},"optional":false}]},{"name":"CargoBayConnectableGraphicsSet","order":87,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation","order":1,"description":"","override":false,"type":"Animation","optional":true},{"name":"animation_render_layer","order":2,"description":"","override":false,"type":"RenderLayer","optional":true,"default":"object"},{"name":"connections","order":3,"description":"","override":false,"type":"CargoBayConnections","optional":true},{"name":"picture","order":0,"description":"","override":false,"type":"LayeredSprite","optional":true},{"name":"water_reflection","order":4,"description":"Only loaded if this graphics set is used in a property called `graphics_set`, refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"CargoBayConnections","order":88,"description":"Walls should have an even number of variations because they are interleaved.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"bottom_left_inner_corner","order":10,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"bottom_left_outer_corner","order":6,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"bottom_right_inner_corner","order":11,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"bottom_right_outer_corner","order":7,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"bottom_wall","order":2,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"bridge_crossing","order":16,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"bridge_horizontal_narrow","order":12,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"bridge_horizontal_wide","order":13,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"bridge_vertical_narrow","order":14,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"bridge_vertical_wide","order":15,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"left_wall","order":3,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"right_wall","order":1,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"top_left_inner_corner","order":8,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"top_left_outer_corner","order":4,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"top_right_inner_corner","order":9,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"top_right_outer_corner","order":5,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true},{"name":"top_wall","order":0,"description":"","override":false,"type":"LayeredSpriteVariations","optional":true}]},{"name":"CargoHatchDefinition","order":89,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"busy_timeout_ticks","order":8,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":120}},{"name":"cargo_unit_entity_to_spawn","order":12,"description":"","override":false,"type":"EntityID","optional":true},{"name":"closing_sound","order":11,"description":"Cannot use `fade_ticks`.","override":false,"type":"InterruptibleSound","optional":true},{"name":"entering_render_layer","order":2,"description":"render layer for objects entering the hatch.","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"cargo-hatch"}},{"name":"hatch_graphics","order":0,"description":"","override":false,"type":"Animation","optional":true},{"name":"hatch_opening_ticks","order":9,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":80}},{"name":"hatch_render_layer","order":1,"description":"render layer for the hatch itself.","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"cargo-hatch"}},{"name":"illumination_graphic_index","order":13,"description":"[ProcessionGraphic](prototype:ProcessionGraphic) index pointing to the [ProcessionGraphicCatalogue](prototype:ProcessionGraphicCatalogue) inside the current [SpaceLocationPrototype](prototype:SpaceLocationPrototype).","override":false,"type":"uint32","optional":true,"default":"MAX_UINT32"},{"name":"offset","order":3,"description":"","override":false,"type":"Vector","optional":true,"default":"`{0, 0}`"},{"name":"opening_sound","order":10,"description":"Cannot use `fade_ticks`.","override":false,"type":"InterruptibleSound","optional":true},{"name":"pod_shadow_offset","order":4,"description":"","override":false,"type":"Vector","optional":true,"default":"`{0, 0}`"},{"name":"receiving_cargo_units","order":14,"description":"","override":false,"type":{"complex_type":"array","value":"EntityID"},"optional":true},{"name":"sky_slice_height","order":5,"description":"y height relative to hatch position where the pod art gets clipped from sky to regular sorting layer.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":-1.0}},{"name":"slice_height","order":6,"description":"y height relative to hatch position where the pod art gets cut off.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"travel_height","order":7,"description":"y height relative to hatch position where the pod travels to during preparing and parking.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}}]},{"name":"CargoLandingPadLimitModifier","order":90,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"cargo-landing-pad-count"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CargoStationParameters","order":91,"description":"A cargo station is any entity that has the capacity to send cargo units. In Space Age those are [RocketSiloPrototype](prototype:RocketSiloPrototype), [SpacePlatformHubPrototype](prototype:SpacePlatformHubPrototype) and [CargoLandingPadPrototype](prototype:CargoLandingPadPrototype). [Cargo bays](prototype:CargoBayPrototype) may provide additional cargo hatches to cargo stations which are cargo bay connectable.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"giga_hatch_definitions","order":2,"description":"Big additional hatch that goes over the actual hatches.","override":false,"type":{"complex_type":"array","value":"GigaCargoHatchDefinition"},"optional":true},{"name":"hatch_definitions","order":1,"description":"","override":false,"type":{"complex_type":"array","value":"CargoHatchDefinition"},"optional":true},{"name":"is_input_station","order":3,"description":"If set to false, this station will not accept incoming cargo units even if it has hatches that can. (can occur through linked cargo bays)","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"is_output_station","order":4,"description":"If set to false, this station will not dispatch cargo units even if it has hatches that can. (can occur through linked cargo bays)","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"prefer_packed_cargo_units","order":0,"description":"Packed cargo units will wait for the full order to be completed. This is useful to save rockets in rocket silos when items trickle in slowly. The platform hub has immediate access to items so false is better to allow partial fulfillments.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"ChainTriggerDelivery","order":92,"description":"","parent":"TriggerDeliveryItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"chain","order":1,"description":"","override":false,"type":"ActiveTriggerID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"chain"},"optional":false}]},{"name":"ChangeRecipeProductivityModifier","order":93,"description":"","parent":"BaseModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"change","order":3,"description":"","override":false,"type":"EffectValue","optional":false},{"name":"recipe","order":2,"description":"","override":false,"type":"RecipeID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"change-recipe-productivity"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"ChangeSurfaceTipTrigger","order":94,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"surface","order":1,"description":"","override":false,"type":"string","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"change-surface"},"optional":false}]},{"name":"CharacterArmorAnimation","order":95,"description":"The data for one variation of [character animations](prototype:CharacterPrototype::animations).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"armors","order":12,"description":"The names of the armors this animation data is used for. Don't define this if you want the animations to be used for the player without armor.","override":false,"type":{"complex_type":"array","value":"ItemID"},"optional":true},{"name":"extra_smoke_cycles_per_tile","order":15,"description":"Will be clamped to range [0, 1000]. When the character is flying, each [SmokeSource](prototype:SmokeSource) in `smoke_in_air` will generate `extra_smoke_cycles_per_tile` * [SmokeSource::frequency](prototype:SmokeSource::frequency) additional smokes per tile moved.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"flipped_shadow_running_with_gun","order":5,"description":"flipped_shadow_running_with_gun must be nil or contain exactly 18 directions, so all of the combination of gun direction and moving direction can be covered. Some of these variations are used in reverse to save space. You can use the character animation in the base game for reference. `flipped_shadow_running_with_gun` has to have same frame count as `running_with_gun`.","override":false,"type":"RotatedAnimation","optional":true},{"name":"flying","order":8,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"flying_with_gun","order":9,"description":"Must contain exactly 18 or 40 directions, so all of the combination of gun direction and moving direction can be covered. Some of these variations are used in reverse to save space. You can use the character animation in the base game for reference.","override":false,"type":"RotatedAnimation","optional":true},{"name":"idle","order":0,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"idle_in_air","order":6,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"idle_with_gun","order":1,"description":"","override":false,"type":"RotatedAnimation","optional":false},{"name":"idle_with_gun_in_air","order":7,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"landing","order":11,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"mining_with_tool","order":4,"description":"","override":false,"type":"RotatedAnimation","optional":false},{"name":"mining_with_tool_particles_animation_positions","order":16,"description":"List of positions in the mining with tool animation when the mining sound and mining particles are created.\n\nOverrides [CharacterPrototype::mining_with_tool_particles_animation_positions](prototype:CharacterPrototype::mining_with_tool_particles_animation_positions) if defined","override":false,"type":{"complex_type":"array","value":"float"},"optional":true},{"name":"running","order":2,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"running_with_gun","order":3,"description":"Must contain exactly 18 or 40 directions, so all of the combination of gun direction and moving direction can be covered. Some of these variations are used in reverse to save space. You can use the character animation in the base game for reference.","override":false,"type":"RotatedAnimation","optional":false},{"name":"smoke_cycles_per_tick","order":14,"description":"Will be clamped to range [0, 1000]. When the character is flying, each [SmokeSource](prototype:SmokeSource) in `smoke_in_air` will generate `smoke_cycles_per_tick` * [SmokeSource::frequency](prototype:SmokeSource::frequency) smokes per tick on average.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"smoke_in_air","order":13,"description":"Smoke generator for when in air.","override":false,"type":{"complex_type":"array","value":"SmokeSource"},"optional":true},{"name":"take_off","order":10,"description":"","override":false,"type":"RotatedAnimation","optional":true}]},{"name":"CharacterBuildDistanceModifier","order":96,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-build-distance"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CharacterCraftingSpeedModifier","order":97,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-crafting-speed"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CharacterHealthBonusModifier","order":98,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-health-bonus"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CharacterInventorySlotsBonusModifier","order":99,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-inventory-slots-bonus"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CharacterItemDropDistanceModifier","order":100,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-item-drop-distance"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CharacterItemPickupDistanceModifier","order":101,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-item-pickup-distance"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CharacterLogisticRequestsModifier","order":102,"description":"","parent":"BoolModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-logistic-requests"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"CharacterLogisticTrashSlotsModifier","order":103,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-logistic-trash-slots"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CharacterLootPickupDistanceModifier","order":104,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-loot-pickup-distance"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CharacterMiningSpeedModifier","order":105,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-mining-speed"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CharacterReachDistanceModifier","order":106,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-reach-distance"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CharacterResourceReachDistanceModifier","order":107,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-resource-reach-distance"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"CharacterRunningSpeedModifier","order":108,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"character-running-speed"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"ChargableGraphics","order":109,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"charge_animation","order":1,"description":"","override":false,"type":"Animation","optional":true},{"name":"charge_animation_is_looped","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"charge_cooldown","order":4,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"charge_light","order":3,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"discharge_animation","order":5,"description":"","override":false,"type":"Animation","optional":true},{"name":"discharge_cooldown","order":7,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"discharge_light","order":6,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"picture","order":0,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"ChartUtilityConstants","order":110,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"artillery_range_color","order":10,"description":"","override":false,"type":"Color","optional":false},{"name":"blue_signal_color","order":29,"description":"","override":false,"type":"Color","optional":false},{"name":"chart_construction_robot_color","order":40,"description":"","override":false,"type":"Color","optional":false},{"name":"chart_deconstruct_active_color","order":32,"description":"","override":false,"type":"Color","optional":false},{"name":"chart_deconstruct_tint","order":31,"description":"","override":false,"type":"Color","optional":false},{"name":"chart_delivery_to_me_logistic_robot_color","order":43,"description":"","override":false,"type":"Color","optional":false},{"name":"chart_logistic_robot_color","order":39,"description":"","override":false,"type":"Color","optional":false},{"name":"chart_mobile_construction_robot_color","order":41,"description":"","override":false,"type":"Color","optional":false},{"name":"chart_personal_construction_robot_color","order":42,"description":"","override":false,"type":"Color","optional":false},{"name":"chart_player_circle_size","order":45,"description":"","override":false,"type":"float","optional":false},{"name":"chart_train_stop_disabled_text_color","order":25,"description":"","override":false,"type":"Color","optional":false},{"name":"chart_train_stop_full_text_color","order":26,"description":"","override":false,"type":"Color","optional":false},{"name":"chart_train_stop_text_color","order":24,"description":"","override":false,"type":"Color","optional":false},{"name":"circuit_network_member_color","order":8,"description":"","override":false,"type":"Color","optional":false},{"name":"copper_wire_color","order":0,"description":"","override":false,"type":"Color","optional":false},{"name":"custom_tag_max_scale","order":47,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"custom_tag_scale","order":46,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"custom_tag_selected_overlay_tint","order":48,"description":"","override":false,"type":"Color","optional":true},{"name":"default_color_by_type","order":34,"description":"The strings are entity types.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"Color"},"optional":true},{"name":"default_enemy_color","order":12,"description":"","override":false,"type":"Color","optional":false},{"name":"default_enemy_territory_color","order":13,"description":"","override":false,"type":"Color","optional":false},{"name":"default_friendly_color","order":11,"description":"","override":false,"type":"Color","optional":false},{"name":"default_friendly_color_by_type","order":33,"description":"The strings are entity types.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"Color"},"optional":true},{"name":"disabled_switch_color","order":3,"description":"","override":false,"type":"Color","optional":false},{"name":"electric_line_minimum_absolute_width","order":5,"description":"","override":false,"type":"float","optional":false},{"name":"electric_line_width","order":4,"description":"","override":false,"type":"float","optional":false},{"name":"electric_power_pole_color","order":1,"description":"","override":false,"type":"Color","optional":false},{"name":"elevated_rail_color","order":15,"description":"","override":false,"type":"Color","optional":false},{"name":"enabled_switch_color","order":2,"description":"","override":false,"type":"Color","optional":false},{"name":"entity_ghost_color","order":17,"description":"","override":false,"type":"Color","optional":false},{"name":"explosion_visualization_duration","order":35,"description":"","override":false,"type":"MapTick","optional":false},{"name":"green_signal_color","order":28,"description":"","override":false,"type":"Color","optional":false},{"name":"green_wire_color","order":7,"description":"","override":false,"type":"Color","optional":false},{"name":"rail_color","order":14,"description":"","override":false,"type":"Color","optional":false},{"name":"rail_ramp_color","order":16,"description":"","override":false,"type":"Color","optional":false},{"name":"recipe_icon_scale","order":49,"description":"Must be larger than 0. This number is multiplied by the crafting machine's [radius](runtime:LuaEntityPrototype::radius) to get the final recipe icon scale for the chart.","override":false,"type":"float","optional":false},{"name":"red_signal_color","order":27,"description":"","override":false,"type":"Color","optional":false},{"name":"red_wire_color","order":6,"description":"","override":false,"type":"Color","optional":false},{"name":"resource_outline_selection_color","order":23,"description":"","override":false,"type":"Color","optional":false},{"name":"tile_ghost_color","order":18,"description":"","override":false,"type":"Color","optional":false},{"name":"train_current_path_outline_color","order":38,"description":"","override":false,"type":"Color","optional":false},{"name":"train_path_color","order":36,"description":"","override":false,"type":"Color","optional":false},{"name":"train_preview_path_outline_color","order":37,"description":"","override":false,"type":"Color","optional":false},{"name":"turret_range_color","order":9,"description":"","override":false,"type":"Color","optional":false},{"name":"vehicle_inner_color","order":21,"description":"","override":false,"type":"Color","optional":false},{"name":"vehicle_outer_color","order":19,"description":"","override":false,"type":"Color","optional":false},{"name":"vehicle_outer_color_selected","order":20,"description":"","override":false,"type":"Color","optional":false},{"name":"vehicle_wagon_connection_color","order":22,"description":"","override":false,"type":"Color","optional":false},{"name":"yellow_signal_color","order":30,"description":"","override":false,"type":"Color","optional":false},{"name":"zoom_threshold_to_draw_spider_path","order":44,"description":"","override":false,"type":"double","optional":false}]},{"name":"CheckBoxStyleSpecification","order":111,"description":"","parent":"StyleWithClickableGraphicalSetSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"checkmark","order":4,"description":"","override":false,"type":"Sprite","optional":true},{"name":"disabled_checkmark","order":5,"description":"","override":false,"type":"Sprite","optional":true},{"name":"disabled_font_color","order":3,"description":"","override":false,"type":"Color","optional":true},{"name":"font","order":1,"description":"Name of a [FontPrototype](prototype:FontPrototype).","override":false,"type":"string","optional":true},{"name":"font_color","order":2,"description":"","override":false,"type":"Color","optional":true},{"name":"intermediate_mark","order":6,"description":"","override":false,"type":"Sprite","optional":true},{"name":"text_padding","order":7,"description":"","override":false,"type":"uint32","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"checkbox_style"},"optional":false}]},{"name":"CircuitConditionConnector","order":112,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"comparator","order":1,"description":"","override":false,"type":"ComparatorString","optional":true,"default":{"complex_type":"literal","value":"<"}},{"name":"first","order":0,"description":"","override":false,"type":"SignalIDConnector","optional":true},{"name":"second","order":2,"description":"","override":false,"type":{"complex_type":"union","options":["SignalIDConnector","int32"],"full_format":false},"optional":true}]},{"name":"CircuitConnectorDefinition","order":113,"description":"Definition of a circuit connector.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"points","order":1,"description":"Defines how wires visually connect to this circuit connector.","override":false,"type":"WireConnectionPoint","optional":true},{"name":"sprites","order":0,"description":"The pictures displayed for circuit connector.","override":false,"type":"CircuitConnectorSprites","optional":true}]},{"name":"CircuitConnectorLayer","order":114,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"north","order":0,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"south","order":2,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"west","order":3,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}}]},{"name":"CircuitConnectorSecondaryDrawOrder","order":115,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":1,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":100}},{"name":"north","order":0,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":100}},{"name":"south","order":2,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":100}},{"name":"west","order":3,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":100}}]},{"name":"CircuitConnectorSprites","order":116,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"blue_led_light_offset","order":9,"description":"","override":false,"type":"Vector","optional":true},{"name":"connector_main","order":4,"description":"Drawn when the entity is connected to a circuit network or a logistic network.","override":false,"type":"Sprite","optional":true},{"name":"connector_shadow","order":5,"description":"Drawn when the entity is connected to a circuit network or a logistic network.","override":false,"type":"Sprite","optional":true},{"name":"led_blue","order":2,"description":"","override":false,"type":"Sprite","optional":false},{"name":"led_blue_off","order":8,"description":"","override":false,"type":"Sprite","optional":true},{"name":"led_green","order":1,"description":"","override":false,"type":"Sprite","optional":false},{"name":"led_light","order":3,"description":"","override":false,"type":"LightDefinition","optional":false},{"name":"led_red","order":0,"description":"","override":false,"type":"Sprite","optional":false},{"name":"red_green_led_light_offset","order":10,"description":"","override":false,"type":"Vector","optional":true},{"name":"wire_pins","order":6,"description":"Drawn when the entity is connected to a circuit network.","override":false,"type":"Sprite","optional":true},{"name":"wire_pins_shadow","order":7,"description":"Drawn when the entity is connected to a circuit network.","override":false,"type":"Sprite","optional":true}]},{"name":"CircuitNetworkModifier","order":117,"description":"","parent":"BoolModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"unlock-circuit-network"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"CircularParticleCreationSpecification","order":118,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"center","order":11,"description":"","override":false,"type":"Vector","optional":true,"default":{"complex_type":"literal","value":"`{0, 0}`"}},{"name":"creation_distance","order":12,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"creation_distance_orientation","order":13,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"direction","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.25}},{"name":"direction_deviation","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"height","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"height_deviation","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"name","order":0,"description":"","override":false,"type":"ParticleID","optional":false},{"name":"speed","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"speed_deviation","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"starting_frame_speed","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"starting_frame_speed_deviation","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"use_source_position","order":14,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"vertical_speed","order":9,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"vertical_speed_deviation","order":10,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"CircularProjectileCreationSpecification","order":119,"description":"","abstract":false,"inline":false,"type":{"complex_type":"array","value":{"complex_type":"tuple","values":["RealOrientation","Vector"]}}},{"name":"ClearCursorTipTrigger","order":120,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"clear-cursor"},"optional":false}]},{"name":"CliffDeconstructionEnabledModifier","order":121,"description":"","parent":"BoolModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"cliff-deconstruction-enabled"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"CliffPlacementSettings","order":122,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"cliff_elevation_0","order":2,"description":"Elevation at which the first row of cliffs is placed. Can not be set from the map generation GUI.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"cliff_elevation_interval","order":3,"description":"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`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":40}},{"name":"cliff_smoothing","order":4,"description":"Smoothing makes cliffs straighter on rough elevation but makes placement inaccurate. 0 is no smoothing, 1 is full smoothing. Values outside of 0-1 are possible for specific effects but not recommended.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"control","order":1,"description":"Name of the [AutoplaceControl](prototype:AutoplaceControl).","override":false,"type":"AutoplaceControlID","optional":true},{"name":"name","order":0,"description":"Name of the [CliffPrototype](prototype:CliffPrototype).","override":false,"type":"EntityID","optional":true},{"name":"richness","order":5,"description":"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.","override":false,"type":"float","optional":true}]},{"name":"CloudEffectStyle","order":123,"description":"Additional mask which dictates where in the world certain [ProcessionLayers](prototype:ProcessionLayer) are drawn. Origin determined by [EffectRelativeTo](prototype:EffectRelativeTo).","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"none","description":"No mask."},{"complex_type":"literal","value":"euclidean","description":"Only show within a circular radius around origin."},{"complex_type":"literal","value":"manhattan","description":"Only show within a square area around origin."},{"complex_type":"literal","value":"euclidean-outside","description":"Only show outside a circular radius around origin."},{"complex_type":"literal","value":"manhattan-outside","description":"Only show outside a square area around origin."},{"complex_type":"literal","value":"horizontal-stripe","description":"Manhattan, but only along y axis. Useful when you want a layer to occlude screen regardless of width."},{"complex_type":"literal","value":"texture","description":"Only show area covered by the 'effect_mask' texture."},{"complex_type":"literal","value":"texture-outside","description":"Show area covered by the 'effect_mask' texture and fill the rest of the screen."}],"full_format":true}},{"name":"CloudsEffectProperties","order":124,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"additional_density_sample","order":5,"description":"","override":false,"type":"CloudsTextureCoordinateTransformation","optional":false},{"name":"density","order":14,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"density_at_night","order":15,"description":"","override":false,"type":"float","optional":true,"default":"Value of `density`"},{"name":"detail_exponent","order":19,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"detail_factor","order":16,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.5}},{"name":"detail_factor_at_night","order":17,"description":"","override":false,"type":"float","optional":true,"default":"Value of `detail_factor`"},{"name":"detail_noise_texture","order":1,"description":"","override":false,"type":"EffectTexture","optional":false},{"name":"detail_sample_1","order":6,"description":"","override":false,"type":"CloudsTextureCoordinateTransformation","optional":false},{"name":"detail_sample_2","order":7,"description":"","override":false,"type":"CloudsTextureCoordinateTransformation","optional":false},{"name":"detail_sample_morph_duration","order":20,"description":"When set to 0, detail textures are not being \"morphed\" to each other, but lerped with ratio 0.5 instead.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":256}},{"name":"movement_speed_multiplier","order":9,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.75}},{"name":"opacity","order":12,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.25}},{"name":"opacity_at_night","order":13,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"scale","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"shape_factor","order":18,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":-1}},{"name":"shape_noise_texture","order":0,"description":"","override":false,"type":"EffectTexture","optional":false},{"name":"shape_warp_strength","order":10,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.06}},{"name":"shape_warp_weight","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.4}},{"name":"warp_sample_1","order":2,"description":"","override":false,"type":"CloudsTextureCoordinateTransformation","optional":false},{"name":"warp_sample_2","order":3,"description":"","override":false,"type":"CloudsTextureCoordinateTransformation","optional":false},{"name":"warped_shape_sample","order":4,"description":"","override":false,"type":"CloudsTextureCoordinateTransformation","optional":false}]},{"name":"CloudsTextureCoordinateTransformation","order":125,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"scale","order":0,"description":"","override":false,"type":"float","optional":false},{"name":"wind_speed_factor","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"ClusterTriggerItem","order":126,"description":"","parent":"TriggerItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"cluster_count","order":1,"description":"Must be at least `2`.","override":false,"type":"uint32","optional":false},{"name":"distance","order":2,"description":"","override":false,"type":"float","optional":false},{"name":"distance_deviation","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"cluster"},"optional":false}]},{"name":"CollisionLayerID","order":127,"description":"The name of a [CollisionLayerPrototype](prototype:CollisionLayerPrototype).","examples":["```\n\"meltable\"\n```","```\n\"floor\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"CollisionMaskConnector","order":128,"description":"The base game provides common collision mask functions in a Lua file in the core [lualib](https://github.com/wube/factorio-data/blob/master/core/lualib/collision-mask-util.lua).","examples":["```\n-- Most common collision mask of buildings:\ncollision_mask = {layers = {item = true, meltable = true, object = true, player = true, water_tile = true, is_object = true, is_lower_object = true}}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"colliding_with_tiles_only","order":3,"description":"Any prototype with this collision option will only be checked for collision with other prototype's collision masks if they are a tile.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"consider_tile_transitions","order":2,"description":"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.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"layers","order":0,"description":"Every key in the dictionary is the name of one [layer](prototype:CollisionLayerPrototype) the object collides with. The value is meaningless and always `true`. An empty table means that no layers are set.","override":false,"type":{"complex_type":"dictionary","key":"CollisionLayerID","value":{"complex_type":"literal","value":true}},"optional":false},{"name":"not_colliding_with_itself","order":1,"description":"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.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"Color","order":129,"description":"Table of red, green, blue, and alpha float values between 0 and 1. Alternatively, values can be from 0-255, they are interpreted as such if at least one value is `> 1`.\n\nColor allows the short-hand notation of passing an array of exactly 3 or 4 numbers. The array items are r, g, b and optionally a, in that order.\n\nThe game usually expects colors to be in pre-multiplied form (color channels are pre-multiplied by alpha).","examples":["```\ncolor = {r=1, g=0, b=0, a=1} -- red, full opacity\ncolor = {r=1} -- the same red, omitting default values\ncolor = {1, 0, 0, 1} -- also the same red\ncolor = {0, 0, 1} -- blue\ncolor = {r=0, g=0.5, b=0, a=0.5} -- half transparency green\ncolor = {} -- full opacity black\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["float","float","float"]},{"complex_type":"tuple","values":["float","float","float","float"]}],"full_format":false},"properties":[{"name":"a","order":3,"description":"alpha value (opacity)","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"b","order":2,"description":"blue value","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"g","order":1,"description":"green value","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"r","order":0,"description":"red value","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"ColorFilterData","order":130,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"localised_name","order":1,"description":"","override":false,"type":"LocalisedString","optional":false},{"name":"matrix","order":2,"description":"4 arrays of 4-length float arrays, essentially a 4x4 matrix.","override":false,"type":{"complex_type":"array","value":{"complex_type":"array","value":"float"}},"optional":false},{"name":"name","order":0,"description":"","override":false,"type":"string","optional":false}]},{"name":"ColorHintSpecification","order":131,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"text","order":0,"description":"","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"text_color","order":1,"description":"","override":false,"type":"Color","optional":true}]},{"name":"ColorLookupTable","order":132,"description":"A lookup table (LUT) for the color which maps the original color to a position in the sprite where the replacement color is found. The file pointed to by the filename must be a sprite of size 256\u00d716.","examples":["```\n\"identity\"\n```","```\n\"__core__/graphics/color_luts/frozen.png\"\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":["FileName",{"complex_type":"literal","value":"identity"}],"full_format":false}},{"name":"ColumnAlignment","order":133,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"alignment","order":1,"description":"","override":false,"type":"Alignment","optional":false},{"name":"column","order":0,"description":"Column index.","override":false,"type":"uint32","optional":false}]},{"name":"ColumnWidth","order":134,"description":"","parent":"ColumnWidthItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"column","order":0,"description":"Column index.","override":false,"type":"uint32","optional":false}]},{"name":"ColumnWidthItem","order":135,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"maximal_width","order":1,"description":"","override":false,"type":"int32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"minimal_width","order":0,"description":"","override":false,"type":"int32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"width","order":2,"description":"Sets `minimal_width` and `maximal_width` to the same value.","override":false,"type":"int32","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"ComparatorString","order":136,"description":"A string that specifies how the inputs should be compared.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"=","description":"\"equal to\""},{"complex_type":"literal","value":">","description":"\"greater than\""},{"complex_type":"literal","value":"<","description":"\"lesser than\""},{"complex_type":"literal","value":"\u2265","description":"\"greater than or equal to\""},{"complex_type":"literal","value":">=","description":"\"greater than or equal to\""},{"complex_type":"literal","value":"\u2264","description":"\"lesser than or equal to\""},{"complex_type":"literal","value":"<=","description":"\"lesser than or equal to\""},{"complex_type":"literal","value":"\u2260","description":"\"not equal to\""},{"complex_type":"literal","value":"!=","description":"\"not equal to\""}],"full_format":true}},{"name":"ConnectableEntityGraphics","order":137,"description":"Graphics for the heat pipe.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"corner_left_down","order":4,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"corner_left_up","order":6,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"corner_right_down","order":3,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"corner_right_up","order":5,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"cross","order":15,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"ending_down","order":13,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"ending_left","order":14,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"ending_right","order":12,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"ending_up","order":11,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"single","order":0,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"straight_horizontal","order":2,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"straight_vertical","order":1,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"t_down","order":9,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"t_left","order":10,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"t_right","order":8,"description":"","override":false,"type":"SpriteVariations","optional":false},{"name":"t_up","order":7,"description":"","override":false,"type":"SpriteVariations","optional":false}]},{"name":"ConsumingType","order":138,"description":"Defines which other inputs a [CustomInputPrototype](prototype:CustomInputPrototype) consumes.","examples":["```\nconsuming = \"none\"\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"none","description":"The associated script event will fire when satisfied and pass through to normal game events."},{"complex_type":"literal","value":"game-only","description":"The associated script event will fire when satisfied and block game events that conflict with the key sequence. Actions that are processed regardless of game paused state cannot be blocked."}],"full_format":true}},{"name":"ControlPoint","order":139,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["float","float"]}],"full_format":false},"properties":[{"name":"control","order":0,"description":"","override":false,"type":"float","optional":false},{"name":"volume_percentage","order":1,"description":"Has to be in range (0.0, 100.0).","override":false,"type":"float","optional":false}]},{"name":"CountBasedTipTrigger","order":140,"description":"","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count","order":0,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"CoverGraphicEffectData","order":141,"description":"Clips the CoverGraphicProcessionLayer.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"distance_traveled_strength","order":2,"description":"How much the pod's distance traveled moves the effect","override":false,"type":"Vector","optional":true,"default":"{0,0}"},{"name":"pod_movement_strength","order":3,"description":"How much the pod's position moves the effect","override":false,"type":"Vector","optional":true,"default":"{0,0}"},{"name":"relative_to","order":1,"description":"Where the effect mask is centered.","override":false,"type":"EffectRelativeTo","optional":true,"default":{"complex_type":"literal","value":"pod"}},{"name":"style","order":0,"description":"","override":false,"type":"CloudEffectStyle","optional":true,"default":{"complex_type":"literal","value":"none"}}]},{"name":"CoverGraphicProcessionLayer","order":142,"description":"Draws a layer of cloud texture covering the screen. It can fade in an out based on opacity and using the picture mask as gradient of areas which fade in soon or later.\n\nThere are two important concepts to understand:\n\n- `mask` refers to something like a depth texture. It is applied across the whole screen and determines how the entire graphic fades in and out.\n\n- `effect` in this context refers to clipping out portion of the cover graphic. It can use an effect_graphic. `is_cloud_effect_advanced` makes the `effect` modify opacity threshold of the `mask` rather than multiplying alpha.\n\nAdditionally an area can be masked out by range or effect mask.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"alt_effect","order":16,"description":"Clips the graphic.","override":false,"type":"CoverGraphicEffectData","optional":true},{"name":"distance_traveled_strength","order":12,"description":"How much the pod's distance traveled moves the cloud coordinates","override":false,"type":"Vector","optional":true,"default":"{0,0}"},{"name":"effect","order":15,"description":"Clips the graphic.","override":false,"type":"CoverGraphicEffectData","optional":true},{"name":"effect_graphic","order":5,"description":"Used by certain effects.","override":false,"type":"ProcessionGraphic","optional":true},{"name":"frames","order":17,"description":"Default values if unspecified:\n\n- opacity : 1.0\n\n- rotation : 0.0\n\n- effect_scale_min : 0.0\n\n- effect_scale_max : 1.0\n\n- effect_shift : {0, 0}\n\n- alt_effect_scale_min : 0.0\n\n- alt_effect_scale_max : 1.0\n\n- alt_effect_shift : {0, 0}\n\n- offset : {0, 0}","override":false,"type":{"complex_type":"array","value":"CoverGraphicProcessionLayerBezierControlPoint"},"optional":false},{"name":"graphic","order":3,"description":"Main texture of the layer.","override":false,"type":"ProcessionGraphic","optional":true},{"name":"inherit_from","order":2,"description":"Adds the final position value from given layer to this one.","override":false,"type":"ProcessionLayerInheritanceGroupID","optional":true},{"name":"is_cloud_effect_advanced","order":8,"description":"Advanced cloud effect mask modifies the regular mask thresholds instead of being a flat multiplication of the resulting opacity.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"is_quad_texture","order":9,"description":"The texture and mask are interpreted as four smaller textures that are randomly tiled.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"mask_graphic","order":4,"description":"Opacity gradient of the layer.","override":false,"type":"ProcessionGraphic","optional":true},{"name":"pod_movement_strength","order":13,"description":"How much the pod's position moves the cloud coordinates","override":false,"type":"Vector","optional":true,"default":"{1,1}"},{"name":"reference_group","order":1,"description":"The group this layer belongs to, for inheritance.","override":false,"type":"ProcessionLayerInheritanceGroupID","optional":true},{"name":"render_layer","order":6,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"rotate_with_pod","order":10,"description":"Add rotation of the pod to the cloud rotation.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"secondary_draw_order","order":7,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"texture_relative_to","order":11,"description":"Where the tiled texture is centered and rotated.","override":false,"type":"EffectRelativeTo","optional":true,"default":{"complex_type":"literal","value":"ground-origin"}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"cover-graphic"},"optional":false},{"name":"world_size","order":14,"description":"Size the textures are scaled to in the world.","override":false,"type":"Vector","optional":true,"default":"{512, 512}"}]},{"name":"CoverGraphicProcessionLayerBezierControlPoint","order":143,"description":"One frame in time for a Bezier interpolation.","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"alt_effect_scale_max","order":11,"description":"`alt_effect_scale_max` and `alt_effect_scale_max_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true},{"name":"alt_effect_scale_max_t","order":12,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"alt_effect_scale_min","order":9,"description":"`alt_effect_scale_min` and `alt_effect_scale_min_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true},{"name":"alt_effect_scale_min_t","order":10,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"alt_effect_shift","order":17,"description":"`alt_effect_shift` and `alt_effect_shift_t` interpolate a vector smoothly over time using `alt_effect_shift_rate` and `alt_effect_shift_rate_t` for a 0-1 rate curve.\n\nVector value.","override":false,"type":"Vector","optional":true},{"name":"alt_effect_shift_rate","order":19,"description":"Rate 0-1 value.","override":false,"type":"double","optional":true},{"name":"alt_effect_shift_rate_t","order":20,"description":"Rate tangent.","override":false,"type":"double","optional":true},{"name":"alt_effect_shift_t","order":18,"description":"Vector tangent.","override":false,"type":"Vector","optional":true},{"name":"effect_scale_max","order":7,"description":"`effect_scale_max` and `effect_scale_max_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true},{"name":"effect_scale_max_t","order":8,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"effect_scale_min","order":5,"description":"`effect_scale_min` and `effect_scale_min_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true},{"name":"effect_scale_min_t","order":6,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"effect_shift","order":13,"description":"`effect_shift` and `effect_shift_t` interpolate a vector smoothly over time using `effect_shift_rate` and `effect_shift_rate_t` for a 0-1 rate curve.\n\nVector value.","override":false,"type":"Vector","optional":true},{"name":"effect_shift_rate","order":15,"description":"Rate 0-1 value.","override":false,"type":"double","optional":true},{"name":"effect_shift_rate_t","order":16,"description":"Rate tangent.","override":false,"type":"double","optional":true},{"name":"effect_shift_t","order":14,"description":"Vector tangent.","override":false,"type":"Vector","optional":true},{"name":"offset","order":21,"description":"`offset` and `offset_t` interpolate a vector smoothly over time using `offset_rate` and `offset_rate_t` for a 0-1 rate curve.\n\nVector value.","override":false,"type":"Vector","optional":true},{"name":"offset_rate","order":23,"description":"Rate 0-1 value.","override":false,"type":"double","optional":true},{"name":"offset_rate_t","order":24,"description":"Rate tangent.","override":false,"type":"double","optional":true},{"name":"offset_t","order":22,"description":"Vector tangent.","override":false,"type":"Vector","optional":true},{"name":"opacity","order":1,"description":"`opacity` and `opacity_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true},{"name":"opacity_t","order":2,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"rotation","order":3,"description":"`rotation` and `rotation_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true},{"name":"rotation_t","order":4,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"timestamp","order":0,"description":"Mandatory if `opacity` or `rotation` or `effect_scale_min` or `effect_scale_max` is defined.","override":false,"type":"MapTick","optional":true}]},{"name":"CraftFluidTechnologyTrigger","order":144,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"amount","order":2,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"fluid","order":1,"description":"","override":false,"type":"FluidID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"craft-fluid"},"optional":false}]},{"name":"CraftItemTechnologyTrigger","order":145,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count","order":2,"description":"","override":false,"type":"ItemCountType","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"item","order":1,"description":"","override":false,"type":"ItemIDFilter","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"craft-item"},"optional":false}]},{"name":"CraftItemTipTrigger","order":146,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"consecutive","order":3,"description":"Can only be used when `event_type` is `\"crafting-finished\"`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"event_type","order":2,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"crafting-of-single-item-ordered","description":""},{"complex_type":"literal","value":"crafting-of-multiple-items-ordered","description":""},{"complex_type":"literal","value":"crafting-finished","description":""}],"full_format":true},"optional":false},{"name":"item","order":1,"description":"","override":false,"type":"ItemID","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"craft-item"},"optional":false}]},{"name":"CraftingMachineGraphicsSet","order":147,"description":"","parent":"WorkingVisualisations","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation_progress","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"circuit_connector_layer","order":1,"description":"Render layer(s) for all directions of the circuit connectors.","override":false,"type":{"complex_type":"union","options":["RenderLayer","CircuitConnectorLayer"],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"circuit_connector_secondary_draw_order","order":2,"description":"Secondary draw order(s) for all directions of the circuit connectors.","override":false,"type":{"complex_type":"union","options":["int8","CircuitConnectorSecondaryDrawOrder"],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":100}},{"name":"frozen_patch","order":0,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"reset_animation_when_frozen","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"water_reflection","order":5,"description":"Only loaded if this graphics set is used in a property called `graphics_set`, refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"CranePart","order":148,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"allow_sprite_rotation","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"dying_effect","order":9,"description":"","override":false,"type":"CranePartDyingEffect","optional":true},{"name":"extendable_length","order":13,"description":"","override":false,"type":"Vector3D","optional":true},{"name":"extendable_length_grappler","order":15,"description":"","override":false,"type":"Vector3D","optional":true},{"name":"is_contractible_by_cropping","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"layer","order":22,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"name","order":8,"description":"","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"orientation_shift","order":0,"description":"Angle in radian, which is internally converted to a [RealOrientation](prototype:RealOrientation).","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"relative_position","order":10,"description":"","override":false,"type":"Vector3D","optional":true},{"name":"relative_position_grappler","order":11,"description":"","override":false,"type":"Vector3D","optional":true},{"name":"rotated_sprite","order":17,"description":"Only loaded if `sprite` is not defined.","override":false,"type":"RotatedSprite","optional":true},{"name":"rotated_sprite_reflection","order":21,"description":"Only loaded if `sprite_reflection` is not defined.","override":false,"type":"RotatedSprite","optional":true},{"name":"rotated_sprite_shadow","order":19,"description":"Only loaded if `sprite_shadow` is not defined.","override":false,"type":"RotatedSprite","optional":true},{"name":"scale_to_fit_model","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"should_scale_for_perspective","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"snap_end","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"snap_end_arm_extent_multiplier","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"snap_start","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"sprite","order":16,"description":"","override":false,"type":"Sprite","optional":true},{"name":"sprite_reflection","order":20,"description":"","override":false,"type":"Sprite","optional":true},{"name":"sprite_shadow","order":18,"description":"","override":false,"type":"Sprite","optional":true},{"name":"static_length","order":12,"description":"","override":false,"type":"Vector3D","optional":true},{"name":"static_length_grappler","order":14,"description":"","override":false,"type":"Vector3D","optional":true}]},{"name":"CranePartDyingEffect","order":149,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"explosion","order":3,"description":"","override":false,"type":"ExplosionDefinition","optional":true},{"name":"explosion_linear_distance_step","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"particle_effect_linear_distance_step","order":0,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.25}},{"name":"particle_effects","order":2,"description":"","override":false,"type":{"complex_type":"union","options":["CreateParticleTriggerEffectItem",{"complex_type":"array","value":"CreateParticleTriggerEffectItem"}],"full_format":false},"optional":true}]},{"name":"CraterPlacementDefinition","order":150,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"minimum_segments_to_place","order":0,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"segment_probability","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"segments","order":2,"description":"","override":false,"type":{"complex_type":"array","value":"CraterSegment"},"optional":false}]},{"name":"CraterSegment","order":151,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"offset","order":1,"description":"","override":false,"type":"Vector","optional":false},{"name":"orientation","order":0,"description":"","override":false,"type":"float","optional":false}]},{"name":"CreateAsteroidChunkEffectItem","order":152,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"asteroid_name","order":1,"description":"","override":false,"type":"AsteroidChunkID","optional":false},{"name":"offset_deviation","order":2,"description":"","override":false,"type":"BoundingBox","optional":true},{"name":"offsets","order":3,"description":"","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"create-asteroid-chunk"},"optional":false}]},{"name":"CreateDecorativesTriggerEffectItem","order":153,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"apply_projection","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"decorative","order":1,"description":"","override":false,"type":"DecorativeID","optional":false},{"name":"radius_curve","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"spawn_max","order":2,"description":"","override":false,"type":"uint16","optional":false},{"name":"spawn_max_radius","order":4,"description":"Must be less than 24.","override":false,"type":"float","optional":false},{"name":"spawn_min","order":5,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"spawn_min_radius","order":3,"description":"","override":false,"type":"float","optional":false},{"name":"spread_evenly","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"create-decorative"},"optional":false}]},{"name":"CreateEntityTriggerEffectItem","order":154,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"abort_if_over_space","order":12,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"as_enemy","order":9,"description":"If true, creates the entity as a member of the enemy force. If the surface.no_enemies_mode is true, the entity will not be created.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"check_buildability","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"entity_name","order":1,"description":"The name of the entity that should be created.","override":false,"type":"EntityID","optional":false},{"name":"find_non_colliding_position","order":11,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"ignore_no_enemies_mode","order":10,"description":"If true and `as_enemy` is true, allows the entity to be created even if the current surface.no_enemies_mode is true.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"non_colliding_fail_result","order":15,"description":"Only loaded if `find_non_colliding_position` is defined.","override":false,"type":"Trigger","optional":true},{"name":"non_colliding_search_precision","order":14,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.2}},{"name":"non_colliding_search_radius","order":13,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":5}},{"name":"offset_deviation","order":2,"description":"","override":false,"type":"BoundingBox","optional":true},{"name":"offsets","order":8,"description":"If multiple offsets are specified, multiple entities are created. The projectile of the [Distractor capsule](https://wiki.factorio.com/Distractor_capsule) uses this property to spawn three Distractors.","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":true},{"name":"only_when_visible","order":6,"description":"Create the entity only when they are within a 200 tile range of any connected player.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"protected","order":16,"description":"The result entity will be protected from automated attacks of enemies.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"show_in_tooltip","order":5,"description":"","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"tile_collision_mask","order":7,"description":"Entity creation will not occur if any tile matches the collision condition. Defaults to no collisions.","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"trigger_created_entity","order":3,"description":"If `true`, the [on_trigger_created_entity](runtime:on_trigger_created_entity) event will be raised.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"create-entity"},"optional":false}]},{"name":"CreateExplosionTriggerEffectItem","order":155,"description":"","parent":"CreateEntityTriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"cycle_while_moving","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"inherit_movement_distance_from_projectile","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"max_movement_distance","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":-1}},{"name":"max_movement_distance_deviation","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"type","order":0,"description":"","override":true,"type":{"complex_type":"literal","value":"create-explosion"},"optional":false}]},{"name":"CreateFireTriggerEffectItem","order":156,"description":"","parent":"CreateEntityTriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"initial_ground_flame_count","order":1,"description":"","override":false,"type":"uint8","optional":true,"default":"MAX_UINT8"},{"name":"type","order":0,"description":"","override":true,"type":{"complex_type":"literal","value":"create-fire"},"optional":false}]},{"name":"CreateGhostOnEntityDeathModifier","order":157,"description":"","parent":"BoolModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"create-ghost-on-entity-death"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"CreateParticleTriggerEffectItem","order":158,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"apply_tile_tint","order":20,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"primary"},{"complex_type":"literal","value":"secondary"}],"full_format":false},"optional":true},{"name":"frame_speed","order":12,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"frame_speed_deviation","order":13,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"initial_height","order":2,"description":"","override":false,"type":"float","optional":false},{"name":"initial_height_deviation","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"initial_vertical_speed","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"initial_vertical_speed_deviation","order":9,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"movement_multiplier","order":14,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"offset_deviation","order":3,"description":"","override":false,"type":"SimpleBoundingBox","optional":true},{"name":"offsets","order":6,"description":"","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":true},{"name":"only_when_visible","order":19,"description":"Create the particle only when they are within a 200 tile range of any connected player.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"particle_name","order":1,"description":"","override":false,"type":"ParticleID","optional":false},{"name":"rotate_offsets","order":18,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"show_in_tooltip","order":4,"description":"","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"speed_from_center","order":10,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"speed_from_center_deviation","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"tail_length","order":15,"description":"Silently capped to a maximum of 100.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"tail_length_deviation","order":16,"description":"Silently capped to a maximum of 100.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"tail_width","order":17,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"tile_collision_mask","order":5,"description":"","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"tint","order":21,"description":"Only loaded if `apply_tile_tint` is not defined.","override":false,"type":"Color","optional":true,"default":"`{1, 1, 1, 1} (white)`"},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"create-particle"},"optional":false}]},{"name":"CreateSmokeTriggerEffectItem","order":159,"description":"","parent":"CreateEntityTriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"initial_height","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"speed","order":2,"description":"","override":false,"type":"Vector","optional":true},{"name":"speed_from_center","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"speed_from_center_deviation","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"speed_multiplier","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"speed_multiplier_deviation","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"starting_frame","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"starting_frame_deviation","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"type","order":0,"description":"","override":true,"type":{"complex_type":"literal","value":"create-smoke"},"optional":false}]},{"name":"CreateSpacePlatformTechnologyTrigger","order":160,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"create-space-platform"},"optional":false}]},{"name":"CreateStickerTriggerEffectItem","order":161,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"show_in_tooltip","order":2,"description":"","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"sticker","order":1,"description":"Name of a [StickerPrototype](prototype:StickerPrototype) that should be created.","override":false,"type":"EntityID","optional":false},{"name":"trigger_created_entity","order":3,"description":"If `true`, [on_trigger_created_entity](runtime:on_trigger_created_entity) will be triggered when the sticker is created.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"create-sticker"},"optional":false}]},{"name":"CreateTrivialSmokeEffectItem","order":162,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"initial_height","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"max_radius","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"offset_deviation","order":2,"description":"","override":false,"type":"BoundingBox","optional":true},{"name":"offsets","order":3,"description":"","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":true},{"name":"only_when_visible","order":13,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"smoke_name","order":1,"description":"","override":false,"type":"TrivialSmokeID","optional":false},{"name":"speed","order":6,"description":"","override":false,"type":"Vector","optional":true},{"name":"speed_from_center","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"speed_from_center_deviation","order":12,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"speed_multiplier","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"speed_multiplier_deviation","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"starting_frame","order":9,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"starting_frame_deviation","order":10,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"create-trivial-smoke"},"optional":false}]},{"name":"CursorBoxSpecification","order":163,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"blueprint_snap_rectangle","order":8,"description":"","override":false,"type":{"complex_type":"array","value":"BoxSpecification"},"optional":false},{"name":"copy","order":3,"description":"","override":false,"type":{"complex_type":"array","value":"BoxSpecification"},"optional":false},{"name":"electricity","order":4,"description":"","override":false,"type":{"complex_type":"array","value":"BoxSpecification"},"optional":false},{"name":"logistics","order":5,"description":"","override":false,"type":{"complex_type":"array","value":"BoxSpecification"},"optional":false},{"name":"multiplayer_selection","order":1,"description":"","override":false,"type":{"complex_type":"array","value":"BoxSpecification"},"optional":false},{"name":"not_allowed","order":2,"description":"","override":false,"type":{"complex_type":"array","value":"BoxSpecification"},"optional":false},{"name":"pair","order":6,"description":"","override":false,"type":{"complex_type":"array","value":"BoxSpecification"},"optional":false},{"name":"regular","order":0,"description":"","override":false,"type":{"complex_type":"array","value":"BoxSpecification"},"optional":false},{"name":"spidertron_remote_selected","order":9,"description":"","override":false,"type":{"complex_type":"array","value":"BoxSpecification"},"optional":false},{"name":"spidertron_remote_to_be_selected","order":10,"description":"","override":false,"type":{"complex_type":"array","value":"BoxSpecification"},"optional":false},{"name":"train_visualization","order":7,"description":"","override":false,"type":{"complex_type":"array","value":"BoxSpecification"},"optional":false}]},{"name":"CursorBoxType","order":164,"description":"One of the following values:","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"entity","description":"The normal entity selection box. Yellow by default."},{"complex_type":"literal","value":"multiplayer-entity","description":"The multiplayer entity selection box which gets tinted using [LuaPlayer::chat_color](runtime:LuaPlayer::chat_color). White by default."},{"complex_type":"literal","value":"electricity","description":"The selection box used to specify electric poles an entity is connected to. Light blue by default."},{"complex_type":"literal","value":"copy","description":"The selection box used when doing entity copy-paste. Green by default."},{"complex_type":"literal","value":"not-allowed","description":"The selection box used when specifying colliding entities. Red by default."},{"complex_type":"literal","value":"pair","description":"Light blue by default."},{"complex_type":"literal","value":"logistics","description":"Light blue by default."},{"complex_type":"literal","value":"train-visualization","description":"White by default."},{"complex_type":"literal","value":"blueprint-snap-rectangle","description":"Green by default."},{"complex_type":"literal","value":"spidertron-remote-selected","description":""},{"complex_type":"literal","value":"spidertron-remote-to-be-selected","description":""}],"full_format":true}},{"name":"CustomTooltipField","order":165,"description":"Allows to add extra description items to the tooltip.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"name","order":0,"description":"","override":false,"type":"LocalisedString","optional":false},{"name":"order","order":4,"description":"Ordering within all description items (modded and un-modded). Items with smaller order values are shown above items with larger values.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":100}},{"name":"quality_header","order":2,"description":"","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":"quality-tooltip.increases"}},{"name":"quality_values","order":3,"description":"Custom values per quality level. If a value is not provided for a specific quality, [CustomTooltipField::value](prototype:CustomTooltipField::value) will be used instead.","override":false,"type":{"complex_type":"dictionary","key":"QualityID","value":"LocalisedString"},"optional":true},{"name":"show_in_factoriopedia","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_in_tooltip","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"value","order":1,"description":"","override":false,"type":"LocalisedString","optional":false}]},{"name":"CyclicSound","order":166,"description":"Used by [BaseAttackParameters](prototype:BaseAttackParameters) to play a sound during the attack.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"begin_sound","order":0,"description":"Played once at the beginning of the overall cyclic sound.","override":false,"type":"Sound","optional":true},{"name":"end_sound","order":2,"description":"Played once when the overall cyclic sound is requested to end.","override":false,"type":"Sound","optional":true},{"name":"middle_sound","order":1,"description":"Played repeatedly after the begin_sound was played.","override":false,"type":"Sound","optional":true}]},{"name":"DamageEntityTriggerEffectItem","order":167,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"apply_damage_to_trees","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"damage","order":1,"description":"","override":false,"type":"DamageParameters","optional":false},{"name":"lower_damage_modifier","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"lower_distance_threshold","order":5,"description":"","override":false,"type":"uint16","optional":true,"default":"MAX_UINT16"},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"damage"},"optional":false},{"name":"upper_damage_modifier","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"upper_distance_threshold","order":6,"description":"","override":false,"type":"uint16","optional":true,"default":"MAX_UINT16"},{"name":"use_substitute","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"vaporize","order":3,"description":"If `true`, no corpse for killed entities will be created.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"DamageParameters","order":168,"description":"Used to specify what type of damage and how much damage something deals.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"amount","order":0,"description":"","override":false,"type":"float","optional":false},{"name":"type","order":1,"description":"The type of damage. See [here](https://wiki.factorio.com/Data.raw#damage-type) for a list of built-in types, and [DamageType](prototype:DamageType) for creating custom types.","override":false,"type":"DamageTypeID","optional":false}]},{"name":"DamageTileTriggerEffectItem","order":169,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"damage","order":1,"description":"","override":false,"type":"DamageParameters","optional":false},{"name":"radius","order":2,"description":"","override":false,"type":"float","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"damage-tile"},"optional":false}]},{"name":"DamageTypeFilters","order":170,"description":"","examples":["```\ndamage_type_filters = \"fire\"\n```","```\ndamage_type_filters = { \"fire\" } -- more damage types could be specified here\n```","```\ndamage_type_filters =\n{\n  whitelist = false, -- optional\n  types = \"fire\"\n}\n```","```\ndamage_type_filters =\n{\n  whitelist = false, -- optional\n  types = { \"fire\" } -- more damage types could be specified here\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"DamageTypeID",{"complex_type":"array","value":"DamageTypeID"}],"full_format":false},"properties":[{"name":"types","order":0,"description":"The damage types to filter for.","override":false,"type":{"complex_type":"union","options":["DamageTypeID",{"complex_type":"array","value":"DamageTypeID"}],"full_format":false},"optional":false},{"name":"whitelist","order":1,"description":"Whether this is a whitelist or a blacklist of damage types. Defaults to being a blacklist.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"DamageTypeID","order":171,"description":"The name of a [DamageType](prototype:DamageType).","examples":["```\n\"impact\"\n```","```\n\"poison\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"Data","order":172,"description":"The data table is read by the game to load all prototypes.\n\nAt the end of the prototype stage, the data table is loaded by the game engine and the format of the prototypes is validated. Any extra properties are ignored. See [Data Lifecycle](runtime:data-lifecycle) for more information.\n\nThe data table and its properties are defined in Lua, so their source code can be viewed in [dataloader.lua](https://github.com/wube/factorio-data/blob/master/core/lualib/dataloader.lua).","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"extend","order":1,"description":"The primary way to add prototypes to the data table.","examples":["```\nlocal not_coal =\n{\n  type = \"item\",\n  name = \"a-thing\",\n  icon = \"__base__/graphics/icons/coal.png\",\n  icon_size = 64,\n  stack_size = 2\n}\nlocal proto2 =\n{\n  type = \"fuel-category\",\n  name = \"best-fuel\"\n}\ndata:extend({not_coal, proto2})\n```"],"override":false,"type":"DataExtendMethod","optional":false},{"name":"is_demo","order":2,"description":"Set by the game based on whether the demo or retail version is running. Should not be used by mods.","override":false,"type":"boolean","optional":false},{"name":"raw","order":0,"description":"A dictionary of prototype types to values that themselves are dictionaries of prototype names to specific prototypes.\n\nThis means that individual prototypes can be accessed with `local prototype = data.raw[\"prototype-type\"][\"internal-name\"]`.","examples":["```\n-- set the stack size of coal to be 1000\ndata.raw[\"item\"][\"coal\"].stack_size = 1000\n```","```\n-- get the max health of the wooden chest\nlocal health = data.raw[\"container\"][\"wooden-chest\"].max_health\n```"],"override":false,"type":{"complex_type":"dictionary","key":"string","value":{"complex_type":"dictionary","key":"string","value":"AnyPrototype"}},"optional":false}]},{"name":"DataExtendMethod","order":173,"description":"The data.extend method. It's the primary way to add prototypes to the data table.\n\nThe method has two positional function parameters:\n\n- `self` :: [Data](prototype:Data)?: Usually provided by calling `data:extend(otherdata)`, which is syntax sugar for `data.extend(data, otherdata)`.\n\n- `otherdata` :: array[[AnyPrototype](prototype:AnyPrototype)]: A continuous array of non-abstract prototypes.\n\nThe data.extend method can also be called with only the `otherdata` argument by calling it directly on data: `data.extend(otherdata)`.","examples":["```\ndata:extend({\n  {\n    type = \"item\",\n    name = \"a-thing\",\n    icon = \"__base__/graphics/icons/coal.png\",\n    icon_size = 64,\n    stack_size = 2\n  }\n})\n```","```\nlocal recipe_cat =\n{\n  type = \"recipe-category\",\n  name = \"my-category\"\n}\nlocal assembler =\n{\n  type = \"assembling-machine\",\n  name = \"cool-assembler\",\n  energy_usage = \"30kW\",\n  energy_source = {type = \"void\"},\n  crafting_speed = 1,\n  crafting_categories = {\"crafting\"}\n}\n\ndata:extend({recipe_cat, assembler})\n```"],"abstract":false,"inline":false,"type":"builtin"},{"name":"DaytimeColorLookupTable","order":174,"description":"The first member of the tuple states at which time of the day the LUT should be used. If the current game time is between two values defined in the color lookup that have different LUTs, the color is interpolated to create a smooth transition. (Sharp transition can be achieved by having the two values differing only by a small fraction.)\n\nIf there is only one tuple, it means that the LUT will be used all the time, regardless of the value of the first member of the tuple.\n\nThe second member of the tuple is a lookup table (LUT) for the color which maps the original color to a position in the sprite where the replacement color is found.","examples":["```\ncolor_lookup = {{1, \"identity\"}}\n```","```\ncolor_lookup = {{0.5, \"__core__/graphics/color_luts/nightvision.png\"}}\n```","```\nzoom_to_world_daytime_color_lookup =\n{\n  {0.25, \"identity\"},\n  {0.45, \"__core__/graphics/color_luts/night.png\"},\n  {0.55, \"__core__/graphics/color_luts/night.png\"},\n  {0.75, \"identity\"},\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"array","value":{"complex_type":"tuple","values":["double","ColorLookupTable"]}}},{"name":"DeconstructionTimeToLiveModifier","order":175,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"deconstruction-time-to-live"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"DecorativeID","order":176,"description":"The name of a [DecorativePrototype](prototype:DecorativePrototype).","examples":["```\n\"dark-mud-decal\"\n```","```\n\"red-pita\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"DelayedTriggerDelivery","order":177,"description":"","parent":"TriggerDeliveryItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"delayed_trigger","order":1,"description":"","override":false,"type":"ActiveTriggerID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"delayed"},"optional":false}]},{"name":"DependenciesMetTipTrigger","order":178,"description":"This trigger is considered fulfilled when the [TipsAndTricksItem::dependencies](prototype:TipsAndTricksItem::dependencies) are fulfilled.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"dependencies-met"},"optional":false}]},{"name":"DestroyCliffsCapsuleAction","order":179,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"attack_parameters","order":1,"description":"","override":false,"type":"AttackParameters","optional":false},{"name":"play_sound_on_failure","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"radius","order":2,"description":"","override":false,"type":"float","optional":false},{"name":"timeout","order":3,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":3600}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"destroy-cliffs"},"optional":false},{"name":"uses_stack","order":5,"description":"Whether using the capsule consumes an item from the stack.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"DestroyCliffsTriggerEffectItem","order":180,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"explosion_at_cliff","order":3,"description":"Entity created at cliff location when a cliff is destroyed.","override":false,"type":"EntityID","optional":true},{"name":"explosion_at_trigger","order":2,"description":"Entity created at trigger location every time trigger executes.","override":false,"type":"EntityID","optional":true},{"name":"radius","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"destroy-cliffs"},"optional":false}]},{"name":"DestroyDecorativesTriggerEffectItem","order":181,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"decoratives_with_trigger_only","order":7,"description":"If `true`, only decoratives with a [DecorativePrototype::trigger_effect](prototype:DecorativePrototype::trigger_effect) will be destroyed.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"from_render_layer","order":2,"description":"","override":false,"type":"RenderLayer","optional":true,"default":"first layer"},{"name":"include_decals","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"include_soft_decoratives","order":4,"description":"Soft decoratives are those where [DecorativePrototype::grows_through_rail_path](prototype:DecorativePrototype::grows_through_rail_path) is `true`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"invoke_decorative_trigger","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"radius","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"to_render_layer","order":3,"description":"","override":false,"type":"RenderLayer","optional":true,"default":"last layer"},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"destroy-decoratives"},"optional":false}]},{"name":"DifficultySettings","order":182,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"spoil_time_modifier","order":1,"description":"Must be >= 0.01 and <= 100.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"technology_price_multiplier","order":0,"description":"Must be >= 0.001 and <= 1000.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"DirectTriggerItem","order":183,"description":"","parent":"TriggerItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"filter_enabled","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"direct"},"optional":false}]},{"name":"DirectionShift","order":184,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":1,"description":"","override":false,"type":"Vector","optional":true},{"name":"north","order":0,"description":"","override":false,"type":"Vector","optional":true},{"name":"south","order":2,"description":"","override":false,"type":"Vector","optional":true},{"name":"west","order":3,"description":"","override":false,"type":"Vector","optional":true}]},{"name":"DirectionString","order":185,"description":"One of the 16 directions, specified with a string.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"north","description":""},{"complex_type":"literal","value":"north_north_east","description":""},{"complex_type":"literal","value":"north_east","description":""},{"complex_type":"literal","value":"east_north_east","description":""},{"complex_type":"literal","value":"east","description":""},{"complex_type":"literal","value":"east_south_east","description":""},{"complex_type":"literal","value":"south_east","description":""},{"complex_type":"literal","value":"south_south_east","description":""},{"complex_type":"literal","value":"south","description":""},{"complex_type":"literal","value":"south_south_west","description":""},{"complex_type":"literal","value":"south_west","description":""},{"complex_type":"literal","value":"west_south_west","description":""},{"complex_type":"literal","value":"west","description":""},{"complex_type":"literal","value":"west_north_west","description":""},{"complex_type":"literal","value":"north_west","description":""},{"complex_type":"literal","value":"north_north_west","description":""}],"full_format":true}},{"name":"DoubleSliderStyleSpecification","order":186,"description":"","parent":"SliderStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":true,"type":{"complex_type":"literal","value":"double_slider_style"},"optional":false}]},{"name":"DropDownStyleSpecification","order":187,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"button_style","order":1,"description":"","override":false,"type":"ButtonStyleSpecification","optional":true},{"name":"icon","order":2,"description":"","override":false,"type":"Sprite","optional":true},{"name":"list_box_style","order":3,"description":"","override":false,"type":"ListBoxStyleSpecification","optional":true},{"name":"opened_sound","order":5,"description":"","override":false,"type":"Sound","optional":true},{"name":"selector_and_title_spacing","order":4,"description":"","override":false,"type":"int16","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"dropdown_style"},"optional":false}]},{"name":"DropItemTipTrigger","order":188,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"drop_into_entity","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"drop-item"},"optional":false}]},{"name":"Effect","order":189,"description":"When applied to [modules](prototype:ModulePrototype), the resulting effect is a sum of all module effects, multiplied through calculations: `(1 + sum module effects)`, or `(0 + sum)` for productivity. Quality calculations follow their own separate logic.","examples":["```\n-- These are the effects of the vanilla Speed Module 3\n{speed = 0.5, consumption = 0.7, quality = -0.25}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"consumption","order":0,"description":"Multiplier to energy used during operation (not idle/drain use). The minimum possible sum is -80%.","override":false,"type":"EffectValue","optional":true},{"name":"pollution","order":3,"description":"Multiplier to the pollution factor of an entity's pollution during use. The minimum possible sum is -80%.","override":false,"type":"EffectValue","optional":true},{"name":"productivity","order":2,"description":"Multiplied against work completed, adds to the bonus results of operating. E.g. an extra crafted recipe or immediate research bonus. The minimum possible sum is 0%.","override":false,"type":"EffectValue","optional":true},{"name":"quality","order":4,"description":"Adds a bonus chance to increase a product's quality. The minimum possible sum is 0%. The quality effect is is multiplied by [QualityPrototype::next_probability](prototype:QualityPrototype::next_probability). For example, if a module's quality effect is 0.2 and the current quality's next_probability is 0.1, then the chance to get the next quality item is 2%.","override":false,"type":"EffectValue","optional":true},{"name":"speed","order":1,"description":"Modifier to crafting speed, research speed, etc. The minimum possible sum is -80%.","override":false,"type":"EffectValue","optional":true}]},{"name":"EffectReceiver","order":190,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"base_effect","order":0,"description":"","override":false,"type":"Effect","optional":true},{"name":"uses_beacon_effects","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"uses_module_effects","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"uses_surface_effects","order":3,"description":"Controls whether [LuaSurface::global_effect](runtime:LuaSurface::global_effect) affects this receiver.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"EffectRelativeTo","order":191,"description":"Identifies what [CloudEffectStyle](prototype:CloudEffectStyle) refers to.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"ground-origin","description":"Refers to the ground position the pod entity is relative to."},{"complex_type":"literal","value":"pod","description":"Refers to the current position of pod playing the transition."},{"complex_type":"literal","value":"spawn-origin","description":"Refers to the position where this transition started on tick 0. Useful as a blank slate to apply inherited offsets via [ProcessionLayerInheritanceGroup](prototype:ProcessionLayerInheritanceGroup)."}],"full_format":true}},{"name":"EffectTexture","order":192,"description":"","parent":"SpriteSource","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[]},{"name":"EffectTypeLimitation","order":193,"description":"A list of [module](prototype:ModulePrototype) effects, or just a single effect. Modules with other effects cannot be used on the machine. This means that both effects from modules and from surrounding beacons are restricted to the listed effects. If `allowed_effects` is an empty array, the machine cannot be affected by modules or beacons.","examples":["```\n-- Allow all module types\nallowed_effects = {\"speed\", \"productivity\", \"consumption\", \"pollution\", \"quality\"}\n```","```\n-- Allow only modules that affect speed\nallowed_effects = \"speed\"\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"union","options":[{"complex_type":"literal","value":"speed","description":"Modules that increase or decrease the machine's speed."},{"complex_type":"literal","value":"productivity","description":"Modules that make the machine produce bonus items."},{"complex_type":"literal","value":"consumption","description":"Modules that increase or decrease the machine's energy consumption."},{"complex_type":"literal","value":"pollution","description":"Modules that make the machine produce more or less pollution."},{"complex_type":"literal","value":"quality","description":"Modules that provide a bonus chance to increase a product's quality."}],"full_format":true},{"complex_type":"array","value":{"complex_type":"union","options":[{"complex_type":"literal","value":"speed","description":"Modules that increase or decrease the machine's speed."},{"complex_type":"literal","value":"productivity","description":"Modules that make the machine produce bonus items."},{"complex_type":"literal","value":"consumption","description":"Modules that increase or decrease the machine's energy consumption."},{"complex_type":"literal","value":"pollution","description":"Modules that make the machine produce more or less pollution."},{"complex_type":"literal","value":"quality","description":"Modules that provide a bonus chance to increase a product's quality."}],"full_format":true}}],"full_format":false}},{"name":"EffectValue","order":194,"description":"Precision is ignored beyond two decimals - `0.567` results in `0.56` and means 56% etc. Values can range from `-327.68` to `327.67`. Numbers outside of this range will wrap around.\n\nQuality values are multiplied by [QualityPrototype::next_probability](prototype:QualityPrototype::next_probability). For example, if a module's quality effect is 0.2 and the current quality's next_probability is 0.1, then the chance to get the next quality item is 2%.","examples":["```\n{speed = 0.07}  -- 7% bonus\n```","```\n{quality = 0.25}  -- multiplied by quality normal next_probability = 0.1 -> 2.5% bonus\n```"],"abstract":false,"inline":false,"type":"float"},{"name":"EffectVariation","order":195,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"lava","description":"Valid only when [expansion_shaders](prototype:FeatureFlags::expansion_shaders) feature flag is enabled."},{"complex_type":"literal","value":"wetland-water","description":"Valid only when [expansion_shaders](prototype:FeatureFlags::expansion_shaders) feature flag is enabled."},{"complex_type":"literal","value":"oil","description":"Valid only when [expansion_shaders](prototype:FeatureFlags::expansion_shaders) feature flag is enabled."},{"complex_type":"literal","value":"water","description":""}],"full_format":true}},{"name":"ElectricEnergySource","order":196,"description":"","examples":["```\nenergy_source = -- energy source of oil pumpjack\n{\n  type = \"electric\",\n  emissions_per_minute = { pollution = 10 },\n  usage_priority = \"secondary-input\"\n}\n```","```\nenergy_source = -- energy source of accumulator\n{\n  type = \"electric\",\n  buffer_capacity = \"5MJ\",\n  usage_priority = \"tertiary\",\n  input_flow_limit = \"300kW\",\n  output_flow_limit = \"300kW\"\n}\n```","```\nenergy_source = -- energy source of steam engine\n{\n  type = \"electric\",\n  usage_priority = \"secondary-output\"\n}\n```"],"parent":"BaseEnergySource","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"buffer_capacity","order":1,"description":"How much energy this entity can hold.","examples":["```\nbuffer_capacity = \"5MJ\"\n```"],"override":false,"type":"Energy","optional":true},{"name":"drain","order":5,"description":"How much energy (per second) will be continuously removed from the energy buffer. In-game, this is shown in the tooltip as \"Min. [Minimum] Consumption\". Applied as a constant consumption-per-tick, even when the entity has the property [active](runtime:LuaEntity::active) set to `false`.","examples":["```\ndrain = \"1kW\"\n```"],"override":false,"type":"Energy","optional":true},{"name":"input_flow_limit","order":3,"description":"The rate at which energy can be taken, from the network, to refill the energy buffer. `0` means no transfer.","examples":["```\ninput_flow_limit = \"300kW\"\n```"],"override":false,"type":"Energy","optional":true,"default":"Max `double` value"},{"name":"output_flow_limit","order":4,"description":"The rate at which energy can be provided, to the network, from the energy buffer. `0` means no transfer.","examples":["```\noutput_flow_limit = \"300kW\"\n```"],"override":false,"type":"Energy","optional":true,"default":"Max `double` value"},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"electric"},"optional":false},{"name":"usage_priority","order":2,"description":"","examples":["```\nusage_priority = \"secondary-input\"\n```"],"override":false,"type":"ElectricUsagePriority","optional":false}]},{"name":"ElectricUsagePriority","order":197,"description":"Used to specify priority of energy usage in the [electric system](https://wiki.factorio.com/Electric_system).","examples":["```\nusage_priority = \"primary-input\"\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"primary-input","description":"Used for the most important machines, for example laser turrets."},{"complex_type":"literal","value":"primary-output","description":""},{"complex_type":"literal","value":"secondary-input","description":"Used for all other machines."},{"complex_type":"literal","value":"secondary-output","description":"Used in steam generators."},{"complex_type":"literal","value":"tertiary","description":"As input/output used for accumulators, to collect the overproduction or provide energy when neither primary/secondary output can't."},{"complex_type":"literal","value":"solar","description":"Can only be used by [SolarPanelPrototype](prototype:SolarPanelPrototype), will be ignored otherwise."},{"complex_type":"literal","value":"lamp","description":"Can only be used by [LampPrototype](prototype:LampPrototype), will be ignored otherwise."}],"full_format":true}},{"name":"ElementImageSet","order":198,"description":"If this is loaded as a single ElementImageSetLayer, it gets used as `base`.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"ElementImageSetLayer"],"full_format":false},"properties":[{"name":"base","order":0,"description":"","override":false,"type":"ElementImageSetLayer","optional":true},{"name":"glow","order":2,"description":"","override":false,"type":"ElementImageSetLayer","optional":true},{"name":"shadow","order":1,"description":"","override":false,"type":"ElementImageSetLayer","optional":true}]},{"name":"ElementImageSetLayer","order":199,"description":"If this is loaded as a Sprite, it gets used as `center`.","images":[{"filename":"ElementImageSetLayer_properties.png","caption":"How the sprites are laid out graphically when using a composition type element image set layer."},{"filename":"ElementImageSetLayer_stretching.png","caption":"How the sprites are stretched when using a composition type element image set layer."}],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"Sprite"],"full_format":false},"properties":[{"name":"background_blur","order":43,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"background_blur_sigma","order":44,"description":"","override":false,"type":"float","optional":true,"default":"`4` if `background_blur` is `true`"},{"name":"border","order":27,"description":"Sets `top_border`, `right_border`, `bottom_border` and `left_border`.\n\nOnly loaded if `corner_size` is not defined. Only loaded if `type` is `\"composition\"`.","override":false,"type":"int32","optional":true},{"name":"bottom","order":11,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"Sprite","optional":true},{"name":"bottom_border","order":25,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"int32","optional":true},{"name":"bottom_outer_border_shift","order":46,"description":"","override":false,"type":"int32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"bottom_tiling","order":32,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"bottom_width","order":17,"description":"Only loaded if `corner_size` is defined. Only loaded if `type` is `\"composition\"`.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"center","order":3,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"Sprite","optional":true},{"name":"center_height","order":21,"description":"Only loaded if `corner_size` is defined. Only loaded if `type` is `\"composition\"`.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"center_tiling_horizontal","order":34,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"center_tiling_vertical","order":33,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"center_width","order":20,"description":"Only loaded if `corner_size` is defined. Only loaded if `type` is `\"composition\"`.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"corner_size","order":12,"description":"If this is a tuple, the first member of the tuple is width and the second is height. Otherwise the size is both width and height.\n\nOnly loaded if `type` is `\"composition\"`.","examples":["```\n{\n  -- How an ElementImageSet is loaded which has only one layer, which uses the corner_size shown in the diagram\n  base = {position = {0, 17}, corner_size = 8}\n}\n```"],"images":[{"filename":"ElementImageSetLayer_base_sizes.png","caption":"In base game, the corner size is 8 and the sides are 1px long and 8px wide."}],"override":false,"type":{"complex_type":"union","options":["uint16",{"complex_type":"tuple","values":["uint16","uint16"]}],"full_format":false},"optional":true},{"name":"custom_horizontal_tiling_sizes","order":41,"description":"","override":false,"type":{"complex_type":"array","value":"uint32"},"optional":true},{"name":"draw_type","order":0,"description":"Defines whether the border should be drawn inside the widget, which affects the padding and content size of the widget, or outside of the widget which doesn't affect size. The outer draw type is most commonly used for shadows, glows and insets.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"inner"},{"complex_type":"literal","value":"outer"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"inner"}},{"name":"filename","order":13,"description":"Only loaded if `corner_size` is defined. Only loaded if `type` is `\"composition\"`.","override":false,"type":"FileName","optional":true,"default":"The `default_tileset` set in GuiStyle"},{"name":"left","order":4,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"Sprite","optional":true},{"name":"left_border","order":26,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"int32","optional":true},{"name":"left_bottom","order":6,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"Sprite","optional":true},{"name":"left_height","order":18,"description":"Only loaded if `corner_size` is defined. Only loaded if `type` is `\"composition\"`.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"left_outer_border_shift","order":48,"description":"","override":false,"type":"int32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"left_tiling","order":29,"description":"Tiling is used to make a side (not corner) texture repeat instead of being stretched.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"left_top","order":5,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"Sprite","optional":true},{"name":"load_in_minimal_mode","order":15,"description":"Only loaded if `corner_size` is defined. Only loaded if `type` is `\"composition\"`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"opacity","order":42,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"overall_tiling_horizontal_padding","order":37,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"overall_tiling_horizontal_size","order":35,"description":"Overall tiling is used to make the overall texture repeat instead of being stretched.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"overall_tiling_horizontal_spacing","order":36,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"overall_tiling_vertical_padding","order":40,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"overall_tiling_vertical_size","order":38,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"overall_tiling_vertical_spacing","order":39,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"position","order":14,"description":"Mandatory if `corner_size` is defined. Only loaded if `type` is `\"composition\"`.","override":false,"type":"MapPosition","optional":true},{"name":"right","order":7,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"Sprite","optional":true},{"name":"right_border","order":24,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"int32","optional":true},{"name":"right_bottom","order":9,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"Sprite","optional":true},{"name":"right_height","order":19,"description":"Only loaded if `corner_size` is defined. Only loaded if `type` is `\"composition\"`.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"right_outer_border_shift","order":47,"description":"","override":false,"type":"int32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"right_tiling","order":30,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"right_top","order":8,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"Sprite","optional":true},{"name":"scale","order":22,"description":"Only loaded if `corner_size` is defined. Only loaded if `type` is `\"composition\"`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"stretch_monolith_image_to_size","order":28,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"tint","order":2,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"Color","optional":true,"default":"`{r=1, g=1, b=1, a=1}`"},{"name":"top","order":10,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"Sprite","optional":true},{"name":"top_border","order":23,"description":"Only loaded if `type` is `\"composition\"`.","override":false,"type":"int32","optional":true},{"name":"top_outer_border_shift","order":45,"description":"","override":false,"type":"int32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"top_tiling","order":31,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"top_width","order":16,"description":"Only loaded if `corner_size` is defined. Only loaded if `type` is `\"composition\"`.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"type","order":1,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"none"},{"complex_type":"literal","value":"composition"}],"full_format":false},"optional":true,"default":"`\"none\"` if this has no other properties, otherwise `\"composition\"`"}]},{"name":"EmptyWidgetStyleSpecification","order":200,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"graphical_set","order":1,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"empty_widget_style"},"optional":false}]},{"name":"EnemyEvolutionSettings","order":201,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"destroy_factor","order":2,"description":"Percentual increase in the evolution factor for every destroyed spawner","override":false,"type":"double","optional":false},{"name":"enabled","order":0,"description":"","override":false,"type":"boolean","optional":false},{"name":"pollution_factor","order":3,"description":"Percentual increase in the evolution factor for 1 pollution unit","override":false,"type":"double","optional":false},{"name":"time_factor","order":1,"description":"Percentual increase in the evolution factor for every second (60 ticks)","override":false,"type":"double","optional":false}]},{"name":"EnemyExpansionSettings","order":202,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"building_coefficient","order":4,"description":"","override":false,"type":"double","optional":false},{"name":"enabled","order":0,"description":"","override":false,"type":"boolean","optional":false},{"name":"enemy_building_influence_radius","order":3,"description":"","override":false,"type":"uint32","optional":false},{"name":"friendly_base_influence_radius","order":2,"description":"","override":false,"type":"uint32","optional":false},{"name":"max_colliding_tiles_coefficient","order":8,"description":"A chunk has to have at most this much percent unbuildable tiles for it to be considered a candidate. This is to avoid chunks full of water to be marked as candidates.","override":false,"type":"double","optional":false},{"name":"max_expansion_cooldown","order":12,"description":"","override":false,"type":"uint32","optional":false},{"name":"max_expansion_distance","order":1,"description":"Distance in chunks from the furthest base around. This prevents expansions from reaching too far into the player's territory.","override":false,"type":"uint32","optional":false},{"name":"min_expansion_cooldown","order":11,"description":"Ticks to expand to a single position for a base is used. Cooldown is calculated as follows: `cooldown = lerp(max_expansion_cooldown, min_expansion_cooldown, -e^2 + 2 * e)` where `lerp` is the linear interpolation function, and e is the current evolution factor.","override":false,"type":"uint32","optional":false},{"name":"neighbouring_base_chunk_coefficient","order":7,"description":"","override":false,"type":"double","optional":false},{"name":"neighbouring_chunk_coefficient","order":6,"description":"","override":false,"type":"double","optional":false},{"name":"other_base_coefficient","order":5,"description":"","override":false,"type":"double","optional":false},{"name":"settler_group_max_size","order":10,"description":"","override":false,"type":"uint32","optional":false},{"name":"settler_group_min_size","order":9,"description":"Size of the group that goes to build new base (the game interpolates between min size and max size based on evolution factor).","override":false,"type":"uint32","optional":false}]},{"name":"EnemySpawnerAbsorption","order":203,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"absolute","order":0,"description":"","override":false,"type":"double","optional":false},{"name":"proportional","order":1,"description":"","override":false,"type":"double","optional":false}]},{"name":"EnemySpawnerGraphicsSet","order":204,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animations","order":0,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"integration","order":4,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"random_animation_offset","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"underwater_animations","order":1,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"underwater_layer_offset","order":2,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"water_effect_map_animations","order":3,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"water_reflection","order":6,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"Energy","order":205,"description":"Specifies an amount of electric energy in joules, or electric energy per time in watts.\n\nInternally, the input in `Watt` or `Joule/second` is always converted into `Joule/tick`, where 1 second is equal to 60 ticks. This means it uses the following formula: `Power in Joule/tick = Power in Watt / 60`. See [Power](https://wiki.factorio.com/Units#Power).\n\nSupported Multipliers:\n\n- `k`: 10^3, or 1 000\n\n- `M`: 10^6\n\n- `G`: 10^9\n\n- `T`: 10^12\n\n- `P`: 10^15\n\n- `E`: 10^18\n\n- `Z`: 10^21\n\n- `Y`: 10^24\n\n- `R`: 10^27\n\n- `Q`: 10^30","examples":["```\nbuffer_capacity = \"5MJ\"\ninput_flow_limit = \"300W\"\n-- the following two lines result in the same power consumption:\nenergy_usage = \"60W\"\nenergy_usage = \"1J\" -- not recommended, Watt is convention for power\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"EnergySource","order":206,"description":"Loaded as one of the [BaseEnergySource](prototype:BaseEnergySource) extensions, based on the value of the `type` key.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"ElectricEnergySource","description":"Loaded when the `type` is `\"electric\"`."},{"complex_type":"type","value":"BurnerEnergySource","description":"Loaded when the `type` is `\"burner\"`."},{"complex_type":"type","value":"HeatEnergySource","description":"Loaded when the `type` is `\"heat\"`."},{"complex_type":"type","value":"FluidEnergySource","description":"Loaded when the `type` is `\"fluid\"`."},{"complex_type":"type","value":"VoidEnergySource","description":"Loaded when the `type` is `\"void\"`."}],"full_format":true}},{"name":"EnterVehicleTipTrigger","order":207,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"match_type_only","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"enter-vehicle"},"optional":false},{"name":"vehicle","order":1,"description":"","override":false,"type":"EntityID","optional":true}]},{"name":"EntityBuildAnimationPiece","order":208,"description":"A single tiles worth of animations used when building entities.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"body","order":1,"description":"The animation must have a total of 32 frames.","override":false,"type":"Animation","optional":false},{"name":"top","order":0,"description":"The animation must have a total of 32 frames.","override":false,"type":"Animation","optional":false}]},{"name":"EntityBuildAnimations","order":209,"description":"A set of animations used when building entities on space platforms. All EntityBuildAnimationPieces must have the same animation speed.","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"back_left","order":0,"description":"","override":false,"type":"EntityBuildAnimationPiece","optional":false},{"name":"back_right","order":1,"description":"","override":false,"type":"EntityBuildAnimationPiece","optional":false},{"name":"front_left","order":2,"description":"","override":false,"type":"EntityBuildAnimationPiece","optional":false},{"name":"front_right","order":3,"description":"","override":false,"type":"EntityBuildAnimationPiece","optional":false}]},{"name":"EntityID","order":210,"description":"The name of an [EntityPrototype](prototype:EntityPrototype).","examples":["```\n\"stone-furnace\"\n```","```\n\"bulk-inserter\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"EntityIDFilter","order":211,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"EntityID"],"full_format":false},"properties":[{"name":"comparator","order":2,"description":"Only loaded if `quality` is defined.","override":false,"type":"ComparatorString","optional":true},{"name":"name","order":0,"description":"","override":false,"type":"EntityID","optional":false},{"name":"quality","order":1,"description":"","override":false,"type":"QualityID","optional":true}]},{"name":"EntityPrototypeFlags","order":212,"description":"An array containing the following values.\n\nIf an entity is a [building](runtime:LuaEntityPrototype::is_building) and has the `\"player-creation\"` flag set, it is considered for multiple enemy/unit behaviors:\n\n- Autonomous enemy attacks (usually triggered by pollution) can only attack within chunks that contain at least one entity that is both a building and a player-creation.\n\n- Enemy expansion considers entities that are both buildings and player-creations as \"enemy\" entities that may block expansion.","examples":["```\nflags = {\"placeable-neutral\", \"player-creation\"}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"array","value":{"complex_type":"union","options":[{"complex_type":"literal","value":"not-rotatable","description":"Can't be rotated before or after placing."},{"complex_type":"literal","value":"placeable-neutral","description":"Determines the default force when placing entities in the map editor and using the *AUTO* option for the force."},{"complex_type":"literal","value":"placeable-player","description":"Determines the default force when placing entities in the map editor and using the *AUTO* option for the force."},{"complex_type":"literal","value":"placeable-enemy","description":"Determines the default force when placing entities in the map editor and using the *AUTO* option for the force."},{"complex_type":"literal","value":"placeable-off-grid","description":"Refers to the fact that most entities are placed on an invisible 'grid' within the world, entities with this flag do not have to line up with this grid (like trees and land-mines)."},{"complex_type":"literal","value":"player-creation","description":"Makes it possible for the biter AI to target the entity as a distraction in distraction mode [by_anything](runtime:defines.distraction.by_anything). Makes it possible to blueprint, deconstruct, and repair the entity (can be turned off again using the specific flags). Enables smoke to be created automatically when building the entity. If the entity does not have [EntityPrototype::map_color](prototype:EntityPrototype::map_color) set, this flag makes the entity appear on the map/minimap with the default color specified in the [UtilityConstants](prototype:UtilityConstants)."},{"complex_type":"literal","value":"building-direction-8-way","description":"Uses 45 degree angle increments when selecting direction."},{"complex_type":"literal","value":"filter-directions","description":"Used to automatically detect the proper direction, if possible. Used by base with the pump, train stop, and train signal."},{"complex_type":"literal","value":"get-by-unit-number","description":"When set, entity will be possible to obtain by using [LuaGameScript::get_entity_by_unit_number](runtime:LuaGameScript::get_entity_by_unit_number)."},{"complex_type":"literal","value":"breaths-air","description":"This is used to specify that the entity breathes air, and so is affected by poison (currently [poison capsules](https://wiki.factorio.com/Poison_capsule) are the only source)."},{"complex_type":"literal","value":"not-repairable","description":"Used to specify that the entity can not be 'healed' by repair-packs (or construction robots with repair packs)"},{"complex_type":"literal","value":"not-on-map","description":"The entity does not get drawn on the map."},{"complex_type":"literal","value":"not-deconstructable","description":"The entity can not be deconstructed."},{"complex_type":"literal","value":"not-blueprintable","description":"The entity can not be used in blueprints."},{"complex_type":"literal","value":"hide-alt-info","description":"Hides the alt-info of an entity in alt-mode, for example the recipe icon."},{"complex_type":"literal","value":"not-flammable","description":"Do not apply fire stickers to the entity."},{"complex_type":"literal","value":"no-automated-item-removal","description":"Prevents inserters and loaders from taking items from this entity."},{"complex_type":"literal","value":"no-automated-item-insertion","description":"Prevents inserters and loaders from inserting items into this entity."},{"complex_type":"literal","value":"no-copy-paste","description":"This flag does nothing when set in the data stage because it gets overridden by [EntityPrototype::allow_copy_paste](prototype:EntityPrototype::allow_copy_paste). Thus, it must be set on the entity via that property."},{"complex_type":"literal","value":"not-selectable-in-game","description":"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. This flag does nothing when set in the data stage because it gets overridden by [EntityPrototype::selectable_in_game](prototype:EntityPrototype::selectable_in_game). Thus, it must be set on the entity via that property."},{"complex_type":"literal","value":"not-upgradable","description":"The entity can't be selected by the [upgrade planner](https://wiki.factorio.com/Upgrade_planner)."},{"complex_type":"literal","value":"not-in-kill-statistics","description":"The entity is not shown in the kill statistics."},{"complex_type":"literal","value":"building-direction-16-way","description":""},{"complex_type":"literal","value":"snap-to-rail-support-spot","description":""},{"complex_type":"literal","value":"not-in-made-in","description":"The entity is not shown in the made in property of recipe tooltips."}],"full_format":true}}},{"name":"EntityRendererSearchBoxLimits","order":213,"description":"How far (in tiles) entities should be rendered outside the visible area of the screen.","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"bottom","order":3,"description":"Min value 4, max value 15. Min value 4 to compensate for tall entities like electric poles.","override":false,"type":"uint8","optional":false},{"name":"left","order":0,"description":"Min value 6, max value 15. Min value 6 to compensate for shadows.","override":false,"type":"uint8","optional":false},{"name":"right","order":2,"description":"Min value 3, max value 15.","override":false,"type":"uint8","optional":false},{"name":"top","order":1,"description":"Min value 3, max value 15.","override":false,"type":"uint8","optional":false}]},{"name":"EntityStatus","order":214,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"working","description":""},{"complex_type":"literal","value":"normal","description":""},{"complex_type":"literal","value":"ghost","description":""},{"complex_type":"literal","value":"not-plugged-in-electric-network","description":""},{"complex_type":"literal","value":"networks-connected","description":""},{"complex_type":"literal","value":"networks-disconnected","description":""},{"complex_type":"literal","value":"no-ammo","description":""},{"complex_type":"literal","value":"waiting-for-target-to-be-built","description":""},{"complex_type":"literal","value":"waiting-for-train","description":""},{"complex_type":"literal","value":"no-power","description":""},{"complex_type":"literal","value":"low-temperature","description":""},{"complex_type":"literal","value":"charging","description":""},{"complex_type":"literal","value":"discharging","description":""},{"complex_type":"literal","value":"fully-charged","description":""},{"complex_type":"literal","value":"no-fuel","description":""},{"complex_type":"literal","value":"no-food","description":""},{"complex_type":"literal","value":"out-of-logistic-network","description":""},{"complex_type":"literal","value":"no-recipe","description":""},{"complex_type":"literal","value":"no-ingredients","description":""},{"complex_type":"literal","value":"no-input-fluid","description":""},{"complex_type":"literal","value":"no-research-in-progress","description":""},{"complex_type":"literal","value":"no-minable-resources","description":""},{"complex_type":"literal","value":"low-input-fluid","description":""},{"complex_type":"literal","value":"low-power","description":""},{"complex_type":"literal","value":"not-connected-to-rail","description":""},{"complex_type":"literal","value":"cant-divide-segments","description":""},{"complex_type":"literal","value":"recharging-after-power-outage","description":""},{"complex_type":"literal","value":"no-modules-to-transmit","description":""},{"complex_type":"literal","value":"disabled-by-control-behavior","description":""},{"complex_type":"literal","value":"opened-by-circuit-network","description":""},{"complex_type":"literal","value":"closed-by-circuit-network","description":""},{"complex_type":"literal","value":"disabled-by-script","description":""},{"complex_type":"literal","value":"disabled","description":""},{"complex_type":"literal","value":"turned-off-during-daytime","description":""},{"complex_type":"literal","value":"fluid-ingredient-shortage","description":""},{"complex_type":"literal","value":"item-ingredient-shortage","description":""},{"complex_type":"literal","value":"full-output","description":""},{"complex_type":"literal","value":"not-enough-space-in-output","description":""},{"complex_type":"literal","value":"full-burnt-result-output","description":""},{"complex_type":"literal","value":"marked-for-deconstruction","description":""},{"complex_type":"literal","value":"missing-required-fluid","description":""},{"complex_type":"literal","value":"missing-science-packs","description":""},{"complex_type":"literal","value":"waiting-for-source-items","description":""},{"complex_type":"literal","value":"waiting-for-space-in-destination","description":""},{"complex_type":"literal","value":"preparing-rocket-for-launch","description":""},{"complex_type":"literal","value":"waiting-to-launch-rocket","description":""},{"complex_type":"literal","value":"waiting-for-space-in-platform-hub","description":""},{"complex_type":"literal","value":"launching-rocket","description":""},{"complex_type":"literal","value":"thrust-not-required","description":""},{"complex_type":"literal","value":"not-enough-thrust","description":""},{"complex_type":"literal","value":"on-the-way","description":""},{"complex_type":"literal","value":"waiting-in-orbit","description":""},{"complex_type":"literal","value":"waiting-for-rocket-to-arrive","description":""},{"complex_type":"literal","value":"no-path","description":""},{"complex_type":"literal","value":"broken","description":""},{"complex_type":"literal","value":"none","description":""},{"complex_type":"literal","value":"frozen","description":""},{"complex_type":"literal","value":"paused","description":""},{"complex_type":"literal","value":"not-connected-to-hub-or-pad","description":""},{"complex_type":"literal","value":"computing-navigation","description":""},{"complex_type":"literal","value":"no-filter","description":""},{"complex_type":"literal","value":"waiting-at-stop","description":""},{"complex_type":"literal","value":"destination-stop-full","description":""},{"complex_type":"literal","value":"pipeline-overextended","description":""},{"complex_type":"literal","value":"no-spot-seedable-by-inputs","description":""},{"complex_type":"literal","value":"waiting-for-plants-to-grow","description":""},{"complex_type":"literal","value":"recipe-not-researched","description":""}],"full_format":true}},{"name":"EntityTransferTipTrigger","order":215,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"transfer","order":1,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"in"},{"complex_type":"literal","value":"out"}],"full_format":false},"optional":true,"default":"any transfer"},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"entity-transfer"},"optional":false}]},{"name":"EquipmentCategoryID","order":216,"description":"The name of an [EquipmentCategory](prototype:EquipmentCategory).","examples":["```\n\"armor\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"EquipmentGridID","order":217,"description":"The name of an [EquipmentGridPrototype](prototype:EquipmentGridPrototype).","examples":["```\n\"small-equipment-grid\"\n```","```\n\"spidertron-equipment-grid\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"EquipmentID","order":218,"description":"The name of an [EquipmentPrototype](prototype:EquipmentPrototype).","examples":["```\n\"fusion-reactor-equipment\"\n```","```\n\"exoskeleton-equipment\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"EquipmentShape","order":219,"description":"The shape and dimensions of an equipment module.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"height","order":1,"description":"","override":false,"type":"uint32","optional":false},{"name":"points","order":3,"description":"Only used when when `type` is `\"manual\"`. Each inner array is a \"position\" inside width\u00d7height of the equipment. Each positions that is defined is a filled squares of the equipment shape. `{0, 0}` is the upper left corner of the equipment.","examples":["```\n-- A set of points which fall within the width/height - can't be empty\npoints =\n{\n  {0, 0}, {1, 0}, {2, 0}, {3, 0},\n  {0, 1},                 {3, 1},\n  {0, 2},                 {3, 2},\n  {0, 3}, {1, 3}, {2, 3}, {3, 3}\n}\n```"],"override":false,"type":{"complex_type":"array","value":{"complex_type":"array","value":"uint32"}},"optional":true},{"name":"type","order":2,"description":"The shape. When using \"manual\", `points` must be defined.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"full"},{"complex_type":"literal","value":"manual"}],"full_format":false},"optional":false},{"name":"width","order":0,"description":"","override":false,"type":"uint32","optional":false}]},{"name":"ExplosionDefinition","order":220,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":["EntityID",{"complex_type":"struct"}],"full_format":false},"properties":[{"name":"name","order":0,"description":"","override":false,"type":"EntityID","optional":false},{"name":"offset","order":1,"description":"","override":false,"type":"Vector","optional":true}]},{"name":"Fade","order":221,"description":"","parent":"Attenuation","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"AttenuationType"],"full_format":false},"properties":[{"name":"from","order":0,"description":"","override":false,"type":"ControlPoint","optional":true},{"name":"to","order":1,"description":"","override":false,"type":"ControlPoint","optional":true}]},{"name":"Fades","order":222,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"fade_in","order":0,"description":"At least one of `fade_in`and `fade_out` needs to be defined.","override":false,"type":"Fade","optional":true},{"name":"fade_out","order":1,"description":"At least one of `fade_in`and `fade_out` needs to be defined.","override":false,"type":"Fade","optional":true}]},{"name":"FastBeltBendTipTrigger","order":223,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"fast-belt-bend"},"optional":false}]},{"name":"FastReplaceTipTrigger","order":224,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"match_type_only","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"source","order":1,"description":"","override":false,"type":"EntityID","optional":true},{"name":"target","order":2,"description":"","override":false,"type":"EntityID","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"fast-replace"},"optional":false}]},{"name":"FeatureFlags","order":225,"description":"A dictionary of feature flags and their status. It can be used to adjust prototypes based on whether the feature flags are enabled. It is accessible through the global object named `feature_flags`.","examples":["```\n-- sets coal to spoil only when the spoiling feature flag is enabled\nif feature_flags[\"spoiling\"] then\n  data.raw.item.coal.spoil_ticks = 600\nend\n```"],"abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"expansion_shaders","order":6,"description":"","override":false,"type":"boolean","optional":false},{"name":"freezing","order":4,"description":"","override":false,"type":"boolean","optional":false},{"name":"quality","order":0,"description":"","override":false,"type":"boolean","optional":false},{"name":"rail_bridges","order":1,"description":"","override":false,"type":"boolean","optional":false},{"name":"segmented_units","order":5,"description":"","override":false,"type":"boolean","optional":false},{"name":"space_travel","order":2,"description":"","override":false,"type":"boolean","optional":false},{"name":"spoiling","order":3,"description":"","override":false,"type":"boolean","optional":false}]},{"name":"FileName","order":226,"description":"A slash `\"/\"` is always used as the directory delimiter. A path always begins with the specification of a root, which can be one of three formats:\n\n- **core**: A path starting with `__core__` will access the resources in the data/core directory, these resources are always accessible regardless of mod specifications.\n\n- **base**: A path starting with `__base__` will access the resources in the base mod in data/base directory. These resources are usually available, as long as the base mod isn't removed/deactivated.\n\n- **mod path**: The format `__<mod-name>__` is placeholder for root of any other mod (mods/<mod-name>), and is accessible as long as the mod is active.","examples":["```\nfilename = \"__base__/graphics/entity/accumulator/accumulator.png\"\n```","```\nfilename = \"__a-mod__/animations/assembler.png\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"FlipEntityTipTrigger","order":227,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"flip-entity"},"optional":false}]},{"name":"FlowStyleSpecification","order":228,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"horizontal_spacing","order":2,"description":"","override":false,"type":"int32","optional":true},{"name":"max_on_row","order":1,"description":"","override":false,"type":"int32","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"flow_style"},"optional":false},{"name":"vertical_spacing","order":3,"description":"","override":false,"type":"int32","optional":true}]},{"name":"FluidAmount","order":229,"description":"A fluid amount. The amount is stored as a fixed-size signed 64 bit integer, with 24 bits reserved for decimal precision, meaning the smallest value step is `1/2^24`.","abstract":false,"inline":false,"type":"double"},{"name":"FluidBox","order":230,"description":"Used to set the fluid amount an entity can hold, as well as the connection points for pipes leading into and out of the entity.\n\nEntities can have multiple fluidboxes. These can be part of a [FluidEnergySource](prototype:FluidEnergySource), or be specified directly in the entity prototype.","examples":["```\nfluid_box =\n{\n  volume = 200,\n  pipe_covers = pipecoverspictures(),\n  pipe_connections =\n  {\n    {flow_direction = \"input-output\", direction = defines.direction.west, position = {-1, 0.5}},\n    {flow_direction = \"input-output\", direction = defines.direction.east, position = {1, 0.5}}\n  },\n  production_type = \"input-output\",\n  filter = \"water\"\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"always_draw_covers","order":19,"description":"Defaults to true if `pipe_picture` is not defined, otherwise defaults to false.","override":false,"type":"boolean","optional":true},{"name":"draw_only_when_connected","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"enable_working_visualisations","order":20,"description":"Array of the [WorkingVisualisation::name](prototype:WorkingVisualisation::name) of working visualisations to enable when this fluidbox is present.\n\nIf `draw_only_when_connected` is `true`, then the working visualisation are only enabled when this is *connected*.","override":false,"type":{"complex_type":"array","value":"string"},"optional":true},{"name":"filter","order":2,"description":"Can be used to specify which fluid is allowed to enter this fluid box. See [here](https://forums.factorio.com/viewtopic.php?f=28&t=46302).","override":false,"type":"FluidID","optional":true},{"name":"hide_connection_info","order":5,"description":"Hides the blue input/output arrows and icons at each connection point.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"max_pipeline_extent","order":15,"description":"The max extent that a pipeline with this fluidbox can span. A given pipeline's extent is calculated as the min extent of all the fluidboxes that comprise it.","override":false,"type":"uint32","optional":true,"default":"Value of `UtilityConstants::default_pipeline_extent`"},{"name":"maximum_temperature","order":14,"description":"The maximum temperature allowed into the fluidbox. Only applied if a `filter` is specified.","examples":["```\nmaximum_temperature = 1000.0\n```"],"override":false,"type":"float","optional":true},{"name":"minimum_temperature","order":13,"description":"The minimum temperature allowed into the fluidbox. Only applied if a `filter` is specified.","examples":["```\nminimum_temperature = 100.0\n```"],"override":false,"type":"float","optional":true},{"name":"mirrored_pipe_picture","order":11,"description":"Pipe picture variation used when owner machine is flipped. If no picture is loaded, pipe_picture is used instead.","override":false,"type":"Sprite4Way","optional":true},{"name":"mirrored_pipe_picture_frozen","order":12,"description":"Frozen pipe picture variation used when owner machine is flipped. If no picture is loaded, pipe_picture_frozen is used instead.","override":false,"type":"Sprite4Way","optional":true},{"name":"pipe_connections","order":1,"description":"Connection points to connect to other fluidboxes. This is also marked as blue arrows in alt mode. Fluid may flow in or out depending on the `type` field of each connection.\n\nConnection points may depend on the direction the entity is facing. These connection points cannot share positions with one another or the connection points of another fluid box belonging to the same entity.\n\nCan't have more than 255 connections.","override":false,"type":{"complex_type":"array","value":"PipeConnectionDefinition"},"optional":false},{"name":"pipe_covers","order":7,"description":"The pictures to show when no fluid box is connected to this one.","override":false,"type":"Sprite4Way","optional":true},{"name":"pipe_covers_frozen","order":8,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"pipe_picture","order":9,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"pipe_picture_frozen","order":10,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"production_type","order":16,"description":"","override":false,"type":"ProductionType","optional":true,"default":{"complex_type":"literal","value":"none"}},{"name":"render_layer","order":3,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"secondary_draw_order","order":17,"description":"Set the secondary draw order for all orientations. Used to determine render order for sprites with the same `render_layer` in the same position. Sprites with a higher `secondary_draw_order` are drawn on top.","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"secondary_draw_orders","order":18,"description":"Set the secondary draw order for each orientation. Used to determine render order for sprites with the same `render_layer` in the same position. Sprites with a higher `secondary_draw_order` are drawn on top.\n\nThe individual directions default to the value of `secondary_draw_order`.","override":false,"type":"FluidBoxSecondaryDrawOrders","optional":true},{"name":"volume","order":0,"description":"Must be greater than 0.","override":false,"type":"FluidAmount","optional":false},{"name":"volume_reservation_fraction","order":6,"description":"A fraction of the volume that will be \"reserved\" and cannot be removed by flow operations. This does nothing if the fluidbox is part of a fluid segment.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"FluidBoxLinkedConnectionID","order":231,"description":"","abstract":false,"inline":false,"type":"uint32"},{"name":"FluidBoxSecondaryDrawOrders","order":232,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":1,"description":"","override":false,"type":"int8","optional":true},{"name":"north","order":0,"description":"","override":false,"type":"int8","optional":true},{"name":"south","order":2,"description":"","override":false,"type":"int8","optional":true},{"name":"west","order":3,"description":"","override":false,"type":"int8","optional":true}]},{"name":"FluidEnergySource","order":233,"description":"","parent":"BaseEnergySource","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"burns_fluid","order":5,"description":"If set to `true`, the available power output is based on the [FluidPrototype::fuel_value](prototype:FluidPrototype::fuel_value). Otherwise, the available power output will be based on the fluid temperature and [FluidPrototype::heat_capacity](prototype:FluidPrototype::heat_capacity): `energy = fluid_amount * (fluid_temperature - fluid_default_temperature) * fluid_heat_capacity * effectivity`","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"destroy_non_fuel_fluid","order":7,"description":"Property is only used when `burns_fluid` is `true` and the fluid has a [fuel_value](prototype:FluidPrototype::fuel_value) of `0`, or when `burns_fluid` is `false` and the fluid is at its `default_temperature`.\n\nIn those cases, this property determines whether the fluid should be destroyed, meaning that the fluid is consumed at the rate of `fluid_usage_per_tick`, without producing any power.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"effectivity","order":4,"description":"`1` means 100% effectivity. Must be greater than `0`. Multiplier of the energy output.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"fluid_box","order":1,"description":"All standard fluid box configurations are acceptable, but the type must be `\"input\"` or `\"input-output\"` to function correctly. `scale_fluid_usage = true`, `fluid_usage_per_tick`, or a filter on the fluidbox must be set to be able to calculate the fluid usage of the energy source.","override":false,"type":"FluidBox","optional":false},{"name":"fluid_usage_per_tick","order":8,"description":"The number of fluid units the energy source uses per tick. If used with `scale_fluid_usage`, this specifies the maximum. If this value is not set, `scale_energy_usage` is `false` and a fluid box filter is set, the game will attempt to calculate this value from the fluid box filter's fluid's `fuel_value` or `heat_capacity` and the entity's `energy_usage`. If `burns_fluid` is `false`, `maximum_temperature` will also be used. If the attempt of the game to calculate this value fails (`scale_energy_usage` is `false` and a fluid box filter is set), then `scale_energy_usage` will be forced to `true`, to prevent the energy source from being an infinite fluid sink. More context [on the forums](https://forums.factorio.com/90613).","override":false,"type":"FluidAmount","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"light_flicker","order":3,"description":"","override":false,"type":"LightFlickeringDefinition","optional":true},{"name":"maximum_temperature","order":9,"description":"`0` means unlimited maximum temperature. If this is non-zero while `scale_fluid_usage` is `false` and `fluid_usage_per_tick` is not specified, the game will use this value to calculate `fluid_usage_per_tick`. To do that, the filter on the `fluid_box` must be set.\n\nOnly loaded if `burns_fluid` is `false`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"scale_fluid_usage","order":6,"description":"If set to `true`, the energy source will consume as much fluid as required to produce the desired power, otherwise it will consume as much as it is allowed to, wasting any excess.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"smoke","order":2,"description":"","override":false,"type":{"complex_type":"array","value":"SmokeSource"},"optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"fluid"},"optional":false}]},{"name":"FluidFlowDirection","order":234,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"input-output","description":""},{"complex_type":"literal","value":"input","description":""},{"complex_type":"literal","value":"output","description":""}],"full_format":true}},{"name":"FluidID","order":235,"description":"The name of a [FluidPrototype](prototype:FluidPrototype).","examples":["```\n\"water\"\n```","```\n\"lubricant\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"FluidIngredientPrototype","order":236,"description":"A fluid ingredient definition.","examples":["```\n{type=\"fluid\", name=\"water\", amount=50}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"amount","order":2,"description":"Can not be `<= 0`.","override":false,"type":"FluidAmount","optional":false},{"name":"fluidbox_index","order":7,"description":"Used to specify which [CraftingMachinePrototype::fluid_boxes](prototype:CraftingMachinePrototype::fluid_boxes) this ingredient should use. It will use this one fluidbox. The index is 1-based and separate for input and output fluidboxes.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"fluidbox_multiplier","order":8,"description":"Used to set crafting machine fluidbox volumes. Must be at least 1.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":2}},{"name":"ignored_by_stats","order":6,"description":"Amount that should not be included in the consumption statistics, typically with a matching product having the same amount set as [ignored_by_stats](prototype:FluidProductPrototype::ignored_by_stats).","override":false,"type":"FluidAmount","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"maximum_temperature","order":5,"description":"If `temperature` is not set, this sets the expected maximum temperature of the fluid ingredient.","override":false,"type":"float","optional":true},{"name":"minimum_temperature","order":4,"description":"If `temperature` is not set, this sets the expected minimum temperature of the fluid ingredient.","override":false,"type":"float","optional":true},{"name":"name","order":1,"description":"The name of a [FluidPrototype](prototype:FluidPrototype).","override":false,"type":"FluidID","optional":false},{"name":"temperature","order":3,"description":"Sets the expected temperature of the fluid ingredient.","override":false,"type":"float","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"fluid"},"optional":false}]},{"name":"FluidProductPrototype","order":237,"description":"A fluid product definition.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"amount","order":2,"description":"Can not be `< 0`.","override":false,"type":"FluidAmount","optional":true},{"name":"amount_max","order":4,"description":"Only loaded, and mandatory if `amount` is not defined.\n\nIf set to a number that is less than `amount_min`, the game will use `amount_min` instead.","override":false,"type":"FluidAmount","optional":true},{"name":"amount_min","order":3,"description":"Only loaded, and mandatory if `amount` is not defined.\n\nCan not be `< 0`.","override":false,"type":"FluidAmount","optional":true},{"name":"fluidbox_index","order":9,"description":"Used to specify which [CraftingMachinePrototype::fluid_boxes](prototype:CraftingMachinePrototype::fluid_boxes) this product should use. It will use this one fluidbox. The index is 1-based and separate for input and output fluidboxes.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"ignored_by_productivity","order":7,"description":"Amount that should be deducted from any productivity induced bonus crafts.\n\nThis value can safely be set larger than the maximum expected craft amount, any excess is ignored.\n\nThis value is ignored when [allow_productivity](prototype:RecipePrototype::allow_productivity) is `false`.","override":false,"type":"FluidAmount","optional":true,"default":"Value of `ignored_by_stats`"},{"name":"ignored_by_stats","order":6,"description":"Amount that should not be included in the fluid production statistics, typically with a matching ingredient having the same amount set as [ignored_by_stats](prototype:FluidIngredientPrototype::ignored_by_stats).\n\nIf `ignored_by_stats` is larger than the amount crafted (for instance due to probability) it will instead show as consumed.\n\nProducts with `ignored_by_stats` defined will not be set as recipe through the circuit network when using the product's fluid-signal.","override":false,"type":"FluidAmount","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"name","order":1,"description":"The name of a [FluidPrototype](prototype:FluidPrototype).","override":false,"type":"FluidID","optional":false},{"name":"probability","order":5,"description":"Value between 0 and 1, `0` for 0% chance and `1` for 100% chance.\n\nThe effect of probability is no product, or a linear distribution on [min, max]. For a recipe with probability `p`, amount_min `min`, and amount_max `max`, the Expected Value of this product can be expressed as `p * (0.5 * (max + min))`. This is what will be shown in a recipe tooltip. The effect of `ignored_by_productivity` on the product is not shown.\n\nWhen `amount_min` and `amount_max` are not provided, `amount` applies as min and max. The Expected Value simplifies to `p * amount`, providing `0` product, or `amount` product, on recipe completion.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"show_details_in_recipe_tooltip","order":10,"description":"When hovering over a recipe in the crafting menu the recipe tooltip will be shown. An additional item tooltip will be shown for every product, as a separate tooltip, if the item tooltip has a description and/or properties to show and if `show_details_in_recipe_tooltip` is `true`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"temperature","order":8,"description":"The temperature of the fluid product.","override":false,"type":"float","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"fluid"},"optional":false}]},{"name":"FluidWagonConnectorGraphics","order":238,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"load_animations","order":0,"description":"","override":false,"type":"PumpConnectorGraphics","optional":false},{"name":"unload_animations","order":1,"description":"","override":false,"type":"PumpConnectorGraphics","optional":false}]},{"name":"FogEffectProperties","order":239,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"color1","order":3,"description":"","override":false,"type":"Color","optional":true,"default":"{1, 1, 1, 1}"},{"name":"color2","order":4,"description":"","override":false,"type":"Color","optional":true,"default":"{1, 1, 1, 1}"},{"name":"detail_noise_texture","order":2,"description":"","override":false,"type":"EffectTexture","optional":false},{"name":"fog_type","order":0,"description":"`gleba` type is rendered per chunk and opacity of fog depends on count of tiles with [lowland_fog](prototype:TilePrototype::lowland_fog) set to `true` on the chunk.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"vulcanus"},{"complex_type":"literal","value":"gleba"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"vulcanus"}},{"name":"shape_noise_texture","order":1,"description":"","override":false,"type":"EffectTexture","optional":false},{"name":"tick_factor","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":5e-06}}]},{"name":"FogMaskShapeDefinition","order":240,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"falloff","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"rect","order":0,"description":"","override":false,"type":"SimpleBoundingBox","optional":false}]},{"name":"FollowerRobotLifetimeModifier","order":241,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"follower-robot-lifetime"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"FootprintParticle","order":242,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"particle_name","order":1,"description":"The name of the particle that should be created when the character walks on the defined tiles.","override":false,"type":"ParticleID","optional":true},{"name":"tiles","order":0,"description":"The tiles this footprint particle is shown on when the player walks over them.","override":false,"type":{"complex_type":"array","value":"TileID"},"optional":false},{"name":"use_as_default","order":2,"description":"Whether this footprint particle should be the default particle that is used for `tiles` that don't have an associated footprint particle.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"FootstepTriggerEffectItem","order":243,"description":"","parent":"CreateParticleTriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"actions","order":1,"description":"Can be used to specify multiple CreateParticleTriggerEffectItems. If this property is defined, all properties inherited from CreateParticleTriggerEffectItem are ignored.","override":false,"type":{"complex_type":"array","value":"CreateParticleTriggerEffectItem"},"optional":true},{"name":"tiles","order":0,"description":"","override":false,"type":{"complex_type":"array","value":"TileID"},"optional":false},{"name":"use_as_default","order":2,"description":"When `true`, the trigger(s) defined in `actions` are the default triggers for tiles that don't have an associated footstep particle trigger. (ie. don't show up in one of the \"tiles\" lists).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"FootstepTriggerEffectList","order":244,"description":"","examples":["```\nfootstep_particle_triggers =\n{\n  {\n    tiles = { \"water\", \"water-shallow\" },\n    type = \"create-particle\",\n    particle_name = \"water-particle\",\n    [...]\n  },\n  {\n    tiles = { \"grass-1\", \"grass-2\" },\n    type = \"create-particle\",\n    particle_name = \"grass-particle\",\n    [...]\n  },\n  [...]\n}\n```","```\nfootstep_particle_triggers =\n{\n  {\n    tiles = { \"water\", \"water-shallow\" },\n    actions =\n    {\n      {\n        type = \"create-particle\",\n        particle_name = \"water-particle-1\",\n        [...]\n      },\n      {\n        type = \"create-particle\",\n        particle_name = \"water-particle-2\",\n        [...]\n      },\n      [...]\n    }\n  },\n  {\n    tiles = { \"grass-1\", \"grass-2\" },\n    actions =\n    {\n      {\n        type = \"create-particle\",\n        particle_name = \"grass-particle-1\",\n        [...]\n      },\n      {\n        type = \"create-particle\",\n        particle_name = \"grass-particle-2\",\n        [...]\n      },\n      [...]\n    }\n  }\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"array","value":"FootstepTriggerEffectItem"}},{"name":"ForceCondition","order":245,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"all","description":"All forces pass."},{"complex_type":"literal","value":"enemy","description":"Forces which will attack pass."},{"complex_type":"literal","value":"ally","description":"Forces which won't attack pass."},{"complex_type":"literal","value":"friend","description":"Forces which are friends pass."},{"complex_type":"literal","value":"not-friend","description":"Forces which are not friends pass."},{"complex_type":"literal","value":"same","description":"The same force pass."},{"complex_type":"literal","value":"not-same","description":"The non-same forces pass."}],"full_format":true}},{"name":"FrameStyleSpecification","order":246,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"background_graphical_set","order":10,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"border","order":11,"description":"","override":false,"type":"BorderImageSet","optional":true},{"name":"drag_by_title","order":8,"description":"","override":false,"type":"boolean","optional":true},{"name":"graphical_set","order":1,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"header_background","order":9,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"header_filler_style","order":5,"description":"","override":false,"type":"EmptyWidgetStyleSpecification","optional":true},{"name":"header_flow_style","order":4,"description":"","override":false,"type":"HorizontalFlowStyleSpecification","optional":true},{"name":"horizontal_flow_style","order":2,"description":"","override":false,"type":"HorizontalFlowStyleSpecification","optional":true},{"name":"title_style","order":6,"description":"","override":false,"type":"LabelStyleSpecification","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"frame_style"},"optional":false},{"name":"use_header_filler","order":7,"description":"","override":false,"type":"boolean","optional":true},{"name":"vertical_flow_style","order":3,"description":"","override":false,"type":"VerticalFlowStyleSpecification","optional":true}]},{"name":"FrequencySizeRichness","order":247,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"frequency","order":0,"description":"","override":false,"type":"MapGenSize","optional":true},{"name":"richness","order":2,"description":"","override":false,"type":"MapGenSize","optional":true},{"name":"size","order":1,"description":"","override":false,"type":"MapGenSize","optional":true}]},{"name":"FuelCategoryID","order":248,"description":"The name of a [FuelCategory](prototype:FuelCategory).","examples":["```\n\"chemical\"\n```","```\n\"nuclear\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"FusionGeneratorDirectionGraphicsSet","order":249,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation","order":0,"description":"","override":false,"type":"Animation","optional":true},{"name":"fluid_input_graphics","order":3,"description":"The amount of items in this array has to match the amount of [input fluid connections](prototype:FusionGeneratorPrototype::input_fluid_box). Empty tables can be used as items to fulfill this requirement without defining graphics.","override":false,"type":{"complex_type":"array","value":"FusionGeneratorFluidInputGraphics"},"optional":true},{"name":"fusion_effect_uv_map","order":2,"description":"","override":false,"type":"Sprite","optional":true},{"name":"working_light","order":1,"description":"","override":false,"type":"Animation","optional":true}]},{"name":"FusionGeneratorFluidInputGraphics","order":250,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"fusion_effect_uv_map","order":2,"description":"","override":false,"type":"Sprite","optional":true},{"name":"sprite","order":0,"description":"","override":false,"type":"Sprite","optional":true},{"name":"working_light","order":1,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"FusionGeneratorGraphicsSet","order":251,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"east_graphics_set","order":1,"description":"","override":false,"type":"FusionGeneratorDirectionGraphicsSet","optional":false},{"name":"glow_color","order":6,"description":"","override":false,"type":"Color","optional":true,"default":"`{1, 1, 1}`"},{"name":"light","order":5,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"north_graphics_set","order":0,"description":"","override":false,"type":"FusionGeneratorDirectionGraphicsSet","optional":false},{"name":"render_layer","order":4,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"south_graphics_set","order":2,"description":"","override":false,"type":"FusionGeneratorDirectionGraphicsSet","optional":false},{"name":"water_reflection","order":7,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true},{"name":"west_graphics_set","order":3,"description":"","override":false,"type":"FusionGeneratorDirectionGraphicsSet","optional":false}]},{"name":"FusionReactorConnectionGraphics","order":252,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"fusion_effect_uv_map","order":2,"description":"","override":false,"type":"Sprite","optional":true},{"name":"pictures","order":0,"description":"","override":false,"type":"Animation","optional":true},{"name":"working_light_pictures","order":1,"description":"","override":false,"type":"Animation","optional":true}]},{"name":"FusionReactorGraphicsSet","order":253,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"connections_graphics","order":7,"description":"","override":false,"type":{"complex_type":"array","value":"FusionReactorConnectionGraphics"},"optional":true},{"name":"default_fuel_glow_color","order":2,"description":"","override":false,"type":"Color","optional":true,"default":"`{1, 1, 1}`"},{"name":"direction_to_connections_graphics","order":8,"description":"","override":false,"type":{"complex_type":"dictionary","key":"DirectionString","value":{"complex_type":"array","value":"uint8"}},"optional":true},{"name":"fusion_effect_uv_map","order":6,"description":"","override":false,"type":"Sprite","optional":true},{"name":"light","order":3,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"plasma_category","order":9,"description":"Cannot be an empty string.","override":false,"type":"NeighbourConnectableConnectionCategory","optional":false},{"name":"render_layer","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"structure","order":0,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"use_fuel_glow_color","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"water_reflection","order":10,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true},{"name":"working_light_pictures","order":4,"description":"","override":false,"type":"Sprite4Way","optional":true}]},{"name":"GameControllerVibrationData","order":254,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"duration","order":2,"description":"Duration in milliseconds.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"high_frequency_vibration_intensity","order":1,"description":"Vibration intensity must be between 0 and 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"low_frequency_vibration_intensity","order":0,"description":"Vibration intensity must be between 0 and 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"play_for","order":3,"description":"","override":false,"type":"PlayFor","optional":true,"default":{"complex_type":"literal","value":"character_actions"}}]},{"name":"GameViewSettings","order":255,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"default_show_value","order":0,"description":"If this is defined then it sets the default value for all other properties.","override":false,"type":"boolean","optional":true},{"name":"show_alert_gui","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_controller_gui","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_crafting_queue","order":13,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_entity_info","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"show_entity_tooltip","order":10,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_hotkey_suggestions","order":15,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_map_view_options","order":9,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_minimap","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_quickbar","order":11,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_rail_block_visualisation","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"show_research_info","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_shortcut_bar","order":12,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_side_menu","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_surface_list","order":16,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"show_tool_bar","order":14,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"update_entity_selection","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"GateOverRailBuildTipTrigger","order":256,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"gate-over-rail-build"},"optional":false}]},{"name":"GeneratingPowerTipTrigger","order":257,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"generating-power"},"optional":false}]},{"name":"GhostShimmerConfig","order":258,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"blend_mode","order":2,"description":"","override":false,"type":"int32","optional":false},{"name":"distortion","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"distortion_layers","order":7,"description":"The array must have at least 6 elements.","override":false,"type":{"complex_type":"array","value":"GhostShimmerDistortionData"},"optional":false},{"name":"overlay_layers","order":6,"description":"The array must have at least 6 elements.","override":false,"type":{"complex_type":"array","value":"GhostShimmerOverlayData"},"optional":false},{"name":"proportional_distortion","order":4,"description":"","override":false,"type":"boolean","optional":false},{"name":"tint","order":0,"description":"","override":false,"type":"Color","optional":false},{"name":"visualize_borders","order":3,"description":"","override":false,"type":"boolean","optional":false},{"name":"world_uv_modulo","order":5,"description":"","override":false,"type":"int32","optional":false}]},{"name":"GhostShimmerDistortionData","order":259,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"intensity","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"shape","order":0,"description":"","override":false,"type":"int32","optional":false},{"name":"x","order":2,"description":"","override":false,"type":"float","optional":false},{"name":"y","order":3,"description":"","override":false,"type":"float","optional":false}]},{"name":"GhostShimmerOverlayData","order":260,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"blend_mode","order":0,"description":"","override":false,"type":"int32","optional":false},{"name":"cutoff","order":5,"description":"","override":false,"type":"float","optional":false},{"name":"shape","order":1,"description":"","override":false,"type":"int32","optional":false},{"name":"tint","order":4,"description":"","override":false,"type":"Color","optional":false},{"name":"x","order":2,"description":"","override":false,"type":"float","optional":false},{"name":"y","order":3,"description":"","override":false,"type":"float","optional":false}]},{"name":"GhostTintSet","order":261,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"ghost_delivery_tint","order":1,"description":"","override":false,"type":"Color","optional":false},{"name":"ghost_tint","order":0,"description":"","override":false,"type":"Color","optional":false},{"name":"tile_ghost_delivery_tint","order":3,"description":"","override":false,"type":"Color","optional":false},{"name":"tile_ghost_tint","order":2,"description":"","override":false,"type":"Color","optional":false},{"name":"wire_tint","order":4,"description":"Wires are hard to read when the ghost_tint is very saturated, so they use a separate tint color for better fine tuning.","override":false,"type":"Color","optional":false}]},{"name":"GigaCargoHatchDefinition","order":262,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"closing_sound","order":6,"description":"Cannot use `fade_ticks`.","override":false,"type":"InterruptibleSound","optional":true},{"name":"covered_hatches","order":4,"description":"","override":false,"type":{"complex_type":"array","value":"uint32"},"optional":false},{"name":"hatch_graphics_back","order":0,"description":"","override":false,"type":"Animation","optional":true},{"name":"hatch_graphics_front","order":1,"description":"","override":false,"type":"Animation","optional":true},{"name":"hatch_render_layer_back","order":2,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"higher-object-under"}},{"name":"hatch_render_layer_front","order":3,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"higher-object-above"}},{"name":"opening_sound","order":5,"description":"Cannot use `fade_ticks`.","override":false,"type":"InterruptibleSound","optional":true}]},{"name":"GiveItemModifier","order":263,"description":"Note that when any technology prototype changes (regardless of which mod it belongs to), the game re-applies all researched technology effects, including `\"give-item\"` modifiers. This means that players will receive the item again, even if they already received it previously. This can be undesirable.","parent":"BaseModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count","order":4,"description":"Must be >= `1`.","override":false,"type":"ItemCountType","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"item","order":2,"description":"","override":false,"type":"ItemID","optional":false},{"name":"quality","order":3,"description":"","override":false,"type":"QualityID","optional":true,"default":{"complex_type":"literal","value":"normal"}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"give-item"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"GlobalRecipeTints","order":264,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"primary","order":0,"description":"","override":false,"type":"Color","optional":true,"default":"`{1, 1, 1, 1}`"},{"name":"quaternary","order":3,"description":"","override":false,"type":"Color","optional":true,"default":"`{1, 1, 1, 1}`"},{"name":"secondary","order":1,"description":"","override":false,"type":"Color","optional":true,"default":"`{1, 1, 1, 1}`"},{"name":"tertiary","order":2,"description":"","override":false,"type":"Color","optional":true,"default":"`{1, 1, 1, 1}`"}]},{"name":"GlobalTintEffectProperties","order":265,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"global_intensity","order":5,"description":"","override":false,"type":"float","optional":false},{"name":"global_scale","order":6,"description":"","override":false,"type":"float","optional":false},{"name":"intensity","order":2,"description":"","override":false,"type":"Vector4f","optional":false},{"name":"noise_texture","order":0,"description":"","override":false,"type":"EffectTexture","optional":false},{"name":"offset","order":1,"description":"","override":false,"type":"Vector4f","optional":false},{"name":"scale_u","order":3,"description":"","override":false,"type":"Vector4f","optional":false},{"name":"scale_v","order":4,"description":"","override":false,"type":"Vector4f","optional":false},{"name":"zoom_factor","order":7,"description":"","override":false,"type":"float","optional":false},{"name":"zoom_intensity","order":8,"description":"","override":false,"type":"float","optional":false}]},{"name":"GlowStyleSpecification","order":266,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"image_set","order":1,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"glow_style"},"optional":false}]},{"name":"GraphStyleSpecification","order":267,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"background_color","order":1,"description":"","override":false,"type":"Color","optional":true},{"name":"data_line_highlight_distance","order":11,"description":"","override":false,"type":"uint32","optional":true},{"name":"font","order":15,"description":"Name of a [FontPrototype](prototype:FontPrototype).","override":false,"type":"string","optional":true},{"name":"graph_right_margin","order":10,"description":"","override":false,"type":"uint32","optional":true},{"name":"graph_top_margin","order":9,"description":"","override":false,"type":"uint32","optional":true},{"name":"grid_lines_color","order":13,"description":"","override":false,"type":"Color","optional":true},{"name":"guide_lines_color","order":14,"description":"","override":false,"type":"Color","optional":true},{"name":"horizontal_label_style","order":3,"description":"","override":false,"type":"LabelStyleSpecification","optional":true},{"name":"horizontal_labels_margin","order":7,"description":"","override":false,"type":"uint32","optional":true},{"name":"line_colors","order":2,"description":"","override":false,"type":{"complex_type":"array","value":"Color"},"optional":true},{"name":"minimal_horizontal_label_spacing","order":5,"description":"","override":false,"type":"uint32","optional":true},{"name":"minimal_vertical_label_spacing","order":6,"description":"","override":false,"type":"uint32","optional":true},{"name":"selection_dot_radius","order":12,"description":"","override":false,"type":"uint32","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"graph_style"},"optional":false},{"name":"vertical_label_style","order":4,"description":"","override":false,"type":"LabelStyleSpecification","optional":true},{"name":"vertical_labels_margin","order":8,"description":"","override":false,"type":"uint32","optional":true}]},{"name":"GroupAttackTipTrigger","order":268,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"group-attack"},"optional":false}]},{"name":"GunShift4Way","order":269,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":1,"description":"","override":false,"type":"Vector","optional":true},{"name":"north","order":0,"description":"","override":false,"type":"Vector","optional":false},{"name":"south","order":2,"description":"","override":false,"type":"Vector","optional":true},{"name":"west","order":3,"description":"","override":false,"type":"Vector","optional":true}]},{"name":"GunSpeedModifier","order":270,"description":"","parent":"BaseModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"ammo_category","order":3,"description":"Name of the [AmmoCategory](prototype:AmmoCategory) that is affected.","override":false,"type":"AmmoCategoryID","optional":false},{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"modifier","order":4,"description":"Modification value, which will be added to the current gun speed modifier upon researching.","override":false,"type":"double","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"gun-speed"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"HeatBuffer","order":271,"description":"Used to specify heat capacity properties without a [heat energy source](prototype:HeatEnergySource).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"connections","order":11,"description":"May contain up to 32 connections.","override":false,"type":{"complex_type":"array","value":"HeatConnection"},"optional":true},{"name":"default_temperature","order":3,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":15}},{"name":"heat_glow","order":10,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"heat_picture","order":9,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"heat_pipe_covers","order":8,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"max_temperature","order":0,"description":"Must be >= `default_temperature`.","override":false,"type":"double","optional":false},{"name":"max_transfer","order":2,"description":"","override":false,"type":"Energy","optional":false},{"name":"min_temperature_gradient","order":4,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"min_working_temperature","order":5,"description":"Must be >= `default_temperature` and <= `max_temperature`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":15}},{"name":"minimum_glow_temperature","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"pipe_covers","order":7,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"specific_heat","order":1,"description":"","override":false,"type":"Energy","optional":false}]},{"name":"HeatConnection","order":272,"description":"Defines the connections for [HeatEnergySource](prototype:HeatEnergySource) and [HeatBuffer](prototype:HeatBuffer).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"direction","order":1,"description":"The \"outward\" direction of this heat connection. For a connection to succeed, the other heat connection must face the opposite direction (a south-facing connection needs a north-facing connection to succeed). A connection rotates with the entity.","override":false,"type":"defines.direction","optional":false},{"name":"position","order":0,"description":"The location of the heat pipe connection, relative to the center of the entity in the north-facing direction.","override":false,"type":"MapPosition","optional":false}]},{"name":"HeatEnergySource","order":273,"description":"","parent":"BaseEnergySource","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"connections","order":12,"description":"May contain up to 32 connections.","override":false,"type":{"complex_type":"array","value":"HeatConnection"},"optional":true},{"name":"default_temperature","order":4,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":15}},{"name":"emissions_per_minute","order":13,"description":"","override":true,"type":{"complex_type":"dictionary","key":"AirbornePollutantID","value":"double"},"optional":true},{"name":"heat_glow","order":11,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"heat_picture","order":10,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"heat_pipe_covers","order":9,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"max_temperature","order":1,"description":"Must be >= `default_temperature`.","override":false,"type":"double","optional":false},{"name":"max_transfer","order":3,"description":"","override":false,"type":"Energy","optional":false},{"name":"min_temperature_gradient","order":5,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"min_working_temperature","order":6,"description":"Must be >= `default_temperature` and <= `max_temperature`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":15}},{"name":"minimum_glow_temperature","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"pipe_covers","order":8,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"specific_heat","order":2,"description":"","override":false,"type":"Energy","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"heat"},"optional":false}]},{"name":"HorizontalAlign","order":274,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"left","description":""},{"complex_type":"literal","value":"center","description":""},{"complex_type":"literal","value":"right","description":""}],"full_format":true}},{"name":"HorizontalFlowStyleSpecification","order":275,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"horizontal_spacing","order":1,"description":"","override":false,"type":"int32","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"horizontal_flow_style"},"optional":false}]},{"name":"HorizontalScrollBarStyleSpecification","order":276,"description":"","parent":"ScrollBarStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"horizontal_scrollbar_style"},"optional":false}]},{"name":"IconData","order":277,"description":"One layer of an icon. Icon layering follows the following rules:\n\n- The rendering order of the individual icon layers follows the array order: Later added icon layers (higher index) are drawn on top of previously added icon layers (lower index).\n\n- By default the first icon layer will draw an outline (or shadow in GUI), other layers will draw it only if they have `draw_background` explicitly set to `true`. There are caveats to this though. See [the doc](prototype:IconData::draw_background).\n\n- When the final icon is displayed with transparency (e.g. a faded out alert), the icon layer overlap may look [undesirable](https://forums.factorio.com/viewtopic.php?p=575844#p575844).\n\n- When the final icon is displayed with a shadow (e.g. an item on the ground or on a belt when item shadows are turned on), each icon layer will [cast a shadow](https://forums.factorio.com/84888) and the shadow is cast on the layer below it.\n\n- The final icon will always be resized and centered in GUI so that all its layers (except the [`floating`](prototype:IconData::floating) ones) fit the target slot, but won't be resized when displayed on machines in alt-mode. For example: recipe first icon layer is size 128, scale 1, the icon group will be displayed at resolution /4 to fit the 32px GUI boxes, but will be displayed 4 times as large on buildings.\n\n- Shift values are based on [`expected_icon_size / 2`](prototype:IconData::scale).\n\nThe game automatically generates [icon mipmaps](https://factorio.com/blog/post/fff-291) for all icons. However, icons can have custom mipmaps defined. Custom mipmaps may help to achieve clearer icons at reduced size (e.g. when zooming out) than auto-generated mipmaps. If an icon file contains mipmaps then the game will automatically infer the icon's mipmap count. Icon files for custom mipmaps must contain half-size images with a geometric-ratio, for each mipmap level. Each next level is aligned to the upper-left corner, with no extra padding. Example sequence: `128x128@(0,0)`, `64x64@(128,0)`, `32x32@(192,0)` is three mipmaps.","examples":["```\n-- one icon layer\n{\n  icon = \"__base__/graphics/icons/fluid/heavy-oil.png\",\n  icon_size = 64,\n  scale = 0.5,\n  shift = {4, -8}\n}\n```","```\n-- Layered icon, with size defined per layer\nicons =\n{\n  {\n    icon = \"__base__/graphics/icons/fluid/barreling/barrel-empty.png\",\n    icon_size = 32\n  },\n  {\n    icon = \"__base__/graphics/icons/fluid/barreling/barrel-empty-side-mask.png\",\n    icon_size = 32,\n    tint = { a = 0.75, b = 0, g = 0, r = 0 }\n  },\n  {\n    icon = \"__base__/graphics/icons/fluid/barreling/barrel-empty-top-mask.png\",\n    icon_size = 32,\n    tint = { a = 0.75, b = 0.5, g = 0.5, r = 0.5 }\n  },\n  {\n    icon = \"__base__/graphics/icons/fluid/crude-oil.png\",\n    icon_size = 32,\n    scale = 0.5,\n    shift = {7, 8}\n  }\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"draw_background","order":5,"description":"Outline is drawn using signed distance field generated on load. One icon image will have only one SDF generated. That means if the image is used in multiple icons with different scales, the outline width won't match the desired width in all the scales except the largest one.","override":false,"type":"boolean","optional":true,"default":"`true` for the first layer, `false` otherwise"},{"name":"floating","order":6,"description":"When `true` the layer is not considered for calculating bounds of the icon, so it can go out of bounds of rectangle into which the icon is drawn in GUI.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"icon","order":0,"description":"Path to the icon file.","override":false,"type":"FileName","optional":false},{"name":"icon_size","order":1,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"scale","order":4,"description":"Defaults to `(expected_icon_size / 2) / icon_size`.\n\nSpecifies the scale of the icon on the GUI scale. A scale of `2` means that the icon will be two times bigger on screen (and thus more pixelated).\n\nExpected icon sizes:\n\n- `512` for [SpaceLocationPrototype::starmap_icon](prototype:SpaceLocationPrototype::starmap_icon).\n\n- `256` for [TechnologyPrototype](prototype:TechnologyPrototype).\n\n- `128` for [AchievementPrototype](prototype:AchievementPrototype) and [ItemGroup](prototype:ItemGroup).\n\n- `32` for [ShortcutPrototype::icons](prototype:ShortcutPrototype::icons) and `24` for [ShortcutPrototype::small_icons](prototype:ShortcutPrototype::small_icons).\n\n- `64` for the rest of the prototypes that use icons.","override":false,"type":"double","optional":true},{"name":"shift","order":3,"description":"Used to offset the icon \"layer\" from the overall icon. The shift is applied from the center (so negative shifts are left and up, respectively). Shift values are \"in pixels\" where the overall icon is assumed to be `expected_icon_size / 2` pixels in width and height, meaning shift `{0, expected_icon_size/2}` will shift it by entire icon height down.","override":false,"type":"Vector","optional":true,"default":"`{0, 0}`"},{"name":"tint","order":2,"description":"The tint to apply to the icon.","override":false,"type":"Color","optional":true,"default":"`{r=1, g=1, b=1, a=1}`"}]},{"name":"IconDrawSpecification","order":278,"description":"Specification of where and how the alt-mode icons of entities should be drawn.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"render_layer","order":3,"description":"Render layer of the icon.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"entity-info-icon"},{"complex_type":"literal","value":"entity-info-icon-above"},{"complex_type":"literal","value":"air-entity-info-icon"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"entity-info-icon"}},{"name":"scale","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"scale_for_many","order":2,"description":"Scale of the icon when there are many items.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"shift","order":0,"description":"","override":false,"type":"Vector","optional":true,"default":"`{0, 0}`"}]},{"name":"IconSequencePositioning","order":279,"description":"Specification of where and how should be the icons of individual inventories be drawn.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"inventory_index","order":0,"description":"","override":false,"type":"defines.inventory","optional":false},{"name":"max_icon_rows","order":2,"description":"","override":false,"type":"uint8","optional":true,"default":"width of entity selection box / 1.5"},{"name":"max_icons_per_row","order":1,"description":"","override":false,"type":"uint8","optional":true,"default":"width of entity selection box / 0.75"},{"name":"multi_row_initial_height_modifier","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":-0.1}},{"name":"scale","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"separation_multiplier","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.1}},{"name":"shift","order":3,"description":"","override":false,"type":"Vector","optional":true,"default":"{0, 0.7}"}]},{"name":"ImageStyleSpecification","order":280,"description":"","examples":["```\ndata.raw[\"gui-style\"][\"default\"][\"stretchy-sprite\"] =\n{\n  type = \"image_style\",\n  vertically_stretchable = \"on\",\n  horizontally_stretchable = \"on\",\n  stretch_image_to_widget_size = true,\n}\n```"],"parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"graphical_set","order":1,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"invert_colors_of_picture_when_hovered_or_toggled","order":3,"description":"","override":false,"type":"boolean","optional":true},{"name":"stretch_image_to_widget_size","order":2,"description":"","override":false,"type":"boolean","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"image_style"},"optional":false}]},{"name":"IngredientPrototype","order":281,"description":"Item or fluid ingredient.","examples":["```\n{type=\"item\", name=\"steel-plate\", amount=8} -- item ingredient\n```","```\n{type=\"fluid\", name=\"water\", amount=50} -- fluid ingredient\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"ItemIngredientPrototype","description":"Loaded when the `type` is `\"item\"`."},{"complex_type":"type","value":"FluidIngredientPrototype","description":"Loaded when the `type` is `\"fluid\"`."}],"full_format":true}},{"name":"InsertItemTriggerEffectItem","order":282,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count","order":3,"description":"","override":false,"type":"ItemCountType","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"item","order":1,"description":"Name of the [ItemPrototype](prototype:ItemPrototype) that should be created.","override":false,"type":"ItemID","optional":false},{"name":"quality","order":2,"description":"","override":false,"type":"QualityID","optional":true,"default":{"complex_type":"literal","value":"normal"}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"insert-item"},"optional":false}]},{"name":"InserterStackSizeBonusModifier","order":283,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"inserter-stack-size-bonus"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"InstantTriggerDelivery","order":284,"description":"","parent":"TriggerDeliveryItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"instant"},"optional":false}]},{"name":"InterruptibleSound","order":285,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"fade_ticks","order":4,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"minimal_change_per_tick","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"minimal_sound_duration_for_stopped_sound","order":3,"description":"Has to be greater or equal to `1`.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"sound","order":0,"description":"At least one of sound and stopped_sound has to be defined.","override":false,"type":"Sound","optional":true},{"name":"stopped_sound","order":2,"description":"At least one of sound and stopped_sound has to be defined.","override":false,"type":"Sound","optional":true}]},{"name":"InventoryWithCustomStackSizeSpecification","order":286,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"stack_size_max","order":2,"description":"Must be >= stack_size_min.","override":false,"type":"ItemCountType","optional":true},{"name":"stack_size_min","order":1,"description":"Must be >= 1.","override":false,"type":"ItemCountType","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"stack_size_multiplier","order":0,"description":"Must be >= 0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"stack_size_override","order":3,"description":"Each record value must be >= 1. For non-stackable items this value will be ignored.","override":false,"type":{"complex_type":"dictionary","key":"ItemID","value":"ItemCountType"},"optional":true},{"name":"with_bar","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"InvokeTileEffectTriggerEffectItem","order":287,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"tile_collision_mask","order":1,"description":"","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"invoke-tile-trigger"},"optional":false}]},{"name":"ItemCountType","order":288,"description":"","abstract":false,"inline":false,"type":"uint32"},{"name":"ItemGroupID","order":289,"description":"The name of an [ItemGroup](prototype:ItemGroup).","examples":["```\n\"logistics\"\n```","```\n\"production\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"ItemHealthColorData","order":290,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"color","order":1,"description":"","override":false,"type":"Color","optional":false},{"name":"threshold","order":0,"description":"Cannot be negative.","override":false,"type":"float","optional":false}]},{"name":"ItemID","order":291,"description":"The name of an [ItemPrototype](prototype:ItemPrototype).","examples":["```\n\"iron-plate\"\n```","```\n\"blueprint-book\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"ItemIDFilter","order":292,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"ItemID"],"full_format":false},"properties":[{"name":"comparator","order":2,"description":"Only loaded if `quality` is defined.","override":false,"type":"ComparatorString","optional":true},{"name":"name","order":0,"description":"","override":false,"type":"ItemID","optional":false},{"name":"quality","order":1,"description":"","override":false,"type":"QualityID","optional":true}]},{"name":"ItemIngredientPrototype","order":293,"description":"An item ingredient definition.","examples":["```\n{type=\"item\", name=\"steel-plate\", amount=8}\n```","```\n{type=\"item\", name=\"iron-plate\", amount=12}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"amount","order":2,"description":"Cannot be `0`.","override":false,"type":"uint16","optional":false},{"name":"ignored_by_stats","order":3,"description":"Amount that should not be included in the consumption statistics, typically with a matching product having the same amount set as [ignored_by_stats](prototype:ItemProductPrototype::ignored_by_stats).","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"name","order":1,"description":"","override":false,"type":"ItemID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"item"},"optional":false}]},{"name":"ItemProductPrototype","order":294,"description":"An item product definition.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"amount","order":2,"description":"","override":false,"type":"uint16","optional":true},{"name":"amount_max","order":4,"description":"Only loaded, and mandatory if `amount` is not defined.\n\nIf set to a number that is less than `amount_min`, the game will use `amount_min` instead.","override":false,"type":"uint16","optional":true},{"name":"amount_min","order":3,"description":"Only loaded, and mandatory if `amount` is not defined.","override":false,"type":"uint16","optional":true},{"name":"extra_count_fraction","order":9,"description":"Probability that a craft will yield one additional product. Also applies to bonus crafts caused by productivity.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"ignored_by_productivity","order":7,"description":"Amount that should be deducted from any productivity induced bonus crafts.\n\nThis value can safely be set larger than the maximum expected craft amount, any excess is ignored.\n\nThis value is ignored when [allow_productivity](prototype:RecipePrototype::allow_productivity) is `false`.","override":false,"type":"uint16","optional":true,"default":"Value of `ignored_by_stats`"},{"name":"ignored_by_stats","order":6,"description":"Amount that should not be included in the item production statistics, typically with a matching ingredient having the same amount set as [ignored_by_stats](prototype:ItemIngredientPrototype::ignored_by_stats).\n\nIf `ignored_by_stats` is larger than the amount crafted (for instance due to probability) it will instead show as consumed.\n\nProducts with `ignored_by_stats` defined will not be set as recipe through the circuit network when using the product's item-signal.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"name","order":1,"description":"The name of an [ItemPrototype](prototype:ItemPrototype).","override":false,"type":"ItemID","optional":false},{"name":"percent_spoiled","order":10,"description":"Must be >= `0` and < `1`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"probability","order":5,"description":"Value between 0 and 1, `0` for 0% chance and `1` for 100% chance.\n\nThe effect of probability is no product, or a linear distribution on [min, max]. For a recipe with probability `p`, amount_min `min`, and amount_max `max`, the Expected Value of this product can be expressed as `p * (0.5 * (max + min))`. This is what will be shown in a recipe tooltip. The effect of `ignored_by_productivity` on the product is not shown.\n\nWhen `amount_min` and `amount_max` are not provided, `amount` applies as min and max. The Expected Value simplifies to `p * amount`, providing `0` product, or `amount` product, on recipe completion.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"show_details_in_recipe_tooltip","order":8,"description":"When hovering over a recipe in the crafting menu the recipe tooltip will be shown. An additional item tooltip will be shown for every product, as a separate tooltip, if the item tooltip has a description and/or properties to show and if `show_details_in_recipe_tooltip` is `true`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"item"},"optional":false}]},{"name":"ItemPrototypeFlags","order":295,"description":"An array containing the following values.","abstract":false,"inline":false,"type":{"complex_type":"array","value":{"complex_type":"union","options":[{"complex_type":"literal","value":"draw-logistic-overlay","description":"Whether the logistics areas of roboports should be drawn when holding this item. Used for example by the [deconstruction planner](https://wiki.factorio.com/Deconstruction_planner)."},{"complex_type":"literal","value":"excluded-from-trash-unrequested","description":"Whether the trash-unrequested feature skips this item."},{"complex_type":"literal","value":"always-show","description":"Always show the item in selection lists (item filter, logistic request etc.) even when locked recipe for that item is present."},{"complex_type":"literal","value":"hide-from-bonus-gui","description":"Item will not appear in the bonus gui."},{"complex_type":"literal","value":"hide-from-fuel-tooltip","description":"Item will not appear in the tooltips shown when hovering over a burner inventory with the fuel category the item is in."},{"complex_type":"literal","value":"not-stackable","description":"The item can never be stacked. Additionally, the item does not show an item count when in the cursor. This also prevents the item from stacking in assembling machine input slots, which otherwise can exceed the item stack size if required by the recipe."},{"complex_type":"literal","value":"primary-place-result","description":"Item will be preferred by construction bots when building the entity specified by the item's [place_result](prototype:ItemPrototype::place_result)."},{"complex_type":"literal","value":"mod-openable","description":"Allows the item to be opened by the player, firing the [on_mod_item_opened](runtime:on_mod_item_opened) event."},{"complex_type":"literal","value":"only-in-cursor","description":"Item is deleted when removed from the cursor by pressing `Q` (\"clear cursor\"). Used for example by the copy/paste tools."},{"complex_type":"literal","value":"spawnable","description":"Item is able to be spawned by a [ShortcutPrototype](prototype:ShortcutPrototype) or [CustomInputPrototype](prototype:CustomInputPrototype)."},{"complex_type":"literal","value":"spoil-result","description":""},{"complex_type":"literal","value":"ignore-spoil-time-modifier","description":"Controls whether the spoil time ignores the spoil time modifier in the [DifficultySettings](runtime:DifficultySettings)."}],"full_format":true}}},{"name":"ItemStackIndex","order":296,"description":"","abstract":false,"inline":false,"type":"uint16"},{"name":"ItemSubGroupID","order":297,"description":"The name of an [ItemSubGroup](prototype:ItemSubGroup).","examples":["```\n\"capsule\"\n```","```\n\"military-equipment\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"ItemToPlace","order":298,"description":"Item that when placed creates this entity/tile.","examples":["```\n{item = \"iron-chest\", count = 1}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count","order":1,"description":"How many items are used to place one of this entity/tile. Can't be larger than the stack size of the item.","override":false,"type":"ItemCountType","optional":false},{"name":"item","order":0,"description":"The item used to place this entity/tile.","override":false,"type":"ItemID","optional":false}]},{"name":"KillTipTrigger","order":299,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"damage_type","order":3,"description":"","override":false,"type":"DamageTypeID","optional":true},{"name":"entity","order":1,"description":"","override":false,"type":"EntityID","optional":true},{"name":"match_type_only","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"kill"},"optional":false}]},{"name":"LabelStyleSpecification","order":300,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"clicked_font_color","order":5,"description":"","override":false,"type":"Color","optional":true},{"name":"disabled_font_color","order":6,"description":"","override":false,"type":"Color","optional":true},{"name":"font","order":1,"description":"Name of a [FontPrototype](prototype:FontPrototype).","override":false,"type":"string","optional":true},{"name":"font_color","order":2,"description":"","override":false,"type":"Color","optional":true},{"name":"game_controller_hovered_font_color","order":4,"description":"","override":false,"type":"Color","optional":true},{"name":"hovered_font_color","order":3,"description":"","override":false,"type":"Color","optional":true},{"name":"parent_hovered_font_color","order":7,"description":"","override":false,"type":"Color","optional":true},{"name":"rich_text_highlight_error_color","order":11,"description":"","override":false,"type":"Color","optional":true},{"name":"rich_text_highlight_ok_color","order":13,"description":"","override":false,"type":"Color","optional":true},{"name":"rich_text_highlight_warning_color","order":12,"description":"","override":false,"type":"Color","optional":true},{"name":"rich_text_setting","order":8,"description":"","override":false,"type":"RichTextSetting","optional":true},{"name":"single_line","order":9,"description":"","override":false,"type":"boolean","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"label_style"},"optional":false},{"name":"underlined","order":10,"description":"","override":false,"type":"boolean","optional":true}]},{"name":"LaboratoryProductivityModifier","order":301,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"laboratory-productivity"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"LaboratorySpeedModifier","order":302,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"laboratory-speed"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"LayeredSound","order":303,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"Sound"],"full_format":false},"properties":[{"name":"layers","order":0,"description":"","override":false,"type":{"complex_type":"array","value":"Sound"},"optional":false}]},{"name":"LayeredSprite","order":304,"description":"","parent":"Sprite","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"array","value":"LayeredSprite"}],"full_format":false},"properties":[{"name":"render_layer","order":0,"description":"","override":false,"type":"RenderLayer","optional":false}]},{"name":"LayeredSpriteVariations","order":305,"description":"","abstract":false,"inline":false,"type":{"complex_type":"array","value":"LayeredSprite"}},{"name":"LightDefinition","order":306,"description":"Specifies a light source. This is loaded either as a single light source or as an array of light sources.","examples":["```\n-- The light of the orange state of the rail signal\norange_light = {intensity = 0.2, size = 4, color={r=1, g=0.5}}\n```","```\n-- The front lights of the car\nlight =\n{\n  {\n    type = \"oriented\",\n    minimum_darkness = 0.3,\n    picture =\n    {\n      filename = \"__core__/graphics/light-cone.png\",\n      priority = \"extra-high\",\n      flags = { \"light\" },\n      scale = 2,\n      width = 200,\n      height = 200\n    },\n    shift = {-0.6, -14},\n    size = 2,\n    intensity = 0.6,\n    color = {r = 0.92, g = 0.77, b = 0.3}\n  },\n  {\n    type = \"oriented\",\n    minimum_darkness = 0.3,\n    picture =\n    {\n      filename = \"__core__/graphics/light-cone.png\",\n      priority = \"extra-high\",\n      flags = { \"light\" },\n      scale = 2,\n      width = 200,\n      height = 200\n    },\n    shift = {0.6, -14},\n    size = 2,\n    intensity = 0.6,\n    color = {r = 0.92, g = 0.77, b = 0.3}\n  }\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"array","value":{"complex_type":"struct"}}],"full_format":false},"properties":[{"name":"add_perspective","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"color","order":12,"description":"Color of the light.","override":false,"type":"Color","optional":true,"default":"`{r=1, g=1, b=1}`"},{"name":"flicker_interval","order":7,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"flicker_max_modifier","order":9,"description":"","override":false,"type":"float","optional":true,"default":"Value of `flicker_min_modifier`"},{"name":"flicker_min_modifier","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"intensity","order":3,"description":"Brightness of the light in the range `[0, 1]`, where `0` is no light and `1` is the maximum light.","override":false,"type":"float","optional":false},{"name":"minimum_darkness","order":13,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"offset_flicker","order":10,"description":"Offsets tick used to calculate flicker by position hash. Useful to desynchronize flickering of multiple stationary lights.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"picture","order":1,"description":"Only loaded, and mandatory if `type` is `\"oriented\"`.","override":false,"type":"Sprite","optional":true},{"name":"rotation_shift","order":2,"description":"Only loaded if `type` is `\"oriented\"`.","override":false,"type":"RealOrientation","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"shift","order":11,"description":"","override":false,"type":"Vector","optional":true},{"name":"size","order":4,"description":"The radius of the light in tiles. Note that the light gets darker near the edges, so the effective size of the light will appear to be smaller.","override":false,"type":"float","optional":false},{"name":"source_orientation_offset","order":5,"description":"","override":false,"type":"RealOrientation","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"basic"},{"complex_type":"literal","value":"oriented"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"basic"}}]},{"name":"LightFlickeringDefinition","order":307,"description":"Specifies the light flicker. Note that this defaults to \"showing a white light\" instead of the usually expected \"showing nothing\".","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"border_fix_speed","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.02}},{"name":"color","order":7,"description":"Color of the light.","override":false,"type":"Color","optional":true,"default":"{r=1, g=1, b=1} (White)"},{"name":"derivation_change_deviation","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.06}},{"name":"derivation_change_frequency","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.3}},{"name":"light_intensity_to_size_coefficient","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"maximum_intensity","order":1,"description":"Brightness of the light in the range `[0, 1]` where `0` is no light and `1` is the maximum light.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.8}},{"name":"minimum_intensity","order":0,"description":"Brightness of the light in the range `[0, 1]` where `0` is no light and `1` is the maximum light.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.2}},{"name":"minimum_light_size","order":5,"description":"The radius of the light in tiles. Note, that the light gets darker near the edges, so the effective size of the light seems to be smaller.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}}]},{"name":"LightProperties","order":308,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"color","order":0,"description":"","override":false,"type":"Color","optional":true,"default":"{1, 1, 1, 1}"},{"name":"direction","order":1,"description":"","override":false,"type":"Vector3D","optional":true,"default":"{1, 1, 1}"}]},{"name":"LightningGraphicsSet","order":309,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"attractor_hit_animation","order":19,"description":"","override":false,"type":"Animation","optional":true},{"name":"bolt_detail_level","order":16,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":6}},{"name":"bolt_half_width","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.005}},{"name":"bolt_midpoint_variance","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.05}},{"name":"cloud_background","order":17,"description":"","override":false,"type":"Animation","optional":true},{"name":"cloud_detail_level","order":15,"description":"Must be less than or equal to `bolt_detail_level`.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":3}},{"name":"cloud_fork_orientation_variance","order":10,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.015}},{"name":"cloud_forks","order":14,"description":"Cannot be 255.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":5}},{"name":"explosion","order":18,"description":"","override":false,"type":"AnimationVariations","optional":true},{"name":"fork_intensity_multiplier","order":8,"description":"Cannot be 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.7}},{"name":"fork_orientation_variance","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.05}},{"name":"ground_streamer_variance","order":13,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"ground_streamers","order":20,"description":"","override":false,"type":{"complex_type":"array","value":"Animation"},"optional":true},{"name":"light","order":21,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"max_bolt_offset","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.35}},{"name":"max_fork_probability","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.9}},{"name":"max_ground_streamer_distance","order":12,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":4}},{"name":"max_relative_fork_length","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.7}},{"name":"min_ground_streamer_distance","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":2}},{"name":"min_relative_fork_length","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"relative_cloud_fork_length","order":9,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.2}},{"name":"shader_configuration","order":0,"description":"If not empty, enables the lightning shader.","override":false,"type":{"complex_type":"array","value":"LightningShaderConfiguration"},"optional":true},{"name":"water_reflection","order":22,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"LightningPriorityRule","order":310,"description":"","parent":"LightningRuleBase","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"priority_bonus","order":0,"description":"","override":false,"type":"int32","optional":false}]},{"name":"LightningProperties","order":311,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"exemption_rules","order":4,"description":"","override":false,"type":{"complex_type":"array","value":"LightningRuleBase"},"optional":true},{"name":"lightning_multiplier_at_day","order":5,"description":"Must be in range `[0, 1]`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"lightning_multiplier_at_night","order":6,"description":"Must be in range `[0, 1]`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"lightning_types","order":2,"description":"Cannot be an empty array. Names of [lightning entities](prototype:LightningPrototype).","override":false,"type":{"complex_type":"array","value":"EntityID"},"optional":false},{"name":"lightning_warning_icon","order":8,"description":"Icon to render on top of entities that are endangered by lightning. When not provided, a [UtilitySprites::lightning_warning_icon](prototype:UtilitySprites::lightning_warning_icon) will be used instead.","override":false,"type":"Sprite","optional":true},{"name":"lightnings_per_chunk_per_tick","order":0,"description":"","override":false,"type":"double","optional":false},{"name":"multiplier_surface_property","order":7,"description":"When set, value of that surface property will be used as an additional multiplier to the lightning frequency.\n\nValue of that surface property is divided by [default_value](prototype:SurfacePropertyPrototype::default_value) which means a default value must be positive (cannot be 0). When surface property has value at default, then this additional multiplier has value of 1.","override":false,"type":"SurfacePropertyID","optional":true},{"name":"priority_rules","order":3,"description":"","override":false,"type":{"complex_type":"array","value":"LightningPriorityRule"},"optional":true},{"name":"search_radius","order":1,"description":"","override":false,"type":"double","optional":false}]},{"name":"LightningRuleBase","order":312,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"string","order":1,"description":"","override":false,"type":"string","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"impact-soundset"},{"complex_type":"literal","value":"prototype"},{"complex_type":"literal","value":"id"},{"complex_type":"literal","value":"countAsRockForFilteredDeconstruction"}],"full_format":false},"optional":false}]},{"name":"LightningShaderConfiguration","order":313,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"color","order":0,"description":"","override":false,"type":"Color","optional":false},{"name":"distortion","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"power","order":3,"description":"","override":false,"type":"float","optional":false},{"name":"thickness","order":2,"description":"","override":false,"type":"float","optional":false}]},{"name":"LimitChestTipTrigger","order":314,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"limit-chest"},"optional":false}]},{"name":"LineStyleSpecification","order":315,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"border","order":1,"description":"","override":false,"type":"BorderImageSet","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"line_style"},"optional":false}]},{"name":"LineTriggerItem","order":316,"description":"","examples":["```\naction =\n{\n  type = \"line\",\n  range = 25,\n  width = 0.5,\n\n  range_effects =\n  {\n    type = \"create-explosion\",\n    entity_name = \"railgun-beam\"\n  },\n\n  action_delivery =\n  {\n    type = \"instant\",\n    target_effects =\n    {\n      type = \"damage\",\n      damage = { amount = 100, type = \"physical\"}\n    }\n  }\n}\n```"],"parent":"TriggerItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"range","order":1,"description":"","override":false,"type":"double","optional":false},{"name":"range_effects","order":3,"description":"","override":false,"type":"TriggerEffect","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"line"},"optional":false},{"name":"width","order":2,"description":"","override":false,"type":"double","optional":false}]},{"name":"LinkedBeltStructure","order":317,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"back_patch","order":2,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"direction_in","order":0,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"direction_in_side_loading","order":4,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"direction_out","order":1,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"direction_out_side_loading","order":5,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"front_patch","order":3,"description":"","override":false,"type":"Sprite4Way","optional":true}]},{"name":"LinkedGameControl","order":318,"description":"The internal name of a game control (key binding).","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"move-up","description":""},{"complex_type":"literal","value":"move-down","description":""},{"complex_type":"literal","value":"move-left","description":""},{"complex_type":"literal","value":"move-right","description":""},{"complex_type":"literal","value":"alternative-gui-move-up","description":""},{"complex_type":"literal","value":"alternative-gui-move-down","description":""},{"complex_type":"literal","value":"alternative-gui-move-left","description":""},{"complex_type":"literal","value":"alternative-gui-move-right","description":""},{"complex_type":"literal","value":"open-character-gui","description":""},{"complex_type":"literal","value":"open-gui","description":""},{"complex_type":"literal","value":"confirm-gui","description":""},{"complex_type":"literal","value":"toggle-free-cursor","description":""},{"complex_type":"literal","value":"mine","description":""},{"complex_type":"literal","value":"build","description":""},{"complex_type":"literal","value":"build-ghost","description":""},{"complex_type":"literal","value":"super-forced-build","description":""},{"complex_type":"literal","value":"clear-cursor","description":""},{"complex_type":"literal","value":"pipette","description":""},{"complex_type":"literal","value":"rotate","description":""},{"complex_type":"literal","value":"reverse-rotate","description":""},{"complex_type":"literal","value":"flip-horizontal","description":""},{"complex_type":"literal","value":"flip-vertical","description":""},{"complex_type":"literal","value":"pick-items","description":""},{"complex_type":"literal","value":"drop-cursor","description":""},{"complex_type":"literal","value":"show-info","description":""},{"complex_type":"literal","value":"shoot-enemy","description":""},{"complex_type":"literal","value":"shoot-selected","description":""},{"complex_type":"literal","value":"next-weapon","description":""},{"complex_type":"literal","value":"toggle-driving","description":""},{"complex_type":"literal","value":"zoom-in","description":""},{"complex_type":"literal","value":"zoom-out","description":""},{"complex_type":"literal","value":"use-item","description":""},{"complex_type":"literal","value":"alternative-use-item","description":""},{"complex_type":"literal","value":"toggle-console","description":""},{"complex_type":"literal","value":"copy-entity-settings","description":""},{"complex_type":"literal","value":"paste-entity-settings","description":""},{"complex_type":"literal","value":"controller-gui-logistics-tab","description":""},{"complex_type":"literal","value":"controller-gui-character-tab","description":""},{"complex_type":"literal","value":"controller-gui-crafting-tab","description":""},{"complex_type":"literal","value":"toggle-rail-layer","description":""},{"complex_type":"literal","value":"select-for-blueprint","description":""},{"complex_type":"literal","value":"select-for-cancel-deconstruct","description":""},{"complex_type":"literal","value":"select-for-super-forced-deconstruct","description":""},{"complex_type":"literal","value":"reverse-select","description":""},{"complex_type":"literal","value":"alt-reverse-select","description":""},{"complex_type":"literal","value":"deselect","description":""},{"complex_type":"literal","value":"cycle-blueprint-forwards","description":""},{"complex_type":"literal","value":"cycle-blueprint-backwards","description":""},{"complex_type":"literal","value":"focus-search","description":""},{"complex_type":"literal","value":"larger-terrain-building-area","description":""},{"complex_type":"literal","value":"smaller-terrain-building-area","description":""},{"complex_type":"literal","value":"remove-pole-cables","description":""},{"complex_type":"literal","value":"build-with-obstacle-avoidance","description":""},{"complex_type":"literal","value":"add-station","description":""},{"complex_type":"literal","value":"add-temporary-station","description":""},{"complex_type":"literal","value":"rename-all","description":""},{"complex_type":"literal","value":"fast-wait-condition","description":""},{"complex_type":"literal","value":"drag-map","description":""},{"complex_type":"literal","value":"move-tag","description":""},{"complex_type":"literal","value":"place-in-chat","description":""},{"complex_type":"literal","value":"place-ping","description":""},{"complex_type":"literal","value":"pin","description":""},{"complex_type":"literal","value":"activate-tooltip","description":""},{"complex_type":"literal","value":"next-surface","description":""},{"complex_type":"literal","value":"previous-surface","description":""},{"complex_type":"literal","value":"cycle-quality-up","description":""},{"complex_type":"literal","value":"cycle-quality-down","description":""},{"complex_type":"literal","value":"scroll-tooltip-up","description":""},{"complex_type":"literal","value":"scroll-tooltip-down","description":""},{"complex_type":"literal","value":"craft","description":""},{"complex_type":"literal","value":"craft-5","description":""},{"complex_type":"literal","value":"craft-all","description":""},{"complex_type":"literal","value":"cancel-craft","description":""},{"complex_type":"literal","value":"cancel-craft-5","description":""},{"complex_type":"literal","value":"cancel-craft-all","description":""},{"complex_type":"literal","value":"pick-item","description":""},{"complex_type":"literal","value":"stack-transfer","description":""},{"complex_type":"literal","value":"inventory-transfer","description":""},{"complex_type":"literal","value":"fast-entity-transfer","description":""},{"complex_type":"literal","value":"cursor-split","description":""},{"complex_type":"literal","value":"stack-split","description":""},{"complex_type":"literal","value":"inventory-split","description":""},{"complex_type":"literal","value":"fast-entity-split","description":""},{"complex_type":"literal","value":"toggle-filter","description":""},{"complex_type":"literal","value":"open-item","description":""},{"complex_type":"literal","value":"copy-inventory-filter","description":""},{"complex_type":"literal","value":"paste-inventory-filter","description":""},{"complex_type":"literal","value":"show-quick-panel","description":""},{"complex_type":"literal","value":"next-quick-panel-page","description":""},{"complex_type":"literal","value":"previous-quick-panel-page","description":""},{"complex_type":"literal","value":"next-quick-panel-tab","description":""},{"complex_type":"literal","value":"previous-quick-panel-tab","description":""},{"complex_type":"literal","value":"rotate-active-quick-bars","description":""},{"complex_type":"literal","value":"next-active-quick-bar","description":""},{"complex_type":"literal","value":"previous-active-quick-bar","description":""},{"complex_type":"literal","value":"quick-bar-button-1","description":""},{"complex_type":"literal","value":"quick-bar-button-2","description":""},{"complex_type":"literal","value":"quick-bar-button-3","description":""},{"complex_type":"literal","value":"quick-bar-button-4","description":""},{"complex_type":"literal","value":"quick-bar-button-5","description":""},{"complex_type":"literal","value":"quick-bar-button-6","description":""},{"complex_type":"literal","value":"quick-bar-button-7","description":""},{"complex_type":"literal","value":"quick-bar-button-8","description":""},{"complex_type":"literal","value":"quick-bar-button-9","description":""},{"complex_type":"literal","value":"quick-bar-button-10","description":""},{"complex_type":"literal","value":"quick-bar-button-1-secondary","description":""},{"complex_type":"literal","value":"quick-bar-button-2-secondary","description":""},{"complex_type":"literal","value":"quick-bar-button-3-secondary","description":""},{"complex_type":"literal","value":"quick-bar-button-4-secondary","description":""},{"complex_type":"literal","value":"quick-bar-button-5-secondary","description":""},{"complex_type":"literal","value":"quick-bar-button-6-secondary","description":""},{"complex_type":"literal","value":"quick-bar-button-7-secondary","description":""},{"complex_type":"literal","value":"quick-bar-button-8-secondary","description":""},{"complex_type":"literal","value":"quick-bar-button-9-secondary","description":""},{"complex_type":"literal","value":"quick-bar-button-10-secondary","description":""},{"complex_type":"literal","value":"action-bar-select-page-1","description":""},{"complex_type":"literal","value":"action-bar-select-page-2","description":""},{"complex_type":"literal","value":"action-bar-select-page-3","description":""},{"complex_type":"literal","value":"action-bar-select-page-4","description":""},{"complex_type":"literal","value":"action-bar-select-page-5","description":""},{"complex_type":"literal","value":"action-bar-select-page-6","description":""},{"complex_type":"literal","value":"action-bar-select-page-7","description":""},{"complex_type":"literal","value":"action-bar-select-page-8","description":""},{"complex_type":"literal","value":"action-bar-select-page-9","description":""},{"complex_type":"literal","value":"action-bar-select-page-10","description":""},{"complex_type":"literal","value":"copy","description":""},{"complex_type":"literal","value":"cut","description":""},{"complex_type":"literal","value":"paste","description":""},{"complex_type":"literal","value":"cycle-clipboard-forwards","description":""},{"complex_type":"literal","value":"cycle-clipboard-backwards","description":""},{"complex_type":"literal","value":"undo","description":""},{"complex_type":"literal","value":"redo","description":""},{"complex_type":"literal","value":"toggle-menu","description":""},{"complex_type":"literal","value":"toggle-map","description":""},{"complex_type":"literal","value":"close-menu","description":""},{"complex_type":"literal","value":"open-technology-gui","description":""},{"complex_type":"literal","value":"production-statistics","description":""},{"complex_type":"literal","value":"logistic-networks","description":""},{"complex_type":"literal","value":"toggle-blueprint-library","description":""},{"complex_type":"literal","value":"open-trains-gui","description":""},{"complex_type":"literal","value":"open-factoriopedia","description":""},{"complex_type":"literal","value":"back","description":""},{"complex_type":"literal","value":"forward","description":""},{"complex_type":"literal","value":"pause-game","description":""},{"complex_type":"literal","value":"confirm-message","description":""},{"complex_type":"literal","value":"previous-mod","description":""},{"complex_type":"literal","value":"connect-train","description":""},{"complex_type":"literal","value":"disconnect-train","description":""},{"complex_type":"literal","value":"submit-feedback","description":""},{"complex_type":"literal","value":"editor-next-variation","description":""},{"complex_type":"literal","value":"editor-previous-variation","description":""},{"complex_type":"literal","value":"editor-clone-item","description":""},{"complex_type":"literal","value":"editor-delete-item","description":""},{"complex_type":"literal","value":"editor-toggle-pause","description":""},{"complex_type":"literal","value":"editor-tick-once","description":""},{"complex_type":"literal","value":"editor-speed-up","description":""},{"complex_type":"literal","value":"editor-speed-down","description":""},{"complex_type":"literal","value":"editor-reset-speed","description":""},{"complex_type":"literal","value":"editor-set-clone-brush-source","description":""},{"complex_type":"literal","value":"editor-set-clone-brush-destination","description":""},{"complex_type":"literal","value":"editor-switch-to-surface","description":""},{"complex_type":"literal","value":"editor-remove-scripting-object","description":""},{"complex_type":"literal","value":"debug-toggle-atlas-gui","description":""},{"complex_type":"literal","value":"debug-toggle-gui-visibility","description":""},{"complex_type":"literal","value":"debug-toggle-debug-settings","description":""},{"complex_type":"literal","value":"debug-toggle-basic","description":""},{"complex_type":"literal","value":"debug-reset-zoom","description":""},{"complex_type":"literal","value":"debug-reset-zoom-2x","description":""},{"complex_type":"literal","value":"toggle-gui-debug","description":""},{"complex_type":"literal","value":"toggle-gui-style-view","description":""},{"complex_type":"literal","value":"toggle-gui-shadows","description":""},{"complex_type":"literal","value":"toggle-gui-glows","description":""},{"complex_type":"literal","value":"open-prototypes-gui","description":""},{"complex_type":"literal","value":"open-prototype-explorer-gui","description":""},{"complex_type":"literal","value":"increase-ui-scale","description":""},{"complex_type":"literal","value":"decrease-ui-scale","description":""},{"complex_type":"literal","value":"reset-ui-scale","description":""},{"complex_type":"literal","value":"slash-editor","description":""},{"complex_type":"literal","value":"toggle-entity","description":""},{"complex_type":"literal","value":"next-player-in-replay","description":""},{"complex_type":"literal","value":"move-blueprint-absolute-grid-up","description":""},{"complex_type":"literal","value":"move-blueprint-absolute-grid-down","description":""},{"complex_type":"literal","value":"move-blueprint-absolute-grid-left","description":""},{"complex_type":"literal","value":"move-blueprint-absolute-grid-right","description":""},{"complex_type":"literal","value":"move-blueprint-entities-up","description":""},{"complex_type":"literal","value":"move-blueprint-entities-down","description":""},{"complex_type":"literal","value":"move-blueprint-entities-left","description":""},{"complex_type":"literal","value":"move-blueprint-entities-right","description":""},{"complex_type":"literal","value":"play-next-track","description":""},{"complex_type":"literal","value":"play-previous-track","description":""},{"complex_type":"literal","value":"pause-resume-music","description":""},{"complex_type":"literal","value":"","description":"Indicates no linked game control."}],"full_format":true}},{"name":"ListBoxStyleSpecification","order":319,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"item_style","order":1,"description":"","override":false,"type":"ButtonStyleSpecification","optional":true},{"name":"scroll_pane_style","order":2,"description":"","override":false,"type":"ScrollPaneStyleSpecification","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"list_box_style"},"optional":false}]},{"name":"LoaderStructure","order":320,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"back_patch","order":2,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"direction_in","order":0,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"direction_out","order":1,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"front_patch","order":3,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"frozen_patch_in","order":4,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"frozen_patch_out","order":5,"description":"","override":false,"type":"Sprite4Way","optional":true}]},{"name":"LocalisedString","order":321,"description":"Localised strings are a way to support translation of in-game text. They offer a language-independent code representation of the text that should be shown to players.\n\nIt 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.\n\nThe 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`). In the settings and prototype stages, this key cannot be longer than 200 characters.\n\nThe 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.\n\nThere are two special flags for the localised string, indicated by the key being a particular string. First, if the key is the empty string (`\"\"`), then all parameters will be concatenated (after processing, if any are localised strings themselves). Second, if the key is a question mark (`\"?\"`), then the first valid parameter will be used. A parameter can be invalid if its name doesn't match any string template. If no parameters are valid, the last one is returned. This is useful to implement a fallback for missing locale templates.\n\nFurthermore, 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. In the settings and prototype stages, this string cannot be longer than 200 characters.\n\nSee [Tutorial:Localisation](https://wiki.factorio.com/Tutorial:Localisation) for more information.","examples":["```\n-- In the English translation, this will result in \"No ammo\"; in the Czech translation, it will result in \"Bez munice\":\nlocalised_description = {\"description.no-ammo\"}\n-- The \"description.no-ammo\" template contains no placeholders, so no further parameters are necessary.\n```","```\n-- In the English translation, this will result in \"80 hitpoints\"; in the Japanese one, it will result in \"80 HP\":\nlocalised_description = {\"description.hitpoints\", tostring(80)}\n```","```\n-- This will result in \"hello\" in all translations:\nlocalised_description = {\"\", \"hello\"}\n```","```\n-- This will result in \"Iron plate: 60\" in the English translation and \"Eisenplatte: 60\" in the German translation.\nlocalised_description = {\"\", {\"item-name.iron-plate\"}, \": \", tostring(60)}\n```","```\n-- As an example of a localised string with fallback, consider this:\n{\"?\", {\"\", {\"entity-description.furnace\"}, \"\\n\"}, {\"item-description.furnace\"}, \"optional fallback\"}\n-- If \"entity-description.furnace\" exists, it is concatenated with \"\\n\" and returned. Otherwise, if\n-- \"item-description.furnace\" exists, it is returned as-is. Otherwise, \"optional fallback\" is returned. If this\n-- value wasn't specified, the translation result would be \"Unknown key: 'item-description.furnace'\".\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":["string",{"complex_type":"array","value":"LocalisedString"}],"full_format":false}},{"name":"LogisticFilterIndex","order":322,"description":"","abstract":false,"inline":false,"type":"uint16"},{"name":"LootItem","order":323,"description":"The items generated when an [EntityWithHealthPrototype](prototype:EntityWithHealthPrototype) is killed.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count_max","order":3,"description":"Must be `> 0`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"count_min","order":2,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"item","order":0,"description":"The item to spawn.","override":false,"type":"ItemID","optional":false},{"name":"probability","order":1,"description":"`0` is 0% and `1` is 100%. Must be `> 0`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"LowPowerTipTrigger","order":324,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"low-power"},"optional":false}]},{"name":"MainSound","order":325,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"activity_to_speed_modifiers","order":5,"description":"","override":false,"type":"ActivityMatchingModifiers","optional":true},{"name":"activity_to_volume_modifiers","order":4,"description":"","override":false,"type":"ActivityMatchingModifiers","optional":true},{"name":"fade_in_ticks","order":2,"description":"Can't be used when `match_progress_to_activity` is `true`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"fade_out_ticks","order":3,"description":"Can't be used when `match_progress_to_activity` is `true`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"match_progress_to_activity","order":6,"description":"Unused when [WorkingSound::persistent](prototype:WorkingSound::persistent) is `true`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"match_speed_to_activity","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"match_volume_to_activity","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"play_for_working_visualisations","order":9,"description":"Array of [WorkingVisualisation::name](prototype:WorkingVisualisation::name)s, individual names cannot be empty.\n\nThe `sound` is played when at least one of the specified working visualisations is drawn.\n\nUnused when [WorkingSound::persistent](prototype:WorkingSound::persistent) is `true`.","override":false,"type":{"complex_type":"array","value":"string"},"optional":true},{"name":"probability","order":1,"description":"Modifies how often the sound is played.\n\nSilently clamped to the [0.0, 1.0] range.\n\nUnused when [WorkingSound::persistent](prototype:WorkingSound::persistent) is `true`.","examples":["```\nprobability = 1 / (3 * 60) -- average pause between the sound is 3 seconds\n```"],"override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"sound","order":0,"description":"Cannot be empty.","override":false,"type":"Sound","optional":true},{"name":"volume_smoothing_window_size","order":10,"description":"Only used if [WorkingSound::persistent](prototype:WorkingSound::persistent) is `true`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"ManualTransferTipTrigger","order":326,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"manual-transfer"},"optional":false}]},{"name":"ManualWireDragTipTrigger","order":327,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"match_type_only","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"source","order":1,"description":"","override":false,"type":"EntityID","optional":true},{"name":"target","order":2,"description":"","override":false,"type":"EntityID","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"manual-wire-drag"},"optional":false},{"name":"wire_type","order":4,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"red"},{"complex_type":"literal","value":"green"},{"complex_type":"literal","value":"copper"}],"full_format":false},"optional":true}]},{"name":"MapEditorConstants","order":328,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"cliff_editor_remove_cliffs_color","order":10,"description":"","override":false,"type":"Color","optional":false},{"name":"clone_editor_brush_cursor_preview_tint","order":5,"description":"","override":false,"type":"Color","optional":false},{"name":"clone_editor_brush_destination_color","order":4,"description":"","override":false,"type":"Color","optional":false},{"name":"clone_editor_brush_source_color","order":3,"description":"","override":false,"type":"Color","optional":false},{"name":"clone_editor_brush_world_preview_tint","order":6,"description":"","override":false,"type":"Color","optional":false},{"name":"clone_editor_copy_destination_allowed_color","order":1,"description":"","override":false,"type":"Color","optional":false},{"name":"clone_editor_copy_destination_not_allowed_color","order":2,"description":"","override":false,"type":"Color","optional":false},{"name":"clone_editor_copy_source_color","order":0,"description":"","override":false,"type":"Color","optional":false},{"name":"decorative_editor_selection_preview_radius","order":15,"description":"","override":false,"type":"uint8","optional":false},{"name":"decorative_editor_selection_preview_tint","order":13,"description":"","override":false,"type":"Color","optional":false},{"name":"force_editor_select_area_color","order":9,"description":"","override":false,"type":"Color","optional":false},{"name":"script_editor_drag_area_color","order":8,"description":"","override":false,"type":"Color","optional":false},{"name":"script_editor_select_area_color","order":7,"description":"","override":false,"type":"Color","optional":false},{"name":"tile_editor_area_selection_color","order":12,"description":"","override":false,"type":"Color","optional":false},{"name":"tile_editor_selection_preview_radius","order":14,"description":"","override":false,"type":"uint8","optional":false},{"name":"tile_editor_selection_preview_tint","order":11,"description":"","override":false,"type":"Color","optional":false}]},{"name":"MapGenPreset","order":329,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"advanced_settings","order":3,"description":"If any setting is not set, it will use the default values.","override":false,"type":"AdvancedMapGenSettings","optional":true},{"name":"basic_settings","order":2,"description":"If any setting is not set, it will use the default values.","override":false,"type":"MapGenSettings","optional":true},{"name":"default","order":1,"description":"Whether this is the default preset. If `true`, this preset may not have any other properties besides this and order.\n\nIf no MapGenPreset has `default = true`, the preset selector will have a blank preset label, with default settings. The \"blank\" preset goes away when another preset is selected.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"order","order":0,"description":"Specifies the ordering in the [map generator GUI](https://wiki.factorio.com/Map_generator).","override":false,"type":"Order","optional":false}]},{"name":"MapGenPresetAsteroidSettings","order":330,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"max_ray_portals_expanded_per_tick","order":1,"description":"","override":false,"type":"uint32","optional":true},{"name":"spawning_rate","order":0,"description":"","override":false,"type":"double","optional":true}]},{"name":"MapGenPresetDifficultySettings","order":331,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"technology_price_multiplier","order":0,"description":"","override":false,"type":"double","optional":true}]},{"name":"MapGenPresetEnemyEvolutionSettings","order":332,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"destroy_factor","order":2,"description":"Percentual increase in the evolution factor for every destroyed spawner","override":false,"type":"double","optional":true},{"name":"enabled","order":0,"description":"","override":false,"type":"boolean","optional":true},{"name":"pollution_factor","order":3,"description":"Percentual increase in the evolution factor for 1 pollution unit","override":false,"type":"double","optional":true},{"name":"time_factor","order":1,"description":"Percentual increase in the evolution factor for every second (60 ticks)","override":false,"type":"double","optional":true}]},{"name":"MapGenPresetEnemyExpansionSettings","order":333,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"enabled","order":0,"description":"","override":false,"type":"boolean","optional":true},{"name":"max_expansion_cooldown","order":5,"description":"In ticks.","override":false,"type":"uint32","optional":true},{"name":"max_expansion_distance","order":1,"description":"Distance in chunks from the furthest base around. This prevents expansions from reaching too far into the player's territory.","override":false,"type":"uint32","optional":true},{"name":"min_expansion_cooldown","order":4,"description":"Ticks to expand to a single position for a base is used. Cooldown is calculated as follows: `cooldown = lerp(max_expansion_cooldown, min_expansion_cooldown, -e^2 + 2 * e)` where `lerp` is the linear interpolation function, and e is the current evolution factor.","override":false,"type":"uint32","optional":true},{"name":"settler_group_max_size","order":3,"description":"","override":false,"type":"uint32","optional":true},{"name":"settler_group_min_size","order":2,"description":"Size of the group that goes to build new base (the game interpolates between min size and max size based on evolution factor).","override":false,"type":"uint32","optional":true}]},{"name":"MapGenPresetPollutionSettings","order":334,"description":"The pollution settings, the values are for 60 ticks (1 second).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"ageing","order":2,"description":"Must be >= 0.1. Also known as absorption modifier.","override":false,"type":"double","optional":true},{"name":"diffusion_ratio","order":1,"description":"Must be <= 0.25. Amount that is diffused to neighboring chunks.","override":false,"type":"double","optional":true},{"name":"enabled","order":0,"description":"","override":false,"type":"boolean","optional":true},{"name":"enemy_attack_pollution_consumption_modifier","order":4,"description":"Must be >= 0.1.","override":false,"type":"double","optional":true},{"name":"min_pollution_to_damage_trees","order":3,"description":"","override":false,"type":"double","optional":true},{"name":"pollution_restored_per_tree_damage","order":5,"description":"","override":false,"type":"double","optional":true}]},{"name":"MapGenSettings","order":335,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"autoplace_controls","order":1,"description":"","override":false,"type":{"complex_type":"dictionary","key":"AutoplaceControlID","value":"FrequencySizeRichness"},"optional":true},{"name":"autoplace_settings","order":2,"description":"Each setting in this table maps the string type to the settings for that type.","override":false,"type":{"complex_type":"dictionary","key":{"complex_type":"union","options":[{"complex_type":"literal","value":"entity"},{"complex_type":"literal","value":"tile"},{"complex_type":"literal","value":"decorative"}],"full_format":false},"value":"AutoplaceSettings"},"optional":true},{"name":"cliff_settings","order":11,"description":"","override":false,"type":"CliffPlacementSettings","optional":true},{"name":"default_enable_all_autoplace_controls","order":0,"description":"Whether undefined `autoplace_controls` should fall back to the default controls or not.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"height","order":7,"description":"Height of the map in tiles. Silently limited to 2 000 000, ie. +/- 1 million tiles from the center in both directions.","override":false,"type":"uint32","optional":true},{"name":"no_enemies_mode","order":10,"description":"If true, enemy creatures will not naturally spawn from spawners, map gen, or trigger effects.","override":false,"type":"boolean","optional":true},{"name":"peaceful_mode","order":9,"description":"If true, enemy creatures will not attack unless the player first attacks them.","override":false,"type":"boolean","optional":true},{"name":"property_expression_names","order":3,"description":"Map of property name (`\"elevation\"`, etc) to name of noise expression that will provide it. Entries may be omitted. A notable usage is changing autoplace behavior of an entity based on the preset, which cannot be read from a noise expression.","override":false,"type":{"complex_type":"dictionary","key":"string","value":{"complex_type":"union","options":["string","boolean","double"],"full_format":false}},"optional":true},{"name":"seed","order":5,"description":"Read by the game, but not used or set in the GUI.","override":false,"type":"uint32","optional":true},{"name":"starting_area","order":8,"description":"Size of the starting area. The starting area only effects enemy placement, and has no effect on resources.","override":false,"type":"MapGenSize","optional":true},{"name":"starting_points","order":4,"description":"Array of the positions of the starting areas.","override":false,"type":{"complex_type":"array","value":"MapPosition"},"optional":true},{"name":"territory_settings","order":12,"description":"","override":false,"type":"TerritorySettings","optional":true},{"name":"width","order":6,"description":"Width of the map in tiles. Silently limited to 2 000 000, ie. +/- 1 million tiles from the center in both directions.","override":false,"type":"uint32","optional":true}]},{"name":"MapGenSize","order":336,"description":"A floating point number specifying an amount.\n\nFor backwards compatibility, MapGenSizes can also be specified as a string, which will be converted to a number (when queried, a number will always be returned).\n\nThe 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.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"float","description":"Specifying a map gen dimension."},{"complex_type":"literal","value":"none","description":"equivalent to `0`."},{"complex_type":"literal","value":"very-low","description":"equivalent to `1/2`."},{"complex_type":"literal","value":"very-small","description":"equivalent to `1/2`."},{"complex_type":"literal","value":"very-poor","description":"equivalent to `1/2`."},{"complex_type":"literal","value":"low","description":"equivalent to `1/sqrt(2)`."},{"complex_type":"literal","value":"small","description":"equivalent to `1/sqrt(2)`."},{"complex_type":"literal","value":"poor","description":"equivalent to `1/sqrt(2)`."},{"complex_type":"literal","value":"normal","description":"equivalent to `1`."},{"complex_type":"literal","value":"medium","description":"equivalent to `1`."},{"complex_type":"literal","value":"regular","description":"equivalent to `1`."},{"complex_type":"literal","value":"high","description":"equivalent to `sqrt(2)`."},{"complex_type":"literal","value":"big","description":"equivalent to `sqrt(2)`."},{"complex_type":"literal","value":"good","description":"equivalent to `sqrt(2)`."},{"complex_type":"literal","value":"very-high","description":"equivalent to `2`."},{"complex_type":"literal","value":"very-big","description":"equivalent to `2`."},{"complex_type":"literal","value":"very-good","description":"equivalent to `2`."}],"full_format":true}},{"name":"MapLocation","order":337,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"direction","order":1,"description":"Direction this connection point will be facing to.","override":false,"type":"defines.direction","optional":false},{"name":"position","order":0,"description":"Position relative to entity's position where the connection point will be located at.","override":false,"type":"MapPosition","optional":false}]},{"name":"MapPosition","order":338,"description":"Coordinates of a tile in a map. Positive x goes towards east, positive y goes towards south, and x is the first dimension in the array format.\n\nThe coordinates are stored 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.","examples":["```\n-- Explicit definition\n{x = 5.5, y = 2}\n{y = 2.25, x = 5.125}\n```","```\n-- Shorthand\n{1.625, 2.375}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["double","double"]}],"full_format":false},"properties":[{"name":"x","order":0,"description":"","override":false,"type":"double","optional":false},{"name":"y","order":1,"description":"","override":false,"type":"double","optional":false}]},{"name":"MapTick","order":339,"description":"`math.huge` represents the maximum possible tick.","abstract":false,"inline":false,"type":"uint64"},{"name":"MaterialAmountType","order":340,"description":"","abstract":false,"inline":false,"type":"double"},{"name":"MaterialTextureParameters","order":341,"description":"Used by [TilePrototype](prototype:TilePrototype).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count","order":0,"description":"Frame count.","override":false,"type":"uint32","optional":false},{"name":"line_length","order":5,"description":"Once the specified number of pictures is loaded, other pictures are loaded on other line. This is to allow having longer animations in matrix, to input files with too high width. The game engine limits the width of any input files to 8192px, so it is compatible with most graphics cards. 0 means that all the pictures are in one horizontal line.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"picture","order":1,"description":"","override":false,"type":"FileName","optional":false},{"name":"scale","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"x","order":3,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"y","order":4,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"MathExpression","order":342,"description":"A string that represents a math expression. The expression parser recognizes four basic token types (with their regex):\n\n- Whitespace: `[ \\n\\r\\t]*`\n\n- Number: `(0x[0-9a-f]+|([0-9]+\\.?[0-9]*|\\.[0-9]+)(e-?[0-9]+)?)` (e.g. `3.2`, `100`, `.6`, `4.2e-5`, `0x2a5f`). Supports hexadecimal input and scientific notation for decimal numbers.\n\n- Operator: `+`, `-`, `*`, `/`, `^`, and `()` for brackets, which may be nested.\n\n- Identifier: The functions listed below and any variables listed where the expression is used.\n\nIdentifiers are used to name functions and variables, which result in or represent numbers. The following functions are always available:\n\n- `abs(value)`: Returns absolute value of the given argument; i.e. if the argument is negative, it is inverted.\n\n- `log2(value)`: Returns a binary logarithm of the given value.\n\n- `sign(value)`: Returns `-1` for negative numbers, `0` for zero (regardless of sign), `1` for positive numbers\n\n- `max(value1, value2, ...)`: Returns the greater of the given values. Supports between 2 and 255 arguments.\n\n- `min(value1, value2, ...)`: Returns the smaller of the given values. Supports between 2 and 255 arguments.\n\nThe property where the expression is used may provide variables. For example in [TechnologyUnit::count_formula](prototype:TechnologyUnit::count_formula) `L` and `l` may be used for the technology level.\n\nThe formula is executed following the [BODMAS](https://en.wikipedia.org/wiki/Order_of_operations#Conventional_order) order (also known as PEMDAS).","examples":["```\n\"2500 * (L - 3)\"\n```","```\n\"(4e5 * (abs(speed) + 10.5)) / weight\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"MaxFailedAttemptsPerTickPerConstructionQueueModifier","order":343,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"max-failed-attempts-per-tick-per-construction-queue"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"MaxSuccessfulAttemptsPerTickPerConstructionQueueModifier","order":344,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"max-successful-attempts-per-tick-per-construction-queue"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"MaximumFollowingRobotsCountModifier","order":345,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"maximum-following-robots-count"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"MinableProperties","order":346,"description":"The mining properties of objects. For formulas for the mining time, see [mining](https://wiki.factorio.com/Mining).","examples":["```\nminable = { mining_time = 0.55, result = \"wood\", count = 4, mining_particle = \"wooden-particle\" }\n```","```\nminable =\n{\n  mining_time = 1,\n  results =\n  {\n    {\n      type = \"fluid\",\n      name = \"crude-oil\",\n      amount = 10\n    }\n  }\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count","order":8,"description":"Only loaded if `results` is not defined.\n\nHow many of result are dropped.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"fluid_amount","order":5,"description":"The amount of fluid that is used up when this object is mined. If this is > 0, this object cannot be mined by hand.","override":false,"type":"FluidAmount","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"include_in_show_counts","order":1,"description":"","override":false,"type":"boolean","optional":true},{"name":"mining_particle","order":6,"description":"Name of a [ParticlePrototype](prototype:ParticlePrototype). Which set of particles to use.","override":false,"type":"ParticleID","optional":true},{"name":"mining_time","order":0,"description":"How many seconds are required to mine this object at 1 mining speed.","override":false,"type":"double","optional":false},{"name":"mining_trigger","order":9,"description":"","override":false,"type":"Trigger","optional":true},{"name":"required_fluid","order":7,"description":"Name of a [FluidPrototype](prototype:FluidPrototype). The fluid that is used up when this object is mined.","override":false,"type":"FluidID","optional":true},{"name":"result","order":4,"description":"Only loaded if `results` is not defined.\n\nWhich item is dropped when this is mined. Cannot be empty. If you want the entity to not be minable, don't specify the minable properties, if you want it to be minable with no result item, don't specify the result at all.","override":false,"type":"ItemID","optional":true},{"name":"results","order":3,"description":"The items or fluids that are returned when this object is mined.","override":false,"type":{"complex_type":"array","value":"ProductPrototype"},"optional":true},{"name":"transfer_entity_health_to_products","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"MineEntityTechnologyTrigger","order":347,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"entity","order":1,"description":"","override":false,"type":"EntityID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"mine-entity"},"optional":false}]},{"name":"MineItemByRobotTipTrigger","order":348,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"mine-item-by-robot"},"optional":false}]},{"name":"MinimapStyleSpecification","order":349,"description":"","parent":"EmptyWidgetStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":true,"type":{"complex_type":"literal","value":"minimap_style"},"optional":false}]},{"name":"MiningDrillGraphicsSet","order":350,"description":"Used by [MiningDrillPrototype](prototype:MiningDrillPrototype).","parent":"WorkingVisualisations","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation_progress","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"circuit_connector_layer","order":2,"description":"Render layer(s) for all directions of the circuit connectors.","override":false,"type":{"complex_type":"union","options":["RenderLayer","CircuitConnectorLayer"],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"circuit_connector_secondary_draw_order","order":3,"description":"Secondary draw order(s) for all directions of the circuit connectors.","override":false,"type":{"complex_type":"union","options":["int8","CircuitConnectorSecondaryDrawOrder"],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":100}},{"name":"drilling_vertical_movement_duration","order":4,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"frozen_patch","order":0,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"reset_animation_when_frozen","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"water_reflection","order":6,"description":"Only loaded if this graphics set is used in a property called `graphics_set`, refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"MiningDrillProductivityBonusModifier","order":351,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"mining-drill-productivity-bonus"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"MiningWithFluidModifier","order":352,"description":"","parent":"BoolModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"mining-with-fluid"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"Mirroring","order":353,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"horizontal","description":""},{"complex_type":"literal","value":"vertical","description":""},{"complex_type":"literal","value":"diagonal-pos","description":""},{"complex_type":"literal","value":"diagonal-neg","description":""}],"full_format":true}},{"name":"ModSetting","order":354,"description":"The user-set value of a startup [mod setting](https://wiki.factorio.com/Tutorial:Mod_settings).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"value","order":0,"description":"The value of the mod setting. The type depends on the kind of setting.","override":false,"type":{"complex_type":"union","options":["int32","double","boolean","string","Color"],"full_format":false},"optional":false}]},{"name":"Modifier","order":355,"description":"The effect that is applied when a [TechnologyPrototype](prototype:TechnologyPrototype) is researched.\n\nLoaded as one of the [BaseModifier](prototype:BaseModifier) extensions, based on the value of the `type` key.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"InserterStackSizeBonusModifier","description":"Loaded when the `type` is `\"inserter-stack-size-bonus\"`."},{"complex_type":"type","value":"BulkInserterCapacityBonusModifier","description":"Loaded when the `type` is `\"bulk-inserter-capacity-bonus\"`."},{"complex_type":"type","value":"LaboratorySpeedModifier","description":"Loaded when the `type` is `\"laboratory-speed\"`."},{"complex_type":"type","value":"CharacterLogisticTrashSlotsModifier","description":"Loaded when the `type` is `\"character-logistic-trash-slots\"`."},{"complex_type":"type","value":"MaximumFollowingRobotsCountModifier","description":"Loaded when the `type` is `\"maximum-following-robots-count\"`."},{"complex_type":"type","value":"WorkerRobotSpeedModifier","description":"Loaded when the `type` is `\"worker-robot-speed\"`."},{"complex_type":"type","value":"WorkerRobotStorageModifier","description":"Loaded when the `type` is `\"worker-robot-storage\"`."},{"complex_type":"type","value":"TurretAttackModifier","description":"Loaded when the `type` is `\"turret-attack\"`."},{"complex_type":"type","value":"AmmoDamageModifier","description":"Loaded when the `type` is `\"ammo-damage\"`."},{"complex_type":"type","value":"GiveItemModifier","description":"Loaded when the `type` is `\"give-item\"`."},{"complex_type":"type","value":"GunSpeedModifier","description":"Loaded when the `type` is `\"gun-speed\"`."},{"complex_type":"type","value":"UnlockRecipeModifier","description":"Loaded when the `type` is `\"unlock-recipe\"`."},{"complex_type":"type","value":"CharacterCraftingSpeedModifier","description":"Loaded when the `type` is `\"character-crafting-speed\"`."},{"complex_type":"type","value":"CharacterMiningSpeedModifier","description":"Loaded when the `type` is `\"character-mining-speed\"`."},{"complex_type":"type","value":"CharacterRunningSpeedModifier","description":"Loaded when the `type` is `\"character-running-speed\"`."},{"complex_type":"type","value":"CharacterBuildDistanceModifier","description":"Loaded when the `type` is `\"character-build-distance\"`."},{"complex_type":"type","value":"CharacterItemDropDistanceModifier","description":"Loaded when the `type` is `\"character-item-drop-distance\"`."},{"complex_type":"type","value":"CharacterReachDistanceModifier","description":"Loaded when the `type` is `\"character-reach-distance\"`."},{"complex_type":"type","value":"CharacterResourceReachDistanceModifier","description":"Loaded when the `type` is `\"character-resource-reach-distance\"`."},{"complex_type":"type","value":"CharacterItemPickupDistanceModifier","description":"Loaded when the `type` is `\"character-item-pickup-distance\"`."},{"complex_type":"type","value":"CharacterLootPickupDistanceModifier","description":"Loaded when the `type` is `\"character-loot-pickup-distance\"`."},{"complex_type":"type","value":"CharacterInventorySlotsBonusModifier","description":"Loaded when the `type` is `\"character-inventory-slots-bonus\"`."},{"complex_type":"type","value":"DeconstructionTimeToLiveModifier","description":"Loaded when the `type` is `\"deconstruction-time-to-live\"`."},{"complex_type":"type","value":"MaxFailedAttemptsPerTickPerConstructionQueueModifier","description":"Loaded when the `type` is `\"max-failed-attempts-per-tick-per-construction-queue\"`."},{"complex_type":"type","value":"MaxSuccessfulAttemptsPerTickPerConstructionQueueModifier","description":"Loaded when the `type` is `\"max-successful-attempts-per-tick-per-construction-queue\"`."},{"complex_type":"type","value":"CharacterHealthBonusModifier","description":"Loaded when the `type` is `\"character-health-bonus\"`."},{"complex_type":"type","value":"MiningDrillProductivityBonusModifier","description":"Loaded when the `type` is `\"mining-drill-productivity-bonus\"`."},{"complex_type":"type","value":"TrainBrakingForceBonusModifier","description":"Loaded when the `type` is `\"train-braking-force-bonus\"`."},{"complex_type":"type","value":"WorkerRobotBatteryModifier","description":"Loaded when the `type` is `\"worker-robot-battery\"`."},{"complex_type":"type","value":"LaboratoryProductivityModifier","description":"Loaded when the `type` is `\"laboratory-productivity\"`."},{"complex_type":"type","value":"FollowerRobotLifetimeModifier","description":"Loaded when the `type` is `\"follower-robot-lifetime\"`."},{"complex_type":"type","value":"ArtilleryRangeModifier","description":"Loaded when the `type` is `\"artillery-range\"`."},{"complex_type":"type","value":"NothingModifier","description":"Loaded when the `type` is `\"nothing\"`."},{"complex_type":"type","value":"CharacterLogisticRequestsModifier","description":"Loaded when the `type` is `\"character-logistic-requests\"`."},{"complex_type":"type","value":"VehicleLogisticsModifier","description":"Loaded when the `type` is `\"vehicle-logistics\"`."},{"complex_type":"type","value":"UnlockSpaceLocationModifier","description":"Loaded when the `type` is `\"unlock-space-location\"`."},{"complex_type":"type","value":"UnlockQualityModifier","description":"Loaded when the `type` is `\"unlock-quality\"`."},{"complex_type":"type","value":"SpacePlatformsModifier","description":"Loaded when the `type` is `\"unlock-space-platforms\"`."},{"complex_type":"type","value":"CircuitNetworkModifier","description":"Loaded when the `type` is `\"unlock-circuit-network\"`."},{"complex_type":"type","value":"CargoLandingPadLimitModifier","description":"Loaded when the `type` is `\"cargo-landing-pad-count\"`."},{"complex_type":"type","value":"ChangeRecipeProductivityModifier","description":"Loaded when the `type` is `\"change-recipe-productivity\"`."},{"complex_type":"type","value":"CliffDeconstructionEnabledModifier","description":"Loaded when the `type` is `\"cliff-deconstruction-enabled\"`."},{"complex_type":"type","value":"MiningWithFluidModifier","description":"Loaded when the `type` is `\"mining-with-fluid\"`."},{"complex_type":"type","value":"RailSupportOnDeepOilOceanModifier","description":"Loaded when the `type` is `\"rail-support-on-deep-oil-ocean\"`."},{"complex_type":"type","value":"RailPlannerAllowElevatedRailsModifier","description":"Loaded when the `type` is `\"rail-planner-allow-elevated-rails\"`."},{"complex_type":"type","value":"BeaconDistributionModifier","description":"Loaded when the `type` is `\"beacon-distribution\"`."},{"complex_type":"type","value":"CreateGhostOnEntityDeathModifier","description":"Loaded when the `type` is `\"create-ghost-on-entity-death\"`."},{"complex_type":"type","value":"BeltStackSizeBonusModifier","description":"Loaded when the `type` is `\"belt-stack-size-bonus\"`."}],"full_format":true}},{"name":"Mods","order":356,"description":"A dictionary of mod names to mod versions of all active mods. It can be used to adjust mod functionality based on the presence of other mods.","examples":["```\n-- executes pineapple only when the pizza mod is active\nif mods[\"pizza\"] then\n  pineapple()\nend\n```","```\n-- when the only active mod is the space-age mod with version 2.0.7\n-- then this logs\nfor name, version in pairs(mods) do\n  log(name .. \" version \" .. version) -- => space-age version 2.0.7\nend\n```"],"abstract":true,"inline":false,"type":{"complex_type":"dictionary","key":"string","value":"string"}},{"name":"ModuleCategoryID","order":357,"description":"The name of a [ModuleCategory](prototype:ModuleCategory).","examples":["```\n\"productivity\"\n```","```\n\"efficiency\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"ModuleTint","order":358,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"primary","description":""},{"complex_type":"literal","value":"secondary","description":""},{"complex_type":"literal","value":"tertiary","description":""},{"complex_type":"literal","value":"quaternary","description":""},{"complex_type":"literal","value":"none","description":""}],"full_format":true}},{"name":"ModuleTransferTipTrigger","order":359,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"module","order":1,"description":"","override":false,"type":"ItemID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"module-transfer"},"optional":false}]},{"name":"MouseCursorID","order":360,"description":"The name of a [MouseCursor](prototype:MouseCursor).","examples":["```\n\"selection-tool-cursor\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"NeighbourConnectable","order":361,"description":"Defines how this entity connects to its neighbours","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"affected_by_direction","order":0,"description":"If the connection positions and directions will be affected by entity's direction.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"connections","order":2,"description":"Definitions of the connection points.","override":false,"type":{"complex_type":"array","value":"NeighbourConnectableConnectionDefinition"},"optional":false},{"name":"neighbour_search_distance","order":1,"description":"Distance by which connection point is shifted along its direction to select a position where neighbor will be searched.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.7}}]},{"name":"NeighbourConnectableConnectionCategory","order":362,"description":"","abstract":false,"inline":false,"type":"string"},{"name":"NeighbourConnectableConnectionDefinition","order":363,"description":"In order for 2 NeighbourConnectable to connect they need to share a connection point at the same position with opposite direction and both accept neighbor's category.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"category","order":1,"description":"Name of a category this connection should belong to. Used when deciding which connections are allowed to connect to this.\n\nCannot be an empty string.","override":false,"type":"NeighbourConnectableConnectionCategory","optional":false},{"name":"location","order":0,"description":"","override":false,"type":"MapLocation","optional":false},{"name":"neighbour_category","order":2,"description":"Table of neighbor categories this connection will connect to.","override":false,"type":{"complex_type":"array","value":"NeighbourConnectableConnectionCategory"},"optional":true}]},{"name":"NestedTriggerEffectItem","order":364,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"action","order":1,"description":"","override":false,"type":"Trigger","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"nested-result"},"optional":false}]},{"name":"NoiseExpression","order":365,"description":"A boolean or double as simple values or a string that represents a math expression. The expression parser recognizes five basic token types (with their regex):\n\n- **Whitespace:** `[ \\n\\r\\t]*`\n\n- **Identifier:** `[a-zA-Z_][a-zA-Z0-9_:]*` (e.g. cat_bar123)\n\n- **Number:** `(0x[0-9a-f]+|([0-9]+\\.?[0-9]*|\\.[0-9]+)(e-?[0-9]+)?)` (e.g. `3.2`, `100`, `.6`, `4.2e-5`, `0x2a5f`). Supports hexadecimal input and scientific notation for decimal numbers.\n\n- **String:** `(\"[^\"]*\"|'[^']*')` (e.g. `\"cat bar 123\"`, `'control-setting:copper-ore'`)\n\n- **Operator:** See the list below\n\nIdentifiers are used to name functions and variables. The built-in functions and variables are documented in the [auxiliary docs](runtime:noise-expressions). Mods can define their own noise expressions which can be used as variables and functions. The entry points for this are [NamedNoiseFunction](prototype:NamedNoiseFunction) and [NamedNoiseExpression](prototype:NamedNoiseExpression) as well as local functions and expressions.\n\nAll functions accept both named and positional arguments. To differentiate between these function calls, positional arguments start/end with `(`/`)` and named arguments with `{`/`}`, e.g. `clamp(x, -1, 1)` and `clamp{min = -1, max = 1, value = x}` are the same function call. Because of this, positional arguments can't be mixed with named arguments. A function can't have more than 255 parameters.\n\nThe following operators are available, ordered by precedence:\n\n- `x^y`: Exponentiation (fast, inaccurate), equivalent to the built-in `pow(x, y)` noise function\n\n- `+x`, `-x`, `~x`: Unary plus and minus and unary bitwise not\n\n- `x*y`, `x/y`, `x%y`, `x%%y`: Multiplication and division, modulo and remainder\n\n- `x+y`, `x-y`: Addition and subtraction\n\n- `x<y`, `x<=y`, `x>y`, `x>=y`: Less than, less than or equal, greater than, greater than or equal\n\n- `x==y`, `x~=y`, `x!=y`: Equal to and not equal to (Lua and C++ syntax)\n\n- `x&y`: Bitwise and\n\n- `x~y`: Bitwise xor\n\n- `x|y`: Bitwise or\n\nModulo is implemented as `x - floor(x / y) * y` and remainder uses C++ [`fmod(x, y)`](https://en.cppreference.com/w/cpp/numeric/math/fmod) function.\n\nThe boolean operators (less than, less than or equal, equal, not equal, greater than, greater than or equal) take two numbers and return 0 for false or 1 for true.\n\nThe bitwise operators convert single-precision floating-point numbers to signed 32-bit integers before computing the result.\n\nExponentiation and the unary operators are right-to-left associative. The rest of the operators are left-to-right associative.","examples":["```\n\"distance_from_nearest_point{x = x, y = y, points = starting_positions}\"\n```","```\n\"clamp(x, -1, 1)\"\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":["string","boolean","double"],"full_format":false}},{"name":"NoiseFunction","order":366,"description":"The advantage of noise functions over [noise expressions](prototype:NoiseExpression) is that they have parameters.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"expression","order":1,"description":"","override":false,"type":"NoiseExpression","optional":false},{"name":"local_expressions","order":2,"description":"A map of expression name to expression.\n\nLocal expressions are meant to store data locally similar to local variables in Lua. Their purpose is to hold noise expressions used multiple times in the named noise expression, or just to tell the reader that the local expression has a specific purpose. Local expressions can access other local definitions and also function parameters, but recursive definitions aren't supported.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"NoiseExpression"},"optional":true},{"name":"local_functions","order":3,"description":"A map of function name to function.\n\nLocal functions serve the same purpose as local expressions - they aren't visible outside of the specific prototype and they have access to other local definitions.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"NoiseFunction"},"optional":true},{"name":"parameters","order":0,"description":"The order of the parameters matters because functions can also be called with positional arguments.\n\nA function can't have more than 255 parameters.","override":false,"type":{"complex_type":"array","value":"string"},"optional":false}]},{"name":"NothingModifier","order":367,"description":"Modifier that does nothing. Can be used to show custom scripted effects in the technology GUI.","parent":"BaseModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"effect_description","order":2,"description":"","override":false,"type":"LocalisedString","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"nothing"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"OffshorePumpGraphicsSet","order":368,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation","order":0,"description":"Rendered in \"object\" layer, with secondary draw order 0.","override":false,"type":"Animation4Way","optional":true},{"name":"base_pictures","order":5,"description":"Rendered in layer specified by `base_render_layer`, with secondary draw order 0.","override":false,"type":"Sprite4Way","optional":true},{"name":"base_render_layer","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"ground-patch"}},{"name":"fluid_animation","order":3,"description":"Rendered in \"object\" layer, with secondary draw order 20.","override":false,"type":"Animation4Way","optional":true},{"name":"glass_pictures","order":4,"description":"Rendered in \"object\" layer, with secondary draw order 40.","override":false,"type":"Sprite4Way","optional":true},{"name":"underwater_layer_offset","order":2,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"underwater_pictures","order":6,"description":"Drawn by tile renderer when water animation is enabled.","override":false,"type":"Sprite4Way","optional":true},{"name":"water_reflection","order":7,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"OrTipTrigger","order":369,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"triggers","order":1,"description":"If at least one of the triggers is fulfilled, this trigger is considered fulfilled.","override":false,"type":{"complex_type":"array","value":"TipTrigger"},"optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"or"},"optional":false}]},{"name":"Order","order":370,"description":"The order property is a simple `string`. When the game needs to sort prototypes (of the same type), it looks at their order properties and sorts those alphabetically. A prototype with an order string of `\"a\"` will be listed before other prototypes with order string `\"b\"` or `\"c\"`. The `\"-\"` or `\"[]\"` structures that can be found in vanilla order strings do *not* have any special meaning.\n\nThe alphabetical sorting uses [lexicographical comparison](https://en.wikipedia.org/wiki/Lexicographic_order) to determine if a given prototype is shown before or after another. If the order strings are equal then the game falls back to comparing the prototype names to determine order.","examples":["```\n{  -- This item will be shown after the below one\n  type = \"item\",\n  name = \"item-1\",\n  order = \"ad\",\n},\n{  -- This item will be shown before the above one\n  type = \"item\",\n  name = \"item-2\",\n  order = \"ab\",\n}\n```","```\n-- The order of special characters can be identified by looking at a UTF-8 character list.\n-- This is the order some common characters are sorted in:\n\"-\"\n\"0\"\n\"9\"\n\"A\"\n\"Z\"\n\"[\"\n\"]\"\n\"a\"\n\"z\"\n-- The following order strings would be ordered thusly then:\n\"a\"\n\"ab\"\n\"azaaa\"  -- \"b\" is sorted before \"z\", so \"ab\" comes before \"az\", regardless of the letters following it\n\"b\"\n\"b-zzz\"\n\"b[aaa]\" -- \"[\" is sorted after \"-\" in UTF-8\n\"bb\"  -- \"b\" is sorted after \"[\" in UTF-8\n]\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"OrientedCliffPrototype","order":371,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"collision_bounding_box","order":1,"description":"","override":false,"type":"BoundingBox","optional":false},{"name":"pictures","order":2,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"pictures_lower","order":3,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"render_layer","order":0,"description":"","override":false,"type":"RenderLayer","optional":true}]},{"name":"OrientedCliffPrototypeSet","order":372,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"east_to_none","order":16,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"east_to_north","order":10,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"east_to_south","order":6,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"east_to_west","order":2,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"none_to_east","order":13,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"none_to_north","order":19,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"none_to_south","order":15,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"none_to_west","order":17,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"north_to_east","order":5,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"north_to_none","order":14,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"north_to_south","order":1,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"north_to_west","order":9,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"south_to_east","order":11,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"south_to_none","order":18,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"south_to_north","order":3,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"south_to_west","order":7,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"west_to_east","order":0,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"west_to_none","order":12,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"west_to_north","order":4,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false},{"name":"west_to_south","order":8,"description":"","override":false,"type":"OrientedCliffPrototype","optional":false}]},{"name":"OtherColors","order":373,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"bar","order":2,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"color","order":1,"description":"","override":false,"type":"Color","optional":true},{"name":"less_than","order":0,"description":"","override":false,"type":"double","optional":false}]},{"name":"ParticleID","order":374,"description":"The name of a [ParticlePrototype](prototype:ParticlePrototype).","examples":["```\n\"beacon-metal-particle-small\"\n```","```\n\"wooden-particle\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"PasteEntitySettingsTipTrigger","order":375,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"match_type_only","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"source","order":1,"description":"","override":false,"type":"EntityID","optional":true},{"name":"target","order":2,"description":"","override":false,"type":"EntityID","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"paste-entity-settings"},"optional":false}]},{"name":"PathFinderSettings","order":376,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"cache_accept_path_end_distance_ratio","order":12,"description":"When looking for path from cache make sure it doesn't end too far from requested end. This is typically higher than accept value for the start because the end target can be moving.","override":false,"type":"double","optional":false},{"name":"cache_accept_path_start_distance_ratio","order":11,"description":"When looking for path from cache make sure it doesn't start too far from requested start in relative distance terms.","override":false,"type":"double","optional":false},{"name":"cache_max_connect_to_cache_steps_multiplier","order":10,"description":"When searching for connection to path cache path, search at most for this number of steps times the initial estimate.","override":false,"type":"uint32","optional":false},{"name":"cache_path_end_distance_rating_multiplier","order":16,"description":"When assigning rating to the best path this * end distances is considered. This is typically higher than value for the start to achieve better path end quality.","override":false,"type":"double","optional":false},{"name":"cache_path_start_distance_rating_multiplier","order":15,"description":"When assigning rating to the best path this * start distances is considered.","override":false,"type":"double","optional":false},{"name":"direct_distance_to_consider_short_request","order":25,"description":"This is the \"threshold\" to decide what is short and what is not.","override":false,"type":"uint32","optional":false},{"name":"enemy_with_different_destination_collision_penalty","order":19,"description":"Enemy is not moving/or is too close and has different destination.","override":false,"type":"double","optional":false},{"name":"extended_collision_penalty","order":22,"description":"Collision penalty for collisions in the extended bounding box but outside the entity's actual bounding box.","override":false,"type":"double","optional":false},{"name":"fwd2bwd_ratio","order":0,"description":"The pathfinder performs a step of the backward search every `fwd2bwd_ratio`'th step. The minimum allowed value is 2, which means symmetric search.","override":false,"type":"uint32","optional":false},{"name":"general_entity_collision_penalty","order":20,"description":"Simplification for now; collision with everything else is this.","override":false,"type":"double","optional":false},{"name":"general_entity_subsequent_collision_penalty","order":21,"description":"Collision penalty for successors of positions that require destroy to reach.","override":false,"type":"double","optional":false},{"name":"goal_pressure_ratio","order":1,"description":"When comparing nodes in open which one to check next, heuristic value is multiplied by this ratio. The higher the number the more is the search directed directly towards the goal.","override":false,"type":"double","optional":false},{"name":"ignore_moving_enemy_collision_distance","order":18,"description":"If there is a moving unit further than this we don't really care.","override":false,"type":"double","optional":false},{"name":"long_cache_min_cacheable_distance","order":9,"description":"Minimal distance to goal for path to be searched in long path cache.","override":false,"type":"double","optional":false},{"name":"long_cache_size","order":6,"description":"","override":false,"type":"uint32","optional":false},{"name":"max_clients_to_accept_any_new_request","order":23,"description":"Up until this amount any client will be served by the path finder (no estimate on the path length).","override":false,"type":"uint32","optional":false},{"name":"max_clients_to_accept_short_new_request","order":24,"description":"From max_clients_to_accept_any_new_request till this one only those that have a short estimate will be served.","override":false,"type":"uint32","optional":false},{"name":"max_steps_worked_per_tick","order":3,"description":"When this is exhausted no more requests are allowed, at the moment the first path to exhaust this will be finished (even if it is hundreds of steps).","override":false,"type":"double","optional":false},{"name":"max_work_done_per_tick","order":4,"description":"","override":false,"type":"uint32","optional":false},{"name":"min_steps_to_check_path_find_termination","order":28,"description":"Absolute minimum of steps that will be performed for every path find request no matter what.","override":false,"type":"uint32","optional":false},{"name":"negative_cache_accept_path_end_distance_ratio","order":14,"description":"Same as cache_accept_path_end_distance_ratio, but used for negative cache queries.","override":false,"type":"double","optional":false},{"name":"negative_cache_accept_path_start_distance_ratio","order":13,"description":"Same as cache_accept_path_start_distance_ratio, but used for negative cache queries.","override":false,"type":"double","optional":false},{"name":"negative_path_cache_delay_interval","order":32,"description":"","override":false,"type":"uint32","optional":false},{"name":"overload_levels","order":30,"description":"","override":false,"type":{"complex_type":"array","value":"uint32"},"optional":false},{"name":"overload_multipliers","order":31,"description":"","override":false,"type":{"complex_type":"array","value":"double"},"optional":false},{"name":"short_cache_min_algo_steps_to_cache","order":8,"description":"Minimal number of algorithm steps for path to be inserted into the short path cache.","override":false,"type":"uint32","optional":false},{"name":"short_cache_min_cacheable_distance","order":7,"description":"Minimal distance to goal for path to be searched in short path cache.","override":false,"type":"double","optional":false},{"name":"short_cache_size","order":5,"description":"Number of elements in the cache.","override":false,"type":"uint32","optional":false},{"name":"short_request_max_steps","order":26,"description":"If a short request takes more than this many steps, it will be rescheduled as a long request.","override":false,"type":"uint32","optional":false},{"name":"short_request_ratio","order":27,"description":"How many steps will be allocated to short requests each tick, as a ratio of all available steps per tick.","override":false,"type":"double","optional":false},{"name":"stale_enemy_with_same_destination_collision_penalty","order":17,"description":"Somewhere along the path is stuck enemy we need to avoid. This is mainly to handle situations when units have arrived and are attacking the target then units further in the back will use this and run around the target.","override":false,"type":"double","optional":false},{"name":"start_to_goal_cost_multiplier_to_terminate_path_find","order":29,"description":"If the current actual cost from start is higher than this times estimate of start to goal then path finding is terminated.","override":false,"type":"double","optional":false},{"name":"use_path_cache","order":2,"description":"","override":false,"type":"boolean","optional":false}]},{"name":"PerceivedPerformance","order":377,"description":"Not all prototypes that use this type are affected by all properties.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"maximum","order":1,"description":"Affects animation speed.","override":false,"type":"double","optional":true,"default":"Max double"},{"name":"minimum","order":0,"description":"Affects animation speed.\n\nMust be less than or equal to `maximum`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"performance_to_activity_rate","order":2,"description":"Affects [MainSound](prototype:MainSound) if [MainSound::match_progress_to_activity](prototype:MainSound::match_progress_to_activity), [MainSound::match_volume_to_activity](prototype:MainSound::match_volume_to_activity) or [MainSound::match_speed_to_activity](prototype:MainSound::match_speed_to_activity) is `true`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"PersistentWorldAmbientSoundDefinition","order":378,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"Sound"],"full_format":false},"properties":[{"name":"sound","order":0,"description":"","override":false,"type":"Sound","optional":false}]},{"name":"PersistentWorldAmbientSoundsDefinition","order":379,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"base_ambience","order":0,"description":"Mandatory if `crossfade` is defined.","override":false,"type":{"complex_type":"union","options":["PersistentWorldAmbientSoundDefinition",{"complex_type":"array","value":"PersistentWorldAmbientSoundDefinition"}],"full_format":false},"optional":true},{"name":"crossfade","order":2,"description":"","override":false,"type":"PersistentWorldAmbientSoundsDefinitionCrossfade","optional":true},{"name":"semi_persistent","order":3,"description":"","override":false,"type":{"complex_type":"union","options":["SemiPersistentWorldAmbientSoundDefinition",{"complex_type":"array","value":"SemiPersistentWorldAmbientSoundDefinition"}],"full_format":false},"optional":true},{"name":"wind","order":1,"description":"Mandatory if `crossfade` is defined.","override":false,"type":{"complex_type":"union","options":["PersistentWorldAmbientSoundDefinition",{"complex_type":"array","value":"PersistentWorldAmbientSoundDefinition"}],"full_format":false},"optional":true}]},{"name":"PersistentWorldAmbientSoundsDefinitionCrossfade","order":380,"description":"","parent":"Fade","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"order","order":0,"description":"","override":false,"type":{"complex_type":"tuple","values":[{"complex_type":"union","options":[{"complex_type":"literal","value":"wind"},{"complex_type":"literal","value":"base_ambience"}],"full_format":false},{"complex_type":"union","options":[{"complex_type":"literal","value":"wind"},{"complex_type":"literal","value":"base_ambience"}],"full_format":false}]},"optional":false}]},{"name":"PipeConnectionDefinition","order":381,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"connection_category","order":6,"description":"Fluidboxes' pipe connections are only allowed to connect with each other if they share a connection category. For example a mod could have a \"steam pipes\" and \"cryogenic pipes\" category that should not connect with each other.\n\nIn case of a normal connection, a pipe connection can be in multiple connection categories. This allows to create a mod where pipes of different categories would not connect to each other while still making it possible for crafting machines and other entities to connect to any of the specified pipes.\n\nBy default, all pipe connections have the `\"default\"` category. So a pipe that should connect to a new category and standard pipes can have the `connection_category = {\"my-new-pipe\", \"default\"}`.\n\nMay have at most one category when `connection_type` is `\"underground\"`.\n\nOnly loaded if `connection_type` is `\"normal\"` or `\"underground\"`.","override":false,"type":{"complex_type":"union","options":["string",{"complex_type":"array","value":"string"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"default"}},{"name":"connection_type","order":1,"description":"Selects set of rules to follow when looking for other FluidBox this connection should connect to.","override":false,"type":"PipeConnectionType","optional":true,"default":{"complex_type":"literal","value":"normal"}},{"name":"direction","order":3,"description":"Primary direction this connection points to when entity direction is north and the entity is not mirrored. When entity is rotated or mirrored, effective direction will be computed based on this value.\n\nOnly loaded, and mandatory if `connection_type` is `\"normal\"` or `\"underground\"`.","override":false,"type":"defines.direction","optional":true},{"name":"enable_working_visualisations","order":2,"description":"Array of the [WorkingVisualisation::name](prototype:WorkingVisualisation::name) of working visualisations to enable when this pipe connection is present.\n\nIf the owning fluidbox has [draw_only_when_connected](prototype:FluidBox::draw_only_when_connected) set to `true`, then the working visualisation is only enabled if this pipe connection is *connected*.","override":false,"type":{"complex_type":"array","value":"string"},"optional":true},{"name":"flow_direction","order":0,"description":"Allowed direction of fluid flow at this connection. Pipeline entities (`pipe`, `pipe-to-ground`, and `storage-tank`) do not support this property.","override":false,"type":"FluidFlowDirection","optional":true,"default":{"complex_type":"literal","value":"input-output"}},{"name":"linked_connection_id","order":10,"description":"Expected to be unique inside of a single entity. Used to uniquely identify where a linked connection should connect to.\n\nOnly loaded, and mandatory if `connection_type` is `\"linked\"`.","override":false,"type":"FluidBoxLinkedConnectionID","optional":true},{"name":"max_distance_tint","order":8,"description":"Only loaded if `connection_type` is `\"underground\"`.","override":false,"type":"Color","optional":true},{"name":"max_underground_distance","order":7,"description":"Only loaded if `connection_type` is `\"underground\"`.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"position","order":4,"description":"Position relative to entity's center where pipes can connect to this fluidbox regardless the directions of entity.\n\nOnly loaded if `connection_type` is `\"normal\"` or `\"underground\"`.","override":false,"type":"MapPosition","optional":true},{"name":"positions","order":5,"description":"The 4 separate positions corresponding to the 4 main directions of entity. Positions must correspond to directions going one after another.\n\nThis is used for example by \"pumpjack\" where connections are consistently near bottom-left corner (2 directions) or near top-right corner (2 directions).\n\nOnly loaded, and mandatory if `position` is not defined and if `connection_type` is `\"normal\"` or `\"underground\"`.","override":false,"type":{"complex_type":"tuple","values":["MapPosition","MapPosition","MapPosition","MapPosition"]},"optional":true},{"name":"underground_collision_mask","order":9,"description":"An underground connection may be defined as colliding with tiles in which case if any tile is placed between underground ends the connection will not be established.\n\nIn order to connect, both ends must have the same collision mask specified.\n\nOnly loaded if `connection_type` is `\"underground\"`.","override":false,"type":"CollisionMaskConnector","optional":true}]},{"name":"PipeConnectionType","order":382,"description":"","abstract":false,"inline":true,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"normal","description":"2 connections are required to be adjacent tiles next to each other on their respective directions."},{"complex_type":"literal","value":"underground","description":"Allows distant connection up to a certain limit. Those connections may be blocked by tiles."},{"complex_type":"literal","value":"linked","description":"For mods, connections between entities have to be explicitly requested by script."}],"full_format":true}},{"name":"PipePictures","order":383,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"corner_down_left","order":8,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_down_left_disabled_visualization","order":62,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_down_left_frozen","order":26,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_down_left_visualization","order":44,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_down_right","order":7,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_down_right_disabled_visualization","order":61,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_down_right_frozen","order":25,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_down_right_visualization","order":43,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_up_left","order":6,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_up_left_disabled_visualization","order":60,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_up_left_frozen","order":24,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_up_left_visualization","order":42,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_up_right","order":5,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_up_right_disabled_visualization","order":59,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_up_right_frozen","order":23,"description":"","override":false,"type":"Sprite","optional":true},{"name":"corner_up_right_visualization","order":41,"description":"","override":false,"type":"Sprite","optional":true},{"name":"cross","order":13,"description":"","override":false,"type":"Sprite","optional":true},{"name":"cross_disabled_visualization","order":67,"description":"","override":false,"type":"Sprite","optional":true},{"name":"cross_frozen","order":31,"description":"","override":false,"type":"Sprite","optional":true},{"name":"cross_visualization","order":49,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_down","order":15,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_down_disabled_visualization","order":69,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_down_frozen","order":33,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_down_visualization","order":51,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_left","order":17,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_left_disabled_visualization","order":71,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_left_frozen","order":35,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_left_visualization","order":53,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_right","order":16,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_right_disabled_visualization","order":70,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_right_frozen","order":34,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_right_visualization","order":52,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_up","order":14,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_up_disabled_visualization","order":68,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_up_frozen","order":32,"description":"","override":false,"type":"Sprite","optional":true},{"name":"ending_up_visualization","order":50,"description":"","override":false,"type":"Sprite","optional":true},{"name":"fluid_background","order":74,"description":"","override":false,"type":"Sprite","optional":true},{"name":"gas_flow","order":78,"description":"Visualizes the flow of the fluid in the pipe. Drawn when the fluid's temperature is above [FluidPrototype::gas_temperature](prototype:FluidPrototype::gas_temperature).","override":false,"type":"Animation","optional":true},{"name":"high_temperature_flow","order":77,"description":"Visualizes the flow of the fluid in the pipe. Drawn when `(fluid_temp - fluid_min_temp) / (fluid_max_temp - fluid_min_temp)` is larger than `2/3` and the fluid's temperature is below [FluidPrototype::gas_temperature](prototype:FluidPrototype::gas_temperature).","override":false,"type":"Sprite","optional":true},{"name":"horizontal_window_background","order":72,"description":"","override":false,"type":"Sprite","optional":true},{"name":"low_temperature_flow","order":75,"description":"Visualizes the flow of the fluid in the pipe. Drawn when `(fluid_temp - fluid_min_temp) / (fluid_max_temp - fluid_min_temp)` is less than or equal to `1/3` and the fluid's temperature is below [FluidPrototype::gas_temperature](prototype:FluidPrototype::gas_temperature).","override":false,"type":"Sprite","optional":true},{"name":"middle_temperature_flow","order":76,"description":"Visualizes the flow of the fluid in the pipe. Drawn when `(fluid_temp - fluid_min_temp) / (fluid_max_temp - fluid_min_temp)` is larger than `1/3` and less than or equal to `2/3` and the fluid's temperature is below [FluidPrototype::gas_temperature](prototype:FluidPrototype::gas_temperature).","override":false,"type":"Sprite","optional":true},{"name":"straight_horizontal","order":3,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_horizontal_disabled_visualization","order":57,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_horizontal_frozen","order":21,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_horizontal_visualization","order":39,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_horizontal_window","order":4,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_horizontal_window_disabled_visualization","order":58,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_horizontal_window_frozen","order":22,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_horizontal_window_visualization","order":40,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical","order":1,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical_disabled_visualization","order":55,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical_frozen","order":19,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical_single","order":0,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical_single_disabled_visualization","order":54,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical_single_frozen","order":18,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical_single_visualization","order":36,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical_visualization","order":37,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical_window","order":2,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical_window_disabled_visualization","order":56,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical_window_frozen","order":20,"description":"","override":false,"type":"Sprite","optional":true},{"name":"straight_vertical_window_visualization","order":38,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_down","order":10,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_down_disabled_visualization","order":64,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_down_frozen","order":28,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_down_visualization","order":46,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_left","order":12,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_left_disabled_visualization","order":66,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_left_frozen","order":30,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_left_visualization","order":48,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_right","order":11,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_right_disabled_visualization","order":65,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_right_frozen","order":29,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_right_visualization","order":47,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_up","order":9,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_up_disabled_visualization","order":63,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_up_frozen","order":27,"description":"","override":false,"type":"Sprite","optional":true},{"name":"t_up_visualization","order":45,"description":"","override":false,"type":"Sprite","optional":true},{"name":"vertical_window_background","order":73,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"PlaceAsTile","order":384,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"condition","order":1,"description":"","override":false,"type":"CollisionMaskConnector","optional":false},{"name":"condition_size","order":3,"description":"","override":false,"type":"uint32","optional":false},{"name":"invert","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"result","order":0,"description":"","override":false,"type":"TileID","optional":false},{"name":"tile_condition","order":4,"description":"","override":false,"type":{"complex_type":"array","value":"TileID"},"optional":true}]},{"name":"PlaceEquipmentTipTrigger","order":385,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"equipment","order":1,"description":"","override":false,"type":"EquipmentID","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"place-equipment"},"optional":false}]},{"name":"PlanTrainPathTipTrigger","order":386,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"distance","order":1,"description":"","override":false,"type":"double","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"plan-train-path"},"optional":false}]},{"name":"PlanetPrototypeMapGenSettings","order":387,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"autoplace_controls","order":2,"description":"","override":false,"type":{"complex_type":"dictionary","key":"AutoplaceControlID","value":"FrequencySizeRichness"},"optional":true},{"name":"autoplace_settings","order":3,"description":"Each setting in this table maps the string type to the settings for that type.","override":false,"type":{"complex_type":"dictionary","key":{"complex_type":"union","options":[{"complex_type":"literal","value":"entity"},{"complex_type":"literal","value":"tile"},{"complex_type":"literal","value":"decorative"}],"full_format":false},"value":"AutoplaceSettings"},"optional":true},{"name":"aux_climate_control","order":6,"description":"Used for showing the planet icon in map generator GUI next to aux climate control.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"cliff_settings","order":0,"description":"","override":false,"type":"CliffPlacementSettings","optional":true},{"name":"moisture_climate_control","order":5,"description":"Used for showing the planet icon in map generator GUI next to moisture climate control.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"property_expression_names","order":4,"description":"Map of property name (e.g. \"elevation\") to name of noise expression that will provide it. Entries may be omitted. A notable usage is changing autoplace behavior of an entity based on the preset, which cannot be read from a noise expression.","override":false,"type":{"complex_type":"dictionary","key":"string","value":{"complex_type":"union","options":["string","boolean","double"],"full_format":false}},"optional":true},{"name":"territory_settings","order":1,"description":"","override":false,"type":"TerritorySettings","optional":true}]},{"name":"PlayFor","order":388,"description":"Defines when controller vibrations should be played.","abstract":false,"inline":true,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"character_actions","description":"Play the vibration only if it was caused by the player. For example when shooting a gun, vibration will play when the character shoots but not when a turret shoots."},{"complex_type":"literal","value":"everything","description":"Always play the vibration. Useful for example for explosions."}],"full_format":true}},{"name":"PlaySoundTriggerEffectItem","order":389,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"max_distance","order":3,"description":"Negative values are silently clamped to 0.","override":false,"type":"float","optional":true,"default":"1e21"},{"name":"min_distance","order":2,"description":"Negative values are silently clamped to 0.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"play_on_target_position","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"sound","order":1,"description":"","override":false,"type":"Sound","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"play-sound"},"optional":false}]},{"name":"PlayerColorData","order":390,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"chat_color","order":2,"description":"","override":false,"type":"Color","optional":false},{"name":"name","order":0,"description":"","override":false,"type":"string","optional":false},{"name":"player_color","order":1,"description":"","override":false,"type":"Color","optional":false}]},{"name":"PlayerInputMethodFilter","order":391,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"all","description":""},{"complex_type":"literal","value":"keyboard_and_mouse","description":""},{"complex_type":"literal","value":"game_controller","description":""}],"full_format":true}},{"name":"PlumeEffect","order":392,"description":"","parent":"StatelessVisualisation","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"age_discrimination","order":0,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"PlumesSpecification","order":393,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"max_probability","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"max_y_offset","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"min_probability","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"min_y_offset","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"render_box","order":0,"description":"If given, the plumes will only render if this area is on screen (relative to the thruster)","override":false,"type":"BoundingBox","optional":true},{"name":"stateless_visualisations","order":5,"description":"Array may not be empty and may at most have 255 elements.\n\nNon-zero `period` needs to be provided. May not have `positions` or `particle_tick_offset`.","override":false,"type":{"complex_type":"union","options":["PlumeEffect",{"complex_type":"array","value":"PlumeEffect"}],"full_format":false},"optional":true}]},{"name":"PodAnimationProcessionBezierControlPoint","order":394,"description":"One frame in time for a Bezier interpolation.","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"frame","order":1,"description":"the frame of the pod animation played.","override":false,"type":"float","optional":false},{"name":"timestamp","order":0,"description":"","override":false,"type":"MapTick","optional":false}]},{"name":"PodAnimationProcessionLayer","order":395,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"frames","order":2,"description":"","override":false,"type":{"complex_type":"array","value":"PodAnimationProcessionBezierControlPoint"},"optional":false},{"name":"graphic","order":1,"description":"","override":false,"type":"ProcessionGraphic","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"pod-animation"},"optional":false}]},{"name":"PodDistanceTraveledProcessionBezierControlPoint","order":396,"description":"One frame in time for a Bezier interpolation.","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"distance","order":1,"description":"`distance` and `distance_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true},{"name":"distance_t","order":2,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"timestamp","order":0,"description":"Mandatory if `distance` is defined.","override":false,"type":"MapTick","optional":true}]},{"name":"PodDistanceTraveledProcessionLayer","order":397,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"contribute_to_distance_traveled","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"distance_traveled_contribution","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"frames","order":4,"description":"","override":false,"type":{"complex_type":"array","value":"PodDistanceTraveledProcessionBezierControlPoint"},"optional":false},{"name":"reference_group","order":1,"description":"The group this layer belongs to, for inheritance.","override":false,"type":"ProcessionLayerInheritanceGroupID","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"pod-distance-traveled"},"optional":false}]},{"name":"PodMovementProcessionBezierControlPoint","order":398,"description":"One frame in time for a Bezier interpolation.","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"offset","order":3,"description":"`offset` and `offset_t` interpolate a vector smoothly over time using `offset_rate` and `offset_rate_t` for a 0-1 rate curve.\n\nVector value.","override":false,"type":"Vector","optional":true},{"name":"offset_rate","order":5,"description":"Rate 0-1 value.","override":false,"type":"double","optional":true},{"name":"offset_rate_t","order":6,"description":"Rate tangent.","override":false,"type":"double","optional":true},{"name":"offset_t","order":4,"description":"Vector tangent.","override":false,"type":"Vector","optional":true},{"name":"tilt","order":1,"description":"`tilt` and `tilt_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true},{"name":"tilt_t","order":2,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"timestamp","order":0,"description":"Mandatory if `tilt` is defined.","override":false,"type":"MapTick","optional":true}]},{"name":"PodMovementProcessionLayer","order":399,"description":"","examples":["```\n{\n  type = \"pod-movement\",\n  frames =\n  {\n    { timestamp = 700 , tilt = 0.0               , tilt_t = 0 },\n    { timestamp = 700 , offset = {0, 0 - 500}    , offset_t = {0, -40} },\n    { timestamp = 900 , offset = {15, -60 - 500} , offset_t = {-10, -10} },\n    { timestamp = 900 , opacity = 1.0 },\n    { timestamp = 960 , tilt = 0.05              , tilt_t = -0.03 },\n    { timestamp = 1050, tilt = 0.25              , tilt_t = 0 },\n    { timestamp = 1050, offset = {40, -70 - 500} , offset_t = {-1, 0} },\n    { timestamp = 1050, opacity = 0.0 },\n    { timestamp = 700 , offset_rate = 0 },\n    { timestamp = 1050, offset_rate = 1.0 }\n  }\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"contribute_to_distance_traveled","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"distance_traveled_contribution","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"frames","order":5,"description":"","override":false,"type":{"complex_type":"array","value":"PodMovementProcessionBezierControlPoint"},"optional":false},{"name":"inherit_from","order":2,"description":"Adds the final position value from given layer to this one.","override":false,"type":"ProcessionLayerInheritanceGroupID","optional":true},{"name":"reference_group","order":1,"description":"The group this layer belongs to, for inheritance.","override":false,"type":"ProcessionLayerInheritanceGroupID","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"pod-movement"},"optional":false}]},{"name":"PodOpacityProcessionBezierControlPoint","order":400,"description":"One frame in time for a Bezier interpolation.","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"cutscene_opacity","order":1,"description":"`cutscene_opacity` and `cutscene_opacity_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true},{"name":"cutscene_opacity_t","order":2,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"lut_blend","order":5,"description":"`lut_blend` and `lut_blend_t` interpolate a double smoothly over time.\n\nLUT won't be overridden however, until the pod is drawn above the game via `draw_switch_tick`.","override":false,"type":"double","optional":true},{"name":"lut_blend_t","order":6,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"outside_opacity","order":3,"description":"`outside_opacity` and `outside_opacity_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true},{"name":"outside_opacity_t","order":4,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"timestamp","order":0,"description":"Mandatory if `cutscene_opacity` or `outside_opacity` is defined.","override":false,"type":"MapTick","optional":true}]},{"name":"PodOpacityProcessionLayer","order":401,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"frames","order":2,"description":"Default values if unspecified:\n\n- cutscene_opacity : 1.0\n\n- outside_opacity : 1.0\n\n- lut_blend : 0.0\n\n- environment_volume : 1.0\n\n- environment_muffle_intensity : 0.0","override":false,"type":{"complex_type":"array","value":"PodOpacityProcessionBezierControlPoint"},"optional":false},{"name":"lut","order":1,"description":"","override":false,"type":"ColorLookupTable","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"pod-opacity"},"optional":false}]},{"name":"PollutionSettings","order":402,"description":"The pollution settings, the values are for 60 ticks (1 second).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"ageing","order":3,"description":"Constant modifier a percentage of 1; the pollution eaten by a chunks tiles. Also known as absorption modifier.","override":false,"type":"double","optional":false},{"name":"diffusion_ratio","order":1,"description":"Amount that is diffused to neighboring chunks.","override":false,"type":"double","optional":false},{"name":"enabled","order":0,"description":"","override":false,"type":"boolean","optional":false},{"name":"enemy_attack_pollution_consumption_modifier","order":11,"description":"","override":false,"type":"double","optional":false},{"name":"expected_max_per_chunk","order":4,"description":"Anything bigger than this is visualized as this value.","override":false,"type":"double","optional":false},{"name":"max_pollution_to_restore_trees","order":10,"description":"","override":false,"type":"double","optional":false},{"name":"min_pollution_to_damage_trees","order":6,"description":"","override":false,"type":"double","optional":false},{"name":"min_to_diffuse","order":2,"description":"This much pollution units must be on the chunk to start diffusing.","override":false,"type":"double","optional":false},{"name":"min_to_show_per_chunk","order":5,"description":"Anything lower than this (but > 0) is visualized as this value.","override":false,"type":"double","optional":false},{"name":"pollution_per_tree_damage","order":9,"description":"","override":false,"type":"double","optional":false},{"name":"pollution_restored_per_tree_damage","order":8,"description":"","override":false,"type":"double","optional":false},{"name":"pollution_with_max_forest_damage","order":7,"description":"","override":false,"type":"double","optional":false}]},{"name":"ProbabilityTable","order":403,"description":"Probabilities of all items must add up to 100.","abstract":false,"inline":false,"type":{"complex_type":"array","value":"ProbabilityTableItem"}},{"name":"ProbabilityTableItem","order":404,"description":"The first number is the value.\n\nThe second number is the probability in percents. It must be in the `(0, 100]` interval.","abstract":false,"inline":false,"type":{"complex_type":"tuple","values":["uint8","uint8"]}},{"name":"ProcessionAudio","order":405,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"catalogue_id","order":3,"description":"Mandatory if `type` is `\"pod_catalogue\"` or `type` is `\"location_catalogue\"`.","override":false,"type":"uint32","optional":true},{"name":"looped_sound","order":2,"description":"Mandatory if `type` is `\"looped-sound\"`.","override":false,"type":"InterruptibleSound","optional":true},{"name":"sound","order":1,"description":"Mandatory if `type` is `\"sound\"`.","override":false,"type":"Sound","optional":true},{"name":"type","order":0,"description":"","override":false,"type":"ProcessionAudioType","optional":false}]},{"name":"ProcessionAudioCatalogue","order":406,"description":"Allows a prototype to load variable amount of sounds which may be referenced by index.","abstract":false,"inline":false,"type":{"complex_type":"array","value":"ProcessionAudioCatalogueItem"}},{"name":"ProcessionAudioCatalogueItem","order":407,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"index","order":0,"description":"","override":false,"type":"uint32","optional":false},{"name":"looped_sound","order":2,"description":"One or the other.","override":false,"type":"InterruptibleSound","optional":true},{"name":"sound","order":1,"description":"One or the other.","override":false,"type":"Sound","optional":true}]},{"name":"ProcessionAudioEvent","order":408,"description":"Controls sounds during procession.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"audio","order":2,"description":"Has to be defined unless the type is \"stop-looped-sound\".","override":false,"type":"ProcessionAudio","optional":true},{"name":"loop_id","order":3,"description":"Has to be defined unless the type is \"play-sound\".","override":false,"type":"uint32","optional":true},{"name":"type","order":0,"description":"","override":false,"type":"ProcessionAudioEventType","optional":false},{"name":"usage","order":1,"description":"Has to be defined unless the type is \"stop-looped-sound\".","override":false,"type":"ProcessionAudioUsage","optional":true}]},{"name":"ProcessionAudioEventType","order":409,"description":"Type of [ProcessionAudioEvent](prototype:ProcessionAudioEvent).","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"play-sound","description":"Plays a single sound once."},{"complex_type":"literal","value":"start-looped-sound","description":"Starts a looping sound under a specified index until \"stop-looped-sound\" is triggered or the procession ends. Starting a second looped sound will stop the first."},{"complex_type":"literal","value":"stop-looped-sound","description":"Ends a looping sound under a specified index."}],"full_format":true}},{"name":"ProcessionAudioType","order":410,"description":"Types of [ProcessionAudio](prototype:ProcessionAudio).","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"none","description":"Empty graphic."},{"complex_type":"literal","value":"sound","description":"[Sound](prototype:Sound)."},{"complex_type":"literal","value":"looped-sound","description":"[Sound](prototype:Sound)."},{"complex_type":"literal","value":"pod-catalogue","description":"Defined inside [CargoPodPrototype](prototype:CargoPodPrototype)."},{"complex_type":"literal","value":"location-catalogue","description":"Defined inside [SpaceLocationPrototype](prototype:SpaceLocationPrototype)."}],"full_format":true}},{"name":"ProcessionAudioUsage","order":411,"description":"Who will hear [ProcessionAudioEvent](prototype:ProcessionAudioEvent).","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"both","description":"The player inside a pod and an outside viewer."},{"complex_type":"literal","value":"passenger","description":"Only the player inside a pod."},{"complex_type":"literal","value":"outside","description":"Only an outside viewer."}],"full_format":true}},{"name":"ProcessionGraphic","order":412,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation","order":2,"description":"Mandatory if `type` is `\"animation\"`.","override":false,"type":"Animation","optional":true},{"name":"catalogue_id","order":3,"description":"Mandatory if `type` is `\"pod-catalogue\"` or `type` is `\"location-catalogue\"`.","override":false,"type":"uint32","optional":true},{"name":"sprite","order":1,"description":"Mandatory if `type` is `\"sprite\"`.","override":false,"type":"Sprite","optional":true},{"name":"type","order":0,"description":"","override":false,"type":"ProcessionGraphicType","optional":false}]},{"name":"ProcessionGraphicCatalogue","order":413,"description":"Allows a prototype to load variable amount of sprites which may be referenced by index.","abstract":false,"inline":false,"type":{"complex_type":"array","value":"ProcessionGraphicCatalogueItem"}},{"name":"ProcessionGraphicCatalogueItem","order":414,"description":"Either animation or sprite must be provided.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation","order":1,"description":"","override":false,"type":"Animation","optional":true},{"name":"index","order":0,"description":"","override":false,"type":"uint32","optional":false},{"name":"sprite","order":2,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"ProcessionGraphicType","order":415,"description":"Types of [ProcessionGraphic](prototype:ProcessionGraphic).","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"none","description":"Empty graphic."},{"complex_type":"literal","value":"sprite","description":"[Sprite](prototype:Sprite)."},{"complex_type":"literal","value":"animation","description":"[Animation](prototype:Animation)."},{"complex_type":"literal","value":"pod-catalogue","description":"Defined inside [CargoPodPrototype](prototype:CargoPodPrototype)."},{"complex_type":"literal","value":"location-catalogue","description":"Defined inside [SpaceLocationPrototype](prototype:SpaceLocationPrototype)."},{"complex_type":"literal","value":"hatch-location-catalogue-index","description":"Uses index from [CargoHatchDefinition](prototype:CargoHatchDefinition) to address catalogue inside [SpaceLocationPrototype](prototype:SpaceLocationPrototype). Only works for graphics drawn in-world such as 'single-graphic'."}],"full_format":true}},{"name":"ProcessionID","order":416,"description":"The name of a [ProcessionPrototype](prototype:ProcessionPrototype).","abstract":false,"inline":false,"type":"string"},{"name":"ProcessionLayer","order":417,"description":"Describes one aspect of a procession. Animation and picture are interchangeable for types that require it.\n\nLoaded as one of the procession layers, based on the value of the `type` key.","examples":["```\n{\n  type = \"pod-movement\",\n  frames =\n  {\n    { timestamp = 700 , tilt = 0.0               , tilt_t = 0 },\n    { timestamp = 700 , offset = {0, 0 - 500}    , offset_t = {0, -40} },\n    { timestamp = 900 , offset = {15, -60 - 500} , offset_t = {-10, -10} },\n    { timestamp = 900 , opacity = 1.0 },\n    { timestamp = 960 , tilt = 0.05              , tilt_t = -0.03 },\n    { timestamp = 1050, tilt = 0.25              , tilt_t = 0 },\n    { timestamp = 1050, offset = {40, -70 - 500} , offset_t = {-1, 0} },\n    { timestamp = 1050, opacity = 0.0 },\n    { timestamp = 700 , offset_rate = 0 },\n    { timestamp = 1050, offset_rate = 1.0 }\n  }\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"PodDistanceTraveledProcessionLayer","description":"Loaded when the `type` is `\"pod-distance-traveled\"`. Add to distance traveled by the pod. Used by other visual layers. single layer of this type is allowed per ProcessionPrototype."},{"complex_type":"type","value":"PodMovementProcessionLayer","description":"Loaded when the `type` is `\"pod-movement\"`. Defines the timeline for the pod movement and rotation. A single layer of this type is allowed per ProcessionPrototype."},{"complex_type":"type","value":"PodOpacityProcessionLayer","description":"Loaded when the `type` is `\"pod-opacity\"`. Defines the outside and cutscene opacity of the pod and strength of surface lighting. A single layer of this type is allowed per ProcessionPrototype."},{"complex_type":"type","value":"SingleGraphicProcessionLayer","description":"Loaded when the `type` is `\"single-graphic\"`. Paints a sprite over the cargo pod."},{"complex_type":"type","value":"CoverGraphicProcessionLayer","description":"Loaded when the `type` is `\"cover-graphic\"`. Paints a tiling sprite over the entire screen. Optionally can mask nearby area or far area."},{"complex_type":"type","value":"TintProcessionLayer","description":"Loaded when the `type` is `\"tint\"`. Tints the whole surface with a color."},{"complex_type":"type","value":"PodAnimationProcessionLayer","description":"Loaded when the `type` is `\"pod-animation\"`. Defines an override graphic for the pod within the given range."}],"full_format":true}},{"name":"ProcessionLayerInheritanceGroupID","order":418,"description":"The name of an [ProcessionLayerInheritanceGroup](prototype:ProcessionLayerInheritanceGroup).","abstract":false,"inline":false,"type":"string"},{"name":"ProcessionSet","order":419,"description":"Lists arrivals and departures available for travel to a given surface.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"arrival","order":0,"description":"","override":false,"type":{"complex_type":"array","value":"ProcessionID"},"optional":false},{"name":"departure","order":1,"description":"","override":false,"type":{"complex_type":"array","value":"ProcessionID"},"optional":false}]},{"name":"ProcessionTimeline","order":420,"description":"A wrapper for a collection of [ProcessionLayers](prototype:ProcessionLayer).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"audio_events","order":6,"description":"","override":false,"type":{"complex_type":"array","value":"ProcessionAudioEvent"},"optional":true},{"name":"draw_switch_tick","order":2,"description":"During procession, the pod will at some point start being drawn above the rest of the game:\n\n- When ascending this tick will go from world to above.\n\n- When descending this tick will go from above to world.\n\nNotably, LUT override won't be applied until the pod is drawn above the game.","override":false,"type":"MapTick","optional":true,"default":"1/2 of duration"},{"name":"duration","order":0,"description":"The time to play this cutscene regardless of individual layer durations.","override":false,"type":"MapTick","optional":false},{"name":"intermezzo_max_duration","order":4,"description":"The real duration of the intermezzo playing will be below this value.","override":false,"type":"MapTick","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"intermezzo_min_duration","order":3,"description":"The real duration of the intermezzo playing will be above this value.","override":false,"type":"MapTick","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"layers","order":5,"description":"","override":false,"type":{"complex_type":"array","value":"ProcessionLayer"},"optional":false},{"name":"special_action_tick","order":1,"description":"Time to initiate usage specific actions:\n\n- Ascending animation will detach from rocket on this tick.\n\n- Descending animation will request hatch to be opened.","override":false,"type":"MapTick","optional":true,"default":"1/2 of duration"}]},{"name":"ProductPrototype","order":421,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"ItemProductPrototype","description":"Loaded when the `type` is `\"item\"`."},{"complex_type":"type","value":"FluidProductPrototype","description":"Loaded when the `type` is `\"fluid\"`."}],"full_format":true}},{"name":"ProductionHealthEffect","order":422,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"not_producing","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"producing","order":0,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"ProductionType","order":423,"description":"Specifies how the entity will utilize this fluidbox. `input-output` should only be used for boilers in fluid heating mode.","abstract":false,"inline":true,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"none","description":""},{"complex_type":"literal","value":"input","description":""},{"complex_type":"literal","value":"input-output","description":""},{"complex_type":"literal","value":"output","description":""}],"full_format":true}},{"name":"ProgrammableSpeakerInstrument","order":424,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"name","order":0,"description":"","override":false,"type":"string","optional":false},{"name":"notes","order":1,"description":"Cannot be an empty array.","override":false,"type":{"complex_type":"array","value":"ProgrammableSpeakerNote"},"optional":false}]},{"name":"ProgrammableSpeakerNote","order":425,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"cyclic_sound","order":2,"description":"Cannot contain aggregations.\n\nOne of `sound` or `cyclic_sound` must be defined. Both cannot be defined together.","override":false,"type":"CyclicSound","optional":true},{"name":"name","order":0,"description":"","override":false,"type":"string","optional":false},{"name":"sound","order":1,"description":"Cannot contain aggregation.\n\nOne of `sound` or `cyclic_sound` must be defined. Both cannot be defined together.","override":false,"type":"Sound","optional":true}]},{"name":"ProgressBarStyleSpecification","order":426,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"bar","order":4,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"bar_background","order":5,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"bar_width","order":1,"description":"The thickness of the bar, not the horizontal size.","override":false,"type":"uint32","optional":true},{"name":"color","order":2,"description":"","override":false,"type":"Color","optional":true},{"name":"embed_text_in_bar","order":9,"description":"","override":false,"type":"boolean","optional":true},{"name":"filled_font_color","order":8,"description":"","override":false,"type":"Color","optional":true},{"name":"font","order":6,"description":"Name of a [FontPrototype](prototype:FontPrototype).","override":false,"type":"string","optional":true},{"name":"font_color","order":7,"description":"","override":false,"type":"Color","optional":true},{"name":"other_colors","order":3,"description":"","override":false,"type":{"complex_type":"array","value":"OtherColors"},"optional":true},{"name":"side_text_padding","order":10,"description":"","override":false,"type":"int16","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"progressbar_style"},"optional":false}]},{"name":"ProjectileAttackParameters","order":427,"description":"","parent":"BaseAttackParameters","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"apply_projection_to_projectile_creation_position","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"projectile_center","order":2,"description":"When used with `projectile_creation_parameters`, this offsets what the turret's sprite looks at. Setting to `{0,1}` will cause the turret to aim one tile up from the target but the projectile will still aim for the entity. Can be used to give the illusion of height but can also confuse aim logic when set too high.\n\nWhen used without `projectile_creation_parameters`, this sets the turret's rotation axis.","override":false,"type":"Vector","optional":true,"default":"`{0, 0}`"},{"name":"projectile_creation_distance","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"projectile_creation_offsets","order":7,"description":"Used to shoot from multiple points. The turret will look at the enemy as normal but the bullet will spawn from a random offset position. Can be used to create multi-barreled weapons.","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":true},{"name":"projectile_creation_parameters","order":5,"description":"Used to shoot projectiles from arbitrary points. Used by worms. If not set then the launch positions are calculated using `projectile_center` and `projectile_creation_distance`.","override":false,"type":"CircularProjectileCreationSpecification","optional":true},{"name":"projectile_orientation_offset","order":6,"description":"Used to shoot from different sides of the turret. Setting to `0.25` shoots from the right side, `0.5` shoots from the back, and `0.75` shoots from the left. The turret will look at the enemy as normal but the bullet will spawn from the offset position. Can be used to create right-handed weapons.","override":false,"type":"RealOrientation","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"shell_particle","order":4,"description":"Used to show bullet shells/casings being ejected from the gun, see [artillery shell casings](https://factorio.com/blog/post/fff-345).","override":false,"type":"CircularParticleCreationSpecification","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"projectile"},"optional":false}]},{"name":"ProjectileTriggerDelivery","order":428,"description":"","parent":"TriggerDeliveryItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"direction_deviation","order":4,"description":"Maximum deviation of the projectile from source orientation, in +/- (`x radians / 2`). Example: `3.14 radians -> +/- (180\u00b0 / 2)`, meaning up to 90\u00b0 deviation in either direction of rotation.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"max_range","order":6,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1000}},{"name":"min_range","order":7,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"projectile","order":1,"description":"Name of a [ProjectilePrototype](prototype:ProjectilePrototype).","override":false,"type":"EntityID","optional":false},{"name":"range_deviation","order":5,"description":"The maximum deviation of the projectile maximum range from `max_range` is `max_range \u00d7 range_deviation \u00f7 2`. This means a deviation of `0.5` will appear as a maximum of `0.25` (25%) deviation of an initial range goal. Post-deviation range may exceed `max_range` or be less than `min_range`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"starting_speed","order":2,"description":"Starting speed in tiles per tick.","override":false,"type":"float","optional":false},{"name":"starting_speed_deviation","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"projectile"},"optional":false}]},{"name":"PrototypeStrafeSettings","order":429,"description":"Used by [UnitPrototype](prototype:UnitPrototype).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"clockwise_chance","order":6,"description":"Must be between 0 and 1 inclusive.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"face_target","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"ideal_distance","order":1,"description":"Must be between 0 and max_distance inclusive.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"ideal_distance_importance","order":4,"description":"Must be between between 0 and 1 inclusive.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"ideal_distance_importance_variance","order":5,"description":"Must be between 0 and ideal_distance_importance inclusive.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.1}},{"name":"ideal_distance_tolerance","order":2,"description":"Must be >= `0`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"ideal_distance_variance","order":3,"description":"Must be >= `0`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"max_distance","order":0,"description":"Must be >= `0`.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":20}}]},{"name":"PuddleTileEffectParameters","order":430,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"puddle_noise_texture","order":0,"description":"","override":false,"type":"EffectTexture","optional":false},{"name":"water_effect","order":2,"description":"Only loaded, and mandatory if `water_effect_parameters` is not defined. Must be name of a [TileEffectDefinition](prototype:TileEffectDefinition) which has `shader` set to `\"water\"`.","override":false,"type":"TileEffectDefinitionID","optional":true},{"name":"water_effect_parameters","order":1,"description":"","override":false,"type":"WaterTileEffectParameters","optional":true}]},{"name":"PumpConnectorGraphics","order":431,"description":"A mapping of arrays of [PumpConnectorGraphicsAnimations](prototype:PumpConnectorGraphicsAnimation) to all 4 directions of the pump connection (to a fluid wagon).","examples":["```\nload_animations =\n{\n  west =\n  {\n    [1] =\n    {\n      standup_base =\n      {\n        filename = \"__base__/graphics/entity/pump/connector/V-R-135-load-standup-base.png\",\n        width = 110,\n        height = 126,\n        scale = 0.5,\n        line_length = 1,\n        frame_count = 20,\n        shift = util.by_pixel(-23.5, -13.5)\n      },\n      standup_shadow =\n      {\n        filename = \"__base__/graphics/entity/pump/connector/V-R-1-load-standup-base-shadow.png\",\n        width = 157,\n        height = 136,\n        scale = 0.5,\n        line_length = 1,\n        frame_count = 20,\n        shift = util.by_pixel(-8.75, 8.5)\n      },\n    },\n    [2] =\n    {\n      standup_base = { ... },\n      standup_shadow = { ... },\n      connector_shadow = { ... },\n    },\n    [3] = { ... },\n    [4] = { ... },\n    [5] = { ... },\n    [6] = { ... },\n  },\n  north = { ... },\n  east = { ... },\n  south = { ... },\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":1,"description":"Size of the array must be 6 or more.","override":false,"type":{"complex_type":"array","value":"PumpConnectorGraphicsAnimation"},"optional":false},{"name":"north","order":0,"description":"Size of the array must be 6 or more.","override":false,"type":{"complex_type":"array","value":"PumpConnectorGraphicsAnimation"},"optional":false},{"name":"south","order":2,"description":"Size of the array must be 6 or more.","override":false,"type":{"complex_type":"array","value":"PumpConnectorGraphicsAnimation"},"optional":false},{"name":"west","order":3,"description":"Size of the array must be 6 or more.","override":false,"type":{"complex_type":"array","value":"PumpConnectorGraphicsAnimation"},"optional":false}]},{"name":"PumpConnectorGraphicsAnimation","order":432,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"connector","order":3,"description":"","override":false,"type":"Animation","optional":true},{"name":"connector_shadow","order":4,"description":"","override":false,"type":"Animation","optional":true},{"name":"standup_base","order":0,"description":"","override":false,"type":"Animation","optional":true},{"name":"standup_shadow","order":2,"description":"","override":false,"type":"Animation","optional":true},{"name":"standup_top","order":1,"description":"","override":false,"type":"Animation","optional":true}]},{"name":"PushBackTriggerEffectItem","order":433,"description":"The push back effect used by the [discharge defense](https://wiki.factorio.com/Discharge_defense).\n\nAims to push the target entity away from the source entity by the `distance` from the target entity's current position. Searches within double the `distance` from the pushed to position for the nearest non-colliding position for the target entity to be teleported too. If no valid non-colliding position is found or the target is not teleportable, then no push back occurs.","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"distance","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"push-back"},"optional":false}]},{"name":"QualityID","order":434,"description":"The name of a [QualityPrototype](prototype:QualityPrototype).","examples":["```\n\"rare\"\n```","```\n\"legendary\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"RadioButtonStyleSpecification","order":435,"description":"","parent":"StyleWithClickableGraphicalSetSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"disabled_font_color","order":3,"description":"","override":false,"type":"Color","optional":true},{"name":"font","order":1,"description":"Name of a [FontPrototype](prototype:FontPrototype).","override":false,"type":"string","optional":true},{"name":"font_color","order":2,"description":"","override":false,"type":"Color","optional":true},{"name":"text_padding","order":4,"description":"","override":false,"type":"uint32","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"radiobutton_style"},"optional":false}]},{"name":"RadiusVisualisationSpecification","order":436,"description":"Sprite to be shown around the entity when it is selected/held in the cursor.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"distance","order":1,"description":"Must be greater than or equal to 0.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"draw_in_cursor","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_on_selection","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"offset","order":2,"description":"","override":false,"type":"Vector","optional":true},{"name":"sprite","order":0,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"RailFenceDirectionSet","order":437,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":2,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"north","order":0,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"northeast","order":1,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"northwest","order":7,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"south","order":4,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"southeast","order":3,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"southwest","order":5,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"west","order":6,"description":"","override":false,"type":"SpriteVariations","optional":true}]},{"name":"RailFenceGraphicsSet","order":438,"description":"Used for graphics by [RailPrototype](prototype:RailPrototype).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"back_fence_render_layer","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"elevated-lower-object"}},{"name":"back_fence_render_layer_secondary","order":3,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"elevated-lower-object"}},{"name":"front_fence_render_layer","order":2,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"elevated-higher-object"}},{"name":"front_fence_render_layer_secondary","order":4,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"elevated-higher-object"}},{"name":"segment_count","order":0,"description":"Must be 2 or 4.","override":false,"type":"uint8","optional":false},{"name":"side_A","order":5,"description":"","override":false,"type":"RailFencePictureSet","optional":false},{"name":"side_B","order":6,"description":"","override":false,"type":"RailFencePictureSet","optional":false}]},{"name":"RailFencePictureSet","order":439,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"ends","order":0,"description":"","override":false,"type":{"complex_type":"tuple","values":["RailFenceDirectionSet","RailFenceDirectionSet","RailFenceDirectionSet","RailFenceDirectionSet"]},"optional":false},{"name":"ends_upper","order":2,"description":"","override":false,"type":{"complex_type":"tuple","values":["RailFenceDirectionSet","RailFenceDirectionSet","RailFenceDirectionSet","RailFenceDirectionSet"]},"optional":true},{"name":"fence","order":1,"description":"","override":false,"type":"RailFenceDirectionSet","optional":false},{"name":"fence_upper","order":3,"description":"","override":false,"type":"RailFenceDirectionSet","optional":true}]},{"name":"RailPictureSet","order":440,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"back_rail_endings","order":9,"description":"","override":false,"type":"Sprite16Way","optional":true,"default":"Value of `rail_endings`"},{"name":"east","order":2,"description":"","override":false,"type":"RailPieceLayers","optional":false},{"name":"fog_mask","order":15,"description":"","override":false,"type":"RailsFogMaskDefinitions","optional":true},{"name":"front_rail_endings","order":8,"description":"","override":false,"type":"Sprite16Way","optional":true,"default":"Value of `rail_endings`"},{"name":"north","order":0,"description":"","override":false,"type":"RailPieceLayers","optional":false},{"name":"northeast","order":1,"description":"","override":false,"type":"RailPieceLayers","optional":false},{"name":"northwest","order":7,"description":"","override":false,"type":"RailPieceLayers","optional":false},{"name":"rail_endings","order":10,"description":"Can be used to load rail endings instead of the front and back variants.\n\nOnly loaded if `front_rail_endings` or `back_rail_endings` are not defined.","override":false,"type":"Sprite16Way","optional":true},{"name":"render_layers","order":12,"description":"","override":false,"type":"RailRenderLayers","optional":false},{"name":"secondary_render_layers","order":13,"description":"","override":false,"type":"RailRenderLayers","optional":true,"default":"Value of `render_layers`"},{"name":"segment_visualisation_endings","order":11,"description":"Must contain exactly 16 directions and 6 frames.","override":false,"type":"RotatedAnimation","optional":true},{"name":"slice_origin","order":14,"description":"","override":false,"type":"RailsSliceOffsets","optional":true},{"name":"south","order":4,"description":"","override":false,"type":"RailPieceLayers","optional":false},{"name":"southeast","order":3,"description":"","override":false,"type":"RailPieceLayers","optional":false},{"name":"southwest","order":5,"description":"","override":false,"type":"RailPieceLayers","optional":false},{"name":"west","order":6,"description":"","override":false,"type":"RailPieceLayers","optional":false}]},{"name":"RailPieceLayers","order":441,"description":"Used for graphics by [RailPrototype](prototype:RailPrototype) and [RailRemnantsPrototype](prototype:RailRemnantsPrototype).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"backplates","order":1,"description":"Must have same number of variations as `metals` or be empty.","override":false,"type":"SpriteVariations","optional":true},{"name":"metals","order":0,"description":"May not have more than 16 variations.","override":false,"type":"SpriteVariations","optional":true},{"name":"segment_visualisation_middle","order":5,"description":"","override":false,"type":"Sprite","optional":true},{"name":"shadow_mask","order":9,"description":"","override":false,"type":"Sprite","optional":true},{"name":"shadow_subtract_mask","order":8,"description":"","override":false,"type":"Sprite","optional":true},{"name":"stone_path","order":3,"description":"May not have more than 16 variations.","override":false,"type":"SpriteVariations","optional":true},{"name":"stone_path_background","order":4,"description":"May not have more than 16 variations.","override":false,"type":"SpriteVariations","optional":true},{"name":"ties","order":2,"description":"May not have more than 16 variations.","override":false,"type":"SpriteVariations","optional":true},{"name":"underwater_structure","order":7,"description":"","override":false,"type":"Sprite","optional":true},{"name":"water_reflection","order":6,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"RailPlannerAllowElevatedRailsModifier","order":442,"description":"","parent":"BoolModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"rail-planner-allow-elevated-rails"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"RailRenderLayers","order":443,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"back_end","order":6,"description":"","override":false,"type":"RenderLayer","optional":true,"default":"Value of `screw`"},{"name":"front_end","order":5,"description":"","override":false,"type":"RenderLayer","optional":true,"default":"Value of `screw`"},{"name":"metal","order":4,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"rail-metal"}},{"name":"screw","order":3,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"rail-screw"}},{"name":"stone_path","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"rail-stone-path"}},{"name":"stone_path_lower","order":0,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"rail-stone-path-lower"}},{"name":"tie","order":2,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"rail-tie"}},{"name":"underwater_layer_offset","order":7,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"RailSignalColorToFrameIndex","order":444,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"blue","order":3,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"green","order":2,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"none","order":0,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"red","order":1,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"yellow","order":4,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"RailSignalLightDefinition","order":445,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"light","order":0,"description":"","override":false,"type":"LightDefinition","optional":false},{"name":"shift","order":1,"description":"","override":false,"type":"Vector","optional":true}]},{"name":"RailSignalLights","order":446,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"blue","order":2,"description":"","override":false,"type":"RailSignalLightDefinition","optional":true},{"name":"green","order":1,"description":"","override":false,"type":"RailSignalLightDefinition","optional":true},{"name":"red","order":0,"description":"","override":false,"type":"RailSignalLightDefinition","optional":true},{"name":"yellow","order":3,"description":"","override":false,"type":"RailSignalLightDefinition","optional":true}]},{"name":"RailSignalPictureSet","order":447,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"circuit_connector","order":6,"description":"","override":false,"type":{"complex_type":"array","value":"CircuitConnectorDefinition"},"optional":true},{"name":"circuit_connector_render_layer","order":7,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"lights","order":5,"description":"","override":false,"type":"RailSignalLights","optional":false},{"name":"rail_piece","order":3,"description":"","override":false,"type":"RailSignalStaticSpriteLayer","optional":true},{"name":"selection_box_shift","order":9,"description":"","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":true},{"name":"signal_color_to_structure_frame_index","order":2,"description":"","override":false,"type":"RailSignalColorToFrameIndex","optional":false},{"name":"structure","order":0,"description":"","override":false,"type":"RotatedAnimation","optional":false},{"name":"structure_align_to_animation_index","order":8,"description":"","override":false,"type":{"complex_type":"array","value":"uint8"},"optional":true},{"name":"structure_render_layer","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"floor-mechanics"}},{"name":"upper_rail_piece","order":4,"description":"","override":false,"type":"RailSignalStaticSpriteLayer","optional":true}]},{"name":"RailSignalStaticSpriteLayer","order":448,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"align_to_frame_index","order":5,"description":"","override":false,"type":{"complex_type":"array","value":"uint8"},"optional":true},{"name":"hide_if_not_connected_to_rails","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"hide_if_simulation","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"render_layer","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"rail-chain-signal-metal"}},{"name":"shifts","order":4,"description":"Must be an empty array or contain exactly 16 values.","override":false,"type":{"complex_type":"array","value":"MapPosition"},"optional":true},{"name":"sprites","order":0,"description":"","override":false,"type":"Animation","optional":false}]},{"name":"RailSupportGraphicsSet","order":449,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"render_layer","order":2,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"structure","order":1,"description":"","override":false,"type":"RotatedSprite","optional":false},{"name":"underwater_layer_offset","order":3,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"underwater_structure","order":0,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"water_reflection","order":4,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"RailSupportOnDeepOilOceanModifier","order":450,"description":"","parent":"BoolModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"rail-support-on-deep-oil-ocean"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"RailsFogMaskDefinitions","order":451,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":1,"description":"","override":false,"type":"FogMaskShapeDefinition","optional":true},{"name":"north","order":0,"description":"","override":false,"type":"FogMaskShapeDefinition","optional":true},{"name":"south","order":2,"description":"","override":false,"type":"FogMaskShapeDefinition","optional":true},{"name":"west","order":3,"description":"","override":false,"type":"FogMaskShapeDefinition","optional":true}]},{"name":"RailsSliceOffsets","order":452,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":1,"description":"","override":false,"type":"Vector","optional":true},{"name":"north","order":0,"description":"","override":false,"type":"Vector","optional":true},{"name":"south","order":2,"description":"","override":false,"type":"Vector","optional":true},{"name":"west","order":3,"description":"","override":false,"type":"Vector","optional":true}]},{"name":"RandomRange","order":453,"description":"Define a numerical property in terms of minimum and maximum to be used as a randomly chosen value in that range (inclusively).\n\nThe maximum cannot be less than the minimum.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":{"complex_type":"tuple","values":["uint8","uint8"]},"description":"First number is the minimum, second is the maximum."},{"complex_type":"type","value":"uint8","description":"The same minimum and maximum."}],"full_format":true}},{"name":"RangeMode","order":454,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"center-to-center","description":""},{"complex_type":"literal","value":"bounding-box-to-bounding-box","description":""},{"complex_type":"literal","value":"center-to-bounding-box","description":""}],"full_format":true}},{"name":"RangedValue","order":455,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"tuple","values":["float","float"]},"float"],"full_format":false}},{"name":"RealOrientation","order":456,"description":"The smooth orientation. It is a `float` in the range `[0, 1)` that covers a full circle, starting at the top and going clockwise.\n\nThis 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\".","abstract":false,"inline":false,"type":"float"},{"name":"RecipeCategoryID","order":457,"description":"The name of a [RecipeCategory](prototype:RecipeCategory).","examples":["```\n\"crafting\"\n```","```\n\"smelting\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"RecipeID","order":458,"description":"The name of a [RecipePrototype](prototype:RecipePrototype).","examples":["```\n\"electronic-circuit\"\n```","```\n\"kovarex-enrichment-process\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"RecipeTints","order":459,"description":"If no tint is specified, the machine falls back to [WorkingVisualisations::default_recipe_tint](prototype:WorkingVisualisations::default_recipe_tint).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"primary","order":0,"description":"","override":false,"type":"Color","optional":true,"default":"no tint"},{"name":"quaternary","order":3,"description":"","override":false,"type":"Color","optional":true,"default":"no tint"},{"name":"secondary","order":1,"description":"","override":false,"type":"Color","optional":true,"default":"no tint"},{"name":"tertiary","order":2,"description":"","override":false,"type":"Color","optional":true,"default":"no tint"}]},{"name":"RenderLayer","order":460,"description":"The render layer specifies the order of the sprite when rendering, most of the objects have it hardcoded in the source, but some are configurable. The union contains valid values from lowest to highest.\n\nNote: `decals` is used as special marker for [DecorativePrototype::render_layer](prototype:DecorativePrototype::render_layer). When used elsewhere, the sprites will draw over the terrain.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"zero","description":""},{"complex_type":"literal","value":"background-transitions","description":""},{"complex_type":"literal","value":"under-tiles","description":""},{"complex_type":"literal","value":"decals","description":""},{"complex_type":"literal","value":"above-tiles","description":""},{"complex_type":"literal","value":"ground-layer-1","description":""},{"complex_type":"literal","value":"ground-layer-2","description":""},{"complex_type":"literal","value":"ground-layer-3","description":""},{"complex_type":"literal","value":"ground-layer-4","description":""},{"complex_type":"literal","value":"ground-layer-5","description":""},{"complex_type":"literal","value":"lower-radius-visualization","description":""},{"complex_type":"literal","value":"radius-visualization","description":""},{"complex_type":"literal","value":"transport-belt-integration","description":""},{"complex_type":"literal","value":"resource","description":""},{"complex_type":"literal","value":"building-smoke","description":""},{"complex_type":"literal","value":"rail-stone-path-lower","description":""},{"complex_type":"literal","value":"rail-stone-path","description":""},{"complex_type":"literal","value":"rail-tie","description":""},{"complex_type":"literal","value":"decorative","description":""},{"complex_type":"literal","value":"ground-patch","description":""},{"complex_type":"literal","value":"ground-patch-higher","description":""},{"complex_type":"literal","value":"ground-patch-higher2","description":""},{"complex_type":"literal","value":"rail-chain-signal-metal","description":""},{"complex_type":"literal","value":"rail-screw","description":""},{"complex_type":"literal","value":"rail-metal","description":""},{"complex_type":"literal","value":"remnants","description":""},{"complex_type":"literal","value":"floor","description":""},{"complex_type":"literal","value":"transport-belt","description":""},{"complex_type":"literal","value":"transport-belt-endings","description":""},{"complex_type":"literal","value":"floor-mechanics-under-corpse","description":""},{"complex_type":"literal","value":"corpse","description":""},{"complex_type":"literal","value":"floor-mechanics","description":""},{"complex_type":"literal","value":"item","description":""},{"complex_type":"literal","value":"transport-belt-reader","description":""},{"complex_type":"literal","value":"lower-object","description":""},{"complex_type":"literal","value":"transport-belt-circuit-connector","description":""},{"complex_type":"literal","value":"lower-object-above-shadow","description":""},{"complex_type":"literal","value":"lower-object-overlay","description":""},{"complex_type":"literal","value":"object-under","description":""},{"complex_type":"literal","value":"object","description":""},{"complex_type":"literal","value":"cargo-hatch","description":""},{"complex_type":"literal","value":"higher-object-under","description":""},{"complex_type":"literal","value":"higher-object-above","description":""},{"complex_type":"literal","value":"train-stop-top","description":""},{"complex_type":"literal","value":"item-in-inserter-hand","description":""},{"complex_type":"literal","value":"above-inserters","description":""},{"complex_type":"literal","value":"wires","description":""},{"complex_type":"literal","value":"under-elevated","description":""},{"complex_type":"literal","value":"elevated-rail-stone-path-lower","description":""},{"complex_type":"literal","value":"elevated-rail-stone-path","description":""},{"complex_type":"literal","value":"elevated-rail-tie","description":""},{"complex_type":"literal","value":"elevated-rail-screw","description":""},{"complex_type":"literal","value":"elevated-rail-metal","description":""},{"complex_type":"literal","value":"elevated-lower-object","description":""},{"complex_type":"literal","value":"elevated-object","description":""},{"complex_type":"literal","value":"elevated-higher-object","description":""},{"complex_type":"literal","value":"fluid-visualization","description":""},{"complex_type":"literal","value":"wires-above","description":""},{"complex_type":"literal","value":"entity-info-icon","description":""},{"complex_type":"literal","value":"entity-info-icon-above","description":""},{"complex_type":"literal","value":"explosion","description":""},{"complex_type":"literal","value":"projectile","description":""},{"complex_type":"literal","value":"smoke","description":""},{"complex_type":"literal","value":"air-object","description":""},{"complex_type":"literal","value":"air-entity-info-icon","description":""},{"complex_type":"literal","value":"light-effect","description":""},{"complex_type":"literal","value":"selection-box","description":""},{"complex_type":"literal","value":"higher-selection-box","description":""},{"complex_type":"literal","value":"collision-selection-box","description":""},{"complex_type":"literal","value":"arrow","description":""},{"complex_type":"literal","value":"cursor","description":""}],"full_format":true}},{"name":"ResearchIngredient","order":461,"description":"Defines the amount of an item required to research one unit of a [technology](prototype:TechnologyPrototype). The first member of the tuple is the name of a [ToolPrototype](prototype:ToolPrototype) and the second is the amount. Amount must not be 0.","examples":["```\n{\"automation-science-pack\", 1}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"tuple","values":["ItemID","uint16"]}},{"name":"ResearchTechnologyTipTrigger","order":462,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"technology","order":1,"description":"","override":false,"type":"TechnologyID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"research"},"optional":false}]},{"name":"ResearchWithSciencePackTipTrigger","order":463,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"science_pack","order":1,"description":"","override":false,"type":"ItemID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"research-with-science-pack"},"optional":false}]},{"name":"Resistance","order":464,"description":"Resistances to certain types of attacks from enemy, and physical damage. See [Damage](https://wiki.factorio.com/Damage).","examples":["```\nresistances =\n{\n  {\n    type = \"physical\",\n    decrease = 6,\n    percent = 30\n  },\n  {\n    type = \"explosion\",\n    decrease = 20,\n    percent = 30\n  },\n  {\n    type = \"acid\",\n    decrease = 3,\n    percent = 30\n  },\n  {\n    type = \"fire\",\n    decrease = 0,\n    percent = 30\n  }\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"decrease","order":1,"description":"The [flat resistance](https://wiki.factorio.com/Damage#Decrease.2C_or_.22flat.22_resistance) to the given damage type. (Higher is better)","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"percent","order":2,"description":"The [percentage resistance](https://wiki.factorio.com/Damage#Percentage_resistance) to the given damage type. Expected range is from 0 to 100, e.g. 50 is 50%. (Higher is better.)","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"type","order":0,"description":"","override":false,"type":"DamageTypeID","optional":false}]},{"name":"ResourceCategoryID","order":465,"description":"The name of a [ResourceCategory](prototype:ResourceCategory).","examples":["```\n\"basic-solid\"\n```","```\n\"basic-fluid\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"RichTextSetting","order":466,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"enabled","description":""},{"complex_type":"literal","value":"disabled","description":""},{"complex_type":"literal","value":"highlight","description":""}],"full_format":true}},{"name":"RollingStockRotatedSlopedGraphics","order":467,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"rotated","order":0,"description":"","override":false,"type":"RotatedSprite","optional":false},{"name":"slope_angle_between_frames","order":3,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.333}},{"name":"slope_back_equals_front","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"sloped","order":1,"description":"","override":false,"type":"RotatedSprite","optional":true}]},{"name":"RotateEntityTipTrigger","order":468,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"rotate-entity"},"optional":false}]},{"name":"RotatedAnimation","order":469,"description":"","parent":"AnimationParameters","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"apply_projection","order":10,"description":"Used to fix the inconsistency of direction of the entity in 3d when rendered and direction on the screen (where the 45 degree angle for projection is used).\n\nOnly loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"counterclockwise","order":7,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"direction_count","order":1,"description":"Only loaded if `layers` is not defined.\n\nThe sequential animation instance is loaded equal to the entities direction within the `direction_count` setting.\n\nDirection count to [defines.direction](runtime:defines.direction) (animation sequence number):\n\n- `1`: North (1)\n\n- `2`: North (1), South (2)\n\n- `4`: North (1), East (2), South (3), West (4)\n\n- `8`: North (1), Northeast (2), East (3), Southeast (4), South (5), Southwest (6), West (7), Northwest (8)","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"filename","order":2,"description":"Only loaded, and mandatory if `layers`, `stripes`, and `filenames` are not defined.\n\nThe path to the sprite file to use.","override":true,"type":"FileName","optional":true},{"name":"filenames","order":3,"description":"Only loaded if both `layers` and `stripes` are not defined.","override":false,"type":{"complex_type":"array","value":"FileName"},"optional":true},{"name":"layers","order":0,"description":"If this property is present, all RotatedAnimation definitions have to be placed as entries in the array, and they will all be loaded from there. `layers` may not be an empty table. Each definition in the array may also have the `layers` property.\n\nIf this property is present, all other properties, including those inherited from AnimationParameters, are ignored.","override":false,"type":{"complex_type":"array","value":"RotatedAnimation"},"optional":true},{"name":"lines_per_file","order":4,"description":"Only loaded if `layers` is not defined. Mandatory if `filenames` is defined.","override":false,"type":"uint32","optional":true},{"name":"middle_orientation","order":8,"description":"Only loaded if `layers` is not defined.","override":false,"type":"RealOrientation","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"orientation_range","order":9,"description":"Only loaded if `layers` is not defined.\n\nAutomatically clamped to be between `0` and `1`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"slice","order":5,"description":"Only loaded if `layers` is not defined. Mandatory if `filenames` is defined.","override":false,"type":"uint32","optional":true},{"name":"still_frame","order":6,"description":"Only loaded if `layers` is not defined.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"stripes","order":11,"description":"Only loaded if `layers` is not defined.","override":false,"type":{"complex_type":"array","value":"Stripe"},"optional":true}]},{"name":"RotatedAnimation8Way","order":470,"description":"A map of rotated animations for all 8 directions of the entity. If this is loaded as a single RotatedAnimation, it applies to all directions.\n\nAny direction that is not defined defaults to the rotated animation of the opposite direction. If that is also not defined, it defaults to the north rotated animation.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"RotatedAnimation"],"full_format":false},"properties":[{"name":"east","order":2,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"north","order":0,"description":"","override":false,"type":"RotatedAnimation","optional":false},{"name":"north_east","order":1,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"north_west","order":7,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"south","order":4,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"south_east","order":3,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"south_west","order":5,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"west","order":6,"description":"","override":false,"type":"RotatedAnimation","optional":true}]},{"name":"RotatedAnimationVariations","order":471,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":["RotatedAnimation",{"complex_type":"array","value":"RotatedAnimation"}],"full_format":false}},{"name":"RotatedSprite","order":472,"description":"Specifies series of sprites used to visualize different rotations of the object.","examples":["```\npictures =\n{\n  layers =\n  {\n    {\n      filename = \"__base__/graphics/entity/radar/radar.png\",\n      priority = \"low\",\n      width = 196,\n      height = 254,\n      apply_projection = false,\n      direction_count = 64,\n      line_length = 8,\n      shift = util.by_pixel(1, -16),\n      scale = 0.5\n    },\n    {\n      filename = \"__base__/graphics/entity/radar/radar-shadow.png\",\n      priority = \"low\",\n      width = 343,\n      height = 186,\n      apply_projection = false,\n      direction_count = 64,\n      line_length = 8,\n      shift = util.by_pixel(39.25,3),\n      draw_as_shadow = true,\n      scale = 0.5\n    }\n  }\n}\n```"],"parent":"SpriteParameters","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"allow_low_quality_rotation","order":13,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"apply_projection","order":10,"description":"Only loaded if `layers` is not defined.\n\nUsed to fix the inconsistency of direction of the entity in 3d when rendered and direction on the screen (where the 45 degree angle for projection is used).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"back_equals_front","order":9,"description":"Only loaded if `layers` is not defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"counterclockwise","order":11,"description":"Only loaded if `layers` is not defined.\n\nSet to `true` to indicate sprites in the spritesheet are in counterclockwise order.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"dice","order":5,"description":"Only loaded if `layers` is not defined.\n\nNumber of slices this is sliced into when using the \"optimized atlas packing\" option. If you are a modder, you can just ignore this property. Example: If this is 4, the sprite will be sliced into a 4x4 grid.","override":false,"type":"SpriteSizeType","optional":true},{"name":"dice_x","order":6,"description":"Only loaded if `layers` is not defined.\n\nSame as `dice` above, but this specifies only how many slices there are on the x axis.","override":false,"type":"SpriteSizeType","optional":true},{"name":"dice_y","order":7,"description":"Only loaded if `layers` is not defined.\n\nSame as `dice` above, but this specifies only how many slices there are on the y axis.","override":false,"type":"SpriteSizeType","optional":true},{"name":"direction_count","order":1,"description":"Only loaded, and mandatory if `layers` is not defined.\n\nCount of direction (frames) specified.","override":false,"type":"uint16","optional":true},{"name":"filename","order":2,"description":"Only loaded if `layers` is not defined.\n\nThe path to the sprite file to use.","override":true,"type":"FileName","optional":true},{"name":"filenames","order":3,"description":"Only loaded, and mandatory if both `layers` and `filename` are not defined.","override":false,"type":{"complex_type":"array","value":"FileName"},"optional":true},{"name":"frames","order":14,"description":"A list of overrides and customizations for each specific frame within the rotated sprite. This can be used to adjust each individual frame's width, height, and other properties. If this property is present, then it must contain at least as many `RotatedSpriteFrame` as there are sprites in this RotatedSprite.","override":false,"type":{"complex_type":"array","value":"RotatedSpriteFrame"},"optional":true},{"name":"generate_sdf","order":8,"description":"Only loaded if `layers` is not defined.\n\nUnused.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"layers","order":0,"description":"If this property is present, all RotatedSprite definitions have to be placed as entries in the array, and they will all be loaded from there. `layers` may not be an empty table. Each definition in the array may also have the `layers` property.\n\nIf this property is present, all other properties, including those inherited from SpriteParameters, are ignored.","override":false,"type":{"complex_type":"array","value":"RotatedSprite"},"optional":true},{"name":"line_length","order":12,"description":"Only loaded if `layers` is not defined.\n\nOnce the specified number of pictures is loaded, other pictures are loaded on other line. This is to allow having more sprites in matrix, to input files with too high width. The game engine limits the width of any input files to 8192px, so it is compatible with most graphics cards. 0 means that all the pictures are in one horizontal line.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"lines_per_file","order":4,"description":"Only loaded if `layers` is not defined. Mandatory if `filenames` is defined.","override":false,"type":"uint64","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"RotatedSpriteFrame","order":473,"description":"Specifies frame-specific properties of an individual sprite within a RotatedSprite set. Some properties are absolute values, and some are relative and inherited from the parent RotatedSprite prototype definition.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"height","order":1,"description":"Height of the sprite in pixels, from 0-4096. If not defined, inherits the height of the parent RotatedSprite.","override":false,"type":"SpriteSizeType","optional":true,"default":"inherited height"},{"name":"shift","order":4,"description":"The shift in tiles of this specific frame, relative to the shift of the parent RotatedSprite. `util.by_pixel()` can be used to divide the shift by 32 which is the usual pixel height/width of 1 tile in normal resolution. Note that 32 pixel tile height/width is not enforced anywhere - any other tile height or width is also possible.","override":false,"type":"Vector","optional":true,"default":"`{0, 0}`"},{"name":"width","order":0,"description":"Width of the sprite in pixels, from 0-4096. If not defined, inherits the width of the parent RotatedSprite.","override":false,"type":"SpriteSizeType","optional":true,"default":"inherited width"},{"name":"x","order":2,"description":"The horizontal offset of the sprite relative to its specific frame within the parent RotatedSprite.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"y","order":3,"description":"The vertical offset of the sprite relative to its specific frame within the parent RotatedSprite.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"ScriptTriggerEffectItem","order":474,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"effect_id","order":1,"description":"The effect ID that will be provided in [on_script_trigger_effect](runtime:on_script_trigger_effect).","override":false,"type":"string","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"script"},"optional":false}]},{"name":"ScriptedTechnologyTrigger","order":475,"description":"Triggered only by calling [LuaForce::script_trigger_research](runtime:LuaForce::script_trigger_research). Can be used to show custom scripted triggers in the technology GUI.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"icon","order":3,"description":"Path to the icon file.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"FileName","optional":true},{"name":"icon_size","order":4,"description":"The size of the square icon, in pixels. E.g. `32` for a 32px by 32px icon. Must be larger than `0`.\n\nOnly loaded if `icons` is not defined.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":64}},{"name":"icons","order":2,"description":"Can't be an empty array.","override":false,"type":{"complex_type":"array","value":"IconData"},"optional":true},{"name":"trigger_description","order":1,"description":"","override":false,"type":"LocalisedString","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"scripted"},"optional":false}]},{"name":"ScrollBarStyleSpecification","order":476,"description":"","parent":"BaseStyleSpecification","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"background_graphical_set","order":0,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"thumb_button_style","order":1,"description":"","override":false,"type":"ButtonStyleSpecification","optional":true}]},{"name":"ScrollPaneStyleSpecification","order":477,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"always_draw_borders","order":17,"description":"","override":false,"type":"boolean","optional":true},{"name":"background_graphical_set","order":5,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"dont_force_clipping_rect_for_contents","order":16,"description":"","override":false,"type":"boolean","optional":true},{"name":"extra_bottom_margin_when_activated","order":13,"description":"","override":false,"type":"int32","optional":true},{"name":"extra_bottom_padding_when_activated","order":8,"description":"","override":false,"type":"int32","optional":true},{"name":"extra_left_margin_when_activated","order":14,"description":"","override":false,"type":"int32","optional":true},{"name":"extra_left_padding_when_activated","order":9,"description":"","override":false,"type":"int32","optional":true},{"name":"extra_margin_when_activated","order":11,"description":"Sets `extra_top_margin_when_activated`, `extra_bottom_margin_when_activated`, `extra_left_margin_when_activated` and `extra_right_margin_when_activated`.","override":false,"type":"int32","optional":true},{"name":"extra_padding_when_activated","order":6,"description":"Sets `extra_top_padding_when_activated`, `extra_bottom_padding_when_activated`, `extra_left_padding_when_activated` and `extra_right_padding_when_activated`.","override":false,"type":"int32","optional":true},{"name":"extra_right_margin_when_activated","order":15,"description":"","override":false,"type":"int32","optional":true},{"name":"extra_right_padding_when_activated","order":10,"description":"","override":false,"type":"int32","optional":true},{"name":"extra_top_margin_when_activated","order":12,"description":"","override":false,"type":"int32","optional":true},{"name":"extra_top_padding_when_activated","order":7,"description":"","override":false,"type":"int32","optional":true},{"name":"graphical_set","order":4,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"horizontal_scrollbar_style","order":2,"description":"","override":false,"type":"HorizontalScrollBarStyleSpecification","optional":true},{"name":"scrollbars_go_outside","order":18,"description":"","override":false,"type":"boolean","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"scroll_pane_style"},"optional":false},{"name":"vertical_flow_style","order":1,"description":"","override":false,"type":"VerticalFlowStyleSpecification","optional":true},{"name":"vertical_scrollbar_style","order":3,"description":"","override":false,"type":"VerticalScrollBarStyleSpecification","optional":true}]},{"name":"SegmentEngineSpecification","order":478,"description":"Used by [SegmentedUnitPrototype](prototype:SegmentedUnitPrototype) to define and manage the segments that make up the body of the entity.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"segments","order":0,"description":"The segments that compose the entity's body. Must contain no more than 63 entries.","override":false,"type":{"complex_type":"array","value":"SegmentSpecification"},"optional":false}]},{"name":"SegmentSpecification","order":479,"description":"A container for a single reference to a [SegmentPrototype](prototype:SegmentPrototype) within a [SegmentEngineSpecification](prototype:SegmentEngineSpecification).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"segment","order":0,"description":"Name of the [SegmentPrototype](prototype:SegmentPrototype) to use in this position.","override":false,"type":"EntityID","optional":false}]},{"name":"SelectionModeData","order":480,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"border_color","order":0,"description":"","override":false,"type":"Color","optional":false},{"name":"chart_color","order":2,"description":"","override":false,"type":"Color","optional":true,"default":"Value of border_color"},{"name":"count_button_color","order":1,"description":"","override":false,"type":"Color","optional":true,"default":"Value of border_color"},{"name":"cursor_box_type","order":3,"description":"","override":false,"type":"CursorBoxType","optional":false},{"name":"ended_sound","order":9,"description":"","override":false,"type":"Sound","optional":true},{"name":"entity_filter_mode","order":11,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"whitelist"},{"complex_type":"literal","value":"blacklist"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"whitelist"}},{"name":"entity_filters","order":5,"description":"","override":false,"type":{"complex_type":"array","value":"EntityID"},"optional":true},{"name":"entity_type_filters","order":6,"description":"","override":false,"type":{"complex_type":"array","value":"string"},"optional":true},{"name":"mode","order":4,"description":"","override":false,"type":"SelectionModeFlags","optional":false},{"name":"play_ended_sound_when_nothing_selected","order":10,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"started_sound","order":8,"description":"","override":false,"type":"Sound","optional":true},{"name":"tile_filter_mode","order":12,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"whitelist"},{"complex_type":"literal","value":"blacklist"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"whitelist"}},{"name":"tile_filters","order":7,"description":"","override":false,"type":{"complex_type":"array","value":"TileID"},"optional":true}]},{"name":"SelectionModeFlags","order":481,"description":"An array containing the following values.\n\nSome flags only exclude objects from the selection, meaning they need to be combined with another flag to select anything.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"union","options":[{"complex_type":"literal","value":"blueprint","description":"Selects entities and tiles as if selecting them for a blueprint."},{"complex_type":"literal","value":"deconstruct","description":"Selects entities and tiles as if selecting them for deconstruction."},{"complex_type":"literal","value":"cancel-deconstruct","description":"Selects entities and tiles as if selecting them for deconstruction cancellation."},{"complex_type":"literal","value":"items","description":"Selects items on the ground."},{"complex_type":"literal","value":"trees","description":"Selects trees."},{"complex_type":"literal","value":"buildable-type","description":"Selects entities which are considered [a building](runtime:LuaEntityPrototype::is_building), plus landmines."},{"complex_type":"literal","value":"nothing","description":"Selects no entities or tiles, but is useful to select an area."},{"complex_type":"literal","value":"items-to-place","description":"Selects entities and tiles that can be built by an item."},{"complex_type":"literal","value":"any-entity","description":"Selects all entities."},{"complex_type":"literal","value":"any-tile","description":"Selects all tiles."},{"complex_type":"literal","value":"same-force","description":"Excludes entities that have a different force than the selecting player from the selection."},{"complex_type":"literal","value":"not-same-force","description":"Excludes entities that have the same force as the selecting player from the selection."},{"complex_type":"literal","value":"friend","description":"Excludes entities that are not from a friendly force from the selection."},{"complex_type":"literal","value":"enemy","description":"Excludes entities that are not from an enemy force from the selection."},{"complex_type":"literal","value":"upgrade","description":"Selects entities as if selecting them for upgrading."},{"complex_type":"literal","value":"cancel-upgrade","description":"Selects entities as if selecting them for upgrade cancellation."},{"complex_type":"literal","value":"downgrade","description":"Selects entities as if selecting them for downgrading."},{"complex_type":"literal","value":"entity-with-health","description":"Selects entities that are an [EntityWithHealthPrototype](prototype:EntityWithHealthPrototype)."},{"complex_type":"literal","value":"is-military-target","description":"Selects entities which are [EntityWithOwnerPrototype::is_military_target](prototype:EntityWithOwnerPrototype::is_military_target)."},{"complex_type":"literal","value":"entity-with-owner","description":"Selects entities that are an [EntityWithOwnerPrototype](prototype:EntityWithOwnerPrototype)."},{"complex_type":"literal","value":"avoid-rolling-stock","description":"Excludes [RollingStockPrototype](prototype:RollingStockPrototype)s from the selection."},{"complex_type":"literal","value":"avoid-vehicle","description":"Excludes [VehiclePrototype](prototype:VehiclePrototype)s from the selection."},{"complex_type":"literal","value":"controllable","description":""},{"complex_type":"literal","value":"controllable-add","description":""},{"complex_type":"literal","value":"controllable-remove","description":""},{"complex_type":"literal","value":"entity-ghost","description":"Selects entities that are an [EntityGhostPrototype](prototype:EntityGhostPrototype)."},{"complex_type":"literal","value":"tile-ghost","description":"Selects entities that are a [TileGhostPrototype](prototype:TileGhostPrototype)."}],"full_format":true},{"complex_type":"array","value":{"complex_type":"union","options":[{"complex_type":"literal","value":"blueprint","description":"Selects entities and tiles as if selecting them for a blueprint."},{"complex_type":"literal","value":"deconstruct","description":"Selects entities and tiles as if selecting them for deconstruction."},{"complex_type":"literal","value":"cancel-deconstruct","description":"Selects entities and tiles as if selecting them for deconstruction cancellation."},{"complex_type":"literal","value":"items","description":"Selects items on the ground."},{"complex_type":"literal","value":"trees","description":"Selects trees."},{"complex_type":"literal","value":"buildable-type","description":"Selects entities which are considered [a building](runtime:LuaEntityPrototype::is_building), plus landmines."},{"complex_type":"literal","value":"nothing","description":"Selects no entities or tiles, but is useful to select an area."},{"complex_type":"literal","value":"items-to-place","description":"Selects entities and tiles that can be built by an item."},{"complex_type":"literal","value":"any-entity","description":"Selects all entities."},{"complex_type":"literal","value":"any-tile","description":"Selects all tiles."},{"complex_type":"literal","value":"same-force","description":"Excludes entities that have a different force than the selecting player from the selection."},{"complex_type":"literal","value":"not-same-force","description":"Excludes entities that have the same force as the selecting player from the selection."},{"complex_type":"literal","value":"friend","description":"Excludes entities that are not from a friendly force from the selection."},{"complex_type":"literal","value":"enemy","description":"Excludes entities that are not from an enemy force from the selection."},{"complex_type":"literal","value":"upgrade","description":"Selects entities as if selecting them for upgrading."},{"complex_type":"literal","value":"cancel-upgrade","description":"Selects entities as if selecting them for upgrade cancellation."},{"complex_type":"literal","value":"downgrade","description":"Selects entities as if selecting them for downgrading."},{"complex_type":"literal","value":"entity-with-health","description":"Selects entities that are an [EntityWithHealthPrototype](prototype:EntityWithHealthPrototype)."},{"complex_type":"literal","value":"is-military-target","description":"Selects entities which are [EntityWithOwnerPrototype::is_military_target](prototype:EntityWithOwnerPrototype::is_military_target)."},{"complex_type":"literal","value":"entity-with-owner","description":"Selects entities that are an [EntityWithOwnerPrototype](prototype:EntityWithOwnerPrototype)."},{"complex_type":"literal","value":"avoid-rolling-stock","description":"Excludes [RollingStockPrototype](prototype:RollingStockPrototype)s from the selection."},{"complex_type":"literal","value":"avoid-vehicle","description":"Excludes [VehiclePrototype](prototype:VehiclePrototype)s from the selection."},{"complex_type":"literal","value":"controllable","description":""},{"complex_type":"literal","value":"controllable-add","description":""},{"complex_type":"literal","value":"controllable-remove","description":""},{"complex_type":"literal","value":"entity-ghost","description":"Selects entities that are an [EntityGhostPrototype](prototype:EntityGhostPrototype)."},{"complex_type":"literal","value":"tile-ghost","description":"Selects entities that are a [TileGhostPrototype](prototype:TileGhostPrototype)."}],"full_format":true}}],"full_format":false}},{"name":"SemiPersistentWorldAmbientSoundDefinition","order":482,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"Sound"],"full_format":false},"properties":[{"name":"delay_mean_seconds","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"delay_variance_seconds","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"sound","order":0,"description":"","override":false,"type":"Sound","optional":false}]},{"name":"SendItemToOrbitTechnologyTrigger","order":483,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"item","order":1,"description":"","override":false,"type":"ItemIDFilter","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"send-item-to-orbit"},"optional":false}]},{"name":"SendSpidertronTipTrigger","order":484,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"append","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"send-spidertron"},"optional":false}]},{"name":"SendToOrbitMode","order":485,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"not-sendable","description":""},{"complex_type":"literal","value":"manual","description":""},{"complex_type":"literal","value":"automated","description":""}],"full_format":true}},{"name":"SequenceTipTrigger","order":486,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"triggers","order":1,"description":"List of triggers to fulfill.","override":false,"type":{"complex_type":"array","value":"TipTrigger"},"optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"sequence"},"optional":false}]},{"name":"SetFilterTipTrigger","order":487,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"consecutive","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"entity","order":1,"description":"","override":false,"type":"EntityID","optional":true},{"name":"match_type_only","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"set-filter"},"optional":false}]},{"name":"SetLogisticRequestTipTrigger","order":488,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"entity","order":2,"description":"","override":false,"type":"EntityID","optional":true},{"name":"logistic_chest_only","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"set-logistic-request"},"optional":false}]},{"name":"SetRecipeTipTrigger","order":489,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"any_quality","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"consecutive","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"machine","order":2,"description":"","override":false,"type":"EntityID","optional":true},{"name":"recipe","order":1,"description":"","override":false,"type":"RecipeID","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"set-recipe"},"optional":false},{"name":"uses_fluid","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":"any"}]},{"name":"SetTileTriggerEffectItem","order":490,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"apply_on_space_platform","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"apply_projection","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"radius","order":2,"description":"","override":false,"type":"float","optional":false},{"name":"tile_collision_mask","order":5,"description":"","override":false,"type":"CollisionMaskConnector","optional":true},{"name":"tile_name","order":1,"description":"","override":false,"type":"TileID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"set-tile"},"optional":false}]},{"name":"Settings","order":491,"description":"A struct that provides access to the user-set values of startup [mod settings](https://wiki.factorio.com/Tutorial:Mod_settings). It is accessible through the global object named `settings`.","examples":["```\n-- Accessing the value of a mod setting\nlocal val = settings.startup[\"my-mod-setting-name\"].value\n```"],"abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"startup","order":0,"description":"All startup mod settings, indexed by the name of the setting.","override":false,"type":{"complex_type":"dictionary","key":"string","value":"ModSetting"},"optional":false}]},{"name":"ShiftAnimationWaypoints","order":492,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":1,"description":"","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":false},{"name":"north","order":0,"description":"","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":false},{"name":"south","order":2,"description":"","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":false},{"name":"west","order":3,"description":"","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":false}]},{"name":"ShootTipTrigger","order":493,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"target","order":1,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"enemy"},{"complex_type":"literal","value":"entity"}],"full_format":false},"optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"shoot"},"optional":false}]},{"name":"ShowExplosionOnChartTriggerEffectItem","order":494,"description":"","parent":"TriggerEffectItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"scale","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"show-explosion-on-chart"},"optional":false}]},{"name":"SignalColorMapping","order":495,"description":"","parent":"SignalIDConnector","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"color","order":0,"description":"","override":false,"type":"Color","optional":false}]},{"name":"SignalIDConnector","order":496,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"name","order":1,"description":"Name of the signal.","override":false,"type":{"complex_type":"union","options":["VirtualSignalID","ItemID","FluidID","RecipeID","EntityID","SpaceLocationID","AsteroidChunkID","QualityID"],"full_format":false},"optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"virtual","description":""},{"complex_type":"literal","value":"item","description":""},{"complex_type":"literal","value":"fluid","description":""},{"complex_type":"literal","value":"recipe","description":""},{"complex_type":"literal","value":"entity","description":""},{"complex_type":"literal","value":"space-location","description":""},{"complex_type":"literal","value":"asteroid-chunk","description":""},{"complex_type":"literal","value":"quality","description":""}],"full_format":true},"optional":false}]},{"name":"SimpleBoundingBox","order":497,"description":"An axis aligned bounding box.\n\nSimpleBoundingBoxes are usually specified with the short-hand notation of passing an array of exactly 2 numbers. The first position is left_top, the second position is right_bottom.\n\nPositive x goes towards east, positive y goes towards south. This means that the upper-left point is the least dimension in x and y, and lower-right is the greatest.","examples":["```\n{{-0.4, -0.4}, {0.4, 0.4}}\n```","```\n-- long definition\n{left_top = {x = -2, y = -3}, right_bottom = {x = 5, y = 8}}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["MapPosition","MapPosition"]}],"full_format":false},"properties":[{"name":"left_top","order":0,"description":"","override":false,"type":"MapPosition","optional":false},{"name":"right_bottom","order":1,"description":"","override":false,"type":"MapPosition","optional":false}]},{"name":"SimpleModifier","order":498,"description":"","parent":"BaseModifier","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"modifier","order":0,"description":"Modification value, which will be added to the variable it modifies.","override":false,"type":"double","optional":false}]},{"name":"SimulationDefinition","order":499,"description":"Used by tips and tricks and main menu simulations. Simulations can be controlled at runtime via [LuaSimulation](runtime:LuaSimulation).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"checkboard","order":11,"description":"If this is true, the map of the simulation is set to be a lab-tile checkerboard in the area of `{{-20, -15},{20, 15}}` when the scenario is first initialized (before init/init_file run).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"game_view_settings","order":1,"description":"Only applied to the simulation if a test player is created through [LuaSimulation::create_test_player](runtime:LuaSimulation::create_test_player).","override":false,"type":"GameViewSettings","optional":true},{"name":"generate_map","order":10,"description":"If `save` is not given and this is true, a map gets generated by the game for use in the simulation.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"hide_factoriopedia_gradient","order":18,"description":"","override":false,"type":"boolean","optional":true},{"name":"hide_health_bars","order":12,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"init","order":4,"description":"Only loaded if `init_file` is not defined.\n\nThis code is run as a (silent) console command inside the simulation when it is first initialized. Since this is run as a console command, the restrictions of console commands apply, e.g. `require` is not available, see [here](runtime:libraries).","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"init_file","order":3,"description":"This code is run as a (silent) console command inside the simulation when it is first initialized. Since this is run as a console command, the restrictions of console commands apply, e.g. `require` is not available, see [here](runtime:libraries).","override":false,"type":"FileName","optional":true},{"name":"init_update_count","order":8,"description":"Amount of ticks that this simulation should run for before the simulation is shown to the player. These updates happen after init/init_file has been run and at the highest possible rate (> 60 UPS).","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"length","order":9,"description":"How long this simulation takes. In the main menu simulations, another simulation will start after this simulation ends.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"mods","order":7,"description":"An array of mods whose runtime scripts will be loaded for this simulation, if they are present and enabled.","override":false,"type":{"complex_type":"array","value":"string"},"optional":true},{"name":"mute_alert_sounds","order":14,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"mute_technology_finished_sound","order":13,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"mute_wind_sounds","order":17,"description":"Overrides whether a simulation has its wind sounds muted.\n\nTips and Tricks simulations and Factoriopedia simulations have their wind sounds muted by default, other simulations don't.","override":false,"type":"boolean","optional":true},{"name":"override_volume","order":16,"description":"If true, overrides the simulation volume set by the player in the sound settings, simply setting the volume modifier to `1`.","override":false,"type":"boolean","optional":true},{"name":"planet","order":0,"description":"","override":false,"type":"SpaceLocationID","optional":true,"default":{"complex_type":"literal","value":"nauvis"}},{"name":"save","order":2,"description":"The save file that is used for this simulation. If not given and `generate_map` is `true`, a map is generated by the game.","override":false,"type":"FileName","optional":true},{"name":"update","order":6,"description":"Only loaded if `update_file` is not defined.\n\nThis code is run as a (silent) console command inside the simulation every time the simulation is updated. Since this is run as a console command, the restrictions of console commands apply, e.g. `require` is not available, see [here](runtime:libraries).","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"update_file","order":5,"description":"This code is run as a (silent) console command inside the simulation every time the simulation is updated. Since this is run as a console command, the restrictions of console commands apply, e.g. `require` is not available, see [here](runtime:libraries).","override":false,"type":"FileName","optional":true},{"name":"volume_modifier","order":15,"description":"Multiplier for the simulation volume set by the player in the sound settings.","override":false,"type":"float","optional":true}]},{"name":"SingleGraphicLayerProcessionBezierControlPoint","order":500,"description":"One frame in time for a Bezier interpolation.","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"frame","order":13,"description":"the frame of the pod animation played. Used only when 'animation_driven_by_curve' is enabled.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"opacity","order":1,"description":"`opacity` and `opacity_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"opacity_t","order":2,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"rotation","order":5,"description":"`rotation` and `rotation_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"rotation_t","order":6,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"scale","order":7,"description":"`scale` and `scale_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"scale_t","order":8,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"shift","order":9,"description":"`shift` and `shift_t` interpolate a vector smoothly over time using `shift_rate` and `shift_rate_t` for a 0-1 rate curve.\n\nVector value.","override":false,"type":"Vector","optional":true,"default":"{0.0, 0.0}"},{"name":"shift_rate","order":11,"description":"Rate 0-1 value.","override":false,"type":"double","optional":true},{"name":"shift_rate_t","order":12,"description":"Rate tangent.","override":false,"type":"double","optional":true},{"name":"shift_t","order":10,"description":"Vector tangent.","override":false,"type":"Vector","optional":true},{"name":"timestamp","order":0,"description":"Mandatory if `opacity` or `tint` is defined.","override":false,"type":"MapTick","optional":true},{"name":"tint","order":3,"description":"`tint` and `tint_t` interpolate a color smoothly over time.","override":false,"type":"Color","optional":true,"default":"{1.0, 1.0, 1.0, 1.0}"},{"name":"tint_t","order":4,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"Color","optional":true}]},{"name":"SingleGraphicProcessionLayer","order":501,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation_driven_by_curve","order":10,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"clip_with_hatches","order":9,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"compensated_pivot","order":5,"description":"Swaps the order of sprite shift and rotation.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"frames","order":11,"description":"","override":false,"type":{"complex_type":"array","value":"SingleGraphicLayerProcessionBezierControlPoint"},"optional":false},{"name":"graphic","order":1,"description":"","override":false,"type":"ProcessionGraphic","optional":false},{"name":"is_passenger_only","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"relative_to","order":4,"description":"Where the sprite is centered.","override":false,"type":"EffectRelativeTo","optional":true,"default":{"complex_type":"literal","value":"pod"}},{"name":"render_layer","order":2,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"rotates_with_pod","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"secondary_draw_order","order":3,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"shift_rotates_with_pod","order":7,"description":"Only applied when the `relative_to` is `pod`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"single-graphic"},"optional":false}]},{"name":"SliderStyleSpecification","order":502,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"button","order":7,"description":"","override":false,"type":"ButtonStyleSpecification","optional":true},{"name":"draw_notches","order":5,"description":"","override":false,"type":"boolean","optional":true},{"name":"empty_bar","order":3,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"empty_bar_disabled","order":4,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"full_bar","order":1,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"full_bar_disabled","order":2,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"high_button","order":8,"description":"","override":false,"type":"ButtonStyleSpecification","optional":true},{"name":"notch","order":6,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"slider_style"},"optional":false}]},{"name":"SmokeSource","order":503,"description":"Definition of the smoke of an entity.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"deviation","order":13,"description":"","override":false,"type":"Vector","optional":true},{"name":"east_position","order":7,"description":"","override":false,"type":"Vector","optional":true,"default":"Value of `position` rotated east"},{"name":"frequency","order":1,"description":"Number of smokes generated per entity animation cycle (or per tick for some entities). Can't be negative or infinite.","override":false,"type":"float","optional":false},{"name":"has_8_directions","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"height","order":16,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"height_deviation","order":17,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"name","order":0,"description":"","override":false,"type":"TrivialSmokeID","optional":false},{"name":"north_east_position","order":6,"description":"Only loaded if `has_8_directions` is `true`.","override":false,"type":"Vector","optional":true,"default":"Value of `position` rotated north-east"},{"name":"north_position","order":5,"description":"","override":false,"type":"Vector","optional":true,"default":"Value of `position`"},{"name":"north_west_position","order":12,"description":"Only loaded if `has_8_directions` is `true`.","override":false,"type":"Vector","optional":true,"default":"Value of `position` rotated north-west"},{"name":"offset","order":2,"description":"Offsets animation cycle, to move at which points of the cycle the smoke gets emitted.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"position","order":3,"description":"Positional offset of smoke source relative to owner entity position. The vector is rotated by orientation of the entity.\n\nIf any of `north_position`, `north_east_position`, `east_position`, `south_east_position`, `south_position`, `south_west_position`, `west_position`, `north_west_position` is defined, `position` is used only as default value for directional positions. Orientation of the owner entity will be rounded to 4 or 8 directions and one of the directional positions will be used as the offset instead of `position`.","override":false,"type":"Vector","optional":true},{"name":"south_east_position","order":8,"description":"Only loaded if `has_8_directions` is `true`.","override":false,"type":"Vector","optional":true,"default":"Value of `position` rotated south-east"},{"name":"south_position","order":9,"description":"","override":false,"type":"Vector","optional":true,"default":"Value of `position` rotated south"},{"name":"south_west_position","order":10,"description":"Only loaded if `has_8_directions` is `true`.","override":false,"type":"Vector","optional":true,"default":"Value of `position` rotated south-west"},{"name":"starting_frame","order":14,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"starting_frame_deviation","order":15,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"starting_vertical_speed","order":18,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"starting_vertical_speed_deviation","order":19,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"vertical_speed_slowdown","order":20,"description":"A value between `0` and `1`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.965}},{"name":"west_position","order":11,"description":"","override":false,"type":"Vector","optional":true,"default":"Value of `position` rotated west"}]},{"name":"Sound","order":504,"description":"","examples":["```\n{\n  filename = \"__base__/sound/ambient/world-ambience-3.ogg\",\n  volume = 1.2\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"SoundDefinition",{"complex_type":"array","value":"SoundDefinition"}],"full_format":false},"properties":[{"name":"advanced_volume_control","order":6,"description":"","override":false,"type":"AdvancedVolumeControl","optional":true},{"name":"aggregation","order":2,"description":"","override":false,"type":"AggregationSpecification","optional":true},{"name":"allow_random_repeat","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"audible_distance_modifier","order":4,"description":"Modifies how far a sound can be heard. Cannot be less than zero.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"category","order":0,"description":"","override":false,"type":"SoundType","optional":true},{"name":"filename","order":9,"description":"Supported sound file formats are `.ogg` (Vorbis and Opus) and `.wav`.\n\nOnly loaded, and mandatory if `variations` is not defined.","override":false,"type":"FileName","optional":true},{"name":"game_controller_vibration_data","order":5,"description":"","override":false,"type":"GameControllerVibrationData","optional":true},{"name":"max_speed","order":16,"description":"Must be `>= min_speed`.\n\nOnly loaded if `variations` is not defined. Only loaded, and mandatory if `min_speed` is defined.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"max_volume","order":12,"description":"Only loaded if `variations` is not defined.\n\nOnly loaded if `min_volume` is defined.\n\nMust be `>= min_volume`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"min_speed","order":15,"description":"Must be `>= 1 / 64`.\n\nOnly loaded if both `variations` and `speed` are not defined.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"min_volume","order":11,"description":"Only loaded if `variations` and `volume` are not defined.\n\nMust be `>= 0`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"modifiers","order":17,"description":"Only loaded if `variations` is not defined.","override":false,"type":{"complex_type":"union","options":["SoundModifier",{"complex_type":"array","value":"SoundModifier"}],"full_format":false},"optional":true},{"name":"preload","order":13,"description":"Only loaded if `variations` is not defined.","override":false,"type":"boolean","optional":true},{"name":"priority","order":1,"description":"Sounds with higher priority will replace a sound with lower priority if the maximum sounds limit is reached.\n\n0 is the highest priority, 255 is the lowest priority.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":127}},{"name":"speed","order":14,"description":"Speed must be `>= 1 / 64`. This sets both min and max speeds.\n\nOnly loaded if `variations` is not defined.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"speed_smoothing_window_size","order":7,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"variations","order":8,"description":"","override":false,"type":{"complex_type":"union","options":["SoundDefinition",{"complex_type":"array","value":"SoundDefinition"}],"full_format":false},"optional":true},{"name":"volume","order":10,"description":"Only loaded if `variations` is not defined.\n\nThis sets both min and max volumes.\n\nMust be `>= 0`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}}]},{"name":"SoundAccent","order":505,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"frame","order":1,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"play_for_working_visualisation","order":2,"description":"Play the `sound` for a working visualisation of a given [WorkingVisualisation::name](prototype:WorkingVisualisation::name).\n\nThe name cannot be empty.","override":false,"type":"string","optional":true},{"name":"sound","order":0,"description":"","override":false,"type":"Sound","optional":true}]},{"name":"SoundDefinition","order":506,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"FileName"],"full_format":false},"properties":[{"name":"filename","order":0,"description":"Supported sound file formats are `.ogg` (Vorbis and Opus) and `.wav`.","override":false,"type":"FileName","optional":false},{"name":"max_speed","order":7,"description":"Only loaded, and mandatory, if `min_speed` is defined.\n\nMust be `>= min_speed`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"max_volume","order":3,"description":"Only loaded if `min_volume` is defined.\n\nMust be `>= min_volume`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"min_speed","order":6,"description":"Only loaded if `speed` is not defined.\n\nMust be `>= 1 / 64`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"min_volume","order":2,"description":"Only loaded if `volume` is not defined.\n\nMust be `>= 0`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"modifiers","order":8,"description":"","override":false,"type":{"complex_type":"union","options":["SoundModifier",{"complex_type":"array","value":"SoundModifier"}],"full_format":false},"optional":true},{"name":"preload","order":4,"description":"","override":false,"type":"boolean","optional":true},{"name":"speed","order":5,"description":"Speed must be `>= 1 / 64`. This sets both min and max speeds.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"volume","order":1,"description":"This sets both min and max volumes.\n\nMust be `>= 0`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}}]},{"name":"SoundModifier","order":507,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":"SoundModifierType","optional":false},{"name":"volume_multiplier","order":1,"description":"","override":false,"type":"float","optional":false}]},{"name":"SoundModifierType","order":508,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"game","description":""},{"complex_type":"literal","value":"main-menu","description":""},{"complex_type":"literal","value":"tips-and-tricks","description":""},{"complex_type":"literal","value":"driving","description":""},{"complex_type":"literal","value":"elevation","description":""},{"complex_type":"literal","value":"space-platform","description":""}],"full_format":true}},{"name":"SoundType","order":509,"description":"This defines which slider in the sound settings affects the volume of this sound. Furthermore, some sound types are mixed differently than others, e.g. zoom level effects are applied.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"game-effect","description":""},{"complex_type":"literal","value":"gui-effect","description":""},{"complex_type":"literal","value":"ambient","description":""},{"complex_type":"literal","value":"environment","description":""},{"complex_type":"literal","value":"walking","description":""},{"complex_type":"literal","value":"alert","description":""},{"complex_type":"literal","value":"wind","description":""},{"complex_type":"literal","value":"world-ambient","description":""},{"complex_type":"literal","value":"weapon","description":""},{"complex_type":"literal","value":"explosion","description":""},{"complex_type":"literal","value":"enemy","description":""}],"full_format":true}},{"name":"SpaceConnectionAsteroidSpawnDefinition","order":510,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["EntityID",{"complex_type":"array","value":"SpaceConnectionAsteroidSpawnPoint"}]}],"full_format":false},"properties":[{"name":"asteroid","order":1,"description":"The type this is loaded as depends on `type`.","override":false,"type":{"complex_type":"union","options":["EntityID","AsteroidChunkID"],"full_format":false},"optional":false},{"name":"spawn_points","order":2,"description":"","override":false,"type":{"complex_type":"array","value":"SpaceConnectionAsteroidSpawnPoint"},"optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"entity"},{"complex_type":"literal","value":"asteroid-chunk"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"entity"}}]},{"name":"SpaceConnectionAsteroidSpawnPoint","order":511,"description":"","parent":"AsteroidSpawnPoint","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"distance","order":0,"description":"","override":false,"type":"double","optional":false}]},{"name":"SpaceConnectionID","order":512,"description":"The name of a [SpaceConnectionPrototype](prototype:SpaceConnectionPrototype).","examples":["```\n\"nauvis-vulcanus\"\n```","```\n\"fulgora-aquilo\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"SpaceDustEffectProperties","order":513,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation_speed","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"asteroid_normal_texture","order":2,"description":"","override":false,"type":"EffectTexture","optional":false},{"name":"asteroid_texture","order":1,"description":"","override":false,"type":"EffectTexture","optional":false},{"name":"noise_texture","order":0,"description":"","override":false,"type":"EffectTexture","optional":false}]},{"name":"SpaceLocationAsteroidSpawnDefinition","order":514,"description":"","parent":"AsteroidSpawnPoint","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"asteroid","order":1,"description":"The type this is loaded as depends on `type`.","override":false,"type":{"complex_type":"union","options":["EntityID","AsteroidChunkID"],"full_format":false},"optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"entity"},{"complex_type":"literal","value":"asteroid-chunk"}],"full_format":false},"optional":true,"default":{"complex_type":"literal","value":"entity"}}]},{"name":"SpaceLocationID","order":515,"description":"The name of a [SpaceLocationPrototype](prototype:SpaceLocationPrototype).","examples":["```\n\"shattered-planet\"\n```","```\n\"solar-system-edge\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"SpacePlatformTileDefinition","order":516,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"position","order":1,"description":"","override":false,"type":"TilePosition","optional":false},{"name":"tile","order":0,"description":"","override":false,"type":"TileID","optional":false}]},{"name":"SpacePlatformsModifier","order":517,"description":"","parent":"BoolModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"unlock-space-platforms"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"SpaceTileEffectParameters","order":518,"description":"Nebulae are rendered only behind tiles with the effect, but stars are rendered behind entire terrain. For that reason using two or more tile types with different space effect on one surface is not supported. The game will allow this to happen, but rendering will chose one star configuration for entire screen.\n\nZoom is recalculated using formula `max(1/1024, pow(max(0, zoom * base_factor + base_offset), exponent) * factor + offset)`.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"nebula_brightness","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"nebula_saturation","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.9}},{"name":"nebula_scale","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.9}},{"name":"scroll_factor","order":0,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.25}},{"name":"star_brightness","order":13,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"star_density","order":9,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.01}},{"name":"star_parallax","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.06}},{"name":"star_saturations","order":14,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"star_scale","order":10,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":100}},{"name":"star_shape","order":12,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.666}},{"name":"zoom_base_factor","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.25}},{"name":"zoom_base_offset","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.75}},{"name":"zoom_exponent","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"zoom_factor","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"zoom_offset","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"SpacingItem","order":519,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"index","order":0,"description":"The index of the row or column after which to insert `spacing`.","override":false,"type":"uint32","optional":false},{"name":"spacing","order":1,"description":"The spacing in scaled pixels between columns `column` and `column + 1`.","override":false,"type":"int32","optional":false}]},{"name":"SpawnPoint","order":520,"description":"The definition of a evolution and probability weights for a [spawnable unit](prototype:UnitSpawnDefinition) for a [EnemySpawnerPrototype](prototype:EnemySpawnerPrototype).\n\nIt can be specified as a table with named or numbered keys, but not a mix of both. If this is specified as a table with numbered keys then the first value is the evolution factor and the second is the spawn weight.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["double","double"]}],"full_format":false},"properties":[{"name":"evolution_factor","order":0,"description":"","override":false,"type":"double","optional":false},{"name":"spawn_weight","order":1,"description":"Must be `>= 0`.","override":false,"type":"double","optional":false}]},{"name":"SpeechBubbleStyleSpecification","order":521,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"arrow_graphical_set","order":3,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"arrow_indent","order":5,"description":"","override":false,"type":"double","optional":true},{"name":"close_color","order":4,"description":"","override":false,"type":"Color","optional":true},{"name":"frame_style","order":1,"description":"","override":false,"type":"FrameStyleSpecification","optional":true},{"name":"label_style","order":2,"description":"","override":false,"type":"LabelStyleSpecification","optional":true},{"name":"pass_through_mouse","order":6,"description":"","override":false,"type":"boolean","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"speech_bubble_style"},"optional":false}]},{"name":"SpiderEngineSpecification","order":522,"description":"Used by [SpiderVehiclePrototype](prototype:SpiderVehiclePrototype).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"legs","order":0,"description":"","override":false,"type":{"complex_type":"union","options":["SpiderLegSpecification",{"complex_type":"array","value":"SpiderLegSpecification"}],"full_format":false},"optional":false},{"name":"walking_group_overlap","order":1,"description":"The amount of overlap allowed between spider leg walking groups. Valid values are between 0.0 and 1.0. Default is 0.0 (no overlap); all legs in the current walking group must complete their step before the next walking group is allowed to move. 0.5 means the next walking group is allowed to start when the time remaining in the current walking group's step is about half of the time that the next group's step is predicted to take.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"SpiderLegGraphicsSet","order":523,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"foot","order":10,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"foot_shadow","order":11,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"joint","order":2,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"joint_render_layer","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"train-stop-top"}},{"name":"joint_shadow","order":3,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"joint_turn_offset","order":0,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"lower_part","order":5,"description":"","override":false,"type":"SpiderLegPart","optional":true},{"name":"lower_part_shadow","order":7,"description":"","override":false,"type":"SpiderLegPart","optional":true},{"name":"lower_part_water_reflection","order":9,"description":"","override":false,"type":"SpiderLegPart","optional":true},{"name":"upper_part","order":4,"description":"","override":false,"type":"SpiderLegPart","optional":true},{"name":"upper_part_shadow","order":6,"description":"","override":false,"type":"SpiderLegPart","optional":true},{"name":"upper_part_water_reflection","order":8,"description":"","override":false,"type":"SpiderLegPart","optional":true},{"name":"water_reflection","order":12,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"SpiderLegPart","order":524,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"bottom_end","order":2,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"bottom_end_length","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"bottom_end_offset","order":8,"description":"The number of tiles in screen space to shift the bottom end of the leg part AWAY from the bottom joint.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"middle","order":1,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"middle_offset_from_bottom","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"middle_offset_from_top","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"render_layer","order":9,"description":"The sprite layer in which to draw this leg part.","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"higher-object-above"}},{"name":"top_end","order":0,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"top_end_length","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"top_end_offset","order":7,"description":"The number of tiles in screen space to shift the top end of the leg part AWAY from the top joint.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"SpiderLegSpecification","order":525,"description":"Used by [SpiderEngineSpecification](prototype:SpiderEngineSpecification) for [SpiderVehiclePrototype](prototype:SpiderVehiclePrototype).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"ground_position","order":2,"description":"The unprojected offset from the center of the spider's non-elevated torso to the position where the leg touches the ground when the spider is facing due north.\n\nThis value rotates with the spider's orientation, which is rounded to match either the spider torso's [SpiderTorsoGraphicsSet::base_animation](prototype:SpiderTorsoGraphicsSet::base_animation) directions or if not base sprite is defined, its [SpiderTorsoGraphicsSet::animation](prototype:SpiderTorsoGraphicsSet::animation) directions if defined.","override":false,"type":"Vector","optional":false},{"name":"leg","order":0,"description":"Name of a [SpiderLegPrototype](prototype:SpiderLegPrototype).","override":false,"type":"EntityID","optional":false},{"name":"leg_hit_the_ground_trigger","order":3,"description":"Triggers to activate whenever the leg hits the ground, even if the owning spider is actively attacking an entity. For triggers, the source is the leg entity and the target is the leg's current position. Certain effects may not raise as desired, e.g. `\"push-back\"` does nothing.","override":false,"type":"TriggerEffect","optional":true},{"name":"leg_hit_the_ground_when_attacking_trigger","order":4,"description":"Triggers to activate whenever the leg hits the ground and the owning spider is actively attacking an entity. These effects will trigger after `leg_hit_the_ground_trigger` have triggered. For triggers, the source is the let entity and the target is the leg's current position. Certain effects may not raise as desired.","override":false,"type":"TriggerEffect","optional":true},{"name":"mount_position","order":1,"description":"Projected offset from the center of the spider's elevated torso to the point where the leg connects to the body of the spider when the spider is facing due north.\n\nThis offset should already be projected, meaning that it should apply the camera's 45 degree overhead angle, same as the spider's torso sprites should. If this mount position rotates with the spider's torso and the torso sprite(s) apply projection, the mount position will automatically account for the camera projection when rotating. See [RotatedAnimation::apply_projection](prototype:RotatedAnimation::apply_projection).\n\nIf the spider's torso sprites do not apply projection, then this mount_position should not apply projection either.\n\nThis value rotates with the spider's orientation, which is rounded to match either the spider torso's [SpiderTorsoGraphicsSet::base_animation](prototype:SpiderTorsoGraphicsSet::base_animation) directions or if not base sprite is defined, its [SpiderTorsoGraphicsSet::animation](prototype:SpiderTorsoGraphicsSet::animation) directions if defined.","override":false,"type":"Vector","optional":false},{"name":"walking_group","order":5,"description":"The walking group this leg belongs to. Legs in the same walking group move or stay still at the same time, according to the engine that drives them. Walking groups must start at 1 and increment upward without skipping any numbers. If all legs are part of the same walking_group, they will all move simultaneously.","override":false,"type":"uint8","optional":false}]},{"name":"SpiderLegTriggerEffect","order":526,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"effect","order":1,"description":"","override":false,"type":"TriggerEffect","optional":false},{"name":"position","order":0,"description":"A number between 0 and 1 (inclusive) representing the distance from the upper end of the leg (0) to the lower end of the leg (1) where the effects will be triggered. For the upper leg, position 0 represents the point that the leg connects to the entity's hip and position 1 represents the knee. For the lower leg, position 0 represents the knee and position 1 represents the foot.","override":false,"type":"float","optional":false}]},{"name":"SpiderTorsoGraphicsSet","order":527,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation","order":2,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"base_animation","order":0,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"base_render_layer","order":4,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"higher-object-under"}},{"name":"render_layer","order":5,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"under-elevated"}},{"name":"shadow_animation","order":3,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"shadow_base_animation","order":1,"description":"","override":false,"type":"RotatedAnimation","optional":true},{"name":"water_reflection","order":6,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"SpiderVehicleGraphicsSet","order":528,"description":"Used to specify the graphics for [SpiderVehiclePrototype](prototype:SpiderVehiclePrototype).","parent":"SpiderTorsoGraphicsSet","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"autopilot_destination_on_map_visualisation","order":3,"description":"","override":false,"type":"Animation","optional":true},{"name":"autopilot_destination_queue_on_map_visualisation","order":4,"description":"","override":false,"type":"Animation","optional":true},{"name":"autopilot_destination_queue_visualisation","order":6,"description":"","override":false,"type":"Animation","optional":true},{"name":"autopilot_destination_visualisation","order":5,"description":"","override":false,"type":"Animation","optional":true},{"name":"autopilot_destination_visualisation_render_layer","order":0,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"autopilot_path_visualisation_line_width","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.125}},{"name":"autopilot_path_visualisation_on_map_line_width","order":8,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":2.0}},{"name":"default_color","order":10,"description":"The default mask color for the spider vehicle. Defaults to orange.","override":false,"type":"float","optional":true},{"name":"eye_light","order":2,"description":"Placed in multiple positions, as determined by `light_positions`.","override":false,"type":"LightDefinition","optional":true},{"name":"light","order":1,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"light_positions","order":9,"description":"Defines where each `eye_light` is placed. One array per eye and each of those arrays should contain one position per body direction.","override":false,"type":{"complex_type":"array","value":{"complex_type":"array","value":"Vector"}},"optional":true}]},{"name":"SpoilToTriggerResult","order":529,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"items_per_trigger","order":1,"description":"Must be positive (larger than 0).","override":false,"type":"ItemCountType","optional":false},{"name":"trigger","order":0,"description":"","override":false,"type":"Trigger","optional":false}]},{"name":"Sprite","order":530,"description":"Specifies one picture that can be used in the game.\n\nWhen there is more than one sprite or [Animation](prototype:Animation) frame with the same source file and dimensions/position in the game, they all share the same memory.","examples":["```\n-- simple sprite\npicture_set_enemy =\n{\n  filename = \"__base__/graphics/entity/land-mine/land-mine-set-enemy.png\",\n  priority = \"medium\",\n  width = 32,\n  height = 32\n}\n```","```\n-- sprite with layers\npicture =\n{\n  layers =\n  {\n    {\n      filename = \"__base__/graphics/entity/wooden-chest/wooden-chest.png\",\n      priority = \"extra-high\",\n      width = 62,\n      height = 72,\n      shift = util.by_pixel(0.5, -2),\n      scale = 0.5\n    },\n    {\n      filename = \"__base__/graphics/entity/wooden-chest/wooden-chest-shadow.png\",\n      priority = \"extra-high\",\n      width = 104,\n      height = 40,\n      shift = util.by_pixel(10, 6.5),\n      draw_as_shadow = true,\n      scale = 0.5\n    }\n  }\n}\n```"],"parent":"SpriteParameters","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"dice","order":2,"description":"Only loaded if `layers` is not defined.\n\nNumber of slices this is sliced into when using the \"optimized atlas packing\" option. If you are a modder, you can just ignore this property. Example: If this is 4, the sprite will be sliced into a 4x4 grid.","override":false,"type":"SpriteSizeType","optional":true},{"name":"dice_x","order":3,"description":"Only loaded if `layers` is not defined.\n\nSame as `dice` above, but this specifies only how many slices there are on the x axis.","override":false,"type":"SpriteSizeType","optional":true},{"name":"dice_y","order":4,"description":"Only loaded if `layers` is not defined.\n\nSame as `dice` above, but this specifies only how many slices there are on the y axis.","override":false,"type":"SpriteSizeType","optional":true},{"name":"filename","order":1,"description":"Only loaded, and mandatory if `layers` is not defined.\n\nThe path to the sprite file to use.","override":true,"type":"FileName","optional":true},{"name":"layers","order":0,"description":"If this property is present, all Sprite definitions have to be placed as entries in the array, and they will all be loaded from there. `layers` may not be an empty table. Each definition in the array may also have the `layers` property.\n\nIf this property is present, all other properties, including those inherited from SpriteParameters, are ignored.","override":false,"type":{"complex_type":"array","value":"Sprite"},"optional":true}]},{"name":"Sprite16Way","order":531,"description":"A map of sprites for all 16 directions of the entity.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":6,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"east_north_east","order":5,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"east_south_east","order":7,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"north","order":2,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"north_east","order":4,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"north_north_east","order":3,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"north_north_west","order":17,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"north_west","order":16,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"sheet","order":1,"description":"Only loaded if `sheets` is not defined.","override":false,"type":"SpriteNWaySheet","optional":true},{"name":"sheets","order":0,"description":"","override":false,"type":{"complex_type":"array","value":"SpriteNWaySheet"},"optional":true},{"name":"south","order":10,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"south_east","order":8,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"south_south_east","order":9,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"south_south_west","order":11,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"south_west","order":12,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"west","order":14,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"west_north_west","order":15,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"west_south_west","order":13,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true}]},{"name":"Sprite4Way","order":532,"description":"Sprites for the 4 major directions of the entity. If this is loaded as a single Sprite, it applies to all directions.\n\nThis struct is either loaded as `sheets` or `sheet` or a map of one sprite per direction. For per direction sprites, the sprites are loaded via `north`, `east`, `south` and `west`.","examples":["```\n-- separate sprites per direction\n{\n  north =\n  {\n    filename = \"__base__/graphics/entity/assembling-machine-3/assembling-machine-3-pipe-N.png\",\n    priority = \"extra-high\",\n    width = 71,\n    height = 38,\n    shift = util.by_pixel(2.25, 13.5),\n    scale = 0.5\n  },\n  east =\n  {\n    filename = \"__base__/graphics/entity/assembling-machine-3/assembling-machine-3-pipe-E.png\",\n    priority = \"extra-high\",\n    width = 42,\n    height = 76,\n    shift = util.by_pixel(-24.5, 1),\n    scale = 0.5\n  },\n  south =\n  {\n    filename = \"__base__/graphics/entity/assembling-machine-3/assembling-machine-3-pipe-S.png\",\n    priority = \"extra-high\",\n    width = 88,\n    height = 61,\n    shift = util.by_pixel(0, -31.25),\n    scale = 0.5\n  },\n  west =\n  {\n    filename = \"__base__/graphics/entity/assembling-machine-3/assembling-machine-3-pipe-W.png\",\n    priority = \"extra-high\",\n    width = 39,\n    height = 73,\n    shift = util.by_pixel(25.75, 1.25),\n    scale = 0.5\n  }\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"Sprite"],"full_format":false},"properties":[{"name":"east","order":3,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.\n\nOnly loaded if `north` is defined.","override":false,"type":"Sprite","optional":true},{"name":"north","order":2,"description":"Only loaded if both `sheets` and `sheet` are not defined.","override":false,"type":"Sprite","optional":true},{"name":"sheet","order":1,"description":"Only loaded if `sheets` is not defined.","override":false,"type":"SpriteNWaySheet","optional":true},{"name":"sheets","order":0,"description":"","override":false,"type":{"complex_type":"array","value":"SpriteNWaySheet"},"optional":true},{"name":"south","order":4,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.\n\nOnly loaded if `north` is defined.","override":false,"type":"Sprite","optional":true},{"name":"west","order":5,"description":"Only loaded, and mandatory if both `sheets` and `sheet` are not defined.\n\nOnly loaded if `north` is defined.","override":false,"type":"Sprite","optional":true}]},{"name":"SpriteFlags","order":533,"description":"An array containing the following values.","examples":["```\nflags = { \"linear-minification\", \"linear-magnification\" }\n```"],"abstract":false,"inline":false,"type":{"complex_type":"array","value":{"complex_type":"union","options":[{"complex_type":"literal","value":"no-crop","description":"The sprite won't be automatically cropped."},{"complex_type":"literal","value":"not-compressed","description":""},{"complex_type":"literal","value":"always-compressed","description":""},{"complex_type":"literal","value":"mipmap","description":""},{"complex_type":"literal","value":"linear-minification","description":""},{"complex_type":"literal","value":"linear-magnification","description":""},{"complex_type":"literal","value":"linear-mip-level","description":""},{"complex_type":"literal","value":"alpha-mask","description":""},{"complex_type":"literal","value":"no-scale","description":""},{"complex_type":"literal","value":"mask","description":"This flag will internally set these flags: `\"group=none\"`"},{"complex_type":"literal","value":"icon","description":"This flag will internally set these flags: `\"no-crop\"`, `\"no-scale\"`, `\"mipmap\"`, `\"linear-minification\"`, `\"linear-magnification\"`, `\"linear-mip-level\"`, `\"not-compressed\"`, `\"group=icon\"`"},{"complex_type":"literal","value":"gui","description":"This flag will internally set these flags: `\"no-crop\"`, `\"no-scale\"`, `\"mipmap\"`, `\"linear-minification\"`, `\"linear-magnification\"`, `\"linear-mip-level\"`, `\"not-compressed\"`, `\"group=gui\"`"},{"complex_type":"literal","value":"gui-icon","description":"This flag will internally set these flags: `\"no-crop\"`, `\"no-scale\"`, `\"mipmap\"`, `\"linear-minification\"`, `\"linear-magnification\"`, `\"not-compressed\"`, `\"group=icon\"`"},{"complex_type":"literal","value":"light","description":"This flag will internally set these flags: `\"mipmap\"`, `\"linear-mip-level\"`, `\"linear-minification\"`, `\"linear-magnification\"`, `\"group=none\"`"},{"complex_type":"literal","value":"terrain","description":"This flag will internally set these flags: `\"mipmap\"`, `\"linear-mip-level\"`, `\"linear-minification\"`, `\"no-crop\"`, `\"group=terrain\"`"},{"complex_type":"literal","value":"terrain-effect-map","description":"This flag will internally set these flags: `\"mipmap\"`, `\"linear-mip-level\"`, `\"linear-minification\"`, `\"no-crop\"`, `\"terrain-effect-map\"` (internal group flag)"},{"complex_type":"literal","value":"reflection-effect-map","description":"This flag will internally set these flags: `\"mipmap\"`, `\"linear-mip-level\"`, `\"linear-minification\"`, `\"terrain-effect-map\"` (internal group flag)"},{"complex_type":"literal","value":"shadow","description":""},{"complex_type":"literal","value":"smoke","description":"This flag will internally set these flags: `\"mipmap\"`, `\"linear-minification\"`, `\"linear-magnification\"`, `\"group=smoke\"`"},{"complex_type":"literal","value":"decal","description":"This flag will internally set these flags: `\"group=decal\"`"},{"complex_type":"literal","value":"low-object","description":""},{"complex_type":"literal","value":"corpse-decay","description":""},{"complex_type":"literal","value":"trilinear-filtering","description":""},{"complex_type":"literal","value":"group=none","description":""},{"complex_type":"literal","value":"group=terrain","description":""},{"complex_type":"literal","value":"group=shadow","description":""},{"complex_type":"literal","value":"group=smoke","description":""},{"complex_type":"literal","value":"group=decal","description":""},{"complex_type":"literal","value":"group=low-object","description":""},{"complex_type":"literal","value":"group=gui","description":""},{"complex_type":"literal","value":"group=icon","description":""},{"complex_type":"literal","value":"group=icon-background","description":""},{"complex_type":"literal","value":"group=effect-texture","description":""}],"full_format":true}}},{"name":"SpriteNWaySheet","order":534,"description":"","examples":["```\nsheet =\n{\n  filename = \"__base__/graphics/entity/burner-inserter/burner-inserter-platform.png\",\n  priority = \"extra-high\",\n  width = 105,\n  height = 79,\n  shift = util.by_pixel(1.5, 7.5-1),\n  scale = 0.5\n}\n```"],"parent":"SpriteParameters","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"frames","order":0,"description":"Specifies how many of the directions of the SpriteNWay are filled up with this sheet.","override":false,"type":"uint32","optional":true,"default":"4 if used in Sprite4Way, 8 if used in Sprite8Way"},{"name":"generate_sdf","order":1,"description":"Unused.","override":true,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"SpriteParameters","order":535,"description":"","parent":"SpriteSource","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"apply_runtime_tint","order":11,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"apply_special_effect","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"blend_mode","order":15,"description":"","override":false,"type":"BlendMode","optional":true,"default":{"complex_type":"literal","value":"normal"}},{"name":"draw_as_glow","order":7,"description":"Only one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. This takes precedence over `draw_as_light`.\n\nDraws first as a normal sprite, then again as a light layer. See [https://forums.factorio.com/91682](https://forums.factorio.com/91682).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"draw_as_light","order":8,"description":"Only one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"draw_as_shadow","order":6,"description":"Only one of `draw_as_shadow`, `draw_as_glow` and `draw_as_light` can be true. This takes precedence over `draw_as_glow` and `draw_as_light`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"flags","order":1,"description":"","override":false,"type":"SpriteFlags","optional":true},{"name":"generate_sdf","order":16,"description":"This property is only used by sprites used in [UtilitySprites](prototype:UtilitySprites) that have the `\"icon\"` flag set.\n\nIf this is set to `true`, the game will generate an icon shadow (using signed distance fields) for the sprite.","images":[{"filename":"Generate_sdf_example.png","caption":"Example of the icon shadow in the character modifier icon used by the steel axe research"}],"override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"invert_colors","order":13,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"mipmap_count","order":10,"description":"Only loaded if this is an icon, that is it has the flag `\"group=icon\"` or `\"group=gui\"`. Will be clamped to range `[0, 5]`.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"occludes_light","order":9,"description":"Loaded only if `draw_as_shadow`, `draw_as_glow` and `draw_as_light` are `false`, and only by sprites used by tile renderer (decals and underwater patches). The purpose of setting this to `false` is to preserve water mask from sprites that are supposed to be drawn under the water.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"priority","order":0,"description":"","override":false,"type":"SpritePriority","optional":true,"default":{"complex_type":"literal","value":"medium"}},{"name":"rotate_shift","order":3,"description":"Whether to rotate the `shift` alongside the sprite's rotation. This only applies to sprites which are procedurally rotated by the game engine (like projectiles, wires, inserter hands, etc).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"scale","order":5,"description":"Values other than `1` specify the scale of the sprite on default zoom. A scale of `2` means that the picture will be two times bigger on screen (and thus more pixelated).","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"shift","order":2,"description":"The shift in tiles. `util.by_pixel()` can be used to divide the shift by 32 which is the usual pixel height/width of 1 tile in normal resolution. Note that 32 pixel tile height/width is not enforced anywhere - any other tile height or width is also possible.","override":false,"type":"Vector","optional":true,"default":"`{0, 0}`"},{"name":"surface","order":17,"description":"Provides hint to sprite atlas system, so it can try to put sprites that are intended to be used at the same locations to the same sprite atlas.","override":false,"type":"SpriteUsageSurfaceHint","optional":true,"default":{"complex_type":"literal","value":"any"}},{"name":"tint","order":14,"description":"","override":false,"type":"Color","optional":true,"default":"`{r=1, g=1, b=1, a=1}`"},{"name":"tint_as_overlay","order":12,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"usage","order":18,"description":"Provides hint to sprite atlas system, so it can pack sprites that are related to each other to the same sprite atlas.","override":false,"type":"SpriteUsageHint","optional":true,"default":{"complex_type":"literal","value":"any"}}]},{"name":"SpritePriority","order":536,"description":"This sets the \"caching priority\" of a sprite, so deciding priority of it being included in VRAM instead of streaming it and is therefore a purely technical value. See [here](https://forums.factorio.com/viewtopic.php?p=437380#p437380) and [here](https://www.factorio.com/blog/post/fff-264). The possible values are listed below.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"extra-high-no-scale","description":""},{"complex_type":"literal","value":"extra-high","description":""},{"complex_type":"literal","value":"high","description":""},{"complex_type":"literal","value":"medium","description":""},{"complex_type":"literal","value":"low","description":""},{"complex_type":"literal","value":"very-low","description":""},{"complex_type":"literal","value":"no-atlas","description":""}],"full_format":true}},{"name":"SpriteSheet","order":537,"description":"","parent":"SpriteParameters","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"dice","order":6,"description":"Number of slices this is sliced into when using the \"optimized atlas packing\" option. If you are a modder, you can just ignore this property. Example: If this is 4, the sprite will be sliced into a 4x4 grid.","override":false,"type":"SpriteSizeType","optional":true},{"name":"dice_x","order":7,"description":"Same as `dice` above, but this specifies only how many slices there are on the x axis.","override":false,"type":"SpriteSizeType","optional":true},{"name":"dice_y","order":8,"description":"Same as `dice` above, but this specifies only how many slices there are on the y axis.","override":false,"type":"SpriteSizeType","optional":true},{"name":"filename","order":9,"description":"Only loaded, and mandatory if `layers` and `filenames` are not defined.\n\nThe path to the sprite file to use.","override":true,"type":"FileName","optional":true},{"name":"filenames","order":4,"description":"","override":false,"type":{"complex_type":"array","value":"FileName"},"optional":true},{"name":"layers","order":0,"description":"If this property is present, all SpriteSheet definitions have to be placed as entries in the array, and they will all be loaded from there. `layers` may not be an empty table. Each definition in the array may also have the `layers` property.\n\nIf this property is present, all other properties, including those inherited from SpriteParameters, are ignored.","override":false,"type":{"complex_type":"array","value":"SpriteSheet"},"optional":true},{"name":"line_length","order":3,"description":"","override":false,"type":"uint32","optional":true,"default":"Value of `variation_count`"},{"name":"lines_per_file","order":5,"description":"Mandatory if `filenames` is defined.","override":false,"type":"uint32","optional":true},{"name":"repeat_count","order":2,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"variation_count","order":1,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"SpriteSizeType","order":538,"description":"","abstract":false,"inline":false,"type":"int16"},{"name":"SpriteSource","order":539,"description":"","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"allow_forced_downscale","order":9,"description":"If `true`, the sprite may be downsampled to half its size on load even when 'Sprite quality' graphics setting is set to 'High'. Whether downsampling happens depends on detected hardware and other graphics settings.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"filename","order":0,"description":"The path to the sprite file to use.","override":false,"type":"FileName","optional":false},{"name":"height","order":3,"description":"Mandatory if `size` is not defined.\n\nHeight of the sprite in pixels, from 0-4096.","override":false,"type":"SpriteSizeType","optional":true},{"name":"load_in_minimal_mode","order":7,"description":"Minimal mode is entered when mod loading fails. You are in it when you see the gray box after (part of) the loading screen that tells you a mod error. Modders can ignore this property.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"position","order":6,"description":"Loaded only when `x` and `y` are both `0`. The first member of the tuple is `x` and the second is `y`.","override":false,"type":{"complex_type":"tuple","values":["SpriteSizeType","SpriteSizeType"]},"optional":true},{"name":"premul_alpha","order":8,"description":"Whether alpha should be pre-multiplied.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"size","order":1,"description":"The width and height of the sprite. If this is a tuple, the first member of the tuple is the width and the second is the height. Otherwise the size is both width and height. Width and height may only be in the range of 0-4096.","override":false,"type":{"complex_type":"union","options":["SpriteSizeType",{"complex_type":"tuple","values":["SpriteSizeType","SpriteSizeType"]}],"full_format":false},"optional":true},{"name":"width","order":2,"description":"Mandatory if `size` is not defined.\n\nWidth of the sprite in pixels, from 0-4096.","override":false,"type":"SpriteSizeType","optional":true},{"name":"x","order":4,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"y","order":5,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"SpriteUsageHint","order":540,"description":"Provides hint to sprite atlas system, so it can pack sprites that are related to each other to the same sprite atlas.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"any","description":""},{"complex_type":"literal","value":"mining","description":""},{"complex_type":"literal","value":"tile-artifical","description":""},{"complex_type":"literal","value":"corpse-decay","description":""},{"complex_type":"literal","value":"enemy","description":""},{"complex_type":"literal","value":"player","description":""},{"complex_type":"literal","value":"train","description":""},{"complex_type":"literal","value":"vehicle","description":""},{"complex_type":"literal","value":"explosion","description":""},{"complex_type":"literal","value":"rail","description":""},{"complex_type":"literal","value":"elevated-rail","description":""},{"complex_type":"literal","value":"air","description":""},{"complex_type":"literal","value":"remnant","description":""},{"complex_type":"literal","value":"decorative","description":""}],"full_format":true}},{"name":"SpriteUsageSurfaceHint","order":541,"description":"Provides hint to sprite atlas system, so it can try to put sprites that are intended to be used at the same locations to the same sprite atlas.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"any","description":""},{"complex_type":"literal","value":"nauvis","description":""},{"complex_type":"literal","value":"vulcanus","description":""},{"complex_type":"literal","value":"gleba","description":""},{"complex_type":"literal","value":"fulgora","description":""},{"complex_type":"literal","value":"aquilo","description":""},{"complex_type":"literal","value":"space","description":""}],"full_format":true}},{"name":"SpriteVariations","order":542,"description":"","examples":["```\n-- array of sprites\npictures =\n{\n  {size = 64, filename = \"__base__/graphics/icons/coal.png\", scale = 0.5, mipmap_count = 4},\n  {size = 64, filename = \"__base__/graphics/icons/coal-1.png\", scale = 0.5, mipmap_count = 4},\n  {size = 64, filename = \"__base__/graphics/icons/coal-2.png\", scale = 0.5, mipmap_count = 4},\n  {size = 64, filename = \"__base__/graphics/icons/coal-3.png\", scale = 0.5, mipmap_count = 4}\n}\n```","```\n-- sprite sheet using \"sheet\"\nconnection_patches_connected =\n{\n  sheet =\n  {\n    filename = \"__base__/graphics/entity/nuclear-reactor/reactor-connect-patches.png\",\n    width = 64,\n    height = 64,\n    variation_count = 12,\n    scale = 0.5\n  }\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"SpriteSheet",{"complex_type":"array","value":"Sprite"}],"full_format":false},"properties":[{"name":"sheet","order":0,"description":"","override":false,"type":"SpriteSheet","optional":false}]},{"name":"StackTransferTipTrigger","order":543,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"transfer","order":1,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"stack","description":""},{"complex_type":"literal","value":"inventory","description":""},{"complex_type":"literal","value":"whole-inventory","description":""}],"full_format":true},"optional":true,"default":"any transfer"},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"stack-transfer"},"optional":false}]},{"name":"StateSteeringSettings","order":544,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"force_unit_fuzzy_goto_behavior","order":3,"description":"Used only for special \"to look good\" purposes (like in trailer).","override":false,"type":"boolean","optional":false},{"name":"radius","order":0,"description":"Not including the radius of the unit.","override":false,"type":"double","optional":false},{"name":"separation_factor","order":1,"description":"","override":false,"type":"double","optional":false},{"name":"separation_force","order":2,"description":"","override":false,"type":"double","optional":false}]},{"name":"StatelessVisualisation","order":545,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"acceleration_x","order":15,"description":"","override":false,"type":"float","optional":true},{"name":"acceleration_y","order":16,"description":"","override":false,"type":"float","optional":true},{"name":"acceleration_z","order":17,"description":"","override":false,"type":"float","optional":true},{"name":"adjust_animation_speed_by_base_scale","order":27,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"affected_by_wind","order":28,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"animation","order":0,"description":"One of `nested_visualisations`, `animation` and `light` needs to be defined.","override":false,"type":"AnimationVariations","optional":true},{"name":"begin_scale","order":22,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"can_lay_on_the_ground","order":32,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"count","order":3,"description":"","override":false,"type":"uint16","optional":true},{"name":"end_scale","order":23,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"fade_in_progress_duration","order":24,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"fade_out_progress_duration","order":25,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"light","order":2,"description":"One of `nested_visualisations`, `animation` and `light` needs to be defined.","override":false,"type":"LightDefinition","optional":true},{"name":"max_count","order":5,"description":"Only loaded if `count` is not defined.","override":false,"type":"uint16","optional":true,"default":"Value of `min_count`"},{"name":"min_count","order":4,"description":"Only loaded if `count` is not defined.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"movement_slowdown_factor_x","order":18,"description":"Silently clamped to be between 0 and 1.","override":false,"type":"float","optional":true},{"name":"movement_slowdown_factor_y","order":19,"description":"Silently clamped to be between 0 and 1.","override":false,"type":"float","optional":true},{"name":"movement_slowdown_factor_z","order":20,"description":"Silently clamped to be between 0 and 1.","override":false,"type":"float","optional":true},{"name":"nested_visualisations","order":31,"description":"One of `nested_visualisations`, `animation` and `light` needs to be defined.","override":false,"type":{"complex_type":"union","options":["StatelessVisualisation",{"complex_type":"array","value":"StatelessVisualisation"}],"full_format":false},"optional":true},{"name":"offset_x","order":9,"description":"","override":false,"type":"RangedValue","optional":true},{"name":"offset_y","order":10,"description":"","override":false,"type":"RangedValue","optional":true},{"name":"offset_z","order":11,"description":"","override":false,"type":"RangedValue","optional":true},{"name":"particle_tick_offset","order":7,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"period","order":6,"description":"","override":false,"type":"uint16","optional":true},{"name":"positions","order":30,"description":"Array may be at most 32 elements.","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":true},{"name":"probability","order":8,"description":"Silently clamped to be between 0 and 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"render_layer","order":29,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"scale","order":21,"description":"","override":false,"type":"RangedValue","optional":true},{"name":"shadow","order":1,"description":"Shadow variation count must be equal to animation variation count.\n\nOnly loaded if `animation` is defined.","override":false,"type":"AnimationVariations","optional":true},{"name":"speed_x","order":12,"description":"","override":false,"type":"RangedValue","optional":true},{"name":"speed_y","order":13,"description":"","override":false,"type":"RangedValue","optional":true},{"name":"speed_z","order":14,"description":"","override":false,"type":"RangedValue","optional":true},{"name":"spread_progress_duration","order":26,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}}]},{"name":"StatusColors","order":546,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"disabled","order":4,"description":"","override":false,"type":"Color","optional":true,"default":"idle"},{"name":"full_output","order":2,"description":"","override":false,"type":"Color","optional":true,"default":"idle"},{"name":"idle","order":0,"description":"","override":false,"type":"Color","optional":true,"default":"`{1, 1, 1, 1}`"},{"name":"insufficient_input","order":3,"description":"","override":false,"type":"Color","optional":true,"default":"idle"},{"name":"low_power","order":7,"description":"","override":false,"type":"Color","optional":true,"default":"working"},{"name":"no_minable_resources","order":1,"description":"","override":false,"type":"Color","optional":true,"default":"idle"},{"name":"no_power","order":5,"description":"","override":false,"type":"Color","optional":true,"default":"No color"},{"name":"working","order":6,"description":"","override":false,"type":"Color","optional":true,"default":"`{1, 1, 1, 1}`"}]},{"name":"SteeringSettings","order":547,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"default","order":0,"description":"","override":false,"type":"StateSteeringSettings","optional":false},{"name":"moving","order":1,"description":"","override":false,"type":"StateSteeringSettings","optional":false}]},{"name":"StorageTankPictures","order":548,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"flow_sprite","order":4,"description":"","override":false,"type":"Sprite","optional":true},{"name":"fluid_background","order":3,"description":"","override":false,"type":"Sprite","optional":true},{"name":"frozen_patch","order":1,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"gas_flow","order":5,"description":"","override":false,"type":"Animation","optional":true},{"name":"picture","order":0,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"window_background","order":2,"description":"","override":false,"type":"Sprite","optional":true}]},{"name":"StreamAttackParameters","order":549,"description":"","parent":"BaseAttackParameters","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"fluid_consumption","order":1,"description":"","override":false,"type":"FluidAmount","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"fluids","order":5,"description":"Controls which fluids can fuel this stream attack and their potential damage bonuses.","override":false,"type":{"complex_type":"array","value":"StreamFluidProperties"},"optional":true},{"name":"gun_barrel_length","order":2,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"gun_center_shift","order":4,"description":"","override":false,"type":{"complex_type":"union","options":["Vector","GunShift4Way"],"full_format":false},"optional":true},{"name":"projectile_creation_parameters","order":3,"description":"","override":false,"type":"CircularProjectileCreationSpecification","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"stream"},"optional":false}]},{"name":"StreamFluidProperties","order":550,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"damage_modifier","order":1,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"type","order":0,"description":"","override":false,"type":"FluidID","optional":false}]},{"name":"StreamTriggerDelivery","order":551,"description":"","parent":"TriggerDeliveryItem","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"source_offset","order":2,"description":"","override":false,"type":"Vector","optional":true},{"name":"stream","order":1,"description":"Name of a [FluidStreamPrototype](prototype:FluidStreamPrototype).","override":false,"type":"EntityID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"stream"},"optional":false}]},{"name":"StretchRule","order":552,"description":"Sets whether a GUI element can be stretched or squashed.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"on","description":"Stretching/squashing is enabled."},{"complex_type":"literal","value":"off","description":"Stretching/squashing is disabled even when the container contains stretchable/squashable elements."},{"complex_type":"literal","value":"auto","description":"Stretching/squashing depends on the contents of the layout, for example a flow with stretchable element gets stretchable."},{"complex_type":"literal","value":"stretch_and_expand","description":"Used only for stretchable (not squashable) properties on scroll panes, labels, check boxes and radio buttons. The element this is set on expands its size to maximum and is stretched at the same time. This means the element takes up its maximum size even before its contents require it."}],"full_format":true}},{"name":"Stripe","order":553,"description":"Used as an alternative way to specify animations.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"filename","order":2,"description":"","override":false,"type":"FileName","optional":false},{"name":"height_in_frames","order":1,"description":"Mandatory when Stripe is used in [Animation](prototype:Animation).\n\nOptional when it is used in [RotatedAnimation](prototype:RotatedAnimation), where it defaults to [RotatedAnimation::direction_count](prototype:RotatedAnimation::direction_count).","override":false,"type":"uint32","optional":false},{"name":"width_in_frames","order":0,"description":"","override":false,"type":"uint32","optional":false},{"name":"x","order":3,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"y","order":4,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"StyleSpecification","order":554,"description":"Loaded as one of the [BaseStyleSpecification](prototype:BaseStyleSpecification) extensions, based on the value of the `type` key.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"ActivityBarStyleSpecification","description":"Loaded when the `type` is `\"activity_bar_style\"`."},{"complex_type":"type","value":"ButtonStyleSpecification","description":"Loaded when the `type` is `\"button_style\"`."},{"complex_type":"type","value":"CameraStyleSpecification","description":"Loaded when the `type` is `\"camera_style\"`."},{"complex_type":"type","value":"CheckBoxStyleSpecification","description":"Loaded when the `type` is `\"checkbox_style\"`."},{"complex_type":"type","value":"DropDownStyleSpecification","description":"Loaded when the `type` is `\"dropdown_style\"`."},{"complex_type":"type","value":"FlowStyleSpecification","description":"Loaded when the `type` is `\"flow_style\"`."},{"complex_type":"type","value":"FrameStyleSpecification","description":"Loaded when the `type` is `\"frame_style\"`."},{"complex_type":"type","value":"GraphStyleSpecification","description":"Loaded when the `type` is `\"graph_style\"`."},{"complex_type":"type","value":"HorizontalFlowStyleSpecification","description":"Loaded when the `type` is `\"horizontal_flow_style\"`."},{"complex_type":"type","value":"LineStyleSpecification","description":"Loaded when the `type` is `\"line_style\"`."},{"complex_type":"type","value":"ImageStyleSpecification","description":"Loaded when the `type` is `\"image_style\"`."},{"complex_type":"type","value":"LabelStyleSpecification","description":"Loaded when the `type` is `\"label_style\"`."},{"complex_type":"type","value":"ListBoxStyleSpecification","description":"Loaded when the `type` is `\"list_box_style\"`."},{"complex_type":"type","value":"ProgressBarStyleSpecification","description":"Loaded when the `type` is `\"progressbar_style\"`."},{"complex_type":"type","value":"RadioButtonStyleSpecification","description":"Loaded when the `type` is `\"radiobutton_style\"`."},{"complex_type":"type","value":"HorizontalScrollBarStyleSpecification","description":"Loaded when the `type` is `\"horizontal_scrollbar_style\"`."},{"complex_type":"type","value":"VerticalScrollBarStyleSpecification","description":"Loaded when the `type` is `\"vertical_scrollbar_style\"`."},{"complex_type":"type","value":"ScrollPaneStyleSpecification","description":"Loaded when the `type` is `\"scroll_pane_style\"`."},{"complex_type":"type","value":"SliderStyleSpecification","description":"Loaded when the `type` is `\"slider_style\"`."},{"complex_type":"type","value":"SwitchStyleSpecification","description":"Loaded when the `type` is `\"switch_style\"`."},{"complex_type":"type","value":"TableStyleSpecification","description":"Loaded when the `type` is `\"table_style\"`."},{"complex_type":"type","value":"TabStyleSpecification","description":"Loaded when the `type` is `\"tab_style\"`."},{"complex_type":"type","value":"TextBoxStyleSpecification","description":"Loaded when the `type` is `\"textbox_style\"`."},{"complex_type":"type","value":"VerticalFlowStyleSpecification","description":"Loaded when the `type` is `\"vertical_flow_style\"`."},{"complex_type":"type","value":"TabbedPaneStyleSpecification","description":"Loaded when the `type` is `\"tabbed_pane_style\"`."},{"complex_type":"type","value":"EmptyWidgetStyleSpecification","description":"Loaded when the `type` is `\"empty_widget_style\"`."},{"complex_type":"type","value":"MinimapStyleSpecification","description":"Loaded when the `type` is `\"minimap_style\"`."},{"complex_type":"type","value":"TechnologySlotStyleSpecification","description":"Loaded when the `type` is `\"technology_slot_style\"`."},{"complex_type":"type","value":"GlowStyleSpecification","description":"Loaded when the `type` is `\"glow_style\"`."},{"complex_type":"type","value":"SpeechBubbleStyleSpecification","description":"Loaded when the `type` is `\"speech_bubble_style\"`."},{"complex_type":"type","value":"DoubleSliderStyleSpecification","description":"Loaded when the `type` is `\"double_slider_style\"`."}],"full_format":true}},{"name":"StyleWithClickableGraphicalSetSpecification","order":555,"description":"","parent":"BaseStyleSpecification","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"clicked_graphical_set","order":2,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"default_graphical_set","order":0,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"disabled_graphical_set","order":3,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"game_controller_selected_hovered_graphical_set","order":6,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"hovered_graphical_set","order":1,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"left_click_sound","order":8,"description":"","override":false,"type":"Sound","optional":true},{"name":"selected_clicked_graphical_set","order":7,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"selected_graphical_set","order":4,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"selected_hovered_graphical_set","order":5,"description":"","override":false,"type":"ElementImageSet","optional":true}]},{"name":"SurfaceCondition","order":556,"description":"Requires Space Age to use.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"max","order":2,"description":"","override":false,"type":"double","optional":true,"default":"Max double"},{"name":"min","order":1,"description":"","override":false,"type":"double","optional":true,"default":"Lowest double"},{"name":"property","order":0,"description":"","override":false,"type":"SurfacePropertyID","optional":false}]},{"name":"SurfaceID","order":557,"description":"The name of a [SurfacePrototype](prototype:SurfacePrototype).","examples":["```\n\"space-platform\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"SurfacePropertyID","order":558,"description":"The name of a [SurfacePropertyPrototype](prototype:SurfacePropertyPrototype).","examples":["```\n\"solar-power\"\n```","```\n\"magnetic-field\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"SurfaceRenderParameters","order":559,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"clouds","order":3,"description":"","override":false,"type":"CloudsEffectProperties","optional":true},{"name":"day_night_cycle_color_lookup","order":0,"description":"","override":false,"type":"DaytimeColorLookupTable","optional":true},{"name":"draw_sprite_clouds","order":2,"description":"When set to `true` and `clouds` property is not set, the legacy sprite clouds will be rendered on the surface.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"fog","order":4,"description":"","visibility":["space_age"],"override":false,"type":"FogEffectProperties","optional":true},{"name":"shadow_opacity","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"space_dust_background","order":6,"description":"","visibility":["space_age"],"override":false,"type":"SpaceDustEffectProperties","optional":true},{"name":"space_dust_foreground","order":7,"description":"","visibility":["space_age"],"override":false,"type":"SpaceDustEffectProperties","optional":true},{"name":"terrain_tint_effect","order":5,"description":"","visibility":["space_age"],"override":false,"type":"GlobalTintEffectProperties","optional":true}]},{"name":"SwitchStyleSpecification","order":560,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"active_label","order":8,"description":"","override":false,"type":"LabelStyleSpecification","optional":true},{"name":"button","order":7,"description":"","override":false,"type":"ButtonStyleSpecification","optional":true},{"name":"default_background","order":4,"description":"","override":false,"type":"Sprite","optional":true},{"name":"disabled_background","order":6,"description":"","override":false,"type":"Sprite","optional":true},{"name":"hover_background","order":5,"description":"","override":false,"type":"Sprite","optional":true},{"name":"inactive_label","order":9,"description":"","override":false,"type":"LabelStyleSpecification","optional":true},{"name":"left_button_position","order":1,"description":"","override":false,"type":"uint32","optional":true},{"name":"middle_button_position","order":2,"description":"","override":false,"type":"uint32","optional":true},{"name":"right_button_position","order":3,"description":"","override":false,"type":"uint32","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"switch_style"},"optional":false}]},{"name":"TabStyleSpecification","order":561,"description":"","parent":"StyleWithClickableGraphicalSetSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"badge_font","order":2,"description":"Name of a [FontPrototype](prototype:FontPrototype).","override":false,"type":"string","optional":true},{"name":"badge_horizontal_spacing","order":3,"description":"","override":false,"type":"int16","optional":true},{"name":"default_badge_font_color","order":7,"description":"","override":false,"type":"Color","optional":true},{"name":"default_badge_graphical_set","order":14,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"default_font_color","order":4,"description":"","override":false,"type":"Color","optional":true},{"name":"disabled_badge_font_color","order":9,"description":"","override":false,"type":"Color","optional":true},{"name":"disabled_badge_graphical_set","order":18,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"disabled_font_color","order":6,"description":"","override":false,"type":"Color","optional":true},{"name":"draw_grayscale_picture","order":19,"description":"","override":false,"type":"boolean","optional":true},{"name":"font","order":1,"description":"Name of a [FontPrototype](prototype:FontPrototype).","override":false,"type":"string","optional":true},{"name":"hover_badge_graphical_set","order":16,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"increase_height_when_selected","order":11,"description":"","override":false,"type":"boolean","optional":true},{"name":"left_edge_selected_graphical_set","order":12,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"override_graphics_on_edges","order":10,"description":"","override":false,"type":"boolean","optional":true},{"name":"press_badge_graphical_set","order":17,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"right_edge_selected_graphical_set","order":13,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"selected_badge_font_color","order":8,"description":"","override":false,"type":"Color","optional":true},{"name":"selected_badge_graphical_set","order":15,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"selected_font_color","order":5,"description":"","override":false,"type":"Color","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"tab_style"},"optional":false}]},{"name":"TabbedPaneStyleSpecification","order":562,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"tab_container","order":3,"description":"","override":false,"type":"TableStyleSpecification","optional":true},{"name":"tab_content_frame","order":2,"description":"","override":false,"type":"FrameStyleSpecification","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"tabbed_pane_style"},"optional":false},{"name":"vertical_spacing","order":1,"description":"","override":false,"type":"uint32","optional":true}]},{"name":"TableStyleSpecification","order":563,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"apply_row_graphical_set_per_column","order":8,"description":"","override":false,"type":"boolean","optional":true},{"name":"background_graphical_set","order":19,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"border","order":30,"description":"","override":false,"type":"BorderImageSet","optional":true},{"name":"bottom_cell_padding","order":6,"description":"","override":false,"type":"int16","optional":true},{"name":"cell_padding","order":3,"description":"Sets `top_cell_padding`, `right_cell_padding`, `bottom_cell_padding` and `left_cell_padding` to the same value.","override":false,"type":"int16","optional":true},{"name":"clicked_graphical_set","order":15,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"column_alignments","order":20,"description":"","override":false,"type":{"complex_type":"array","value":"ColumnAlignment"},"optional":true},{"name":"column_graphical_set","order":10,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"column_ordering_ascending_button_style","order":26,"description":"","override":false,"type":"ButtonStyleSpecification","optional":true},{"name":"column_ordering_descending_button_style","order":27,"description":"","override":false,"type":"ButtonStyleSpecification","optional":true},{"name":"column_widths","order":21,"description":"","override":false,"type":{"complex_type":"union","options":["ColumnWidthItem",{"complex_type":"array","value":"ColumnWidth"}],"full_format":false},"optional":true},{"name":"default_row_graphical_set","order":11,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"even_row_graphical_set","order":12,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"horizontal_line_color","order":25,"description":"","override":false,"type":"Color","optional":true},{"name":"horizontal_spacing","order":1,"description":"","override":false,"type":{"complex_type":"union","options":["int32",{"complex_type":"array","value":"SpacingItem"}],"full_format":false},"optional":true},{"name":"hovered_graphical_set","order":14,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"hovered_row_color","order":22,"description":"","override":false,"type":"Color","optional":true},{"name":"inactive_column_ordering_ascending_button_style","order":28,"description":"","override":false,"type":"ButtonStyleSpecification","optional":true},{"name":"inactive_column_ordering_descending_button_style","order":29,"description":"","override":false,"type":"ButtonStyleSpecification","optional":true},{"name":"left_cell_padding","order":7,"description":"","override":false,"type":"int16","optional":true},{"name":"odd_row_graphical_set","order":13,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"right_cell_padding","order":5,"description":"","override":false,"type":"int16","optional":true},{"name":"selected_clicked_graphical_set","order":18,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"selected_graphical_set","order":16,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"selected_hovered_graphical_set","order":17,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"selected_row_color","order":23,"description":"","override":false,"type":"Color","optional":true},{"name":"top_cell_padding","order":4,"description":"","override":false,"type":"int16","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"table_style"},"optional":false},{"name":"vertical_line_color","order":24,"description":"","override":false,"type":"Color","optional":true},{"name":"vertical_spacing","order":2,"description":"","override":false,"type":{"complex_type":"union","options":["int32",{"complex_type":"array","value":"SpacingItem"}],"full_format":false},"optional":true},{"name":"wide_as_column_count","order":9,"description":"","override":false,"type":"boolean","optional":true}]},{"name":"TechnologyID","order":564,"description":"The name of a [TechnologyPrototype](prototype:TechnologyPrototype).","examples":["```\n\"automated-rail-transportation\"\n```","```\n\"steel-axe\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"TechnologySlotStyleSpecification","order":565,"description":"","parent":"ButtonStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"clicked_ingredients_background","order":22,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"clicked_overlay","order":28,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"default_background_shadow","order":2,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"default_ingredients_background","order":20,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"disabled_ingredients_background","order":23,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"drag_handle_style","order":34,"description":"","override":false,"type":"EmptyWidgetStyleSpecification","optional":true},{"name":"highlighted_graphical_set","order":1,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"highlighted_ingredients_background","order":24,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"hovered_ingredients_background","order":21,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"hovered_level_band","order":4,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"hovered_level_font_color","order":12,"description":"","override":false,"type":"Color","optional":true},{"name":"hovered_level_range_band","order":16,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"hovered_level_range_font_color","order":14,"description":"","override":false,"type":"Color","optional":true},{"name":"ingredient_icon_overlap","order":27,"description":"","override":false,"type":"uint32","optional":true},{"name":"ingredient_icon_size","order":26,"description":"","override":false,"type":"uint32","optional":true},{"name":"ingredients_height","order":19,"description":"","override":false,"type":"uint32","optional":true},{"name":"ingredients_padding","order":25,"description":"","override":false,"type":"uint32","optional":true},{"name":"level_band","order":3,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"level_band_height","order":8,"description":"","override":false,"type":"uint32","optional":true},{"name":"level_band_width","order":7,"description":"","override":false,"type":"uint32","optional":true},{"name":"level_font","order":9,"description":"Name of a [FontPrototype](prototype:FontPrototype).","override":false,"type":"string","optional":true},{"name":"level_font_color","order":11,"description":"","override":false,"type":"Color","optional":true},{"name":"level_offset_x","order":5,"description":"","override":false,"type":"int32","optional":true},{"name":"level_offset_y","order":6,"description":"","override":false,"type":"int32","optional":true},{"name":"level_range_band","order":15,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"level_range_font","order":10,"description":"Name of a [FontPrototype](prototype:FontPrototype).","override":false,"type":"string","optional":true},{"name":"level_range_font_color","order":13,"description":"","override":false,"type":"Color","optional":true},{"name":"level_range_offset_x","order":17,"description":"","override":false,"type":"int32","optional":true},{"name":"level_range_offset_y","order":18,"description":"","override":false,"type":"int32","optional":true},{"name":"progress_bar","order":30,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"progress_bar_background","order":29,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"progress_bar_color","order":33,"description":"","override":false,"type":"Color","optional":true},{"name":"progress_bar_height","order":32,"description":"","override":false,"type":"uint32","optional":true},{"name":"progress_bar_shadow","order":31,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"type","order":0,"description":"","override":true,"type":{"complex_type":"literal","value":"technology_slot_style"},"optional":false}]},{"name":"TechnologyTrigger","order":566,"description":"Loaded as one of the technology triggers, based on the value of the `type` key.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"MineEntityTechnologyTrigger","description":"Loaded when the `type` is `\"mine-entity\"`."},{"complex_type":"type","value":"CraftItemTechnologyTrigger","description":"Loaded when the `type` is `\"craft-item\"`."},{"complex_type":"type","value":"CraftFluidTechnologyTrigger","description":"Loaded when the `type` is `\"craft-fluid\"`."},{"complex_type":"type","value":"SendItemToOrbitTechnologyTrigger","description":"Loaded when the `type` is `\"send-item-to-orbit\"`."},{"complex_type":"type","value":"CaptureSpawnerTechnologyTrigger","description":"Loaded when the `type` is `\"capture-spawner\"`."},{"complex_type":"type","value":"BuildEntityTechnologyTrigger","description":"Loaded when the `type` is `\"build-entity\"`."},{"complex_type":"type","value":"CreateSpacePlatformTechnologyTrigger","description":"Loaded when the `type` is `\"create-space-platform\"`."},{"complex_type":"type","value":"ScriptedTechnologyTrigger","description":"Loaded when the `type` is `\"scripted\"`."}],"full_format":true}},{"name":"TechnologyUnit","order":567,"description":"Either `count` or `count_formula` must be defined, never both.","examples":["```\nunit =\n{\n  count_formula = \"2^(L-6)*1000\",\n  ingredients =\n  {\n    {\"automation-science-pack\", 1},\n    {\"logistic-science-pack\", 1},\n    {\"chemical-science-pack\", 1},\n    {\"production-science-pack\", 1},\n    {\"utility-science-pack\", 1},\n    {\"space-science-pack\", 1}\n  },\n  time = 60\n}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count","order":0,"description":"How many units are needed. Must be `> 0`.","override":false,"type":"uint64","optional":true},{"name":"count_formula","order":1,"description":"Formula that specifies how many units are needed per level of the technology.\n\nIf the last characters of the prototype name are `-<number>`, the level is taken to be the number, e.g. `physical-projectile-damage-2` implies a number of `2`. This defaults to `1`. There does not need to be lower-level technologies for a technology to be detected as having a level, meaning a technology or sequence of upgrade technologies can begin at any number.\n\nFor an infinite technology, the level begins at the given suffix (or `1` by default) and gains 1 level upon being researched, or if the `max_level` is reached, marked as completed. The initial level of a technology can not be greater than its `max_level`.\n\n`l` and `L` are provided as variables in the expression, they represent the current level of the technology.\n\nThis formula can also be used at [runtime](runtime:LuaHelpers::evaluate_expression).","examples":["```\ncount_formula = \"2500*(L - 3)\"\n```"],"override":false,"type":"MathExpression","optional":true},{"name":"ingredients","order":3,"description":"List of ingredients needed for one unit of research. The items must all be [ToolPrototypes](prototype:ToolPrototype).","override":false,"type":{"complex_type":"array","value":"ResearchIngredient"},"optional":false},{"name":"time","order":2,"description":"How much time one unit takes to research. In a lab with a crafting speed of `1`, it corresponds to the number of seconds.","override":false,"type":"double","optional":false}]},{"name":"TerritorySettings","order":568,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"minimum_territory_size","order":3,"description":"Minimum number of chunks a territory must have. Below this, it will get deleted.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"territory_index_expression","order":1,"description":"Mandatory if `units` is not empty.","override":false,"type":"string","optional":true},{"name":"territory_variation_expression","order":2,"description":"The result will be converted to integer, clamped and used as an index for `units` array. Negative values will result in empty spawn location.","override":false,"type":"string","optional":true,"default":"0"},{"name":"units","order":0,"description":"Names of the [SegmentedUnitPrototype](prototype:SegmentedUnitPrototype).","override":false,"type":{"complex_type":"array","value":"EntityID"},"optional":true}]},{"name":"TextBoxStyleSpecification","order":569,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"active_background","order":6,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"default_background","order":5,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"disabled_background","order":8,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"disabled_font_color","order":3,"description":"","override":false,"type":"Color","optional":true},{"name":"font","order":1,"description":"Name of a [FontPrototype](prototype:FontPrototype).","override":false,"type":"string","optional":true},{"name":"font_color","order":2,"description":"","override":false,"type":"Color","optional":true},{"name":"game_controller_hovered_background","order":7,"description":"","override":false,"type":"ElementImageSet","optional":true},{"name":"rich_text_highlight_error_color","order":10,"description":"","override":false,"type":"Color","optional":true},{"name":"rich_text_highlight_ok_color","order":12,"description":"","override":false,"type":"Color","optional":true},{"name":"rich_text_highlight_warning_color","order":11,"description":"","override":false,"type":"Color","optional":true},{"name":"rich_text_setting","order":9,"description":"","override":false,"type":"RichTextSetting","optional":true},{"name":"selected_rich_text_highlight_error_color","order":13,"description":"","override":false,"type":"Color","optional":true},{"name":"selected_rich_text_highlight_ok_color","order":15,"description":"","override":false,"type":"Color","optional":true},{"name":"selected_rich_text_highlight_warning_color","order":14,"description":"","override":false,"type":"Color","optional":true},{"name":"selection_background_color","order":4,"description":"","override":false,"type":"Color","optional":true},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"textbox_style"},"optional":false}]},{"name":"ThrowCapsuleAction","order":570,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"attack_parameters","order":1,"description":"","override":false,"type":"AttackParameters","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"throw"},"optional":false},{"name":"uses_stack","order":2,"description":"Whether using the capsule consumes an item from the stack.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"ThrusterGraphicsSet","order":571,"description":"","parent":"WorkingVisualisations","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"flame","order":0,"description":"","override":false,"type":"Sprite","optional":true},{"name":"flame_effect","order":1,"description":"","override":false,"type":"EffectTexture","optional":true},{"name":"flame_effect_height","order":3,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":31.25}},{"name":"flame_effect_offset","order":6,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.5625}},{"name":"flame_effect_width","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":6}},{"name":"flame_half_height","order":5,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"flame_position","order":2,"description":"","override":false,"type":"Vector","optional":true},{"name":"water_reflection","order":7,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"ThrusterPerformancePoint","order":572,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["double","double","double"]}],"full_format":false},"properties":[{"name":"effectivity","order":2,"description":"","override":false,"type":"double","optional":false},{"name":"fluid_usage","order":1,"description":"","override":false,"type":"FluidAmount","optional":false},{"name":"fluid_volume","order":0,"description":"","override":false,"type":"double","optional":false}]},{"name":"TileAndAlpha","order":573,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"alpha","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"tile","order":0,"description":"","override":false,"type":"TileID","optional":false}]},{"name":"TileBasedParticleTints","order":574,"description":"Used for particles created with [apply_tile_tint](prototype:CreateParticleTriggerEffectItem::apply_tile_tint) defined.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"primary","order":0,"description":"","override":false,"type":"Color","optional":true,"default":"{1,1,1,1} (white)"},{"name":"secondary","order":1,"description":"","override":false,"type":"Color","optional":true,"default":"Value of `primary`"}]},{"name":"TileBuildSound","order":575,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"animated","order":3,"description":"","override":false,"type":"Sound","optional":true},{"name":"large","order":2,"description":"","override":false,"type":"Sound","optional":true},{"name":"medium","order":1,"description":"","override":false,"type":"Sound","optional":true},{"name":"small","order":0,"description":"","override":false,"type":"Sound","optional":true}]},{"name":"TileBuildabilityRule","order":576,"description":"Defines restrictions on what tiles an entity can or must be built on.\n\nNote that once the entity has been placed, placing new tiles is not always restricted by these rules for performance reasons. In particular, for most entities these rules are only checked when placing tiles within the collision box of the entity. The exception to this are thrusters and asteroid collectors, for which the rules are always checked.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"area","order":0,"description":"","override":false,"type":"SimpleBoundingBox","optional":false},{"name":"colliding_tiles","order":2,"description":"","override":false,"type":"CollisionMaskConnector","optional":true,"default":"No masks"},{"name":"remove_on_collision","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"required_tiles","order":1,"description":"","override":false,"type":"CollisionMaskConnector","optional":true,"default":"Any mask"}]},{"name":"TileEffectDefinitionID","order":577,"description":"The name of an [TileEffectDefinition](prototype:TileEffectDefinition).","examples":["```\n\"water\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"TileID","order":578,"description":"The name of a [TilePrototype](prototype:TilePrototype).","examples":["```\n\"grass-2\"\n```","```\n\"landfill\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"TileIDRestriction","order":579,"description":"Name of an allowed tile, or a list of two tile names for entities allowed on transitions.","abstract":false,"inline":true,"type":{"complex_type":"union","options":["TileID",{"complex_type":"tuple","values":["TileID","TileID"]}],"full_format":false}},{"name":"TileLightPictures","order":580,"description":"","parent":"TileSpriteLayout","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"size","order":0,"description":"Only powers of 2 from 1 to 128 can be used. Square size of the tile arrangement this sprite is used for. Used to calculate the `width` and `height` of the sprite which cannot be set directly. (width or height) = size * 32 / scale.","override":false,"type":"uint32","optional":false}]},{"name":"TileMainPictures","order":581,"description":"","parent":"TileSpriteLayout","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"probability","order":1,"description":"Probability of 1x1 (size = 1) version of tile must be 1.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"size","order":0,"description":"Only powers of 2 from 1 to 128 can be used. Square size of the tile arrangement this sprite is used for. Used to calculate the `width` and `height` of the sprite which cannot be set directly. (width or height) = size * 32 / scale.","override":false,"type":"uint32","optional":false},{"name":"weights","order":2,"description":"","override":false,"type":{"complex_type":"array","value":"double"},"optional":true}]},{"name":"TilePosition","order":582,"description":"Coordinates of a tile on a map where each integer `x`/`y` represents a different tile. This uses the same format as [MapPosition](prototype:MapPosition), except it rounds any non-integer `x`/`y` down to whole numbers. It can be specified either with or without explicit keys.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["int32","int32"]}],"full_format":false},"properties":[{"name":"x","order":0,"description":"","override":false,"type":"int32","optional":false},{"name":"y","order":1,"description":"","override":false,"type":"int32","optional":false}]},{"name":"TileRenderLayer","order":583,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"zero","description":"64 layers. Used for tile sprites above background (e.g. transitions to out-of-map)."},{"complex_type":"literal","value":"water","description":"16 layers. Used for water related tile sprites. Water shaders are rendered above these layers."},{"complex_type":"literal","value":"water-overlay","description":"64 layers. Used for lowland tiles and tile transitions to water that are desired to be drawn under the ground sprites. Puddles are rendered above these layers."},{"complex_type":"literal","value":"ground-natural","description":"256 layers. Used for natural tile sprites above water. Global tile tint shaders are rendered above these layers."},{"complex_type":"literal","value":"ground-artificial","description":"128 layers. Used for tile sprites which are intended to be above natural ground. Like tiles that player can build."},{"complex_type":"literal","value":"top","description":"1 layer. The top most tile render layer."}],"full_format":true}},{"name":"TileSpriteLayout","order":584,"description":"","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count","order":5,"description":"Frame count.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"line_length","order":4,"description":"Once the specified number of pictures is loaded, other pictures are loaded on other line. This is to allow having longer animations in matrix, to input files with too high width. The game engine limits the width of any input files to 8192px, so it is compatible with most graphics cards. 0 means that all the pictures are in one horizontal line.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"picture","order":0,"description":"","override":false,"type":"FileName","optional":false},{"name":"scale","order":1,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"x","order":2,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"y","order":3,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"TileSpriteLayoutVariant","order":585,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"count","order":6,"description":"Frame count.","override":false,"type":"uint8","optional":true},{"name":"line_length","order":5,"description":"Once the specified number of pictures is loaded, other pictures are loaded on other line. This is to allow having longer animations in matrix, to input files with too high width. The game engine limits the width of any input files to 8192px, so it is compatible with most graphics cards. 0 means that all the pictures are in one horizontal line.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"scale","order":1,"description":"","override":false,"type":"float","optional":true},{"name":"spritesheet","order":0,"description":"","override":false,"type":"FileName","optional":true},{"name":"tile_height","order":4,"description":"Height of the transition sprite in tiles. May be 1 or 2. It is forced to 1 for mask layers and for o_transition. A tile is considered 32px with scale 1 (so 64px with scale 0.5). Shift of the sprite will be adjusted such that the top 1x1 tile is centered on a tile being drawn (so it will be \n```\n{0, 0.5*(tile_height - 1)}\n```\n) It can be anything between 1 to 8 for `background` layer if `draw_background_layer_under_tiles` is set to true.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"x","order":2,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"y","order":3,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true}]},{"name":"TileTransitionSpritesheetLayout","order":586,"description":"The properties from the parent TileSpriteLayoutVariant provide defaults for the TileTransitionVariantLayouts.\n\nThe `{inner_corner | outer_corner | side | double_side | u_transition | o_transition}_*` properties provide defaults for the corresponding properties in the TileTransitionVariantLayouts. They are used when the TileTransitionVariantLayouts have the same layout. See the example below.","examples":["```\n-- all the layers use the same layout, at different offsets inside the spritesheet\nlayout =\n{\n  scale = 0.5,\n  inner_corner_count = 8,\n  outer_corner_count = 8,\n  o_transition_count = 1,\n  outer_corner_x = 576,\n  u_transition_x = 1728,\n\n  overlay = { y_offset = 0 },  -- 0 is default, but by defining overlay property, we enable the layer\n  mask = { y_offset = 512 },\n  background = { y_offset = 1024 }\n}\n```"],"parent":"TileSpriteLayoutVariant","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"auxiliary_effect_mask","order":6,"description":"Only loaded if [TileTransitions::auxiliary_effect_mask_layout](prototype:TileTransitions::auxiliary_effect_mask_layout) is not defined in the TileTransitions that load this.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"background","order":2,"description":"Only loaded if [TileTransitions::background_layout](prototype:TileTransitions::background_layout) is not defined in the TileTransitions that load this.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"background_mask","order":3,"description":"Only loaded if [TileTransitions::background_mask_layout](prototype:TileTransitions::background_mask_layout) is not defined in the TileTransitions that load this.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"double_side_count","order":30,"description":"","override":false,"type":"uint8","optional":true},{"name":"double_side_line_length","order":29,"description":"","override":false,"type":"uint8","optional":true},{"name":"double_side_scale","order":25,"description":"","override":false,"type":"float","optional":true},{"name":"double_side_tile_height","order":28,"description":"","override":false,"type":"uint8","optional":true},{"name":"double_side_x","order":26,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"double_side_y","order":27,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"effect_map","order":4,"description":"Only loaded if [TileTransitions::effect_map_layout](prototype:TileTransitions::effect_map_layout) is not defined in the TileTransitions that load this.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"inner_corner_count","order":12,"description":"","override":false,"type":"uint8","optional":true},{"name":"inner_corner_line_length","order":11,"description":"","override":false,"type":"uint8","optional":true},{"name":"inner_corner_scale","order":7,"description":"","override":false,"type":"float","optional":true},{"name":"inner_corner_tile_height","order":10,"description":"","override":false,"type":"uint8","optional":true},{"name":"inner_corner_x","order":8,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"inner_corner_y","order":9,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"lightmap","order":5,"description":"Only loaded if [TileTransitions::lightmap_layout](prototype:TileTransitions::lightmap_layout) is not defined in the TileTransitions that load this.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"mask","order":1,"description":"Only loaded if [TileTransitions::mask_layout](prototype:TileTransitions::mask_layout) is not defined in the TileTransitions that load this.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"o_transition_count","order":42,"description":"","override":false,"type":"uint8","optional":true},{"name":"o_transition_line_length","order":41,"description":"","override":false,"type":"uint8","optional":true},{"name":"o_transition_scale","order":37,"description":"","override":false,"type":"float","optional":true},{"name":"o_transition_tile_height","order":40,"description":"","override":false,"type":"uint8","optional":true},{"name":"o_transition_x","order":38,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"o_transition_y","order":39,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"outer_corner_count","order":18,"description":"","override":false,"type":"uint8","optional":true},{"name":"outer_corner_line_length","order":17,"description":"","override":false,"type":"uint8","optional":true},{"name":"outer_corner_scale","order":13,"description":"","override":false,"type":"float","optional":true},{"name":"outer_corner_tile_height","order":16,"description":"","override":false,"type":"uint8","optional":true},{"name":"outer_corner_x","order":14,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"outer_corner_y","order":15,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"overlay","order":0,"description":"Only loaded if [TileTransitions::overlay_layout](prototype:TileTransitions::overlay_layout) is not defined in the TileTransitions that load this.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"side_count","order":24,"description":"","override":false,"type":"uint8","optional":true},{"name":"side_line_length","order":23,"description":"","override":false,"type":"uint8","optional":true},{"name":"side_scale","order":19,"description":"","override":false,"type":"float","optional":true},{"name":"side_tile_height","order":22,"description":"","override":false,"type":"uint8","optional":true},{"name":"side_x","order":20,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"side_y","order":21,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"u_transition_count","order":36,"description":"","override":false,"type":"uint8","optional":true},{"name":"u_transition_line_length","order":35,"description":"","override":false,"type":"uint8","optional":true},{"name":"u_transition_scale","order":31,"description":"","override":false,"type":"float","optional":true},{"name":"u_transition_tile_height","order":34,"description":"","override":false,"type":"uint8","optional":true},{"name":"u_transition_x","order":32,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"u_transition_y","order":33,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true}]},{"name":"TileTransitionVariantLayout","order":587,"description":"The properties from the parent TileSpriteLayoutVariant provide defaults for the properties defined here.\n\nThe `{inner_corner | outer_corner | side | double_side | u_transition | o_transition}_*` properties provide defaults for the properties inside the specific variant. They are used to specify select values for the variant without creating the table for the variant.\n\nThese various ways to define the variants are also shown in the examples below.","examples":["```\n-- longest version, using TileSpriteLayoutVariant tables for each variant\n{\n  inner_corner =\n  {\n    scale = 0.5,\n    count = 8,\n  },\n  outer_corner =\n  {\n    scale = 0.5,\n    count = 8,\n    x = 576\n  },\n  u_transition  =\n  {\n    scale = 0.5,\n    count = 1,\n    x = 1728\n  },\n  [...]\n}\n```","```\n-- The above version is quite verbose, scale is duplicated in each variant layout.\n-- So it is possible to define default value of each property of TileSpriteLayoutVariant directly in TileTransitionVariantLayout:\n{\n  scale = 0.5,\n  inner_corner =\n  {\n    count = 8,\n  },\n  outer_corner =\n  {\n    count = 8,\n    x = 576\n  },\n  u_transition  =\n  {\n    count = 1,\n    x = 1728\n  },\n  [...]\n}\n```","```\n-- The above version is creating a table to just specify inner_corner has 8 count. It can be shorter by using variant prefix properties:\n{\n  scale = 0.5,\n  inner_corner_count = 8,\n  outer_corner_count = 8,\n  u_transition_count = 1,\n  outer_corner_x = 576,\n  u_transition_x = 1728,\n  [...]\n}\n```"],"parent":"TileSpriteLayoutVariant","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"double_side","order":5,"description":"Defaults to the values set in the `double_side_*` properties.","override":false,"type":"TileSpriteLayoutVariant","optional":true},{"name":"double_side_count","order":31,"description":"","override":false,"type":"uint8","optional":true},{"name":"double_side_line_length","order":30,"description":"","override":false,"type":"uint8","optional":true},{"name":"double_side_scale","order":26,"description":"","override":false,"type":"float","optional":true},{"name":"double_side_tile_height","order":29,"description":"","override":false,"type":"uint8","optional":true},{"name":"double_side_x","order":27,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"double_side_y","order":28,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"inner_corner","order":2,"description":"Defaults to the values set in the `inner_corner_*` properties.","override":false,"type":"TileSpriteLayoutVariant","optional":true},{"name":"inner_corner_count","order":13,"description":"","override":false,"type":"uint8","optional":true},{"name":"inner_corner_line_length","order":12,"description":"","override":false,"type":"uint8","optional":true},{"name":"inner_corner_scale","order":8,"description":"","override":false,"type":"float","optional":true},{"name":"inner_corner_tile_height","order":11,"description":"","override":false,"type":"uint8","optional":true},{"name":"inner_corner_x","order":9,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"inner_corner_y","order":10,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"o_transition","order":7,"description":"Defaults to the values set in the `o_transition_*` properties.","override":false,"type":"TileSpriteLayoutVariant","optional":true},{"name":"o_transition_count","order":43,"description":"","override":false,"type":"uint8","optional":true},{"name":"o_transition_line_length","order":42,"description":"","override":false,"type":"uint8","optional":true},{"name":"o_transition_scale","order":38,"description":"","override":false,"type":"float","optional":true},{"name":"o_transition_tile_height","order":41,"description":"","override":false,"type":"uint8","optional":true},{"name":"o_transition_x","order":39,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"o_transition_y","order":40,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"outer_corner","order":3,"description":"Defaults to the values set in the `outer_corner_*` properties.","override":false,"type":"TileSpriteLayoutVariant","optional":true},{"name":"outer_corner_count","order":19,"description":"","override":false,"type":"uint8","optional":true},{"name":"outer_corner_line_length","order":18,"description":"","override":false,"type":"uint8","optional":true},{"name":"outer_corner_scale","order":14,"description":"","override":false,"type":"float","optional":true},{"name":"outer_corner_tile_height","order":17,"description":"","override":false,"type":"uint8","optional":true},{"name":"outer_corner_x","order":15,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"outer_corner_y","order":16,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"side","order":4,"description":"Defaults to the values set in the `side_*` properties.","override":false,"type":"TileSpriteLayoutVariant","optional":true},{"name":"side_count","order":25,"description":"","override":false,"type":"uint8","optional":true},{"name":"side_line_length","order":24,"description":"","override":false,"type":"uint8","optional":true},{"name":"side_scale","order":20,"description":"","override":false,"type":"float","optional":true},{"name":"side_tile_height","order":23,"description":"","override":false,"type":"uint8","optional":true},{"name":"side_x","order":21,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"side_y","order":22,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"u_transition","order":6,"description":"Defaults to the values set in the `u_transition_*` properties.","override":false,"type":"TileSpriteLayoutVariant","optional":true},{"name":"u_transition_count","order":37,"description":"","override":false,"type":"uint8","optional":true},{"name":"u_transition_line_length","order":36,"description":"","override":false,"type":"uint8","optional":true},{"name":"u_transition_scale","order":32,"description":"","override":false,"type":"float","optional":true},{"name":"u_transition_tile_height","order":35,"description":"","override":false,"type":"uint8","optional":true},{"name":"u_transition_x","order":33,"description":"Horizontal position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"u_transition_y","order":34,"description":"Vertical position of the sprite in the source file in pixels.","override":false,"type":"SpriteSizeType","optional":true},{"name":"x_offset","order":0,"description":"","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"y_offset","order":1,"description":"","override":false,"type":"SpriteSizeType","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"TileTransitions","order":588,"description":"Used for [TilePrototype](prototype:TilePrototype) graphics.\n\nUse `layout` with `spritesheet` to define all the tile layers inside the `layout` property. The `*_enabled`, `*_layout` and `*_spritesheet` properties can be used to override specific layers of a reused layout.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"apply_effect_color_to_overlay","order":32,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"apply_waving_effect_on_background_mask","order":34,"description":"","override":false,"type":"boolean","optional":true,"default":"Value of `apply_waving_effect_on_masks`"},{"name":"apply_waving_effect_on_masks","order":33,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"auxiliary_effect_mask_enabled","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"auxiliary_effect_mask_layout","order":15,"description":"Overrides the `auxiliary_effect_mask` definition inside `layout`.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"auxiliary_effect_mask_spritesheet","order":21,"description":"Only loaded if `layout` or `auxiliary_effect_mask_layout` is defined.\n\nDefault spritesheet for `auxiliary_effect_mask_layout` and `layout.auxiliary_effect_mask`.","override":false,"type":"FileName","optional":true,"default":"Value of `spritesheet`"},{"name":"background_enabled","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"background_layer_group","order":24,"description":"","override":false,"type":"TileRenderLayer","optional":true},{"name":"background_layer_occludes_light","order":31,"description":"If drawing under water which is supposed to yield water mask, set this to `false` to not mess up the water mask.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"background_layer_offset","order":28,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"background_layout","order":11,"description":"Overrides the `background` definition inside `layout`.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"background_mask_enabled","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"background_mask_layout","order":12,"description":"Overrides the `background_mask` definition inside `layout`.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"background_mask_spritesheet","order":18,"description":"Only loaded if `layout` or `background_mask_layout` is defined.\n\nDefault spritesheet for `background_mask_layout` and `layout.background_mask`.","override":false,"type":"FileName","optional":true,"default":"Value of `spritesheet`"},{"name":"background_spritesheet","order":17,"description":"Only loaded if `layout` or `background_layout` is defined.\n\nDefault spritesheet for `background_layout` and `layout.background`.","override":false,"type":"FileName","optional":true,"default":"Value of `spritesheet`"},{"name":"double_side_variations_in_group","order":42,"description":"","override":false,"type":"uint8","optional":true},{"name":"double_side_weights","order":41,"description":"","override":false,"type":{"complex_type":"array","value":"float"},"optional":true},{"name":"draw_background_layer_under_tiles","order":30,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"draw_simple_outer_corner_over_diagonal","order":35,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"effect_map_enabled","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"effect_map_layout","order":13,"description":"Overrides the `effect_map` definition inside `layout`.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"effect_map_spritesheet","order":19,"description":"Only loaded if `layout` or `effect_map_layout` is defined.\n\nDefault spritesheet for `effect_map_layout` and `layout.effect_map`.","override":false,"type":"FileName","optional":true,"default":"Value of `spritesheet`"},{"name":"inner_corner_weights","order":37,"description":"","override":false,"type":{"complex_type":"array","value":"float"},"optional":true},{"name":"layout","order":0,"description":"","override":false,"type":"TileTransitionSpritesheetLayout","optional":true},{"name":"lightmap_enabled","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"lightmap_layout","order":14,"description":"Overrides the `lightmap` definition inside `layout`.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"lightmap_spritesheet","order":20,"description":"Only loaded if `layout` or `lightmap_layout` is defined.\n\nDefault spritesheet for `lightmap_layout` and `layout.lightmap`.","override":false,"type":"FileName","optional":true,"default":"Value of `spritesheet`"},{"name":"mask_enabled","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"mask_layout","order":10,"description":"Overrides the `mask` definition inside `layout`.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"mask_spritesheet","order":16,"description":"Only loaded if `layout` or `mask_layout` is defined.\n\nDefault spritesheet for `mask_layout` and `layout.mask`.","override":false,"type":"FileName","optional":true,"default":"Value of `spritesheet`"},{"name":"masked_background_layer_offset","order":29,"description":"","override":false,"type":"int8","optional":true,"default":"Value of `background_layer_offset`"},{"name":"masked_overlay_layer_offset","order":27,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"offset_background_layer_by_tile_layer","order":36,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"outer_corner_weights","order":38,"description":"","override":false,"type":{"complex_type":"array","value":"float"},"optional":true},{"name":"overlay_enabled","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"overlay_layer_group","order":23,"description":"","override":false,"type":"TileRenderLayer","optional":true},{"name":"overlay_layer_offset","order":26,"description":"","override":false,"type":"int8","optional":true},{"name":"overlay_layout","order":9,"description":"Overrides the `overlay` definition inside `layout`.","override":false,"type":"TileTransitionVariantLayout","optional":true},{"name":"side_variations_in_group","order":40,"description":"","override":false,"type":"uint8","optional":true},{"name":"side_weights","order":39,"description":"","override":false,"type":{"complex_type":"array","value":"float"},"optional":true},{"name":"spritesheet","order":1,"description":"Default spritesheet for all TileSpriteLayouts.","override":false,"type":"FileName","optional":true},{"name":"u_transition_weights","order":43,"description":"","override":false,"type":{"complex_type":"array","value":"float"},"optional":true},{"name":"water_patch","order":22,"description":"","override":false,"type":"Sprite","optional":true},{"name":"waving_effect_time_scale","order":25,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.15}}]},{"name":"TileTransitionsBetweenTransitions","order":589,"description":"","parent":"TileTransitions","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"transition_group1","order":0,"description":"","override":false,"type":"uint8","optional":false},{"name":"transition_group2","order":1,"description":"","override":false,"type":"uint8","optional":false}]},{"name":"TileTransitionsToTiles","order":590,"description":"","parent":"TileTransitions","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"to_tiles","order":0,"description":"","override":false,"type":{"complex_type":"array","value":"TileID"},"optional":false},{"name":"transition_group","order":1,"description":"","override":false,"type":"uint8","optional":false}]},{"name":"TileTransitionsVariants","order":591,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"empty_transitions","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"light","order":4,"description":"","override":false,"type":{"complex_type":"array","value":"TileLightPictures"},"optional":true},{"name":"main","order":0,"description":"","override":false,"type":{"complex_type":"array","value":"TileMainPictures"},"optional":true},{"name":"material_background","order":3,"description":"","override":false,"type":"MaterialTextureParameters","optional":true},{"name":"material_light","order":5,"description":"Must have the same `count` as material_background.","override":false,"type":"MaterialTextureParameters","optional":true},{"name":"material_texture_height_in_tiles","order":2,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":8}},{"name":"material_texture_width_in_tiles","order":1,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":8}},{"name":"transition","order":7,"description":"Only loaded, and mandatory if `empty_transitions` is `false`.","override":false,"type":"TileTransitions","optional":true}]},{"name":"TimeElapsedTipTrigger","order":592,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"ticks","order":1,"description":"","override":false,"type":"uint32","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"time-elapsed"},"optional":false}]},{"name":"TimeSinceLastTipActivationTipTrigger","order":593,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"ticks","order":1,"description":"","override":false,"type":"MapTick","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"time-since-last-tip-activation"},"optional":false}]},{"name":"TintProcessionBezierControlPoint","order":594,"description":"One frame in time for a Bezier interpolation.","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"opacity","order":1,"description":"`opacity` and `opacity_t` interpolate a double smoothly over time.","override":false,"type":"double","optional":true},{"name":"opacity_t","order":2,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"double","optional":true},{"name":"timestamp","order":0,"description":"Mandatory if `opacity` or `tint_upper` or `tint_lower` is defined.","override":false,"type":"MapTick","optional":true},{"name":"tint_lower","order":5,"description":"`tint_lower` and `tint_lower_t` interpolate a color smoothly over time.","override":false,"type":"Color","optional":true},{"name":"tint_lower_t","order":6,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"Color","optional":true},{"name":"tint_upper","order":3,"description":"`tint_upper` and `tint_upper_t` interpolate a color smoothly over time.","override":false,"type":"Color","optional":true},{"name":"tint_upper_t","order":4,"description":"Bidirectional tangent at the given timestamp.","override":false,"type":"Color","optional":true}]},{"name":"TintProcessionLayer","order":595,"description":"Fullscreen overlay which blends gradient from top to bottom edge of the screen using [pre-multiplied alpha blending](prototype:BlendMode::normal).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"frames","order":2,"description":"","override":false,"type":{"complex_type":"array","value":"TintProcessionBezierControlPoint"},"optional":false},{"name":"render_layer","order":1,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"tint"},"optional":false}]},{"name":"TipStatus","order":596,"description":"This is used by [TipsAndTricksItem](prototype:TipsAndTricksItem) for the initial starting status. One of the following values:","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"locked","description":"The tip is hidden."},{"complex_type":"literal","value":"optional","description":"Same as `\"locked\"`."},{"complex_type":"literal","value":"dependencies-not-met","description":"The [trigger](prototype:TipsAndTricksItem::trigger) for the tip was already met, but the tip is still hidden because of dependencies."},{"complex_type":"literal","value":"unlocked","description":"Not suggested by trigger yet, but visible in the window. This is also the state that tips are left in when the /unlock-tips command is used in-game."},{"complex_type":"literal","value":"suggested","description":"The dependencies and triggers are met, the game suggests the tip, shows the notification icon in the GUI."},{"complex_type":"literal","value":"not-to-be-suggested","description":""},{"complex_type":"literal","value":"completed-without-tutorial","description":"The tip is considered completed."},{"complex_type":"literal","value":"completed","description":"The tip is considered completed."}],"full_format":true}},{"name":"TipTrigger","order":597,"description":"Loaded as one of the tip triggers, based on the value of the `type` key.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"OrTipTrigger","description":"Loaded when the `type` is `\"or\"`."},{"complex_type":"type","value":"AndTipTrigger","description":"Loaded when the `type` is `\"and\"`."},{"complex_type":"type","value":"SequenceTipTrigger","description":"Loaded when the `type` is `\"sequence\"`."},{"complex_type":"type","value":"DependenciesMetTipTrigger","description":"Loaded when the `type` is `\"dependencies-met\"`."},{"complex_type":"type","value":"TimeElapsedTipTrigger","description":"Loaded when the `type` is `\"time-elapsed\"`."},{"complex_type":"type","value":"TimeSinceLastTipActivationTipTrigger","description":"Loaded when the `type` is `\"time-since-last-tip-activation\"`."},{"complex_type":"type","value":"ResearchTechnologyTipTrigger","description":"Loaded when the `type` is `\"research\"`."},{"complex_type":"type","value":"ResearchWithSciencePackTipTrigger","description":"Loaded when the `type` is `\"research-with-science-pack\"`."},{"complex_type":"type","value":"UnlockRecipeTipTrigger","description":"Loaded when the `type` is `\"unlock-recipe\"`."},{"complex_type":"type","value":"CraftItemTipTrigger","description":"Loaded when the `type` is `\"craft-item\"`."},{"complex_type":"type","value":"BuildEntityTipTrigger","description":"Loaded when the `type` is `\"build-entity\"`."},{"complex_type":"type","value":"ManualTransferTipTrigger","description":"Loaded when the `type` is `\"manual-transfer\"`."},{"complex_type":"type","value":"ModuleTransferTipTrigger","description":"Loaded when the `type` is `\"module-transfer\"`."},{"complex_type":"type","value":"StackTransferTipTrigger","description":"Loaded when the `type` is `\"stack-transfer\"`."},{"complex_type":"type","value":"EntityTransferTipTrigger","description":"Loaded when the `type` is `\"entity-transfer\"`."},{"complex_type":"type","value":"DropItemTipTrigger","description":"Loaded when the `type` is `\"drop-item\"`."},{"complex_type":"type","value":"SetRecipeTipTrigger","description":"Loaded when the `type` is `\"set-recipe\"`."},{"complex_type":"type","value":"SetFilterTipTrigger","description":"Loaded when the `type` is `\"set-filter\"`."},{"complex_type":"type","value":"LimitChestTipTrigger","description":"Loaded when the `type` is `\"limit-chest\"`."},{"complex_type":"type","value":"UsePipetteTipTrigger","description":"Loaded when the `type` is `\"use-pipette\"`."},{"complex_type":"type","value":"SetLogisticRequestTipTrigger","description":"Loaded when the `type` is `\"set-logistic-request\"`."},{"complex_type":"type","value":"UseConfirmTipTrigger","description":"Loaded when the `type` is `\"use-confirm\"`."},{"complex_type":"type","value":"ToggleShowEntityInfoTipTrigger","description":"Loaded when the `type` is `\"toggle-show-entity-info\"`."},{"complex_type":"type","value":"GeneratingPowerTipTrigger","description":"Loaded when the `type` is `\"generating-power\"`."},{"complex_type":"type","value":"LowPowerTipTrigger","description":"Loaded when the `type` is `\"low-power\"`."},{"complex_type":"type","value":"PasteEntitySettingsTipTrigger","description":"Loaded when the `type` is `\"paste-entity-settings\"`."},{"complex_type":"type","value":"FastReplaceTipTrigger","description":"Loaded when the `type` is `\"fast-replace\"`."},{"complex_type":"type","value":"GroupAttackTipTrigger","description":"Loaded when the `type` is `\"group-attack\"`."},{"complex_type":"type","value":"FastBeltBendTipTrigger","description":"Loaded when the `type` is `\"fast-belt-bend\"`."},{"complex_type":"type","value":"BeltTraverseTipTrigger","description":"Loaded when the `type` is `\"belt-traverse\"`."},{"complex_type":"type","value":"PlaceEquipmentTipTrigger","description":"Loaded when the `type` is `\"place-equipment\"`."},{"complex_type":"type","value":"ClearCursorTipTrigger","description":"Loaded when the `type` is `\"clear-cursor\"`."},{"complex_type":"type","value":"RotateEntityTipTrigger","description":"Loaded when the `type` is `\"rotate-entity\"`."},{"complex_type":"type","value":"FlipEntityTipTrigger","description":"Loaded when the `type` is `\"flip-entity\"`."},{"complex_type":"type","value":"AlternativeBuildTipTrigger","description":"Loaded when the `type` is `\"alternative-build\"`."},{"complex_type":"type","value":"GateOverRailBuildTipTrigger","description":"Loaded when the `type` is `\"gate-over-rail-build\"`."},{"complex_type":"type","value":"ManualWireDragTipTrigger","description":"Loaded when the `type` is `\"manual-wire-drag\"`."},{"complex_type":"type","value":"ShootTipTrigger","description":"Loaded when the `type` is `\"shoot\"`."},{"complex_type":"type","value":"ChangeSurfaceTipTrigger","description":"Loaded when the `type` is `\"change-surface\"`."},{"complex_type":"type","value":"ApplyStarterPackTipTrigger","description":"Loaded when the `type` is `\"apply-starter-pack\"`."},{"complex_type":"type","value":"MineItemByRobotTipTrigger","description":"Loaded when the `type` is `\"mine-item-by-robot\"`."},{"complex_type":"type","value":"BuildEntityByRobotTipTrigger","description":"Loaded when the `type` is `\"build-entity-by-robot\"`."},{"complex_type":"type","value":"PlanTrainPathTipTrigger","description":"Loaded when the `type` is `\"plan-train-path\"`."},{"complex_type":"type","value":"UseRailPlannerTipTrigger","description":"Loaded when the `type` is `\"use-rail-planner\"`."},{"complex_type":"type","value":"ToggleRailLayerTipTrigger","description":"Loaded when the `type` is `\"toggle-rail-layer\"`."},{"complex_type":"type","value":"EnterVehicleTipTrigger","description":"Loaded when the `type` is `\"enter-vehicle\"`."},{"complex_type":"type","value":"SendSpidertronTipTrigger","description":"Loaded when the `type` is `\"send-spidertron\"`."},{"complex_type":"type","value":"ActivatePasteTipTrigger","description":"Loaded when the `type` is `\"activate-paste\"`."},{"complex_type":"type","value":"KillTipTrigger","description":"Loaded when the `type` is `\"kill\"`."}],"full_format":true}},{"name":"ToggleRailLayerTipTrigger","order":598,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"toggle-rail-layer"},"optional":false}]},{"name":"ToggleShowEntityInfoTipTrigger","order":599,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"toggle-show-entity-info"},"optional":false}]},{"name":"TrainBrakingForceBonusModifier","order":600,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"train-braking-force-bonus"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"TrainPathFinderConstants","order":601,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"signal_reserved_by_circuit_network_penalty","order":3,"description":"","override":false,"type":"uint32","optional":false},{"name":"stopped_manually_controlled_train_penalty","order":1,"description":"","override":false,"type":"uint32","optional":false},{"name":"stopped_manually_controlled_train_without_passenger_penalty","order":2,"description":"","override":false,"type":"uint32","optional":false},{"name":"train_arriving_to_signal_penalty","order":7,"description":"","override":false,"type":"uint32","optional":false},{"name":"train_arriving_to_station_penalty","order":6,"description":"","override":false,"type":"uint32","optional":false},{"name":"train_auto_without_schedule_penalty","order":11,"description":"","override":false,"type":"uint32","optional":false},{"name":"train_in_station_penalty","order":4,"description":"","override":false,"type":"uint32","optional":false},{"name":"train_in_station_with_no_other_valid_stops_in_schedule","order":5,"description":"","override":false,"type":"uint32","optional":false},{"name":"train_stop_penalty","order":0,"description":"","override":false,"type":"uint32","optional":false},{"name":"train_waiting_at_signal_penalty","order":8,"description":"","override":false,"type":"uint32","optional":false},{"name":"train_waiting_at_signal_tick_multiplier_penalty","order":9,"description":"Must be >= 0.","override":false,"type":"float","optional":false},{"name":"train_with_no_path_penalty","order":10,"description":"","override":false,"type":"uint32","optional":false}]},{"name":"TrainStopDrawingBoxes","order":602,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"east","order":1,"description":"","override":false,"type":"BoundingBox","optional":false},{"name":"north","order":0,"description":"","override":false,"type":"BoundingBox","optional":false},{"name":"south","order":2,"description":"","override":false,"type":"BoundingBox","optional":false},{"name":"west","order":3,"description":"","override":false,"type":"BoundingBox","optional":false}]},{"name":"TrainStopLight","order":603,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"light","order":2,"description":"","override":false,"type":"LightDefinition","optional":false},{"name":"picture","order":0,"description":"","override":false,"type":"Sprite4Way","optional":false},{"name":"red_picture","order":1,"description":"","override":false,"type":"Sprite4Way","optional":false}]},{"name":"TrainVisualizationConstants","order":604,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"box_length","order":5,"description":"","override":false,"type":"float","optional":false},{"name":"box_width","order":4,"description":"","override":false,"type":"float","optional":false},{"name":"connection_distance","order":7,"description":"","override":false,"type":"float","optional":false},{"name":"final_margin","order":8,"description":"","override":false,"type":"float","optional":false},{"name":"joint_distance","order":6,"description":"","override":false,"type":"float","optional":false},{"name":"last_box_color","order":1,"description":"","override":false,"type":"Color","optional":false},{"name":"last_reverse_box_color","order":3,"description":"","override":false,"type":"Color","optional":false},{"name":"not_last_box_color","order":0,"description":"","override":false,"type":"Color","optional":false},{"name":"reverse_box_color","order":2,"description":"","override":false,"type":"Color","optional":false},{"name":"stock_number_scale","order":9,"description":"","override":false,"type":"float","optional":false}]},{"name":"TransitionApplication","order":605,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"offset","order":0,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"pod_offset","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"rotation","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"TransportBeltAnimationSet","order":606,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"alternate","order":26,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"animation_set","order":0,"description":"","override":false,"type":"RotatedAnimation","optional":false},{"name":"belt_reader","order":27,"description":"","override":false,"type":{"complex_type":"array","value":"BeltReaderLayer"},"optional":true},{"name":"east_index","order":1,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"east_index_frozen","order":14,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"ending_east_index","order":12,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":20}},{"name":"ending_east_index_frozen","order":25,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":20}},{"name":"ending_north_index","order":10,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":18}},{"name":"ending_north_index_frozen","order":23,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":18}},{"name":"ending_south_index","order":6,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":14}},{"name":"ending_south_index_frozen","order":19,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":14}},{"name":"ending_west_index","order":8,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":16}},{"name":"ending_west_index_frozen","order":21,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":16}},{"name":"frozen_patch","order":13,"description":"","override":false,"type":"RotatedSprite","optional":true},{"name":"north_index","order":3,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":3}},{"name":"north_index_frozen","order":16,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":3}},{"name":"south_index","order":4,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":4}},{"name":"south_index_frozen","order":17,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":4}},{"name":"starting_east_index","order":11,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":19}},{"name":"starting_east_index_frozen","order":24,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":19}},{"name":"starting_north_index","order":9,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":17}},{"name":"starting_north_index_frozen","order":22,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":17}},{"name":"starting_south_index","order":5,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":13}},{"name":"starting_south_index_frozen","order":18,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":13}},{"name":"starting_west_index","order":7,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":15}},{"name":"starting_west_index_frozen","order":20,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":15}},{"name":"west_index","order":2,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":2}},{"name":"west_index_frozen","order":15,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":2}}]},{"name":"TransportBeltAnimationSetWithCorners","order":607,"description":"","parent":"TransportBeltAnimationSet","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"east_to_north_index","order":0,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":5}},{"name":"east_to_north_index_frozen","order":8,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":5}},{"name":"east_to_south_index","order":5,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"east_to_south_index_frozen","order":13,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"north_to_east_index","order":1,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":6}},{"name":"north_to_east_index_frozen","order":9,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":6}},{"name":"north_to_west_index","order":3,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":8}},{"name":"north_to_west_index_frozen","order":11,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":8}},{"name":"south_to_east_index","order":4,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":9}},{"name":"south_to_east_index_frozen","order":12,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":9}},{"name":"south_to_west_index","order":6,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":11}},{"name":"south_to_west_index_frozen","order":14,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":11}},{"name":"west_to_north_index","order":2,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":7}},{"name":"west_to_north_index_frozen","order":10,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":7}},{"name":"west_to_south_index","order":7,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":12}},{"name":"west_to_south_index_frozen","order":15,"description":"Only loaded if `frozen_patch` is defined.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":12}}]},{"name":"TransportBeltConnectorFrame","order":608,"description":"Used to define the graphics for the (in vanilla) yellow frame that is used when a [TransportBeltPrototype](prototype:TransportBeltPrototype) is connected to the circuit network.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"frame_back_patch","order":22,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"frame_front_patch","order":23,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"frame_main","order":0,"description":"","override":false,"type":"AnimationVariations","optional":false},{"name":"frame_main_scanner","order":2,"description":"","override":false,"type":"Animation","optional":false},{"name":"frame_main_scanner_cross_horizontal_end_shift","order":13,"description":"","override":false,"type":"Vector","optional":false},{"name":"frame_main_scanner_cross_horizontal_rotation","order":15,"description":"","override":false,"type":"RealOrientation","optional":false},{"name":"frame_main_scanner_cross_horizontal_start_shift","order":12,"description":"","override":false,"type":"Vector","optional":false},{"name":"frame_main_scanner_cross_horizontal_y_scale","order":14,"description":"","override":false,"type":"float","optional":false},{"name":"frame_main_scanner_cross_vertical_end_shift","order":17,"description":"","override":false,"type":"Vector","optional":false},{"name":"frame_main_scanner_cross_vertical_rotation","order":19,"description":"","override":false,"type":"RealOrientation","optional":false},{"name":"frame_main_scanner_cross_vertical_start_shift","order":16,"description":"","override":false,"type":"Vector","optional":false},{"name":"frame_main_scanner_cross_vertical_y_scale","order":18,"description":"","override":false,"type":"float","optional":false},{"name":"frame_main_scanner_horizontal_end_shift","order":5,"description":"","override":false,"type":"Vector","optional":false},{"name":"frame_main_scanner_horizontal_rotation","order":7,"description":"","override":false,"type":"RealOrientation","optional":false},{"name":"frame_main_scanner_horizontal_start_shift","order":4,"description":"","override":false,"type":"Vector","optional":false},{"name":"frame_main_scanner_horizontal_y_scale","order":6,"description":"","override":false,"type":"float","optional":false},{"name":"frame_main_scanner_movement_speed","order":3,"description":"","override":false,"type":"float","optional":false},{"name":"frame_main_scanner_nw_ne","order":20,"description":"","override":false,"type":"Animation","optional":false},{"name":"frame_main_scanner_sw_se","order":21,"description":"","override":false,"type":"Animation","optional":false},{"name":"frame_main_scanner_vertical_end_shift","order":9,"description":"","override":false,"type":"Vector","optional":false},{"name":"frame_main_scanner_vertical_rotation","order":11,"description":"","override":false,"type":"RealOrientation","optional":false},{"name":"frame_main_scanner_vertical_start_shift","order":8,"description":"","override":false,"type":"Vector","optional":false},{"name":"frame_main_scanner_vertical_y_scale","order":10,"description":"","override":false,"type":"float","optional":false},{"name":"frame_shadow","order":1,"description":"","override":false,"type":"AnimationVariations","optional":false}]},{"name":"TreeVariation","order":609,"description":"Tree has number of \"dying\" stages, which is deduced from frame count of `shadow` if shadow is defined, otherwise from frame count of `trunk`. Frame count of `leaves` has to be one less than deduced number stages, as last stage is always assumed to be leafless.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"branch_generation","order":3,"description":"","override":false,"type":"CreateParticleTriggerEffectItem","optional":false},{"name":"branches_when_damaged","order":16,"description":"This value is multiplied with the percent of health lost.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"branches_when_destroyed","order":17,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":15}},{"name":"branches_when_mined_automatically","order":15,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":8}},{"name":"branches_when_mined_manually","order":14,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":15}},{"name":"disable_shadow_distortion_beginning_at_frame","order":5,"description":"Only loaded if `shadow` is present. Defaults to `shadow.frame_count - 1`.","override":false,"type":"uint32","optional":true},{"name":"leaf_generation","order":2,"description":"","override":false,"type":"CreateParticleTriggerEffectItem","optional":false},{"name":"leaves","order":1,"description":"","override":false,"type":"Animation","optional":false},{"name":"leaves_when_damaged","order":12,"description":"This value is multiplied with the percent of health lost.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":200}},{"name":"leaves_when_destroyed","order":13,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":40}},{"name":"leaves_when_mined_automatically","order":11,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":20}},{"name":"leaves_when_mined_manually","order":10,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":40}},{"name":"normal","order":6,"description":"Normal must have the same frame_count as `leaves`.","override":false,"type":"Animation","optional":true},{"name":"overlay","order":7,"description":"Overlay must have the same frame_count as `leaves`. Won't be tinted by the tree color unless `apply_runtime_tint` is set to `true` in the sprite definition. See [here](https://forums.factorio.com/viewtopic.php?p=547758#p547758).","override":false,"type":"Animation","optional":true},{"name":"shadow","order":4,"description":"Shadow must have 1 more `frame_count` than `leaves`.","override":false,"type":"Animation","optional":true},{"name":"trunk","order":0,"description":"If `shadow` is not specified, this has to have one more frame than `leaves`.","override":false,"type":"Animation","optional":false},{"name":"underwater","order":8,"description":"","override":false,"type":"Animation","optional":true},{"name":"underwater_layer_offset","order":9,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"water_reflection","order":18,"description":"","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"Trigger","order":610,"description":"Loaded as one of the [TriggerItem](prototype:TriggerItem) extensions, based on the value of the `type` key.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"union","options":[{"complex_type":"type","value":"DirectTriggerItem","description":"Loaded when the `type` is `\"direct\"`."},{"complex_type":"type","value":"AreaTriggerItem","description":"Loaded when the `type` is `\"area\"`."},{"complex_type":"type","value":"LineTriggerItem","description":"Loaded when the `type` is `\"line\"`."},{"complex_type":"type","value":"ClusterTriggerItem","description":"Loaded when the `type` is `\"cluster\"`."}],"full_format":true},{"complex_type":"array","value":{"complex_type":"union","options":[{"complex_type":"type","value":"DirectTriggerItem","description":"Loaded when the `type` is `\"direct\"`."},{"complex_type":"type","value":"AreaTriggerItem","description":"Loaded when the `type` is `\"area\"`."},{"complex_type":"type","value":"LineTriggerItem","description":"Loaded when the `type` is `\"line\"`."},{"complex_type":"type","value":"ClusterTriggerItem","description":"Loaded when the `type` is `\"cluster\"`."}],"full_format":true}}],"full_format":false}},{"name":"TriggerDelivery","order":611,"description":"Loaded as one of the [TriggerDeliveryItem](prototype:TriggerDeliveryItem) extensions, based on the value of the `type` key.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"type","value":"InstantTriggerDelivery","description":"Loaded when the `type` is `\"instant\"`."},{"complex_type":"type","value":"ProjectileTriggerDelivery","description":"Loaded when the `type` is `\"projectile\"`."},{"complex_type":"type","value":"BeamTriggerDelivery","description":"Loaded when the `type` is `\"beam\"`."},{"complex_type":"type","value":"StreamTriggerDelivery","description":"Loaded when the `type` is `\"stream\"`."},{"complex_type":"type","value":"ArtilleryTriggerDelivery","description":"Loaded when the `type` is `\"artillery\"`."},{"complex_type":"type","value":"ChainTriggerDelivery","description":"Loaded when the `type` is `\"chain\"`."},{"complex_type":"type","value":"DelayedTriggerDelivery","description":"Loaded when the `type` is `\"delayed\"`."}],"full_format":true}},{"name":"TriggerDeliveryItem","order":612,"description":"The abstract base of all [TriggerDeliveries](prototype:TriggerDelivery).","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"source_effects","order":0,"description":"Provides the source of the TriggerDelivery as as both the source and target of the effect.","override":false,"type":"TriggerEffect","optional":true},{"name":"target_effects","order":1,"description":"","override":false,"type":"TriggerEffect","optional":true}]},{"name":"TriggerEffect","order":613,"description":"Loaded as one of the [TriggerEffectItem](prototype:TriggerEffectItem) extensions, based on the value of the `type` key.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"union","options":[{"complex_type":"type","value":"DamageEntityTriggerEffectItem","description":"Loaded when the `type` is `\"damage\"`."},{"complex_type":"type","value":"DamageTileTriggerEffectItem","description":"Loaded when the `type` is `\"damage-tile\"`."},{"complex_type":"type","value":"CreateEntityTriggerEffectItem","description":"Loaded when the `type` is `\"create-entity\"`."},{"complex_type":"type","value":"CreateExplosionTriggerEffectItem","description":"Loaded when the `type` is `\"create-explosion\"`."},{"complex_type":"type","value":"CreateFireTriggerEffectItem","description":"Loaded when the `type` is `\"create-fire\"`."},{"complex_type":"type","value":"CreateSmokeTriggerEffectItem","description":"Loaded when the `type` is `\"create-smoke\"`."},{"complex_type":"type","value":"CreateTrivialSmokeEffectItem","description":"Loaded when the `type` is `\"create-trivial-smoke\"`."},{"complex_type":"type","value":"CreateAsteroidChunkEffectItem","description":"Loaded when the `type` is `\"create-asteroid-chunk\"`."},{"complex_type":"type","value":"CreateParticleTriggerEffectItem","description":"Loaded when the `type` is `\"create-particle\"`."},{"complex_type":"type","value":"CreateStickerTriggerEffectItem","description":"Loaded when the `type` is `\"create-sticker\"`."},{"complex_type":"type","value":"CreateDecorativesTriggerEffectItem","description":"Loaded when the `type` is `\"create-decorative\"`."},{"complex_type":"type","value":"NestedTriggerEffectItem","description":"Loaded when the `type` is `\"nested-result\"`."},{"complex_type":"type","value":"PlaySoundTriggerEffectItem","description":"Loaded when the `type` is `\"play-sound\"`."},{"complex_type":"type","value":"PushBackTriggerEffectItem","description":"Loaded when the `type` is `\"push-back\"`."},{"complex_type":"type","value":"DestroyCliffsTriggerEffectItem","description":"Loaded when the `type` is `\"destroy-cliffs\"`."},{"complex_type":"type","value":"ShowExplosionOnChartTriggerEffectItem","description":"Loaded when the `type` is `\"show-explosion-on-chart\"`."},{"complex_type":"type","value":"InsertItemTriggerEffectItem","description":"Loaded when the `type` is `\"insert-item\"`."},{"complex_type":"type","value":"ScriptTriggerEffectItem","description":"Loaded when the `type` is `\"script\"`."},{"complex_type":"type","value":"SetTileTriggerEffectItem","description":"Loaded when the `type` is `\"set-tile\"`."},{"complex_type":"type","value":"InvokeTileEffectTriggerEffectItem","description":"Loaded when the `type` is `\"invoke-tile-trigger\"`."},{"complex_type":"type","value":"DestroyDecorativesTriggerEffectItem","description":"Loaded when the `type` is `\"destroy-decoratives\"`."},{"complex_type":"type","value":"CameraEffectTriggerEffectItem","description":"Loaded when the `type` is `\"camera-effect\"`."},{"complex_type":"type","value":"ActivateImpactTriggerEffectItem","description":"Loaded when the `type` is `\"activate-impact\"`."}],"full_format":true},{"complex_type":"array","value":{"complex_type":"union","options":[{"complex_type":"type","value":"DamageEntityTriggerEffectItem","description":"Loaded when the `type` is `\"damage\"`."},{"complex_type":"type","value":"DamageTileTriggerEffectItem","description":"Loaded when the `type` is `\"damage-tile\"`."},{"complex_type":"type","value":"CreateEntityTriggerEffectItem","description":"Loaded when the `type` is `\"create-entity\"`."},{"complex_type":"type","value":"CreateExplosionTriggerEffectItem","description":"Loaded when the `type` is `\"create-explosion\"`."},{"complex_type":"type","value":"CreateFireTriggerEffectItem","description":"Loaded when the `type` is `\"create-fire\"`."},{"complex_type":"type","value":"CreateSmokeTriggerEffectItem","description":"Loaded when the `type` is `\"create-smoke\"`."},{"complex_type":"type","value":"CreateTrivialSmokeEffectItem","description":"Loaded when the `type` is `\"create-trivial-smoke\"`."},{"complex_type":"type","value":"CreateAsteroidChunkEffectItem","description":"Loaded when the `type` is `\"create-asteroid-chunk\"`."},{"complex_type":"type","value":"CreateParticleTriggerEffectItem","description":"Loaded when the `type` is `\"create-particle\"`."},{"complex_type":"type","value":"CreateStickerTriggerEffectItem","description":"Loaded when the `type` is `\"create-sticker\"`."},{"complex_type":"type","value":"CreateDecorativesTriggerEffectItem","description":"Loaded when the `type` is `\"create-decorative\"`."},{"complex_type":"type","value":"NestedTriggerEffectItem","description":"Loaded when the `type` is `\"nested-result\"`."},{"complex_type":"type","value":"PlaySoundTriggerEffectItem","description":"Loaded when the `type` is `\"play-sound\"`."},{"complex_type":"type","value":"PushBackTriggerEffectItem","description":"Loaded when the `type` is `\"push-back\"`."},{"complex_type":"type","value":"DestroyCliffsTriggerEffectItem","description":"Loaded when the `type` is `\"destroy-cliffs\"`."},{"complex_type":"type","value":"ShowExplosionOnChartTriggerEffectItem","description":"Loaded when the `type` is `\"show-explosion-on-chart\"`."},{"complex_type":"type","value":"InsertItemTriggerEffectItem","description":"Loaded when the `type` is `\"insert-item\"`."},{"complex_type":"type","value":"ScriptTriggerEffectItem","description":"Loaded when the `type` is `\"script\"`."},{"complex_type":"type","value":"SetTileTriggerEffectItem","description":"Loaded when the `type` is `\"set-tile\"`."},{"complex_type":"type","value":"InvokeTileEffectTriggerEffectItem","description":"Loaded when the `type` is `\"invoke-tile-trigger\"`."},{"complex_type":"type","value":"DestroyDecorativesTriggerEffectItem","description":"Loaded when the `type` is `\"destroy-decoratives\"`."},{"complex_type":"type","value":"CameraEffectTriggerEffectItem","description":"Loaded when the `type` is `\"camera-effect\"`."},{"complex_type":"type","value":"ActivateImpactTriggerEffectItem","description":"Loaded when the `type` is `\"activate-impact\"`."}],"full_format":true}}],"full_format":false}},{"name":"TriggerEffectItem","order":614,"description":"The abstract base of all [TriggerEffects](prototype:TriggerEffect).","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"affects_target","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"damage_type_filters","order":5,"description":"Guaranteed to work with [EntityWithHealthPrototype::damaged_trigger_effect](prototype:EntityWithHealthPrototype::damaged_trigger_effect) and [EntityWithHealthPrototype::dying_trigger_effect](prototype:EntityWithHealthPrototype::dying_trigger_effect). Unknown if it works with other properties that use [TriggerEffect](prototype:TriggerEffect).","override":false,"type":"DamageTypeFilters","optional":true},{"name":"probability","order":2,"description":"Must be greater than `0` and less than or equal to `1`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"repeat_count","order":0,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"repeat_count_deviation","order":1,"description":"","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"show_in_tooltip","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"TriggerEffectWithCooldown","order":615,"description":"A [TriggerEffect](prototype:TriggerEffect) with cooldown conditions, used to limit the frequency of trigger effects that would otherwise fire every single tick. If multiple cooldown conditions are defined, then all cooldowns must be satisfied before the effect can be triggered.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"distance_cooldown","order":0,"description":"The travel distance between triggers that the triggerer must travel between effects. Negative values will mean there is no cooldown.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"effect","order":4,"description":"","override":false,"type":"TriggerEffect","optional":false},{"name":"initial_distance_cooldown","order":1,"description":"The initial state of the distance cooldown. In other words, the distance the triggerer must travel before the first effect can be triggered. Useful for staggering multiple effects.","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"initial_time_cooldown","order":3,"description":"The initial amount of time to wait before triggering the effect for the first time.","override":false,"type":"MapTick","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"time_cooldown","order":2,"description":"The number of ticks that elapse between triggers.","override":false,"type":"MapTick","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"TriggerItem","order":616,"description":"The abstract base of all [Triggers](prototype:Trigger).","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"action_delivery","order":6,"description":"","override":false,"type":{"complex_type":"union","options":["TriggerDelivery",{"complex_type":"array","value":"TriggerDelivery"}],"full_format":false},"optional":true},{"name":"collision_mask","order":1,"description":"Only prototypes with these collision masks are affected by the trigger item.","override":false,"type":"CollisionMaskConnector","optional":true,"default":"All masks"},{"name":"entity_flags","order":0,"description":"Only prototypes with these flags are affected by the trigger item.","override":false,"type":"EntityPrototypeFlags","optional":true,"default":"All flags"},{"name":"force","order":7,"description":"Only entities meeting the force condition are affected by the trigger item.","override":false,"type":"ForceCondition","optional":true,"default":"All forces"},{"name":"ignore_collision_condition","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"probability","order":5,"description":"Must be greater than 0 and less than or equal to 1.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"repeat_count","order":4,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"trigger_target_mask","order":3,"description":"The trigger affects only prototypes with these masks.","override":false,"type":"TriggerTargetMask","optional":true,"default":"Everything"}]},{"name":"TriggerTargetMask","order":617,"description":"An array of names of [TriggerTargetType](prototype:TriggerTargetType). See [Design discussion: Trigger target type](https://forums.factorio.com/71657) and [Blacklist for prototypes turrets shouldn't attack](https://forums.factorio.com/86164).","abstract":false,"inline":false,"type":{"complex_type":"array","value":"string"}},{"name":"TrivialSmokeID","order":618,"description":"The name of a [TrivialSmokePrototype](prototype:TrivialSmokePrototype).","examples":["```\n\"smoke-building\"\n```","```\n\"nuclear-smoke\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"TurretAttackModifier","order":619,"description":"","parent":"BaseModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"modifier","order":4,"description":"Modification value, which will be added to the current turret attack modifier upon researching.","override":false,"type":"double","optional":false},{"name":"turret_id","order":3,"description":"Name of the [EntityPrototype](prototype:EntityPrototype) that is affected. This also works for non-turrets such as tanks, however, the bonus does not appear in the entity's tooltips.","override":false,"type":"EntityID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"turret-attack"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"TurretBaseVisualisation","order":620,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation","order":9,"description":"","override":false,"type":"Animation4Way","optional":false},{"name":"draw_when_frozen","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_when_has_ammo","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_when_has_energy","order":3,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_when_no_ammo","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_when_no_energy","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"draw_when_not_frozen","order":8,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"enabled_states","order":2,"description":"If not defined, visualisation will be drawn in all states.","override":false,"type":{"complex_type":"array","value":"TurretState"},"optional":true},{"name":"render_layer","order":0,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"lower-object"}},{"name":"secondary_draw_order","order":1,"description":"","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}}]},{"name":"TurretGraphicsSet","order":621,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"base_visualisation","order":0,"description":"","override":false,"type":{"complex_type":"union","options":["TurretBaseVisualisation",{"complex_type":"array","value":"TurretBaseVisualisation"}],"full_format":false},"optional":true},{"name":"water_reflection","order":1,"description":"Refer to [EntityPrototype::water_reflection](prototype:EntityPrototype::water_reflection).","override":false,"type":"WaterReflectionDefinition","optional":true}]},{"name":"TurretSpecialEffect","order":622,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"attacking_falloff","order":7,"description":"Only loaded if `type` is `\"mask-by-circle\"`.","override":false,"type":"float","optional":true},{"name":"attacking_max_radius","order":6,"description":"Only loaded if `type` is `\"mask-by-circle\"`.","override":false,"type":"float","optional":true},{"name":"attacking_min_radius","order":5,"description":"Only loaded if `type` is `\"mask-by-circle\"`.","override":false,"type":"float","optional":true},{"name":"center","order":1,"description":"","override":false,"type":"TurretSpecialEffectCenter","optional":true},{"name":"falloff","order":4,"description":"Only loaded if `type` is `\"mask-by-circle\"`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"max_radius","order":3,"description":"Only loaded, and mandatory if `type` is `\"mask-by-circle\"`.","override":false,"type":"float","optional":true},{"name":"min_radius","order":2,"description":"Only loaded if `type` is `\"mask-by-circle\"`.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"mask-by-circle"},"optional":false}]},{"name":"TurretSpecialEffectCenter","order":623,"description":"If this is loaded as a single Vector, it is used for all directions.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"Vector"],"full_format":false},"properties":[{"name":"default","order":0,"description":"","override":false,"type":"Vector","optional":true},{"name":"east","order":3,"description":"","override":false,"type":"Vector","optional":true},{"name":"north","order":1,"description":"","override":false,"type":"Vector","optional":true},{"name":"north_east","order":2,"description":"","override":false,"type":"Vector","optional":true},{"name":"north_west","order":8,"description":"","override":false,"type":"Vector","optional":true},{"name":"south","order":5,"description":"","override":false,"type":"Vector","optional":true},{"name":"south_east","order":4,"description":"","override":false,"type":"Vector","optional":true},{"name":"south_west","order":6,"description":"","override":false,"type":"Vector","optional":true},{"name":"west","order":7,"description":"","override":false,"type":"Vector","optional":true}]},{"name":"TurretState","order":624,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"folded","description":""},{"complex_type":"literal","value":"preparing","description":""},{"complex_type":"literal","value":"prepared","description":""},{"complex_type":"literal","value":"starting-attack","description":""},{"complex_type":"literal","value":"attacking","description":""},{"complex_type":"literal","value":"ending-attack","description":""},{"complex_type":"literal","value":"rotate-for-folding","description":""},{"complex_type":"literal","value":"folding","description":""}],"full_format":true}},{"name":"UndergroundBeltStructure","order":625,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"back_patch","order":2,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"direction_in","order":0,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"direction_in_side_loading","order":4,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"direction_out","order":1,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"direction_out_side_loading","order":5,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"front_patch","order":3,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"frozen_patch_in","order":6,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"frozen_patch_out","order":7,"description":"","override":false,"type":"Sprite4Way","optional":true}]},{"name":"UnitAISettings","order":626,"description":"Used by [UnitPrototype](prototype:UnitPrototype) and [SpiderUnitPrototype](prototype:SpiderUnitPrototype).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"allow_try_return_to_spawner","order":1,"description":"If enabled, units that have nothing else to do will attempt to return to a spawner.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"destroy_when_commands_fail","order":0,"description":"If enabled, units that repeatedly fail to succeed at commands will be destroyed.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"do_separation","order":2,"description":"If enabled, units will try to separate themselves from nearby friendly units.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"join_attacks","order":6,"description":"If enabled, the unit is permitted to join attack groups.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"path_resolution_modifier","order":3,"description":"Must be between -8 and 8.","override":false,"type":"int8","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"size_in_group","order":5,"description":"The amount of slots in a unit group this unit takes up. For example, a unit with `groupingSize` of 2 will count as 2 normal-sized units when filling up a unit group. Must be greater than 0.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1.0}},{"name":"strafe_settings","order":4,"description":"","override":false,"type":"PrototypeStrafeSettings","optional":true}]},{"name":"UnitAlternativeFrameSequence","order":627,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"attacking_animation_speed","order":7,"description":"","override":false,"type":"float","optional":false},{"name":"attacking_frame_sequence","order":2,"description":"Indices of frames from the attack parameter animation.","override":false,"type":{"complex_type":"array","value":"uint16"},"optional":false},{"name":"back_to_walk_animation_speed","order":10,"description":"","override":false,"type":"float","optional":false},{"name":"back_to_walk_frame_sequence","order":5,"description":"Indices of frames from the attack parameter animation.","override":false,"type":{"complex_type":"array","value":"uint16"},"optional":false},{"name":"cooldown_animation_speed","order":8,"description":"","override":false,"type":"float","optional":false},{"name":"cooldown_frame_sequence","order":3,"description":"Indices of frames from the attack parameter animation.","override":false,"type":{"complex_type":"array","value":"uint16"},"optional":false},{"name":"prepared_animation_speed","order":9,"description":"","override":false,"type":"float","optional":false},{"name":"prepared_frame_sequence","order":4,"description":"Indices of frames from the attack parameter animation.","override":false,"type":{"complex_type":"array","value":"uint16"},"optional":false},{"name":"warmup2_frame_sequence","order":1,"description":"Indices of frames from the attack parameter animation.","override":false,"type":{"complex_type":"array","value":"uint16"},"optional":false},{"name":"warmup_animation_speed","order":6,"description":"","override":false,"type":"float","optional":false},{"name":"warmup_frame_sequence","order":0,"description":"Indices of frames from the attack parameter animation.","override":false,"type":{"complex_type":"array","value":"uint16"},"optional":false}]},{"name":"UnitGroupSettings","order":628,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"max_gathering_unit_groups","order":11,"description":"Maximum number of automatically created unit groups gathering for attack at any time.","override":false,"type":"uint32","optional":false},{"name":"max_group_gathering_time","order":1,"description":"","override":false,"type":"uint32","optional":false},{"name":"max_group_member_fallback_factor","order":8,"description":"If a member falls behind more than this times the group radius, the group will slow down to max_group_slowdown_factor.","override":false,"type":"double","optional":false},{"name":"max_group_radius","order":3,"description":"Limits for group radius (calculated by number of numbers).","override":false,"type":"double","optional":false},{"name":"max_group_slowdown_factor","order":7,"description":"When members of a group are behind, the entire group will slow down to at most this factor of its max speed.","override":false,"type":"double","optional":false},{"name":"max_member_slowdown_when_ahead","order":6,"description":"When a member gets ahead of its group, it will slow down to at most this factor of its speed.","override":false,"type":"double","optional":false},{"name":"max_member_speedup_when_behind","order":5,"description":"When a member falls behind the group he can speedup up till this much of his regular speed.","override":false,"type":"double","optional":false},{"name":"max_unit_group_size","order":12,"description":"Maximum size of an attack unit group. This only affects automatically-created unit groups; manual groups created through the API are unaffected.","override":false,"type":"uint32","optional":false},{"name":"max_wait_time_for_late_members","order":2,"description":"After the gathering is finished the group can still wait for late members, but it doesn't accept new ones anymore.","override":false,"type":"uint32","optional":false},{"name":"member_disown_distance","order":9,"description":"If a member falls behind more than this time the group radius, it will be removed from the group.","override":false,"type":"double","optional":false},{"name":"min_group_gathering_time","order":0,"description":"Pollution triggered group waiting time is a random time between min and max gathering time","override":false,"type":"uint32","optional":false},{"name":"min_group_radius","order":4,"description":"","override":false,"type":"double","optional":false},{"name":"tick_tolerance_when_member_arrives","order":10,"description":"","override":false,"type":"uint32","optional":false}]},{"name":"UnitSpawnDefinition","order":629,"description":"It can be specified as a table with named or numbered keys, but not a mix of both. If this is specified as a table with numbered keys then the first value is the unit and the second is the spawn points.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["EntityID",{"complex_type":"array","value":"SpawnPoint"}]}],"full_format":false},"properties":[{"name":"spawn_points","order":1,"description":"Array of evolution and probability info, with the following conditions:\n\n- The `evolution_factor` must be ascending from entry to entry.\n\n- The last entry's weight will be used when the `evolution_factor` is larger than the last entry.\n\n- Weights are linearly interpolated between entries.\n\n- Individual weights are scaled linearly so that the cumulative weight is `1`.","override":false,"type":{"complex_type":"array","value":"SpawnPoint"},"optional":false},{"name":"unit","order":0,"description":"","override":false,"type":"EntityID","optional":false}]},{"name":"UnlockQualityModifier","order":630,"description":"","parent":"BaseModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"quality","order":2,"description":"","override":false,"type":"QualityID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"unlock-quality"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"UnlockRecipeModifier","order":631,"description":"","parent":"BaseModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"recipe","order":2,"description":"Prototype name of the [RecipePrototype](prototype:RecipePrototype) that is unlocked upon researching.","override":false,"type":"RecipeID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"unlock-recipe"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"UnlockRecipeTipTrigger","order":632,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"recipe","order":1,"description":"","override":false,"type":"RecipeID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"unlock-recipe"},"optional":false}]},{"name":"UnlockSpaceLocationModifier","order":633,"description":"","parent":"BaseModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"space_location","order":2,"description":"","override":false,"type":"SpaceLocationID","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"unlock-space-location"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"UseConfirmTipTrigger","order":634,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"use-confirm"},"optional":false}]},{"name":"UseOnSelfCapsuleAction","order":635,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"attack_parameters","order":1,"description":"","override":false,"type":"AttackParameters","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"use-on-self"},"optional":false},{"name":"uses_stack","order":2,"description":"Whether using the capsule consumes an item from the stack.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"UsePipetteTipTrigger","order":636,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"use-pipette"},"optional":false}]},{"name":"UseRailPlannerTipTrigger","order":637,"description":"","parent":"CountBasedTipTrigger","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"build_mode","order":1,"description":"","override":false,"type":"BuildMode","optional":false},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"use-rail-planner"},"optional":false}]},{"name":"ValveMode","order":638,"description":"Defines the mode of operation for a [ValvePrototype](prototype:ValvePrototype).","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"one-way","description":"Fluid will flow if input level > output level."},{"complex_type":"literal","value":"overflow","description":"Fluid will flow if input level > [ValvePrototype::threshold](prototype:ValvePrototype::threshold) and input level > output level."},{"complex_type":"literal","value":"top-up","description":"Fluid will flow if output level < [ValvePrototype::threshold](prototype:ValvePrototype::threshold) and input level > output level."}],"full_format":true}},{"name":"VariableAmbientSoundCompositionMode","order":639,"description":"Defines how are individual samples selected and played after each other.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"randomized","description":"Samples are selected randomly. The same sample cannot be repeated twice in a row."},{"complex_type":"literal","value":"semi-randomized","description":"Samples are selected in a repeating randomly selected sequence of a given length. The sequence is generated on each state transition. The same sample cannot be repeated twice in a row."},{"complex_type":"literal","value":"shuffled","description":"Samples are selected in a repeating sequence in which each sample is played once."},{"complex_type":"literal","value":"layer-controlled","description":"Samples are selected based on a sample currently playing in a different layer."}],"full_format":true}},{"name":"VariableAmbientSoundLayer","order":640,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"composition_mode","order":2,"description":"","override":false,"type":"VariableAmbientSoundCompositionMode","optional":false},{"name":"control_layer","order":3,"description":"Name of a layer which controls this layer, a layer cannot control itself.\n\nOnly loaded, and mandatory if `composition_mode` is `\"layer-controlled\"`.","override":false,"type":"string","optional":true},{"name":"control_layer_sample_mapping","order":4,"description":"Defines a mapping between controlling layer's samples and this (controlled) layer's samples. The number of items in the mapping must be the same as the number of samples in the controlling layer. Item in the mapping with index N defines which samples of this layer can play when the sample N is playing in the controlling layer.\n\nOnly loaded, and mandatory if `composition_mode` is `\"layer-controlled\"`.","override":false,"type":{"complex_type":"array","value":{"complex_type":"array","value":"uint8"}},"optional":true},{"name":"has_end_sample","order":6,"description":"If `true`, the last of [Sound::variations](prototype:Sound::variations) is played at the end of a sequence (if the sequence is long enough). The end sample counts towards the [VariableAmbientSoundLayerStateProperties::sequence_length](prototype:VariableAmbientSoundLayerStateProperties::sequence_length).","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"has_start_sample","order":5,"description":"If `true`, the first of [Sound::variations](prototype:Sound::variations) is played at the start of a sequence. The start sample counts towards the [VariableAmbientSoundLayerStateProperties::sequence_length](prototype:VariableAmbientSoundLayerStateProperties::sequence_length)","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"name","order":0,"description":"Name has to be unique across all layers.","override":false,"type":"string","optional":false},{"name":"number_of_sublayers","order":7,"description":"If greater than one, samples are composed in overlapping sub-layers, offset from each other.\n\nIf greater than one, one of `sublayer_starting_offset` or `sublayer_offset` must be defined. Both cannot be defined together.\n\nCannot be defined for layers with `\"shuffled\"` `composition_mode`.\n\nCannot be zero.","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"sample_length","order":10,"description":"Explicitly defines sample lengths. The whole sample is played when this is not specified.\n\nCannot be defined together with `sublayer_offset`.\n\nThe minimum cannot be zero.","override":false,"type":"RandomRange","optional":true},{"name":"sublayer_offset","order":9,"description":"Specifies offset between two sub-layers' samples.\n\nThis implicitly dictates the sample lengths as two sub-layer offsets.\n\nOnly loaded if `number_of_sublayers` is greater than one.\n\nCannot be defined together with `sublayer_starting_offset`.\n\nThe minimum of [RandomRange](prototype:RandomRange) variant cannot be zero.","override":false,"type":{"complex_type":"union","options":["RandomRange","ProbabilityTable"],"full_format":false},"optional":true},{"name":"sublayer_starting_offset","order":8,"description":"Specifies starting offset of the second sub-layer.\n\nOnly loaded if `number_of_sublayers` is greater than one.\n\nCannot be defined together with `sublayer_offset`.\n\nThe minimum of [RandomRange](prototype:RandomRange) variant cannot be zero.","override":false,"type":{"complex_type":"union","options":["RandomRange","ProbabilityTable"],"full_format":false},"optional":true},{"name":"variants","order":1,"description":"Cannot be empty.\n\nSamples within a layer are the [Sound::variations](prototype:Sound::variations).\n\nNumber of samples must be the same across all variants.\n\nSamples cannot have variable volume and all samples must have the same default volume.","override":false,"type":{"complex_type":"array","value":"Sound"},"optional":false}]},{"name":"VariableAmbientSoundLayerSample","order":641,"description":"First property is the name of a layer.\n\nSecond property is the sample index.","abstract":false,"inline":false,"type":{"complex_type":"tuple","values":["string","uint32"]}},{"name":"VariableAmbientSoundLayerStateProperties","order":642,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"enabled","order":0,"description":"","override":false,"type":"boolean","optional":true},{"name":"end_pause","order":7,"description":"Pause before a layer finishes playing. The last repetition and consequently the layer being finished is not counted until the pause finishes.","override":false,"type":"RandomRange","optional":true},{"name":"number_of_repetitions","order":3,"description":"The number of times a layer repeats itself until it's considered finished. If it's not defined, the layer never finishes on its own. What counts as repetition depends on the [VariableAmbientSoundCompositionMode](prototype:VariableAmbientSoundCompositionMode).\n\nEach sample played is counted as a repetition of `\"randomized\"` layer.\n\nRepetition of `\"semi-randomized\"` layer is counted when its sequence is finished.\n\nRepetition of `\"shuffled\"` layer is counted when all samples play once.\n\nEach sample played is counted as a repetition of `\"layer-controlled\"` layer.\n\nIf `number_of_repetitions` of [VariableAmbientSoundLayer::control_layer](prototype:VariableAmbientSoundLayer::control_layer) of `\"layer-controlled\"` layer is smaller than `number_of_repetitions` of the controlled layer, `number_of_repetitions` of the control layer is used for the purposes of `pause_between_repetitions` and `end_pause`.\n\nCannot be zero.","override":false,"type":{"complex_type":"union","options":["RandomRange","ProbabilityTable"],"full_format":false},"optional":true},{"name":"pause_between_repetitions","order":6,"description":"Pause between each repetition of a layer. The repetition is not counted until the pause finishes.","override":false,"type":"RandomRange","optional":true},{"name":"pause_between_samples","order":5,"description":"Pause between individual samples within a sequence.\n\nCannot be defined for `\"randomized\"` layers without defining `sequence_length` as well. Alternatively, use `pause_between_repetitions` instead.\n\nCannot be defined for layers with `sublayer_offset` defined.","override":false,"type":"RandomRange","optional":true},{"name":"sequence_length","order":2,"description":"Number of samples in a sequence.\n\nThe minimum cannot be zero.\n\nMandatory for layers with `\"semi-randomized\"` [VariableAmbientSoundCompositionMode](prototype:VariableAmbientSoundCompositionMode).\n\nApplicable for layers with `\"randomized\"` [VariableAmbientSoundCompositionMode](prototype:VariableAmbientSoundCompositionMode).\n\nCannot be defined for layers with `\"shuffled\"` [VariableAmbientSoundCompositionMode](prototype:VariableAmbientSoundCompositionMode).","override":false,"type":"RandomRange","optional":true},{"name":"silence_instead_of_sample_probability","order":8,"description":"A sample replaced by silence still counts as played for the purposes of sequence count, repetition count, pauses, etc.\n\nMust be in the `[0.0, 1.0]` interval.","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"start_pause","order":4,"description":"Pause before a layer starts playing.","override":false,"type":"RandomRange","optional":true},{"name":"variant","order":1,"description":"Index of a layer's variant.\n\nCannot be zero.","override":false,"type":"uint8","optional":true}]},{"name":"VariableAmbientSoundNextStateConditions","order":643,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"layer_sample","order":1,"description":"Specified sample must be playing in the specified layer.","override":false,"type":"VariableAmbientSoundLayerSample","optional":true},{"name":"previous_state","order":2,"description":"","override":false,"type":"string","optional":true},{"name":"weight","order":0,"description":"Cannot be zero.","override":false,"type":"uint32","optional":false}]},{"name":"VariableAmbientSoundNextStateItem","order":644,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"conditions","order":1,"description":"Transition to `state` is possible only if all conditions are met.","override":false,"type":"VariableAmbientSoundNextStateConditions","optional":false},{"name":"state","order":0,"description":"Name of the state.","override":false,"type":"string","optional":false}]},{"name":"VariableAmbientSoundNextStateTrigger","order":645,"description":"Defines how a transition to next state is triggered.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"layers-finished","description":"Next state is triggered when all specified layers finish playing."},{"complex_type":"literal","value":"duration","description":"Next state is triggered after a set time."}],"full_format":true}},{"name":"VariableAmbientSoundState","order":646,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"end_pause","order":9,"description":"Pause before a layer finishes playing. The layer being finished is not counted until the pause finishes.\n\nOptionally loaded for `intermezzo` states.","override":false,"type":"RandomRange","optional":true},{"name":"layers_properties","order":7,"description":"Must contain as many items as there is layers in the variable track. The items themselves can be empty. The order of items corresponds to the order of layers as they appear in the prototype definition.\n\nMandatory for `regular` and `final` states.\n\nCannot be defined for `intermezzo` or `stop` states.","override":false,"type":{"complex_type":"array","value":"VariableAmbientSoundLayerStateProperties"},"optional":true},{"name":"name","order":0,"description":"Name has to be unique across all states.","override":false,"type":"string","optional":false},{"name":"next_state","order":2,"description":"Cannot be defined if `next_states` is defined.\n\nDoesn't need to be defined if there is only one state.","override":false,"type":"string","optional":true},{"name":"next_state_layers_finished_layers","order":5,"description":"List of name of layers used to trigger state transition.\n\nOnly loaded, and mandatory if `next_state_trigger` is `\"layers-finished\"`.","override":false,"type":{"complex_type":"array","value":"string"},"optional":true},{"name":"next_state_trigger","order":4,"description":"Mandatory if there is more than one state or if the only state transitions to itself.\n\nCan be defined for `regular` states only.","override":false,"type":"VariableAmbientSoundNextStateTrigger","optional":true},{"name":"next_states","order":3,"description":"Cannot be defined if `next_state` is defined.\n\nCannot be defined if there is only one state.\n\nCannot be empty.","override":false,"type":{"complex_type":"array","value":"VariableAmbientSoundNextStateItem"},"optional":true},{"name":"number_of_enabled_layers","order":10,"description":"Defines how many layers will be playing. Which layers will be playing is selected randomly.\n\nThe minimum cannot be zero, the maximum cannot be greater than the number of layers.\n\nCannot be defined if any of `layers_properties` define the `enabled` property.\n\nCannot be defined for `intermezzo` or `stop` states.","override":false,"type":"RandomRange","optional":true},{"name":"start_pause","order":8,"description":"Pause before a layer starts playing.\n\nOptionally loaded for `intermezzo` states.","override":false,"type":"RandomRange","optional":true},{"name":"state_duration_seconds","order":6,"description":"Defines for how long this state will be active.\n\nMandatory if `next_state_trigger` is `\"duration\"`.\n\nOptionally loaded for `intermezzo` states.","override":false,"type":"uint32","optional":true},{"name":"type","order":1,"description":"","override":false,"type":"VariableAmbientSoundStateType","optional":true,"default":{"complex_type":"literal","value":"regular"}}]},{"name":"VariableAmbientSoundStateType","order":647,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"regular","description":""},{"complex_type":"literal","value":"intermezzo","description":"Only special intermezzo layer plays in this state, the rest is paused."},{"complex_type":"literal","value":"final","description":"The track will stay in this state for the remainder of the track's duration."},{"complex_type":"literal","value":"stop","description":"Transitioning into this state stops the track."}],"full_format":true}},{"name":"VariableAmbientSoundVariableSound","order":648,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"alignment_samples","order":4,"description":"Number of audio signal samples (default sampling frequency is 44.1kHz) defining a time grid. Music samples are aligned with this grid when queued.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":12600}},{"name":"intermezzo","order":1,"description":"","override":false,"type":"Sound","optional":true},{"name":"layers","order":0,"description":"Cannot be empty.","override":false,"type":{"complex_type":"array","value":"VariableAmbientSoundLayer"},"optional":false},{"name":"length_seconds","order":3,"description":"Cannot be zero.","override":false,"type":"uint32","optional":false},{"name":"states","order":2,"description":"The first state is used as the starting state and cannot be an intermezzo state.\n\nCannot be empty.","override":false,"type":{"complex_type":"array","value":"VariableAmbientSoundState"},"optional":false}]},{"name":"Vector","order":649,"description":"A vector is a two-element array or dictionary containing the x and y components. Positive x goes east, positive y goes south.","examples":["```\nshift = {0, 12}\n```","```\nright = {1.0, 0.5}\n```","```\nvector = {x = 2.3, y = 3.4}\n```"],"abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["double","double"]}],"full_format":false},"properties":[{"name":"x","order":0,"description":"","override":false,"type":"double","optional":false},{"name":"y","order":1,"description":"","override":false,"type":"double","optional":false}]},{"name":"Vector3D","order":650,"description":"If this is specified as a three-element array then the array items are x, y and z, in that order.","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["float","float","float"]}],"full_format":false},"properties":[{"name":"x","order":0,"description":"","override":false,"type":"float","optional":false},{"name":"y","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"z","order":2,"description":"","override":false,"type":"float","optional":false}]},{"name":"Vector4f","order":651,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},{"complex_type":"tuple","values":["float","float","float","float"]}],"full_format":false},"properties":[{"name":"w","order":3,"description":"","override":false,"type":"float","optional":false},{"name":"x","order":0,"description":"","override":false,"type":"float","optional":false},{"name":"y","order":1,"description":"","override":false,"type":"float","optional":false},{"name":"z","order":2,"description":"","override":false,"type":"float","optional":false}]},{"name":"VectorRotation","order":652,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"frames","order":0,"description":"The size of all `frames` must be the same.","override":false,"type":{"complex_type":"array","value":"Vector"},"optional":false},{"name":"render_layer","order":1,"description":"","override":false,"type":"RenderLayer","optional":true}]},{"name":"VehicleLogisticsModifier","order":653,"description":"","parent":"BoolModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"vehicle-logistics"},"optional":false},{"name":"use_icon_overlay_constant","order":1,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"VerticalAlign","order":654,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"top","description":""},{"complex_type":"literal","value":"center","description":""},{"complex_type":"literal","value":"bottom","description":""}],"full_format":true}},{"name":"VerticalFlowStyleSpecification","order":655,"description":"","parent":"BaseStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"vertical_flow_style"},"optional":false},{"name":"vertical_spacing","order":1,"description":"","override":false,"type":"int32","optional":true}]},{"name":"VerticalScrollBarStyleSpecification","order":656,"description":"","parent":"ScrollBarStyleSpecification","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"vertical_scrollbar_style"},"optional":false}]},{"name":"VirtualSignalID","order":657,"description":"The name of a [VirtualSignalPrototype](prototype:VirtualSignalPrototype).","examples":["```\n\"signal-red\"\n```","```\n\"signal-each\"\n```"],"abstract":false,"inline":false,"type":"string"},{"name":"VisualState","order":658,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"color","order":4,"description":"","override":false,"type":"Color","optional":true},{"name":"duration","order":3,"description":"","override":false,"type":"uint8","optional":false},{"name":"name","order":0,"description":"","override":false,"type":"string","optional":false},{"name":"next_active","order":1,"description":"","override":false,"type":"string","optional":false},{"name":"next_inactive","order":2,"description":"","override":false,"type":"string","optional":false}]},{"name":"VoidEnergySource","order":659,"description":"Void energy sources provide unlimited free energy.","examples":["```\nenergy_source = {type = \"void\"}\n```"],"parent":"BaseEnergySource","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"void"},"optional":false}]},{"name":"WallPictures","order":660,"description":"","abstract":false,"inline":true,"type":{"complex_type":"struct"},"properties":[{"name":"corner_left_down","order":4,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"corner_right_down","order":3,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"ending_left","order":7,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"ending_right","order":6,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"filling","order":8,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"gate_connection_patch","order":10,"description":"","override":false,"type":"Sprite4Way","optional":true},{"name":"single","order":0,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"straight_horizontal","order":2,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"straight_vertical","order":1,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"t_up","order":5,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"water_connection_patch","order":9,"description":"","override":false,"type":"Sprite4Way","optional":true}]},{"name":"WaterReflectionDefinition","order":661,"description":"Entity water reflection. [Currently only renders](https://forums.factorio.com/100703) for [EntityWithHealthPrototype](prototype:EntityWithHealthPrototype).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"orientation_to_variation","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"pictures","order":0,"description":"","override":false,"type":"SpriteVariations","optional":true},{"name":"rotate","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}}]},{"name":"WaterTileEffectParameters","order":662,"description":"","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"animation_scale","order":5,"description":"","override":false,"type":{"complex_type":"union","options":["float",{"complex_type":"tuple","values":["float","float"]}],"full_format":false},"optional":false},{"name":"animation_speed","order":4,"description":"","override":false,"type":"float","optional":false},{"name":"dark_threshold","order":6,"description":"","override":false,"type":{"complex_type":"union","options":["float",{"complex_type":"tuple","values":["float","float"]}],"full_format":false},"optional":false},{"name":"far_zoom","order":11,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.5}},{"name":"foam_color","order":1,"description":"","override":false,"type":"Color","optional":false},{"name":"foam_color_multiplier","order":2,"description":"","override":false,"type":"float","optional":false},{"name":"lightmap_alpha","order":12,"description":"Value 0 makes water appear as water in water mask, but does not occlude lights, and doesn't overwrite lightmap alpha drawn to pixel previously (by background layer of tile transition, or underwater sprite). Light emitted by water-like-tile (for example lava) will blend additively with previously rendered light. Value 1 makes water occlude lights, but won't be recognized as water in water mask used for masking decals by water.","visibility":["space_age"],"override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"near_zoom","order":10,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":2.0}},{"name":"reflection_threshold","order":7,"description":"","override":false,"type":{"complex_type":"union","options":["float",{"complex_type":"tuple","values":["float","float"]}],"full_format":false},"optional":false},{"name":"secondary_texture_variations_columns","order":17,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"secondary_texture_variations_rows","order":16,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"shader_variation","order":13,"description":"","override":false,"type":"EffectVariation","optional":true,"default":{"complex_type":"literal","value":"water"}},{"name":"specular_lightness","order":0,"description":"","override":false,"type":"Color","optional":false},{"name":"specular_threshold","order":8,"description":"","override":false,"type":{"complex_type":"union","options":["float",{"complex_type":"tuple","values":["float","float"]}],"full_format":false},"optional":false},{"name":"texture_variations_columns","order":15,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"texture_variations_rows","order":14,"description":"","override":false,"type":"uint8","optional":true,"default":{"complex_type":"literal","value":1}},{"name":"textures","order":9,"description":"Texture size must be 512x512. Shader variant `\"water\"` must have 1 texture, `\"lava\"` and `\"wetland-water\"` must have 2 textures and `\"oil\"` must have 4 textures.","override":false,"type":{"complex_type":"array","value":"EffectTexture"},"optional":false},{"name":"tick_scale","order":3,"description":"","override":false,"type":"float","optional":false}]},{"name":"Weight","order":663,"description":"Weight of an object. The weight is stored as a fixed-size 64 bit integer, with 16 bits reserved for decimal precision, meaning the smallest value step is `1/2^16`.","abstract":false,"inline":false,"type":"double"},{"name":"WireConnectionPoint","order":664,"description":"Definition of a point where circuit network wires can be connected to an entity.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"shadow","order":1,"description":"","override":false,"type":"WirePosition","optional":false},{"name":"wire","order":0,"description":"","override":false,"type":"WirePosition","optional":false}]},{"name":"WirePosition","order":665,"description":"Used by [WireConnectionPoint](prototype:WireConnectionPoint).","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"copper","order":0,"description":"","override":false,"type":"Vector","optional":true},{"name":"green","order":2,"description":"","override":false,"type":"Vector","optional":true},{"name":"red","order":1,"description":"","override":false,"type":"Vector","optional":true}]},{"name":"WorkerRobotBatteryModifier","order":666,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"worker-robot-battery"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"WorkerRobotSpeedModifier","order":667,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"worker-robot-speed"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"WorkerRobotStorageModifier","order":668,"description":"","parent":"SimpleModifier","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"infer_icon","order":1,"description":"If set to `false`, use the icon from [UtilitySprites](prototype:UtilitySprites) for this technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"type","order":0,"description":"","override":false,"type":{"complex_type":"literal","value":"worker-robot-storage"},"optional":false},{"name":"use_icon_overlay_constant","order":2,"description":"If `false`, do not draw the small \"constant\" icon over the technology effect icon.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"WorkingSound","order":669,"description":"This type is used to produce sound from in-game entities when they are working/idle.","examples":["```\n-- refinery\nworking_sound =\n{\n  sound = {filename = \"__base__/sound/oil-refinery.ogg\"},\n  idle_sound = {filename = \"__base__/sound/idle1.ogg\", volume = 0.6},\n}\n```","```\n-- roboport\nworking_sound =\n{\n  sound = {filename = \"__base__/sound/roboport-working.ogg\", volume = 0.6, audible_distance_modifier = 0.5},\n  max_sounds_per_prototype = 3,\n  probability = 1 / (5 * 60) -- average pause between the sound is 5 seconds\n}\n```"],"parent":"MainSound","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"Sound"],"full_format":false},"properties":[{"name":"activate_sound","order":6,"description":"Might not work with all entities that use working_sound.\n\nUnused when `persistent` is `true`.","override":false,"type":"Sound","optional":true},{"name":"deactivate_sound","order":7,"description":"Might not work with all entities that use working_sound.\n\nUnused when `persistent` is `true`.","override":false,"type":"Sound","optional":true},{"name":"extra_sounds_ignore_limit","order":2,"description":"If `true`, entities playing their extra sound don't count towards `max_sounds_per_prototype` limit. 'extra sound' refers to `idle_sound`, `activate_sound` or `deactivate_sound`.\n\nUnused when `persistent` is `true`.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"idle_sound","order":5,"description":"The sound to be played when the entity is idle. Might not work with all entities that use working_sound.\n\nUnused when `persistent` is `true`.","override":false,"type":"Sound","optional":true},{"name":"main_sounds","order":0,"description":"If this property is defined, all properties inherited from MainSound (and not overridden here) are ignored.","override":false,"type":{"complex_type":"union","options":["MainSound",{"complex_type":"array","value":"MainSound"}],"full_format":false},"optional":true},{"name":"max_sounds_per_prototype","order":1,"description":"Sets a maximum limit on how many entities of the same prototype will play their working sound.\n\nInactive entities without an `idle_sound` don't count towards this limit.\n\nEntities with their working sound fading out don't count towards this limit.\n\nUnused when `persistent` is `true`.","override":false,"type":"uint8","optional":true},{"name":"persistent","order":3,"description":"When `true`, working sounds for all entities of the same prototype are combined into one.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"sound_accents","order":8,"description":"Unused when `persistent` is `true`.","override":false,"type":{"complex_type":"union","options":["SoundAccent",{"complex_type":"array","value":"SoundAccent"}],"full_format":false},"optional":true},{"name":"use_doppler_shift","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}}]},{"name":"WorkingVisualisation","order":670,"description":"Used by crafting machines to display different graphics when the machine is running.","abstract":false,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"align_to_waypoint","order":6,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"always_draw","order":4,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"animated_shift","order":5,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"animation","order":30,"description":"","override":false,"type":"Animation","optional":true},{"name":"apply_recipe_tint","order":11,"description":"Used by [CraftingMachinePrototype](prototype:CraftingMachinePrototype). Has precedence over `apply_tint`.","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"primary"},{"complex_type":"literal","value":"secondary"},{"complex_type":"literal","value":"tertiary"},{"complex_type":"literal","value":"quaternary"},{"complex_type":"literal","value":"none"}],"full_format":false},"optional":true},{"name":"apply_tint","order":12,"description":"Used by [CraftingMachinePrototype](prototype:CraftingMachinePrototype) (\"status\" and \"visual-state-color\" only) and [MiningDrillPrototype](prototype:MiningDrillPrototype).\n\nFor \"status\" on CraftingMachine and MiningDrill, the colors are specified via [WorkingVisualisations::status_colors](prototype:WorkingVisualisations::status_colors). For \"resource-color\", the colors are specified via [ResourceEntityPrototype::mining_visualisation_tint](prototype:ResourceEntityPrototype::mining_visualisation_tint).","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"resource-color"},{"complex_type":"literal","value":"input-fluid-base-color"},{"complex_type":"literal","value":"input-fluid-flow-color"},{"complex_type":"literal","value":"status"},{"complex_type":"literal","value":"none"},{"complex_type":"literal","value":"visual-state-color"}],"full_format":false},"optional":true},{"name":"constant_speed","order":3,"description":"Whether the animations are always played at the same speed, not adjusted to the machine speed.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"draw_in_states","order":31,"description":"Only loaded if [WorkingVisualisations::states](prototype:WorkingVisualisations::states) is defined in the WorkingVisualisations that loads this.","override":false,"type":{"complex_type":"array","value":"string"},"optional":true},{"name":"draw_when_state_filter_matches","order":32,"description":"Only loaded if [WorkingVisualisations::states](prototype:WorkingVisualisations::states) is defined in the WorkingVisualisations that loads this.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"east_animation","order":14,"description":"","override":false,"type":"Animation","optional":true},{"name":"east_fog_mask","order":26,"description":"If defined, animation in this visualisation layer will be used only as mask for fog effect and will not render in world.","override":false,"type":"FogMaskShapeDefinition","optional":true},{"name":"east_position","order":18,"description":"","override":false,"type":"Vector","optional":true},{"name":"east_secondary_draw_order","order":22,"description":"","override":false,"type":"int8","optional":true,"default":"Value of `secondary_draw_order`"},{"name":"effect","order":10,"description":"","override":false,"type":{"complex_type":"union","options":[{"complex_type":"literal","value":"flicker"},{"complex_type":"literal","value":"uranium-glow"},{"complex_type":"literal","value":"none"}],"full_format":false},"optional":true},{"name":"enabled_by_name","order":33,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"enabled_in_animated_shift_during_transition","order":36,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"enabled_in_animated_shift_during_waypoint_stop","order":35,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":true}},{"name":"fadeout","order":1,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"fog_mask","order":29,"description":"Loaded only if at least one of north_fog_mask, east_fog_mask, south_fog_mask, west_fog_mask is not specified.\n\nIf defined, animation in this visualisation layer will be used only as mask for fog effect and will not render in world.","override":false,"type":"FogMaskShapeDefinition","optional":true},{"name":"frame_based_on_shift_animation_progress","order":37,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"light","order":9,"description":"","override":false,"type":"LightDefinition","optional":true},{"name":"mining_drill_scorch_mark","order":7,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"name","order":34,"description":"","override":false,"type":"string","optional":true,"default":{"complex_type":"literal","value":""}},{"name":"north_animation","order":13,"description":"","override":false,"type":"Animation","optional":true},{"name":"north_fog_mask","order":25,"description":"If defined, animation in this visualisation layer will be used only as mask for fog effect and will not render in world.","override":false,"type":"FogMaskShapeDefinition","optional":true},{"name":"north_position","order":17,"description":"","override":false,"type":"Vector","optional":true},{"name":"north_secondary_draw_order","order":21,"description":"","override":false,"type":"int8","optional":true,"default":"Value of `secondary_draw_order`"},{"name":"render_layer","order":0,"description":"","override":false,"type":"RenderLayer","optional":true,"default":{"complex_type":"literal","value":"object"}},{"name":"scorch_mark_fade_in_frames","order":40,"description":"Only loaded, and mandatory if `mining_drill_scorch_mark` is `true`.","override":false,"type":"uint8","optional":true},{"name":"scorch_mark_fade_out_duration","order":38,"description":"Only loaded, and mandatory if `mining_drill_scorch_mark` is `true`. Cannot be larger than `scorch_mark_lifetime`.","override":false,"type":"uint16","optional":true},{"name":"scorch_mark_lifetime","order":39,"description":"Only loaded, and mandatory if `mining_drill_scorch_mark` is `true`.","override":false,"type":"uint16","optional":true},{"name":"secondary_draw_order","order":8,"description":"Used to determine render order for sprites with the same `render_layer` in the same position. Sprites with a higher `secondary_draw_order` are drawn on top.","override":false,"type":"int8","optional":true},{"name":"south_animation","order":15,"description":"","override":false,"type":"Animation","optional":true},{"name":"south_fog_mask","order":27,"description":"If defined, animation in this visualisation layer will be used only as mask for fog effect and will not render in world.","override":false,"type":"FogMaskShapeDefinition","optional":true},{"name":"south_position","order":19,"description":"","override":false,"type":"Vector","optional":true},{"name":"south_secondary_draw_order","order":23,"description":"","override":false,"type":"int8","optional":true,"default":"Value of `secondary_draw_order`"},{"name":"synced_fadeout","order":2,"description":"","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"west_animation","order":16,"description":"","override":false,"type":"Animation","optional":true},{"name":"west_fog_mask","order":28,"description":"If defined, animation in this visualisation layer will be used only as mask for fog effect and will not render in world.","override":false,"type":"FogMaskShapeDefinition","optional":true},{"name":"west_position","order":20,"description":"","override":false,"type":"Vector","optional":true},{"name":"west_secondary_draw_order","order":24,"description":"","override":false,"type":"int8","optional":true,"default":"Value of `secondary_draw_order`"}]},{"name":"WorkingVisualisations","order":671,"description":"","abstract":true,"inline":false,"type":{"complex_type":"struct"},"properties":[{"name":"always_draw_idle_animation","order":2,"description":"Only loaded if `idle_animation` is defined.","override":false,"type":"boolean","optional":true,"default":{"complex_type":"literal","value":false}},{"name":"animation","order":0,"description":"","override":false,"type":"Animation4Way","optional":true},{"name":"default_recipe_tint","order":3,"description":"","override":false,"type":"GlobalRecipeTints","optional":true},{"name":"idle_animation","order":1,"description":"Idle animation must have the same frame count as animation.","override":false,"type":"Animation4Way","optional":true},{"name":"recipe_not_set_tint","order":4,"description":"","override":false,"type":"GlobalRecipeTints","optional":true},{"name":"shift_animation_transition_duration","order":9,"description":"Only loaded if `shift_animation_waypoints` is defined.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"shift_animation_waypoint_stop_duration","order":8,"description":"Only loaded if `shift_animation_waypoints` is defined.","override":false,"type":"uint16","optional":true,"default":{"complex_type":"literal","value":0}},{"name":"shift_animation_waypoints","order":7,"description":"Only loaded if one of `shift_animation_waypoint_stop_duration` or `shift_animation_transition_duration` is not 0.","override":false,"type":"ShiftAnimationWaypoints","optional":true},{"name":"states","order":5,"description":"At least 2 visual states must be defined or no states at all. At most 32 states may be defined.","override":false,"type":{"complex_type":"array","value":"VisualState"},"optional":true},{"name":"status_colors","order":10,"description":"Used by [WorkingVisualisation::apply_tint](prototype:WorkingVisualisation::apply_tint).","override":false,"type":"StatusColors","optional":true},{"name":"working_visualisations","order":6,"description":"Used to display different animations when the machine is running, for example tinted based on the current recipe.","override":false,"type":{"complex_type":"array","value":"WorkingVisualisation"},"optional":true}]},{"name":"WorldAmbientSoundDefinition","order":672,"description":"","abstract":false,"inline":false,"type":{"complex_type":"union","options":[{"complex_type":"struct"},"Sound"],"full_format":false},"properties":[{"name":"average_pause_seconds","order":5,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":0.0}},{"name":"entity_to_sound_ratio","order":4,"description":"","override":false,"type":"float","optional":true,"default":{"complex_type":"literal","value":0.2}},{"name":"max_entity_count","order":3,"description":"","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":15}},{"name":"min_entity_count","order":2,"description":"Has to be less than or equal to `max_entity_count`.","override":false,"type":"uint32","optional":true,"default":{"complex_type":"literal","value":5}},{"name":"radius","order":1,"description":"","override":false,"type":"double","optional":true,"default":{"complex_type":"literal","value":10}},{"name":"sound","order":0,"description":"","override":false,"type":"Sound","optional":true}]},{"name":"boolean","order":673,"description":"A variable type which can have one of two values: `true` or `false`. Wikipedia has a [comprehensive article](https://en.wikipedia.org/wiki/Boolean) on Booleans.","abstract":false,"inline":false,"type":"builtin"},{"name":"double","order":674,"description":"Format uses a dot as its decimal delimiter. Doubles are stored in the [double precision](http://en.wikipedia.org/wiki/Double-precision_floating-point_format) floating point format.\n\nMay not be [NaN](https://en.wikipedia.org/wiki/NaN).","examples":["```\n7.5\n6\n```"],"abstract":false,"inline":false,"type":"builtin"},{"name":"float","order":675,"description":"Format uses a dot as its decimal delimiter. Floats are stored in the [single precision](https://en.wikipedia.org/wiki/Single-precision_floating-point_format) floating point format.\n\nMay not be [NaN](https://en.wikipedia.org/wiki/NaN).","examples":["```\n7.5\n6\n```"],"abstract":false,"inline":false,"type":"builtin"},{"name":"int16","order":676,"description":"16 bit signed integer. Ranges from `-32 768` to `32 767`, or `[-2^15, 2^15-1]`.\n\nDecimal numbers are automatically truncated when used in place of `int16`.","abstract":false,"inline":false,"type":"builtin"},{"name":"int32","order":677,"description":"32 bit signed integer. Ranges from `-2 147 483 648` to `2 147 483 647`, or `[-2^31, 2^31-1]`.\n\nDecimal numbers are automatically truncated when used in place of `int32`.","abstract":false,"inline":false,"type":"builtin"},{"name":"int8","order":678,"description":"8 bit signed integer. Ranges from `-128` to `127`, or `[-2^7, 2^7-1]`.\n\nDecimal numbers are automatically truncated when used in place of `int8`.","abstract":false,"inline":false,"type":"builtin"},{"name":"number","order":679,"description":"Any kind of integer or floating point number.","abstract":false,"inline":false,"type":"builtin"},{"name":"string","order":680,"description":"Strings are enclosed in double-quotes.","examples":["```\n\"Hello, world!\"\n```"],"abstract":false,"inline":false,"type":"builtin"},{"name":"table","order":681,"description":"A simple [Lua table](http://www.lua.org/pil/2.5.html). An array is a table that uses continuous integer keys starting at `1`, while a dictionary can use numeric or string keys in any order or combination.\n\nTables used by prototypes may be parsed via an internal class called \"property tree\". Errors that reference this class treat tables as 0-indexed. For example `Value must be a number in property tree at ROOT.technology.steel-plate-productivity.effects[0].change` refers to element 0 of the property tree array which in Lua is at index 1.","abstract":false,"inline":false,"type":"builtin"},{"name":"uint16","order":682,"description":"16 bit unsigned integer. Ranges from `0` to `65 535`, or `[0, 2^16-1]`.\n\nDecimal numbers are automatically truncated when used in place of `uint16`.","abstract":false,"inline":false,"type":"builtin"},{"name":"uint32","order":683,"description":"32 bit unsigned integer. Ranges from `0` to `4 294 967 295`, or `[0, 2^32-1]`.\n\nDecimal numbers are automatically truncated when used in place of `uint32`.","abstract":false,"inline":false,"type":"builtin"},{"name":"uint64","order":684,"description":"64 bit unsigned integer. Ranges from `0` to `18 446 744 073 709 551 615`, or `[0, 2^64-1]`.\n\nDecimal numbers are automatically truncated when used in place of `uint64`.","abstract":false,"inline":false,"type":"builtin"},{"name":"uint8","order":685,"description":"8 bit unsigned integer. Ranges from `0` to `255`, or `[0, 2^8-1]`.\n\nDecimal numbers are automatically truncated when used in place of `uint8`.","abstract":false,"inline":false,"type":"builtin"}],"defines":[{"name":"alert_type","order":0,"description":"","values":[{"name":"collector_path_blocked","order":0,"description":""},{"name":"custom","order":1,"description":""},{"name":"entity_destroyed","order":2,"description":""},{"name":"entity_under_attack","order":3,"description":""},{"name":"no_material_for_construction","order":4,"description":""},{"name":"no_platform_storage","order":5,"description":""},{"name":"no_roboport_storage","order":6,"description":""},{"name":"no_storage","order":7,"description":""},{"name":"not_enough_construction_robots","order":8,"description":""},{"name":"not_enough_repair_packs","order":9,"description":""},{"name":"pipeline_overextended","order":10,"description":""},{"name":"platform_tile_building_blocked","order":11,"description":""},{"name":"train_no_path","order":12,"description":""},{"name":"train_out_of_fuel","order":13,"description":""},{"name":"turret_fire","order":14,"description":""},{"name":"turret_out_of_ammo","order":15,"description":""},{"name":"unclaimed_cargo","order":16,"description":""}]},{"name":"behavior_result","order":1,"description":"AI command exit status, see [LuaCommandable::set_command](runtime:LuaCommandable::set_command)","values":[{"name":"deleted","order":3,"description":""},{"name":"fail","order":1,"description":""},{"name":"in_progress","order":0,"description":""},{"name":"success","order":2,"description":""}]},{"name":"build_check_type","order":2,"description":"","values":[{"name":"blueprint_ghost","order":4,"description":""},{"name":"ghost_revive","order":5,"description":""},{"name":"manual","order":1,"description":""},{"name":"manual_ghost","order":2,"description":""},{"name":"script","order":0,"description":""},{"name":"script_ghost","order":3,"description":""}]},{"name":"build_mode","order":3,"description":"","values":[{"name":"forced","order":1,"description":""},{"name":"normal","order":0,"description":""},{"name":"superforced","order":2,"description":""}]},{"name":"cargo_destination","order":4,"description":"","values":[{"name":"invalid","order":0,"description":"The default destination type of a cargo pod when created runtime. Setting its destination to any other type will instantly launch it."},{"name":"orbit","order":1,"description":"Cargo pods with orbit destination are destroyed when ascent is completed."},{"name":"space_platform","order":4,"description":"Only used for sending a space platform starter pack to a platform that is waiting for one. Regular deliveries to space platform hubs use [station](runtime:defines.cargo_destination.station) destination type instead."},{"name":"station","order":2,"description":"Any cargo landing pad or space platform hub."},{"name":"surface","order":3,"description":"Cargo pods will switch destination type from surface to station before starting descent if there is a station available and [CargoDestination::position](runtime:CargoDestination::position) has not been specified. Note, setting the destination to \"surface\" when the surface is the same as the one the pod is on forces it to find and set a landing position."}]},{"name":"chain_signal_state","order":5,"description":"State of a chain signal.","values":[{"name":"all_open","order":1,"description":""},{"name":"none","order":0,"description":""},{"name":"none_open","order":3,"description":""},{"name":"partially_open","order":2,"description":""}]},{"name":"chunk_generated_status","order":6,"description":"","values":[{"name":"basic_tiles","order":2,"description":""},{"name":"corrected_tiles","order":3,"description":""},{"name":"custom_tiles","order":1,"description":""},{"name":"entities","order":5,"description":""},{"name":"nothing","order":0,"description":""},{"name":"tiles","order":4,"description":""}]},{"name":"command","order":7,"description":"Command given to units describing what they should do.","values":[{"name":"attack","order":0,"description":"Attack another entity."},{"name":"attack_area","order":4,"description":"Go to a place and attack what you see."},{"name":"build_base","order":8,"description":"Go to a position and build a base there."},{"name":"compound","order":2,"description":"Chain commands together, see [defines.compound_command](runtime:defines.compound_command)."},{"name":"flee","order":6,"description":"Flee from another entity."},{"name":"go_to_location","order":1,"description":"Go to a specific position."},{"name":"group","order":3,"description":"Do what your group wants you to do."},{"name":"stop","order":7,"description":"Stop moving and stay where you are."},{"name":"wander","order":5,"description":"Chill."}]},{"name":"compound_command","order":8,"description":"How commands are joined together in a compound command (see [defines.command.compound](runtime:defines.command.compound)).","values":[{"name":"logical_and","order":0,"description":"Fail on first failure. Only succeeds if all commands (executed one after another) succeed."},{"name":"logical_or","order":1,"description":"Succeed on first success. Only fails if all commands (executed one after another) fail."},{"name":"return_last","order":2,"description":"Execute all commands in sequence and fail or succeed depending on the return status of the last command."}]},{"name":"control_behavior","order":9,"description":"","subkeys":[{"name":"cargo_landing_pad","order":7,"description":"","subkeys":[{"name":"exclusive_mode","order":0,"description":"","values":[{"name":"none","order":0,"description":""},{"name":"send_contents","order":1,"description":""},{"name":"set_requests","order":2,"description":""}]}]},{"name":"inserter","order":0,"description":"","subkeys":[{"name":"hand_read_mode","order":0,"description":"","values":[{"name":"hold","order":0,"description":""},{"name":"pulse","order":1,"description":""}]}]},{"name":"lamp","order":2,"description":"","subkeys":[{"name":"color_mode","order":0,"description":"","values":[{"name":"color_mapping","order":0,"description":""},{"name":"components","order":1,"description":""},{"name":"packed_rgb","order":2,"description":""}]}]},{"name":"logistic_container","order":1,"description":"","subkeys":[{"name":"exclusive_mode","order":0,"description":"","values":[{"name":"none","order":2,"description":""},{"name":"send_contents","order":0,"description":""},{"name":"set_requests","order":1,"description":""}]}]},{"name":"mining_drill","order":3,"description":"","subkeys":[{"name":"resource_read_mode","order":0,"description":"","values":[{"name":"entire_patch","order":1,"description":""},{"name":"this_miner","order":0,"description":""}]}]},{"name":"roboport","order":6,"description":"","subkeys":[{"name":"read_items_mode","order":0,"description":"","values":[{"name":"logistics","order":1,"description":""},{"name":"missing_requests","order":2,"description":""},{"name":"none","order":0,"description":""}]}]},{"name":"rocket_silo","order":5,"description":"","subkeys":[{"name":"read_mode","order":0,"description":"","values":[{"name":"logistic_inventory","order":1,"description":""},{"name":"none","order":0,"description":""},{"name":"orbital_requests","order":2,"description":""}]}]},{"name":"transport_belt","order":4,"description":"","subkeys":[{"name":"content_read_mode","order":0,"description":"","values":[{"name":"entire_belt_hold","order":2,"description":""},{"name":"hold","order":1,"description":""},{"name":"pulse","order":0,"description":""}]}]},{"name":"type","order":8,"description":"","values":[{"name":"accumulator","order":12,"description":"[LuaAccumulatorControlBehavior](runtime:LuaAccumulatorControlBehavior)"},{"name":"agricultural_tower","order":31,"description":"[LuaAgriculturalTowerControlBehavior](runtime:LuaAgriculturalTowerControlBehavior)"},{"name":"arithmetic_combinator","order":9,"description":"[LuaArithmeticCombinatorControlBehavior](runtime:LuaArithmeticCombinatorControlBehavior)"},{"name":"artillery_turret","order":25,"description":"[LuaArtilleryTurretControlBehavior](runtime:LuaArtilleryTurretControlBehavior)"},{"name":"assembling_machine","order":18,"description":"[LuaAssemblingMachineControlBehavior](runtime:LuaAssemblingMachineControlBehavior)"},{"name":"asteroid_collector","order":26,"description":"[LuaAsteroidCollectorControlBehavior](runtime:LuaAsteroidCollectorControlBehavior)"},{"name":"cargo_landing_pad","order":30,"description":"[LuaCargoLandingPadControlBehavior](runtime:LuaCargoLandingPadControlBehavior)"},{"name":"constant_combinator","order":10,"description":"[LuaConstantCombinatorControlBehavior](runtime:LuaConstantCombinatorControlBehavior)"},{"name":"container","order":0,"description":"[LuaContainerControlBehavior](runtime:LuaContainerControlBehavior)"},{"name":"decider_combinator","order":8,"description":"[LuaDeciderCombinatorControlBehavior](runtime:LuaDeciderCombinatorControlBehavior)"},{"name":"display_panel","order":28,"description":"[LuaDisplayPanelControlBehavior](runtime:LuaDisplayPanelControlBehavior)"},{"name":"furnace","order":32,"description":"[LuaFurnaceControlBehavior](runtime:LuaFurnaceControlBehavior)"},{"name":"generic_on_off","order":1,"description":"[LuaGenericOnOffControlBehavior](runtime:LuaGenericOnOffControlBehavior)"},{"name":"inserter","order":2,"description":"[LuaInserterControlBehavior](runtime:LuaInserterControlBehavior)"},{"name":"lamp","order":3,"description":"[LuaLampControlBehavior](runtime:LuaLampControlBehavior)"},{"name":"loader","order":29,"description":"[LuaLoaderControlBehavior](runtime:LuaLoaderControlBehavior)"},{"name":"logistic_container","order":4,"description":"[LuaLogisticContainerControlBehavior](runtime:LuaLogisticContainerControlBehavior)"},{"name":"mining_drill","order":16,"description":"[LuaMiningDrillControlBehavior](runtime:LuaMiningDrillControlBehavior)"},{"name":"programmable_speaker","order":17,"description":"[LuaProgrammableSpeakerControlBehavior](runtime:LuaProgrammableSpeakerControlBehavior)"},{"name":"proxy_container","order":33,"description":"[LuaProxyContainerControlBehavior](runtime:LuaProxyContainerControlBehavior)"},{"name":"pump","order":19,"description":"[LuaPumpControlBehavior](runtime:LuaPumpControlBehavior)"},{"name":"radar","order":27,"description":"[LuaRadarControlBehavior](runtime:LuaRadarControlBehavior)"},{"name":"rail_chain_signal","order":14,"description":"[LuaRailSignalBaseControlBehavior](runtime:LuaRailSignalBaseControlBehavior)"},{"name":"rail_signal","order":13,"description":"[LuaRailSignalBaseControlBehavior](runtime:LuaRailSignalBaseControlBehavior)"},{"name":"reactor","order":23,"description":"[LuaReactorControlBehavior](runtime:LuaReactorControlBehavior)"},{"name":"roboport","order":5,"description":"[LuaRoboportControlBehavior](runtime:LuaRoboportControlBehavior)"},{"name":"rocket_silo","order":21,"description":"[LuaRocketSiloControlBehavior](runtime:LuaRocketSiloControlBehavior)"},{"name":"selector_combinator","order":20,"description":"[LuaSelectorCombinatorControlBehavior](runtime:LuaSelectorCombinatorControlBehavior)"},{"name":"space_platform_hub","order":24,"description":"[LuaSpacePlatformHubControlBehavior](runtime:LuaSpacePlatformHubControlBehavior)"},{"name":"splitter","order":34,"description":"[LuaSplitterControlBehavior](runtime:LuaSplitterControlBehavior)"},{"name":"storage_tank","order":6,"description":"[LuaStorageTankControlBehavior](runtime:LuaStorageTankControlBehavior)"},{"name":"train_stop","order":7,"description":"[LuaTrainStopControlBehavior](runtime:LuaTrainStopControlBehavior)"},{"name":"transport_belt","order":11,"description":"[LuaTransportBeltControlBehavior](runtime:LuaTransportBeltControlBehavior)"},{"name":"turret","order":22,"description":"[LuaTurretControlBehavior](runtime:LuaTurretControlBehavior)"},{"name":"wall","order":15,"description":"[LuaWallControlBehavior](runtime:LuaWallControlBehavior)"}]}]},{"name":"controllers","order":10,"description":"","values":[{"name":"character","order":1,"description":"The controller controls a character. This is the default controller in freeplay."},{"name":"cutscene","order":4,"description":"The player can't interact with the world, and the camera pans around in a predefined manner."},{"name":"editor","order":3,"description":"The Editor Controller near ultimate power to do almost anything in the game."},{"name":"ghost","order":0,"description":"Can't interact with the world, can only observe. Used in the multiplayer waiting-to-respawn screen."},{"name":"god","order":2,"description":"The controller isn't tied to a character. This is the default controller in sandbox."},{"name":"remote","order":6,"description":"Can't move/change items but can build ghosts/change settings."},{"name":"spectator","order":5,"description":"Can't change anything in the world but can view anything."}]},{"name":"deconstruction_item","order":11,"description":"","subkeys":[{"name":"entity_filter_mode","order":0,"description":"","values":[{"name":"blacklist","order":1,"description":""},{"name":"whitelist","order":0,"description":""}]},{"name":"tile_filter_mode","order":1,"description":"","values":[{"name":"blacklist","order":1,"description":""},{"name":"whitelist","order":0,"description":""}]},{"name":"tile_selection_mode","order":2,"description":"","values":[{"name":"always","order":1,"description":""},{"name":"never","order":2,"description":""},{"name":"normal","order":0,"description":""},{"name":"only","order":3,"description":""}]}]},{"name":"default_icon_size","order":12,"description":""},{"name":"difficulty","order":13,"description":"","values":[{"name":"easy","order":0,"description":""},{"name":"hard","order":2,"description":""},{"name":"normal","order":1,"description":""}]},{"name":"direction","order":14,"description":"","values":[{"name":"east","order":4,"description":""},{"name":"eastnortheast","order":3,"description":""},{"name":"eastsoutheast","order":5,"description":""},{"name":"north","order":0,"description":""},{"name":"northeast","order":2,"description":""},{"name":"northnortheast","order":1,"description":""},{"name":"northnorthwest","order":15,"description":""},{"name":"northwest","order":14,"description":""},{"name":"south","order":8,"description":""},{"name":"southeast","order":6,"description":""},{"name":"southsoutheast","order":7,"description":""},{"name":"southsouthwest","order":9,"description":""},{"name":"southwest","order":10,"description":""},{"name":"west","order":12,"description":""},{"name":"westnorthwest","order":13,"description":""},{"name":"westsouthwest","order":11,"description":""}]},{"name":"disconnect_reason","order":15,"description":"","values":[{"name":"afk","order":6,"description":""},{"name":"banned","order":9,"description":""},{"name":"cannot_keep_up","order":5,"description":""},{"name":"desync_limit_reached","order":4,"description":""},{"name":"dropped","order":1,"description":""},{"name":"kicked","order":7,"description":""},{"name":"kicked_and_deleted","order":8,"description":""},{"name":"quit","order":0,"description":""},{"name":"reconnect","order":2,"description":""},{"name":"switching_servers","order":10,"description":""},{"name":"wrong_input","order":3,"description":""}]},{"name":"distraction","order":16,"description":"","values":[{"name":"by_anything","order":2,"description":"Attack closer enemy entities, including entities \"built\" by player (belts, inserters, chests)."},{"name":"by_damage","order":3,"description":"Attack when attacked."},{"name":"by_enemy","order":1,"description":"Attack closer enemy entities with force."},{"name":"none","order":0,"description":"Perform command even if someone attacks the unit."}]},{"name":"entity_status","order":17,"description":"","values":[{"name":"broken","order":3,"description":"Only used if set through [ContainerPrototype::default_status](prototype:ContainerPrototype::default_status)."},{"name":"cant_divide_segments","order":59,"description":"Used by rail signals."},{"name":"charging","order":17,"description":"Used by accumulators."},{"name":"closed_by_circuit_network","order":10,"description":""},{"name":"computing_navigation","order":63,"description":"Used by asteroid collectors."},{"name":"destination_stop_full","order":48,"description":"Used by trains."},{"name":"disabled","order":56,"description":"Used by constant combinators: Combinator is turned off via switch in GUI."},{"name":"disabled_by_control_behavior","order":8,"description":""},{"name":"disabled_by_script","order":11,"description":""},{"name":"discharging","order":18,"description":"Used by accumulators."},{"name":"fluid_ingredient_shortage","order":28,"description":"Used by crafting machines."},{"name":"frozen","order":7,"description":""},{"name":"full_burnt_result_output","order":31,"description":"Used by burner energy sources."},{"name":"full_output","order":29,"description":"Used by crafting machines, boilers, burner energy sources and reactors: Reactor/burner has full burnt result inventory, boiler has full output fluidbox."},{"name":"fully_charged","order":19,"description":"Used by accumulators."},{"name":"ghost","order":2,"description":"Used by ghosts."},{"name":"item_ingredient_shortage","order":32,"description":"Used by crafting machines."},{"name":"launching_rocket","order":41,"description":"Used by the rocket silo."},{"name":"low_input_fluid","order":27,"description":"Used by boilers and fluid turrets: Boiler still has some fluid but is about to run out."},{"name":"low_power","order":5,"description":""},{"name":"low_temperature","order":55,"description":"Used by heat energy sources."},{"name":"marked_for_deconstruction","order":12,"description":""},{"name":"missing_required_fluid","order":33,"description":"Used by mining drills when the mining fluid is missing."},{"name":"missing_science_packs","order":34,"description":"Used by labs."},{"name":"networks_connected","order":15,"description":"Used by power switches."},{"name":"networks_disconnected","order":16,"description":"Used by power switches."},{"name":"no_ammo","order":54,"description":"Used by ammo turrets."},{"name":"no_filter","order":60,"description":"Used by filter inserters."},{"name":"no_fuel","order":6,"description":""},{"name":"no_ingredients","order":22,"description":"Used by furnaces."},{"name":"no_input_fluid","order":23,"description":"Used by boilers, fluid turrets and fluid energy sources: Boiler has no fluid to work with."},{"name":"no_minable_resources","order":25,"description":"Used by mining drills."},{"name":"no_modules_to_transmit","order":50,"description":"Used by beacons."},{"name":"no_path","order":49,"description":"Used by trains and space platform hubs."},{"name":"no_power","order":4,"description":""},{"name":"no_recipe","order":21,"description":"Used by assembling machines."},{"name":"no_research_in_progress","order":24,"description":"Used by labs."},{"name":"no_spot_seedable_by_inputs","order":61,"description":"Used by agricultural towers."},{"name":"normal","order":1,"description":""},{"name":"not_connected_to_hub_or_pad","order":26,"description":"Used by cargo bays."},{"name":"not_connected_to_rail","order":58,"description":"Used by rail signals."},{"name":"not_enough_space_in_output","order":30,"description":"Used by agricultural towers."},{"name":"not_enough_thrust","order":47,"description":"Used by space platform hubs."},{"name":"not_plugged_in_electric_network","order":14,"description":"Used by generators and solar panels."},{"name":"on_the_way","order":43,"description":"Used by space platform hubs."},{"name":"opened_by_circuit_network","order":9,"description":""},{"name":"out_of_logistic_network","order":20,"description":"Used by logistic containers."},{"name":"paused","order":13,"description":"Used by space platform hubs."},{"name":"pipeline_overextended","order":64,"description":"Used by pipes, pipes to ground and storage tanks."},{"name":"preparing_rocket_for_launch","order":38,"description":"Used by the rocket silo."},{"name":"recharging_after_power_outage","order":51,"description":"Used by roboports."},{"name":"recipe_is_parameter","order":66,"description":"Used by assembling machines."},{"name":"recipe_not_researched","order":65,"description":"Used by assembling machines."},{"name":"thrust_not_required","order":42,"description":"Used by thrusters."},{"name":"turned_off_during_daytime","order":57,"description":"Used by lamps."},{"name":"waiting_at_stop","order":45,"description":"Used by trains."},{"name":"waiting_for_more_items","order":36,"description":"Used by inserters when wait_for_full_hand is set."},{"name":"waiting_for_plants_to_grow","order":62,"description":"Used by agricultural towers."},{"name":"waiting_for_rockets_to_arrive","order":46,"description":"Used by space platform hubs."},{"name":"waiting_for_source_items","order":35,"description":"Used by inserters."},{"name":"waiting_for_space_in_destination","order":37,"description":"Used by inserters and mining drills."},{"name":"waiting_for_space_in_platform_hub","order":40,"description":"Used by the rocket silo."},{"name":"waiting_for_target_to_be_built","order":52,"description":"Used by inserters targeting entity ghosts."},{"name":"waiting_for_train","order":53,"description":"Used by inserters targeting rails."},{"name":"waiting_in_orbit","order":44,"description":"Used by space platform hubs."},{"name":"waiting_to_launch_rocket","order":39,"description":"Used by the rocket silo."},{"name":"working","order":0,"description":""}]},{"name":"entity_status_diode","order":18,"description":"","values":[{"name":"green","order":0,"description":""},{"name":"red","order":1,"description":""},{"name":"yellow","order":2,"description":""}]},{"name":"events","order":19,"description":"See the [events page](runtime:events) for more info on what events contain and when they get raised.","values":[{"name":"on_achievement_gained","order":0,"description":""},{"name":"on_ai_command_completed","order":1,"description":""},{"name":"on_area_cloned","order":2,"description":""},{"name":"on_biter_base_built","order":3,"description":""},{"name":"on_brush_cloned","order":4,"description":""},{"name":"on_build_base_arrived","order":5,"description":""},{"name":"on_built_entity","order":6,"description":""},{"name":"on_cancelled_deconstruction","order":7,"description":""},{"name":"on_cancelled_upgrade","order":8,"description":""},{"name":"on_cargo_pod_delivered_cargo","order":9,"description":""},{"name":"on_cargo_pod_finished_ascending","order":10,"description":""},{"name":"on_cargo_pod_finished_descending","order":11,"description":""},{"name":"on_cargo_pod_started_ascending","order":12,"description":""},{"name":"on_character_corpse_expired","order":13,"description":""},{"name":"on_chart_tag_added","order":14,"description":""},{"name":"on_chart_tag_modified","order":15,"description":""},{"name":"on_chart_tag_removed","order":16,"description":""},{"name":"on_chunk_charted","order":17,"description":""},{"name":"on_chunk_deleted","order":18,"description":""},{"name":"on_chunk_generated","order":19,"description":""},{"name":"on_combat_robot_expired","order":20,"description":""},{"name":"on_console_chat","order":21,"description":""},{"name":"on_console_command","order":22,"description":""},{"name":"on_cutscene_cancelled","order":23,"description":""},{"name":"on_cutscene_finished","order":24,"description":""},{"name":"on_cutscene_started","order":25,"description":""},{"name":"on_cutscene_waypoint_reached","order":26,"description":""},{"name":"on_entity_cloned","order":27,"description":""},{"name":"on_entity_color_changed","order":28,"description":""},{"name":"on_entity_damaged","order":29,"description":""},{"name":"on_entity_died","order":30,"description":""},{"name":"on_entity_logistic_slot_changed","order":31,"description":""},{"name":"on_entity_renamed","order":32,"description":""},{"name":"on_entity_settings_pasted","order":33,"description":""},{"name":"on_entity_spawned","order":34,"description":""},{"name":"on_equipment_inserted","order":35,"description":""},{"name":"on_equipment_removed","order":36,"description":""},{"name":"on_force_cease_fire_changed","order":37,"description":""},{"name":"on_force_created","order":38,"description":""},{"name":"on_force_friends_changed","order":39,"description":""},{"name":"on_force_reset","order":40,"description":""},{"name":"on_forces_merged","order":41,"description":""},{"name":"on_forces_merging","order":42,"description":""},{"name":"on_game_created_from_scenario","order":43,"description":""},{"name":"on_gui_checked_state_changed","order":44,"description":""},{"name":"on_gui_click","order":45,"description":""},{"name":"on_gui_closed","order":46,"description":""},{"name":"on_gui_confirmed","order":47,"description":""},{"name":"on_gui_elem_changed","order":48,"description":""},{"name":"on_gui_hover","order":49,"description":""},{"name":"on_gui_leave","order":50,"description":""},{"name":"on_gui_location_changed","order":51,"description":""},{"name":"on_gui_opened","order":52,"description":""},{"name":"on_gui_selected_tab_changed","order":53,"description":""},{"name":"on_gui_selection_state_changed","order":54,"description":""},{"name":"on_gui_switch_state_changed","order":55,"description":""},{"name":"on_gui_text_changed","order":56,"description":""},{"name":"on_gui_value_changed","order":57,"description":""},{"name":"on_land_mine_armed","order":58,"description":""},{"name":"on_lua_shortcut","order":59,"description":""},{"name":"on_marked_for_deconstruction","order":60,"description":""},{"name":"on_marked_for_upgrade","order":61,"description":""},{"name":"on_market_item_purchased","order":62,"description":""},{"name":"on_mod_item_opened","order":63,"description":""},{"name":"on_multiplayer_init","order":64,"description":""},{"name":"on_object_destroyed","order":65,"description":""},{"name":"on_permission_group_added","order":66,"description":""},{"name":"on_permission_group_deleted","order":67,"description":""},{"name":"on_permission_group_edited","order":68,"description":""},{"name":"on_permission_string_imported","order":69,"description":""},{"name":"on_picked_up_item","order":70,"description":""},{"name":"on_player_alt_reverse_selected_area","order":71,"description":""},{"name":"on_player_alt_selected_area","order":72,"description":""},{"name":"on_player_ammo_inventory_changed","order":73,"description":""},{"name":"on_player_armor_inventory_changed","order":74,"description":""},{"name":"on_player_banned","order":75,"description":""},{"name":"on_player_built_tile","order":76,"description":""},{"name":"on_player_cancelled_crafting","order":77,"description":""},{"name":"on_player_changed_force","order":78,"description":""},{"name":"on_player_changed_position","order":79,"description":""},{"name":"on_player_changed_surface","order":80,"description":""},{"name":"on_player_cheat_mode_disabled","order":81,"description":""},{"name":"on_player_cheat_mode_enabled","order":82,"description":""},{"name":"on_player_clicked_gps_tag","order":83,"description":""},{"name":"on_player_configured_blueprint","order":84,"description":""},{"name":"on_player_controller_changed","order":85,"description":""},{"name":"on_player_crafted_item","order":86,"description":""},{"name":"on_player_created","order":87,"description":""},{"name":"on_player_cursor_stack_changed","order":88,"description":""},{"name":"on_player_deconstructed_area","order":89,"description":""},{"name":"on_player_demoted","order":90,"description":""},{"name":"on_player_died","order":91,"description":""},{"name":"on_player_display_density_scale_changed","order":92,"description":""},{"name":"on_player_display_resolution_changed","order":93,"description":""},{"name":"on_player_display_scale_changed","order":94,"description":""},{"name":"on_player_driving_changed_state","order":95,"description":""},{"name":"on_player_dropped_item","order":96,"description":""},{"name":"on_player_dropped_item_into_entity","order":97,"description":""},{"name":"on_player_fast_transferred","order":98,"description":""},{"name":"on_player_flipped_entity","order":99,"description":""},{"name":"on_player_flushed_fluid","order":100,"description":""},{"name":"on_player_gun_inventory_changed","order":101,"description":""},{"name":"on_player_input_method_changed","order":102,"description":""},{"name":"on_player_joined_game","order":103,"description":""},{"name":"on_player_kicked","order":104,"description":""},{"name":"on_player_left_game","order":105,"description":""},{"name":"on_player_locale_changed","order":106,"description":""},{"name":"on_player_main_inventory_changed","order":107,"description":""},{"name":"on_player_mined_entity","order":108,"description":""},{"name":"on_player_mined_item","order":109,"description":""},{"name":"on_player_mined_tile","order":110,"description":""},{"name":"on_player_muted","order":111,"description":""},{"name":"on_player_pipette","order":112,"description":""},{"name":"on_player_placed_equipment","order":113,"description":""},{"name":"on_player_promoted","order":114,"description":""},{"name":"on_player_removed","order":115,"description":""},{"name":"on_player_removed_equipment","order":116,"description":""},{"name":"on_player_repaired_entity","order":117,"description":""},{"name":"on_player_respawned","order":118,"description":""},{"name":"on_player_reverse_selected_area","order":119,"description":""},{"name":"on_player_rotated_entity","order":120,"description":""},{"name":"on_player_selected_area","order":121,"description":""},{"name":"on_player_set_quick_bar_slot","order":122,"description":""},{"name":"on_player_setup_blueprint","order":123,"description":""},{"name":"on_player_toggled_alt_mode","order":124,"description":""},{"name":"on_player_toggled_map_editor","order":125,"description":""},{"name":"on_player_trash_inventory_changed","order":126,"description":""},{"name":"on_player_unbanned","order":127,"description":""},{"name":"on_player_unmuted","order":128,"description":""},{"name":"on_player_used_capsule","order":129,"description":""},{"name":"on_player_used_spidertron_remote","order":130,"description":""},{"name":"on_post_entity_died","order":131,"description":""},{"name":"on_post_segmented_unit_died","order":132,"description":""},{"name":"on_pre_build","order":133,"description":""},{"name":"on_pre_chunk_deleted","order":134,"description":""},{"name":"on_pre_entity_settings_pasted","order":135,"description":""},{"name":"on_pre_ghost_deconstructed","order":136,"description":""},{"name":"on_pre_ghost_upgraded","order":137,"description":""},{"name":"on_pre_permission_group_deleted","order":138,"description":""},{"name":"on_pre_permission_string_imported","order":139,"description":""},{"name":"on_pre_player_crafted_item","order":140,"description":""},{"name":"on_pre_player_died","order":141,"description":""},{"name":"on_pre_player_left_game","order":142,"description":""},{"name":"on_pre_player_mined_item","order":143,"description":""},{"name":"on_pre_player_removed","order":144,"description":""},{"name":"on_pre_player_toggled_map_editor","order":145,"description":""},{"name":"on_pre_robot_exploded_cliff","order":146,"description":""},{"name":"on_pre_scenario_finished","order":147,"description":""},{"name":"on_pre_script_inventory_resized","order":148,"description":""},{"name":"on_pre_surface_cleared","order":149,"description":""},{"name":"on_pre_surface_deleted","order":150,"description":""},{"name":"on_redo_applied","order":151,"description":""},{"name":"on_research_cancelled","order":152,"description":""},{"name":"on_research_finished","order":153,"description":""},{"name":"on_research_moved","order":154,"description":""},{"name":"on_research_queued","order":155,"description":""},{"name":"on_research_reversed","order":156,"description":""},{"name":"on_research_started","order":157,"description":""},{"name":"on_resource_depleted","order":158,"description":""},{"name":"on_robot_built_entity","order":159,"description":""},{"name":"on_robot_built_tile","order":160,"description":""},{"name":"on_robot_exploded_cliff","order":161,"description":""},{"name":"on_robot_mined","order":162,"description":""},{"name":"on_robot_mined_entity","order":163,"description":""},{"name":"on_robot_mined_tile","order":164,"description":""},{"name":"on_robot_pre_mined","order":165,"description":""},{"name":"on_rocket_launch_ordered","order":166,"description":""},{"name":"on_rocket_launched","order":167,"description":""},{"name":"on_runtime_mod_setting_changed","order":168,"description":""},{"name":"on_script_inventory_resized","order":169,"description":""},{"name":"on_script_path_request_finished","order":170,"description":""},{"name":"on_script_trigger_effect","order":171,"description":""},{"name":"on_sector_scanned","order":172,"description":""},{"name":"on_segment_entity_created","order":173,"description":""},{"name":"on_segmented_unit_created","order":174,"description":""},{"name":"on_segmented_unit_damaged","order":175,"description":""},{"name":"on_segmented_unit_died","order":176,"description":""},{"name":"on_selected_entity_changed","order":177,"description":""},{"name":"on_singleplayer_init","order":178,"description":""},{"name":"on_space_platform_built_entity","order":179,"description":""},{"name":"on_space_platform_built_tile","order":180,"description":""},{"name":"on_space_platform_changed_state","order":181,"description":""},{"name":"on_space_platform_mined_entity","order":182,"description":""},{"name":"on_space_platform_mined_item","order":183,"description":""},{"name":"on_space_platform_mined_tile","order":184,"description":""},{"name":"on_space_platform_pre_mined","order":185,"description":""},{"name":"on_spider_command_completed","order":186,"description":""},{"name":"on_string_translated","order":187,"description":""},{"name":"on_surface_cleared","order":188,"description":""},{"name":"on_surface_created","order":189,"description":""},{"name":"on_surface_deleted","order":190,"description":""},{"name":"on_surface_imported","order":191,"description":""},{"name":"on_surface_renamed","order":192,"description":""},{"name":"on_technology_effects_reset","order":193,"description":""},{"name":"on_territory_created","order":194,"description":""},{"name":"on_territory_destroyed","order":195,"description":""},{"name":"on_tick","order":196,"description":""},{"name":"on_tower_mined_plant","order":197,"description":""},{"name":"on_tower_planted_seed","order":198,"description":""},{"name":"on_tower_pre_mined_plant","order":199,"description":""},{"name":"on_train_changed_state","order":200,"description":""},{"name":"on_train_created","order":201,"description":""},{"name":"on_train_schedule_changed","order":202,"description":""},{"name":"on_trigger_created_entity","order":203,"description":""},{"name":"on_trigger_fired_artillery","order":204,"description":""},{"name":"on_udp_packet_received","order":205,"description":""},{"name":"on_undo_applied","order":206,"description":""},{"name":"on_unit_added_to_group","order":207,"description":""},{"name":"on_unit_group_created","order":208,"description":""},{"name":"on_unit_group_finished_gathering","order":209,"description":""},{"name":"on_unit_removed_from_group","order":210,"description":""},{"name":"on_worker_robot_expired","order":211,"description":""},{"name":"script_raised_built","order":212,"description":""},{"name":"script_raised_destroy","order":213,"description":""},{"name":"script_raised_destroy_segmented_unit","order":214,"description":""},{"name":"script_raised_revive","order":215,"description":""},{"name":"script_raised_set_tiles","order":216,"description":""},{"name":"script_raised_teleported","order":217,"description":""}]},{"name":"flow_precision_index","order":20,"description":"","values":[{"name":"fifty_hours","order":5,"description":""},{"name":"five_seconds","order":0,"description":""},{"name":"one_hour","order":3,"description":""},{"name":"one_minute","order":1,"description":""},{"name":"one_thousand_hours","order":7,"description":""},{"name":"ten_hours","order":4,"description":""},{"name":"ten_minutes","order":2,"description":""},{"name":"two_hundred_fifty_hours","order":6,"description":""}]},{"name":"game_controller_interaction","order":21,"description":"","values":[{"name":"always","order":0,"description":"Game controller will always hover this element regardless of type or state."},{"name":"never","order":1,"description":"Never hover this element with a game controller."},{"name":"normal","order":2,"description":"Hover according to the element type and implementation."}]},{"name":"group_state","order":22,"description":"","values":[{"name":"attacking_distraction","order":2,"description":""},{"name":"attacking_target","order":3,"description":""},{"name":"finished","order":4,"description":""},{"name":"gathering","order":0,"description":""},{"name":"moving","order":1,"description":""},{"name":"pathfinding","order":5,"description":""},{"name":"wander_in_group","order":6,"description":""}]},{"name":"gui_type","order":23,"description":"","values":[{"name":"achievement","order":0,"description":""},{"name":"blueprint_library","order":1,"description":""},{"name":"bonus","order":2,"description":""},{"name":"controller","order":3,"description":""},{"name":"custom","order":4,"description":""},{"name":"entity","order":5,"description":""},{"name":"equipment","order":6,"description":""},{"name":"global_electric_network","order":7,"description":""},{"name":"item","order":8,"description":""},{"name":"logistic","order":9,"description":""},{"name":"none","order":10,"description":""},{"name":"opened_entity_grid","order":11,"description":""},{"name":"other_player","order":12,"description":""},{"name":"permissions","order":13,"description":""},{"name":"player_management","order":14,"description":""},{"name":"production","order":15,"description":""},{"name":"script_inventory","order":16,"description":""},{"name":"server_management","order":17,"description":""},{"name":"tile","order":18,"description":""},{"name":"trains","order":19,"description":""}]},{"name":"input_action","order":24,"description":"","values":[{"name":"activate_interrupt","order":0,"description":""},{"name":"activate_paste","order":1,"description":""},{"name":"add_decider_combinator_condition","order":2,"description":""},{"name":"add_decider_combinator_output","order":3,"description":""},{"name":"add_logistic_section","order":4,"description":""},{"name":"add_permission_group","order":5,"description":""},{"name":"add_pin","order":6,"description":""},{"name":"add_train_interrupt","order":7,"description":""},{"name":"add_train_station","order":8,"description":""},{"name":"adjust_blueprint_snapping","order":9,"description":""},{"name":"admin_action","order":10,"description":""},{"name":"alt_reverse_select_area","order":11,"description":""},{"name":"alt_select_area","order":12,"description":""},{"name":"alt_select_blueprint_entities","order":13,"description":""},{"name":"alternative_copy","order":14,"description":""},{"name":"begin_mining","order":15,"description":""},{"name":"begin_mining_terrain","order":16,"description":""},{"name":"build","order":17,"description":""},{"name":"build_rail","order":18,"description":""},{"name":"build_terrain","order":19,"description":""},{"name":"cancel_craft","order":20,"description":""},{"name":"cancel_deconstruct","order":21,"description":""},{"name":"cancel_delete_space_platform","order":22,"description":""},{"name":"cancel_new_blueprint","order":23,"description":""},{"name":"cancel_research","order":24,"description":""},{"name":"cancel_upgrade","order":25,"description":""},{"name":"change_active_character_tab","order":26,"description":""},{"name":"change_active_item_group_for_crafting","order":27,"description":""},{"name":"change_active_item_group_for_filters","order":28,"description":""},{"name":"change_active_quick_bar","order":29,"description":""},{"name":"change_arithmetic_combinator_parameters","order":30,"description":""},{"name":"change_entity_label","order":31,"description":""},{"name":"change_heading_riding_state","order":32,"description":""},{"name":"change_item_label","order":33,"description":""},{"name":"change_logistic_point_group","order":34,"description":""},{"name":"change_multiplayer_config","order":35,"description":""},{"name":"change_picking_state","order":36,"description":""},{"name":"change_programmable_speaker_alert_parameters","order":37,"description":""},{"name":"change_programmable_speaker_circuit_parameters","order":38,"description":""},{"name":"change_programmable_speaker_parameters","order":39,"description":""},{"name":"change_riding_state","order":40,"description":""},{"name":"change_selector_combinator_parameters","order":41,"description":""},{"name":"change_shooting_state","order":42,"description":""},{"name":"change_train_name","order":43,"description":""},{"name":"change_train_stop_station","order":44,"description":""},{"name":"change_train_wait_condition","order":45,"description":""},{"name":"change_train_wait_condition_data","order":46,"description":""},{"name":"cheat","order":47,"description":""},{"name":"clear_cursor","order":48,"description":""},{"name":"connect_rolling_stock","order":49,"description":""},{"name":"copy","order":50,"description":""},{"name":"copy_entity_settings","order":51,"description":""},{"name":"copy_large_opened_blueprint","order":52,"description":""},{"name":"copy_large_opened_item","order":53,"description":""},{"name":"copy_opened_blueprint","order":54,"description":""},{"name":"copy_opened_item","order":55,"description":""},{"name":"craft","order":56,"description":""},{"name":"create_space_platform","order":57,"description":""},{"name":"cursor_split","order":58,"description":""},{"name":"cursor_transfer","order":59,"description":""},{"name":"custom_input","order":60,"description":""},{"name":"cycle_blueprint_book_backwards","order":61,"description":""},{"name":"cycle_blueprint_book_forwards","order":62,"description":""},{"name":"cycle_quality_down","order":63,"description":""},{"name":"cycle_quality_up","order":64,"description":""},{"name":"deconstruct","order":65,"description":""},{"name":"delete_blueprint_library","order":66,"description":""},{"name":"delete_blueprint_record","order":67,"description":""},{"name":"delete_custom_tag","order":68,"description":""},{"name":"delete_logistic_group","order":69,"description":""},{"name":"delete_permission_group","order":70,"description":""},{"name":"delete_space_platform","order":71,"description":""},{"name":"destroy_item","order":72,"description":""},{"name":"destroy_opened_item","order":73,"description":""},{"name":"disconnect_rolling_stock","order":74,"description":""},{"name":"drag_decider_combinator_condition","order":75,"description":""},{"name":"drag_decider_combinator_output","order":76,"description":""},{"name":"drag_train_schedule","order":77,"description":""},{"name":"drag_train_schedule_interrupt","order":78,"description":""},{"name":"drag_train_wait_condition","order":79,"description":""},{"name":"drop_blueprint_record","order":80,"description":""},{"name":"drop_item","order":81,"description":""},{"name":"edit_blueprint_tool_preview","order":82,"description":""},{"name":"edit_custom_tag","order":83,"description":""},{"name":"edit_display_panel","order":84,"description":""},{"name":"edit_display_panel_always_show","order":85,"description":""},{"name":"edit_display_panel_icon","order":86,"description":""},{"name":"edit_display_panel_parameters","order":87,"description":""},{"name":"edit_display_panel_show_in_chart","order":88,"description":""},{"name":"edit_display_panel_single_entry","order":89,"description":""},{"name":"edit_interrupt","order":90,"description":""},{"name":"edit_permission_group","order":91,"description":""},{"name":"edit_pin","order":92,"description":""},{"name":"export_blueprint","order":93,"description":""},{"name":"fast_entity_split","order":94,"description":""},{"name":"fast_entity_transfer","order":95,"description":""},{"name":"flip_entity","order":96,"description":""},{"name":"flush_opened_entity_fluid","order":97,"description":""},{"name":"flush_opened_entity_specific_fluid","order":98,"description":""},{"name":"go_to_train_station","order":99,"description":""},{"name":"grab_blueprint_record","order":100,"description":""},{"name":"gui_checked_state_changed","order":101,"description":""},{"name":"gui_click","order":102,"description":""},{"name":"gui_confirmed","order":103,"description":""},{"name":"gui_elem_changed","order":104,"description":""},{"name":"gui_hover","order":105,"description":""},{"name":"gui_leave","order":106,"description":""},{"name":"gui_location_changed","order":107,"description":""},{"name":"gui_selected_tab_changed","order":108,"description":""},{"name":"gui_selection_state_changed","order":109,"description":""},{"name":"gui_switch_state_changed","order":110,"description":""},{"name":"gui_text_changed","order":111,"description":""},{"name":"gui_value_changed","order":112,"description":""},{"name":"import_blueprint","order":113,"description":""},{"name":"import_blueprint_string","order":114,"description":""},{"name":"import_blueprints_filtered","order":115,"description":""},{"name":"import_permissions_string","order":116,"description":""},{"name":"instantly_create_space_platform","order":117,"description":""},{"name":"inventory_split","order":118,"description":""},{"name":"inventory_transfer","order":119,"description":""},{"name":"land_at_planet","order":120,"description":""},{"name":"launch_rocket","order":121,"description":""},{"name":"lua_shortcut","order":122,"description":""},{"name":"map_editor_action","order":123,"description":""},{"name":"market_offer","order":124,"description":""},{"name":"mod_settings_changed","order":125,"description":""},{"name":"modify_decider_combinator_condition","order":126,"description":""},{"name":"modify_decider_combinator_output","order":127,"description":""},{"name":"move_pin","order":128,"description":""},{"name":"move_research","order":129,"description":""},{"name":"open_achievements_gui","order":130,"description":""},{"name":"open_blueprint_library_gui","order":131,"description":""},{"name":"open_blueprint_record","order":132,"description":""},{"name":"open_bonus_gui","order":133,"description":""},{"name":"open_character_gui","order":134,"description":""},{"name":"open_current_vehicle_gui","order":135,"description":""},{"name":"open_equipment","order":136,"description":""},{"name":"open_global_electric_network_gui","order":137,"description":""},{"name":"open_gui","order":138,"description":""},{"name":"open_item","order":139,"description":""},{"name":"open_logistics_gui","order":140,"description":""},{"name":"open_mod_item","order":141,"description":""},{"name":"open_new_platform_button_from_rocket_silo","order":142,"description":""},{"name":"open_opened_entity_grid","order":143,"description":""},{"name":"open_parent_of_opened_item","order":144,"description":""},{"name":"open_production_gui","order":145,"description":""},{"name":"open_train_gui","order":146,"description":""},{"name":"open_train_station_gui","order":147,"description":""},{"name":"open_trains_gui","order":148,"description":""},{"name":"parametrise_blueprint","order":149,"description":""},{"name":"paste_entity_settings","order":150,"description":""},{"name":"pin_alert_group","order":151,"description":""},{"name":"pin_custom_alert","order":152,"description":""},{"name":"pin_search_result","order":153,"description":""},{"name":"pipette","order":154,"description":""},{"name":"place_equipment","order":155,"description":""},{"name":"quick_bar_pick_slot","order":156,"description":""},{"name":"quick_bar_set_selected_page","order":157,"description":""},{"name":"quick_bar_set_slot","order":158,"description":""},{"name":"reassign_blueprint","order":159,"description":""},{"name":"redo","order":160,"description":""},{"name":"remote_view_entity","order":161,"description":""},{"name":"remote_view_surface","order":162,"description":""},{"name":"remove_cables","order":163,"description":""},{"name":"remove_decider_combinator_condition","order":164,"description":""},{"name":"remove_decider_combinator_output","order":165,"description":""},{"name":"remove_logistic_section","order":166,"description":""},{"name":"remove_pin","order":167,"description":""},{"name":"remove_train_interrupt","order":168,"description":""},{"name":"remove_train_station","order":169,"description":""},{"name":"rename_interrupt","order":170,"description":""},{"name":"rename_space_platform","order":171,"description":""},{"name":"reorder_logistic_section","order":172,"description":""},{"name":"request_missing_construction_materials","order":173,"description":""},{"name":"reset_assembling_machine","order":174,"description":""},{"name":"reverse_select_area","order":175,"description":""},{"name":"rotate_entity","order":176,"description":""},{"name":"select_area","order":177,"description":""},{"name":"select_asteroid_chunk_slot","order":178,"description":""},{"name":"select_blueprint_entities","order":179,"description":""},{"name":"select_entity_filter_slot","order":180,"description":""},{"name":"select_entity_slot","order":181,"description":""},{"name":"select_item_filter","order":182,"description":""},{"name":"select_mapper_slot_from","order":183,"description":""},{"name":"select_mapper_slot_to","order":184,"description":""},{"name":"select_next_valid_gun","order":185,"description":""},{"name":"select_tile_slot","order":186,"description":""},{"name":"send_spidertron","order":187,"description":""},{"name":"send_stack_to_trash","order":188,"description":""},{"name":"send_stacks_to_trash","order":189,"description":""},{"name":"send_train_to_pin_target","order":190,"description":""},{"name":"set_behavior_mode","order":191,"description":""},{"name":"set_car_weapons_control","order":192,"description":""},{"name":"set_cheat_mode_quality","order":193,"description":""},{"name":"set_circuit_condition","order":194,"description":""},{"name":"set_circuit_mode_of_operation","order":195,"description":""},{"name":"set_combinator_description","order":196,"description":""},{"name":"set_copy_color_from_train_stop","order":197,"description":""},{"name":"set_deconstruction_item_tile_selection_mode","order":198,"description":""},{"name":"set_deconstruction_item_trees_and_rocks_only","order":199,"description":""},{"name":"set_entity_color","order":200,"description":""},{"name":"set_entity_energy_property","order":201,"description":""},{"name":"set_filter","order":202,"description":""},{"name":"set_ghost_cursor","order":203,"description":""},{"name":"set_heat_interface_mode","order":204,"description":""},{"name":"set_heat_interface_temperature","order":205,"description":""},{"name":"set_infinity_container_filter_item","order":206,"description":""},{"name":"set_infinity_container_remove_unfiltered_items","order":207,"description":""},{"name":"set_infinity_pipe_filter","order":208,"description":""},{"name":"set_inserter_max_stack_size","order":209,"description":""},{"name":"set_inventory_bar","order":210,"description":""},{"name":"set_lamp_always_on","order":211,"description":""},{"name":"set_linked_container_link_i_d","order":212,"description":""},{"name":"set_loader_belt_stack_size_override","order":213,"description":""},{"name":"set_logistic_filter_item","order":214,"description":""},{"name":"set_logistic_network_name","order":215,"description":""},{"name":"set_logistic_section_active","order":216,"description":""},{"name":"set_player_color","order":217,"description":""},{"name":"set_pump_fluid_filter","order":218,"description":""},{"name":"set_request_from_buffers","order":219,"description":""},{"name":"set_research_finished_stops_game","order":220,"description":""},{"name":"set_rocket_silo_send_to_orbit_automated_mode","order":221,"description":""},{"name":"set_schedule_record_allow_unloading","order":222,"description":""},{"name":"set_signal","order":223,"description":""},{"name":"set_splitter_priority","order":224,"description":""},{"name":"set_spoil_priority","order":225,"description":""},{"name":"set_train_stop_priority","order":226,"description":""},{"name":"set_train_stopped","order":227,"description":""},{"name":"set_trains_limit","order":228,"description":""},{"name":"set_turret_ignore_unlisted","order":229,"description":""},{"name":"set_use_inserter_filters","order":230,"description":""},{"name":"set_vehicle_automatic_targeting_parameters","order":231,"description":""},{"name":"setup_assembling_machine","order":232,"description":""},{"name":"setup_blueprint","order":233,"description":""},{"name":"setup_single_blueprint_record","order":234,"description":""},{"name":"spawn_item","order":235,"description":""},{"name":"spectator_change_surface","order":236,"description":""},{"name":"stack_split","order":237,"description":""},{"name":"stack_transfer","order":238,"description":""},{"name":"start_repair","order":239,"description":""},{"name":"start_research","order":240,"description":""},{"name":"start_walking","order":241,"description":""},{"name":"stop_drag_build","order":242,"description":""},{"name":"swap_asteroid_chunk_slots","order":243,"description":""},{"name":"swap_entity_filter_slots","order":244,"description":""},{"name":"swap_entity_slots","order":245,"description":""},{"name":"swap_infinity_container_filter_items","order":246,"description":""},{"name":"swap_item_filters","order":247,"description":""},{"name":"swap_logistic_filter_items","order":248,"description":""},{"name":"swap_mappers","order":249,"description":""},{"name":"swap_tile_slots","order":250,"description":""},{"name":"switch_connect_to_logistic_network","order":251,"description":""},{"name":"switch_constant_combinator_state","order":252,"description":""},{"name":"switch_inserter_filter_mode_state","order":253,"description":""},{"name":"switch_loader_filter_mode","order":254,"description":""},{"name":"switch_mining_drill_filter_mode_state","order":255,"description":""},{"name":"switch_power_switch_state","order":256,"description":""},{"name":"take_equipment","order":257,"description":""},{"name":"toggle_artillery_auto_targeting","order":258,"description":""},{"name":"toggle_deconstruction_item_entity_filter_mode","order":259,"description":""},{"name":"toggle_deconstruction_item_tile_filter_mode","order":260,"description":""},{"name":"toggle_driving","order":261,"description":""},{"name":"toggle_enable_vehicle_logistics_while_moving","order":262,"description":""},{"name":"toggle_entity_logistic_requests","order":263,"description":""},{"name":"toggle_equipment_movement_bonus","order":264,"description":""},{"name":"toggle_map_editor","order":265,"description":""},{"name":"toggle_personal_logistic_requests","order":266,"description":""},{"name":"toggle_personal_roboport","order":267,"description":""},{"name":"toggle_selected_entity","order":268,"description":""},{"name":"toggle_show_entity_info","order":269,"description":""},{"name":"translate_string","order":270,"description":""},{"name":"trash_not_requested_items","order":271,"description":""},{"name":"undo","order":272,"description":""},{"name":"upgrade","order":273,"description":""},{"name":"upgrade_opened_blueprint_by_item","order":274,"description":""},{"name":"upgrade_opened_blueprint_by_record","order":275,"description":""},{"name":"use_item","order":276,"description":""},{"name":"wire_dragging","order":277,"description":""},{"name":"write_to_console","order":278,"description":""}]},{"name":"input_method","order":25,"description":"","values":[{"name":"game_controller","order":1,"description":""},{"name":"keyboard_and_mouse","order":0,"description":""}]},{"name":"inventory","order":26,"description":"","values":[{"name":"agricultural_tower_input","order":56,"description":""},{"name":"agricultural_tower_output","order":57,"description":""},{"name":"artillery_turret_ammo","order":46,"description":""},{"name":"artillery_wagon_ammo","order":47,"description":""},{"name":"assembling_machine_dump","order":26,"description":"Used for ejected items, or items held by inserters that can't be inserted due the recipe being changed with the circuit network."},{"name":"assembling_machine_input","order":23,"description":"Deprecated, replaced by `\"crafter_input\"`."},{"name":"assembling_machine_modules","order":25,"description":"Deprecated, replaced by `\"crafter_modules\"`."},{"name":"assembling_machine_output","order":24,"description":"Deprecated, replaced by `\"crafter_output\"`."},{"name":"assembling_machine_trash","order":27,"description":"Deprecated, replaced by `\"crafter_trash\"`."},{"name":"asteroid_collector_arm","order":64,"description":""},{"name":"asteroid_collector_output","order":63,"description":""},{"name":"beacon_modules","order":44,"description":""},{"name":"burnt_result","order":1,"description":""},{"name":"car_ammo","order":40,"description":""},{"name":"car_trash","order":41,"description":""},{"name":"car_trunk","order":39,"description":""},{"name":"cargo_landing_pad_main","order":53,"description":""},{"name":"cargo_landing_pad_trash","order":54,"description":""},{"name":"cargo_unit","order":38,"description":"Inventory of cargo pod."},{"name":"cargo_wagon","order":42,"description":""},{"name":"character_ammo","order":10,"description":""},{"name":"character_armor","order":11,"description":""},{"name":"character_corpse","order":45,"description":""},{"name":"character_guns","order":9,"description":""},{"name":"character_main","order":8,"description":""},{"name":"character_trash","order":13,"description":""},{"name":"character_vehicle","order":12,"description":""},{"name":"chest","order":2,"description":""},{"name":"crafter_input","order":59,"description":""},{"name":"crafter_modules","order":61,"description":""},{"name":"crafter_output","order":60,"description":""},{"name":"crafter_trash","order":62,"description":"Used for spoil result items that do not fit into the recipe slots, and for items that are ejected when changing the recipe via remote view."},{"name":"editor_ammo","order":17,"description":""},{"name":"editor_armor","order":18,"description":""},{"name":"editor_guns","order":16,"description":""},{"name":"editor_main","order":15,"description":""},{"name":"fuel","order":0,"description":""},{"name":"furnace_modules","order":6,"description":"Deprecated, replaced by `\"crafter_modules\"`."},{"name":"furnace_result","order":5,"description":"Deprecated, replaced by `\"crafter_output\"`."},{"name":"furnace_source","order":4,"description":"Deprecated, replaced by `\"crafter_input\"`."},{"name":"furnace_trash","order":7,"description":"Deprecated, replaced by `\"crafter_trash\"`."},{"name":"god_main","order":14,"description":""},{"name":"hub_main","order":51,"description":""},{"name":"hub_trash","order":52,"description":""},{"name":"item_main","order":32,"description":""},{"name":"lab_input","order":28,"description":""},{"name":"lab_modules","order":29,"description":""},{"name":"lab_trash","order":30,"description":""},{"name":"linked_container_main","order":58,"description":""},{"name":"logistic_container_trash","order":3,"description":""},{"name":"mining_drill_modules","order":31,"description":""},{"name":"proxy_main","order":55,"description":""},{"name":"roboport_material","order":20,"description":""},{"name":"roboport_robot","order":19,"description":""},{"name":"robot_cargo","order":21,"description":""},{"name":"robot_repair","order":22,"description":""},{"name":"rocket_silo_input","order":35,"description":"Deprecated, replaced by `\"crafter_input\"`."},{"name":"rocket_silo_modules","order":37,"description":"Deprecated, replaced by `\"crafter_modules\"`."},{"name":"rocket_silo_output","order":36,"description":"Deprecated, replaced by `\"crafter_output\"`."},{"name":"rocket_silo_rocket","order":33,"description":""},{"name":"rocket_silo_trash","order":34,"description":""},{"name":"spider_ammo","order":49,"description":""},{"name":"spider_trash","order":50,"description":""},{"name":"spider_trunk","order":48,"description":""},{"name":"turret_ammo","order":43,"description":""}]},{"name":"logistic_group_type","order":27,"description":"","values":[{"name":"roboport","order":1,"description":""},{"name":"with_trash","order":0,"description":""}]},{"name":"logistic_member_index","order":28,"description":"","values":[{"name":"car_provider","order":10,"description":""},{"name":"car_requester","order":9,"description":""},{"name":"cargo_landing_pad_provider","order":19,"description":""},{"name":"cargo_landing_pad_requester","order":18,"description":""},{"name":"cargo_landing_pad_trash_provider","order":20,"description":""},{"name":"character_provider","order":5,"description":""},{"name":"character_requester","order":3,"description":""},{"name":"character_storage","order":4,"description":""},{"name":"generic_on_off_behavior","order":6,"description":""},{"name":"logistic_container","order":0,"description":""},{"name":"logistic_container_trash_provider","order":1,"description":""},{"name":"roboport_provider","order":11,"description":""},{"name":"roboport_requester","order":12,"description":""},{"name":"rocket_silo_provider","order":13,"description":""},{"name":"rocket_silo_requester","order":14,"description":""},{"name":"rocket_silo_trash_provider","order":15,"description":""},{"name":"space_platform_hub_provider","order":17,"description":""},{"name":"space_platform_hub_requester","order":16,"description":""},{"name":"spidertron_provider","order":8,"description":""},{"name":"spidertron_requester","order":7,"description":""},{"name":"vehicle_storage","order":2,"description":""}]},{"name":"logistic_mode","order":29,"description":"","values":[{"name":"active_provider","order":1,"description":""},{"name":"buffer","order":5,"description":""},{"name":"none","order":0,"description":""},{"name":"passive_provider","order":4,"description":""},{"name":"requester","order":3,"description":""},{"name":"storage","order":2,"description":""}]},{"name":"logistic_section_type","order":30,"description":"","values":[{"name":"circuit_controlled","order":1,"description":""},{"name":"manual","order":0,"description":""},{"name":"request_missing_materials_controlled","order":3,"description":"Used by space platform hubs."},{"name":"transitional_request_controlled","order":2,"description":"Used by rocket silos."}]},{"name":"mouse_button_type","order":31,"description":"","values":[{"name":"left","order":1,"description":""},{"name":"middle","order":3,"description":""},{"name":"none","order":0,"description":""},{"name":"right","order":2,"description":""}]},{"name":"moving_state","order":32,"description":"","values":[{"name":"adaptive","order":2,"description":""},{"name":"moving","order":1,"description":""},{"name":"stale","order":0,"description":""},{"name":"stuck","order":3,"description":""}]},{"name":"print_skip","order":33,"description":"","values":[{"name":"if_redundant","order":1,"description":"Print will be skipped if same text was recently printed (within last 60 ticks). Used by most game messages."},{"name":"if_visible","order":2,"description":"Print will be skipped if same text is still visible (printed within last 1152 ticks). Used by some notifications."},{"name":"never","order":0,"description":"Print will not be skipped."}]},{"name":"print_sound","order":34,"description":"","values":[{"name":"always","order":0,"description":""},{"name":"never","order":1,"description":""},{"name":"use_player_settings","order":2,"description":""}]},{"name":"prototypes","order":35,"description":"This define describes all top-level prototypes and their associated subtypes. It is organized as a lookup table, meaning the values of all the defines is `0`. As an example, `defines.prototypes['entity']` looks like `{furnace=0, inserter=0, container=0, ...}`.","subkeys":[{"name":"achievement","order":0,"description":"","values":[{"name":"achievement","order":0,"description":""},{"name":"build-entity-achievement","order":1,"description":""},{"name":"change-surface-achievement","order":2,"description":""},{"name":"combat-robot-count-achievement","order":3,"description":""},{"name":"complete-objective-achievement","order":4,"description":""},{"name":"construct-with-robots-achievement","order":5,"description":""},{"name":"create-platform-achievement","order":6,"description":""},{"name":"deconstruct-with-robots-achievement","order":7,"description":""},{"name":"deliver-by-robots-achievement","order":8,"description":""},{"name":"deplete-resource-achievement","order":9,"description":""},{"name":"destroy-cliff-achievement","order":10,"description":""},{"name":"dont-build-entity-achievement","order":11,"description":""},{"name":"dont-craft-manually-achievement","order":12,"description":""},{"name":"dont-kill-manually-achievement","order":13,"description":""},{"name":"dont-research-before-researching-achievement","order":14,"description":""},{"name":"dont-use-entity-in-energy-production-achievement","order":15,"description":""},{"name":"equip-armor-achievement","order":16,"description":""},{"name":"group-attack-achievement","order":17,"description":""},{"name":"kill-achievement","order":18,"description":""},{"name":"module-transfer-achievement","order":19,"description":""},{"name":"place-equipment-achievement","order":20,"description":""},{"name":"player-damaged-achievement","order":21,"description":""},{"name":"produce-achievement","order":22,"description":""},{"name":"produce-per-hour-achievement","order":23,"description":""},{"name":"research-achievement","order":24,"description":""},{"name":"research-with-science-pack-achievement","order":25,"description":""},{"name":"shoot-achievement","order":26,"description":""},{"name":"space-connection-distance-traveled-achievement","order":27,"description":""},{"name":"train-path-achievement","order":28,"description":""},{"name":"use-entity-in-energy-production-achievement","order":29,"description":""},{"name":"use-item-achievement","order":30,"description":""}]},{"name":"active-trigger","order":1,"description":"","values":[{"name":"chain-active-trigger","order":0,"description":""},{"name":"delayed-active-trigger","order":1,"description":""}]},{"name":"airborne-pollutant","order":2,"description":"","values":[{"name":"airborne-pollutant","order":0,"description":""}]},{"name":"ambient-sound","order":3,"description":"","values":[{"name":"ambient-sound","order":0,"description":""}]},{"name":"ammo-category","order":4,"description":"","values":[{"name":"ammo-category","order":0,"description":""}]},{"name":"animation","order":5,"description":"","values":[{"name":"animation","order":0,"description":""}]},{"name":"asteroid-chunk","order":6,"description":"","values":[{"name":"asteroid-chunk","order":0,"description":""}]},{"name":"autoplace-control","order":7,"description":"","values":[{"name":"autoplace-control","order":0,"description":""}]},{"name":"burner-usage","order":8,"description":"","values":[{"name":"burner-usage","order":0,"description":""}]},{"name":"collision-layer","order":9,"description":"","values":[{"name":"collision-layer","order":0,"description":""}]},{"name":"custom-event","order":10,"description":"","values":[{"name":"custom-event","order":0,"description":""}]},{"name":"custom-input","order":11,"description":"","values":[{"name":"custom-input","order":0,"description":""}]},{"name":"damage-type","order":12,"description":"","values":[{"name":"damage-type","order":0,"description":""}]},{"name":"decorative","order":13,"description":"","values":[{"name":"optimized-decorative","order":0,"description":""}]},{"name":"deliver-category","order":14,"description":"","values":[{"name":"deliver-category","order":0,"description":""}]},{"name":"deliver-impact-combination","order":15,"description":"","values":[{"name":"deliver-impact-combination","order":0,"description":""}]},{"name":"editor-controller","order":16,"description":"","values":[{"name":"editor-controller","order":0,"description":""}]},{"name":"entity","order":17,"description":"","values":[{"name":"accumulator","order":0,"description":""},{"name":"agricultural-tower","order":1,"description":""},{"name":"ammo-turret","order":2,"description":""},{"name":"arithmetic-combinator","order":3,"description":""},{"name":"arrow","order":4,"description":""},{"name":"artillery-flare","order":5,"description":""},{"name":"artillery-projectile","order":6,"description":""},{"name":"artillery-turret","order":7,"description":""},{"name":"artillery-wagon","order":8,"description":""},{"name":"assembling-machine","order":9,"description":""},{"name":"asteroid","order":10,"description":""},{"name":"asteroid-collector","order":11,"description":""},{"name":"beacon","order":12,"description":""},{"name":"beam","order":13,"description":""},{"name":"boiler","order":14,"description":""},{"name":"burner-generator","order":15,"description":""},{"name":"capture-robot","order":16,"description":""},{"name":"car","order":17,"description":""},{"name":"cargo-bay","order":18,"description":""},{"name":"cargo-landing-pad","order":19,"description":""},{"name":"cargo-pod","order":20,"description":""},{"name":"cargo-wagon","order":21,"description":""},{"name":"character","order":22,"description":""},{"name":"character-corpse","order":23,"description":""},{"name":"cliff","order":24,"description":""},{"name":"combat-robot","order":25,"description":""},{"name":"constant-combinator","order":26,"description":""},{"name":"construction-robot","order":27,"description":""},{"name":"container","order":28,"description":""},{"name":"corpse","order":29,"description":""},{"name":"curved-rail-a","order":30,"description":""},{"name":"curved-rail-b","order":31,"description":""},{"name":"decider-combinator","order":32,"description":""},{"name":"deconstructible-tile-proxy","order":33,"description":""},{"name":"display-panel","order":34,"description":""},{"name":"electric-energy-interface","order":35,"description":""},{"name":"electric-pole","order":36,"description":""},{"name":"electric-turret","order":37,"description":""},{"name":"elevated-curved-rail-a","order":38,"description":""},{"name":"elevated-curved-rail-b","order":39,"description":""},{"name":"elevated-half-diagonal-rail","order":40,"description":""},{"name":"elevated-straight-rail","order":41,"description":""},{"name":"entity-ghost","order":42,"description":""},{"name":"explosion","order":43,"description":""},{"name":"fire","order":44,"description":""},{"name":"fish","order":45,"description":""},{"name":"fluid-turret","order":46,"description":""},{"name":"fluid-wagon","order":47,"description":""},{"name":"furnace","order":48,"description":""},{"name":"fusion-generator","order":49,"description":""},{"name":"fusion-reactor","order":50,"description":""},{"name":"gate","order":51,"description":""},{"name":"generator","order":52,"description":""},{"name":"half-diagonal-rail","order":53,"description":""},{"name":"heat-interface","order":54,"description":""},{"name":"heat-pipe","order":55,"description":""},{"name":"highlight-box","order":56,"description":""},{"name":"infinity-cargo-wagon","order":57,"description":""},{"name":"infinity-container","order":58,"description":""},{"name":"infinity-pipe","order":59,"description":""},{"name":"inserter","order":60,"description":""},{"name":"item-entity","order":61,"description":""},{"name":"item-request-proxy","order":62,"description":""},{"name":"lab","order":63,"description":""},{"name":"lamp","order":64,"description":""},{"name":"land-mine","order":65,"description":""},{"name":"lane-splitter","order":66,"description":""},{"name":"legacy-curved-rail","order":67,"description":""},{"name":"legacy-straight-rail","order":68,"description":""},{"name":"lightning","order":69,"description":""},{"name":"lightning-attractor","order":70,"description":""},{"name":"linked-belt","order":71,"description":""},{"name":"linked-container","order":72,"description":""},{"name":"loader","order":73,"description":""},{"name":"loader-1x1","order":74,"description":""},{"name":"locomotive","order":75,"description":""},{"name":"logistic-container","order":76,"description":""},{"name":"logistic-robot","order":77,"description":""},{"name":"market","order":78,"description":""},{"name":"mining-drill","order":79,"description":""},{"name":"offshore-pump","order":80,"description":""},{"name":"particle-source","order":81,"description":""},{"name":"pipe","order":82,"description":""},{"name":"pipe-to-ground","order":83,"description":""},{"name":"plant","order":84,"description":""},{"name":"player-port","order":85,"description":""},{"name":"power-switch","order":86,"description":""},{"name":"programmable-speaker","order":87,"description":""},{"name":"projectile","order":88,"description":""},{"name":"proxy-container","order":89,"description":""},{"name":"pump","order":90,"description":""},{"name":"radar","order":91,"description":""},{"name":"rail-chain-signal","order":92,"description":""},{"name":"rail-ramp","order":93,"description":""},{"name":"rail-remnants","order":94,"description":""},{"name":"rail-signal","order":95,"description":""},{"name":"rail-support","order":96,"description":""},{"name":"reactor","order":97,"description":""},{"name":"resource","order":98,"description":""},{"name":"roboport","order":99,"description":""},{"name":"rocket-silo","order":100,"description":""},{"name":"rocket-silo-rocket","order":101,"description":""},{"name":"rocket-silo-rocket-shadow","order":102,"description":""},{"name":"segment","order":103,"description":""},{"name":"segmented-unit","order":104,"description":""},{"name":"selector-combinator","order":105,"description":""},{"name":"simple-entity","order":106,"description":""},{"name":"simple-entity-with-force","order":107,"description":""},{"name":"simple-entity-with-owner","order":108,"description":""},{"name":"smoke-with-trigger","order":109,"description":""},{"name":"solar-panel","order":110,"description":""},{"name":"space-platform-hub","order":111,"description":""},{"name":"speech-bubble","order":112,"description":""},{"name":"spider-leg","order":113,"description":""},{"name":"spider-unit","order":114,"description":""},{"name":"spider-vehicle","order":115,"description":""},{"name":"splitter","order":116,"description":""},{"name":"sticker","order":117,"description":""},{"name":"storage-tank","order":118,"description":""},{"name":"straight-rail","order":119,"description":""},{"name":"stream","order":120,"description":""},{"name":"temporary-container","order":121,"description":""},{"name":"thruster","order":122,"description":""},{"name":"tile-ghost","order":123,"description":""},{"name":"train-stop","order":124,"description":""},{"name":"transport-belt","order":125,"description":""},{"name":"tree","order":126,"description":""},{"name":"turret","order":127,"description":""},{"name":"underground-belt","order":128,"description":""},{"name":"unit","order":129,"description":""},{"name":"unit-spawner","order":130,"description":""},{"name":"valve","order":131,"description":""},{"name":"wall","order":132,"description":""}]},{"name":"equipment","order":18,"description":"","values":[{"name":"active-defense-equipment","order":0,"description":""},{"name":"battery-equipment","order":1,"description":""},{"name":"belt-immunity-equipment","order":2,"description":""},{"name":"energy-shield-equipment","order":3,"description":""},{"name":"equipment-ghost","order":4,"description":""},{"name":"generator-equipment","order":5,"description":""},{"name":"inventory-bonus-equipment","order":6,"description":""},{"name":"movement-bonus-equipment","order":7,"description":""},{"name":"night-vision-equipment","order":8,"description":""},{"name":"roboport-equipment","order":9,"description":""},{"name":"solar-panel-equipment","order":10,"description":""}]},{"name":"equipment-category","order":19,"description":"","values":[{"name":"equipment-category","order":0,"description":""}]},{"name":"equipment-grid","order":20,"description":"","values":[{"name":"equipment-grid","order":0,"description":""}]},{"name":"fluid","order":21,"description":"","values":[{"name":"fluid","order":0,"description":""}]},{"name":"font","order":22,"description":"","values":[{"name":"font","order":0,"description":""}]},{"name":"fuel-category","order":23,"description":"","values":[{"name":"fuel-category","order":0,"description":""}]},{"name":"god-controller","order":24,"description":"","values":[{"name":"god-controller","order":0,"description":""}]},{"name":"gui-style","order":25,"description":"","values":[{"name":"gui-style","order":0,"description":""}]},{"name":"impact-category","order":26,"description":"","values":[{"name":"impact-category","order":0,"description":""}]},{"name":"item","order":27,"description":"","values":[{"name":"ammo","order":0,"description":""},{"name":"armor","order":1,"description":""},{"name":"blueprint","order":2,"description":""},{"name":"blueprint-book","order":3,"description":""},{"name":"capsule","order":4,"description":""},{"name":"copy-paste-tool","order":5,"description":""},{"name":"deconstruction-item","order":6,"description":""},{"name":"gun","order":7,"description":""},{"name":"item","order":8,"description":""},{"name":"item-with-entity-data","order":9,"description":""},{"name":"item-with-inventory","order":10,"description":""},{"name":"item-with-label","order":11,"description":""},{"name":"item-with-tags","order":12,"description":""},{"name":"module","order":13,"description":""},{"name":"rail-planner","order":14,"description":""},{"name":"repair-tool","order":15,"description":""},{"name":"selection-tool","order":16,"description":""},{"name":"space-platform-starter-pack","order":17,"description":""},{"name":"spidertron-remote","order":18,"description":""},{"name":"tool","order":19,"description":""},{"name":"upgrade-item","order":20,"description":""}]},{"name":"item-group","order":28,"description":"","values":[{"name":"item-group","order":0,"description":""}]},{"name":"item-subgroup","order":29,"description":"","values":[{"name":"item-subgroup","order":0,"description":""}]},{"name":"map-gen-presets","order":30,"description":"","values":[{"name":"map-gen-presets","order":0,"description":""}]},{"name":"map-settings","order":31,"description":"","values":[{"name":"map-settings","order":0,"description":""}]},{"name":"mod-data","order":32,"description":"","values":[{"name":"mod-data","order":0,"description":""}]},{"name":"module-category","order":33,"description":"","values":[{"name":"module-category","order":0,"description":""}]},{"name":"mouse-cursor","order":34,"description":"","values":[{"name":"mouse-cursor","order":0,"description":""}]},{"name":"noise-expression","order":35,"description":"","values":[{"name":"noise-expression","order":0,"description":""}]},{"name":"noise-function","order":36,"description":"","values":[{"name":"noise-function","order":0,"description":""}]},{"name":"particle","order":37,"description":"","values":[{"name":"optimized-particle","order":0,"description":""}]},{"name":"procession","order":38,"description":"","values":[{"name":"procession","order":0,"description":""}]},{"name":"procession-layer-inheritance-group","order":39,"description":"","values":[{"name":"procession-layer-inheritance-group","order":0,"description":""}]},{"name":"quality","order":40,"description":"","values":[{"name":"quality","order":0,"description":""}]},{"name":"recipe","order":41,"description":"","values":[{"name":"recipe","order":0,"description":""}]},{"name":"recipe-category","order":42,"description":"","values":[{"name":"recipe-category","order":0,"description":""}]},{"name":"remote-controller","order":43,"description":"","values":[{"name":"remote-controller","order":0,"description":""}]},{"name":"resource-category","order":44,"description":"","values":[{"name":"resource-category","order":0,"description":""}]},{"name":"shortcut","order":45,"description":"","values":[{"name":"shortcut","order":0,"description":""}]},{"name":"sound","order":46,"description":"","values":[{"name":"sound","order":0,"description":""}]},{"name":"space-connection","order":47,"description":"","values":[{"name":"space-connection","order":0,"description":""}]},{"name":"space-location","order":48,"description":"","values":[{"name":"planet","order":0,"description":""},{"name":"space-location","order":1,"description":""}]},{"name":"spectator-controller","order":49,"description":"","values":[{"name":"spectator-controller","order":0,"description":""}]},{"name":"sprite","order":50,"description":"","values":[{"name":"sprite","order":0,"description":""}]},{"name":"surface","order":51,"description":"","values":[{"name":"surface","order":0,"description":""}]},{"name":"surface-property","order":52,"description":"","values":[{"name":"surface-property","order":0,"description":""}]},{"name":"technology","order":53,"description":"","values":[{"name":"technology","order":0,"description":""}]},{"name":"tile","order":54,"description":"","values":[{"name":"tile","order":0,"description":""}]},{"name":"tile-effect","order":55,"description":"","values":[{"name":"tile-effect","order":0,"description":""}]},{"name":"tips-and-tricks-item","order":56,"description":"","values":[{"name":"tips-and-tricks-item","order":0,"description":""}]},{"name":"tips-and-tricks-item-category","order":57,"description":"","values":[{"name":"tips-and-tricks-item-category","order":0,"description":""}]},{"name":"trigger-target-type","order":58,"description":"","values":[{"name":"trigger-target-type","order":0,"description":""}]},{"name":"trivial-smoke","order":59,"description":"","values":[{"name":"trivial-smoke","order":0,"description":""}]},{"name":"tutorial","order":60,"description":"","values":[{"name":"tutorial","order":0,"description":""}]},{"name":"utility-constants","order":61,"description":"","values":[{"name":"utility-constants","order":0,"description":""}]},{"name":"utility-sounds","order":62,"description":"","values":[{"name":"utility-sounds","order":0,"description":""}]},{"name":"utility-sprites","order":63,"description":"","values":[{"name":"utility-sprites","order":0,"description":""}]},{"name":"virtual-signal","order":64,"description":"","values":[{"name":"virtual-signal","order":0,"description":""}]}]},{"name":"rail_connection_direction","order":36,"description":"","values":[{"name":"left","order":0,"description":""},{"name":"none","order":3,"description":""},{"name":"right","order":2,"description":""},{"name":"straight","order":1,"description":""}]},{"name":"rail_direction","order":37,"description":"","values":[{"name":"back","order":1,"description":""},{"name":"front","order":0,"description":""}]},{"name":"rail_layer","order":38,"description":"","values":[{"name":"elevated","order":1,"description":""},{"name":"ground","order":0,"description":""}]},{"name":"relative_gui_position","order":39,"description":"","values":[{"name":"bottom","order":1,"description":""},{"name":"left","order":2,"description":""},{"name":"right","order":3,"description":""},{"name":"top","order":0,"description":""}]},{"name":"relative_gui_type","order":40,"description":"","values":[{"name":"accumulator_gui","order":0,"description":""},{"name":"achievement_gui","order":1,"description":""},{"name":"additional_entity_info_gui","order":2,"description":""},{"name":"admin_gui","order":3,"description":""},{"name":"agriculture_tower_gui","order":4,"description":""},{"name":"arithmetic_combinator_gui","order":5,"description":""},{"name":"armor_gui","order":6,"description":""},{"name":"assembling_machine_gui","order":7,"description":""},{"name":"assembling_machine_select_recipe_gui","order":8,"description":""},{"name":"asteroid_collector_gui","order":9,"description":""},{"name":"beacon_gui","order":10,"description":""},{"name":"blueprint_book_gui","order":11,"description":""},{"name":"blueprint_library_gui","order":12,"description":""},{"name":"blueprint_setup_gui","order":13,"description":""},{"name":"bonus_gui","order":14,"description":""},{"name":"burner_equipment_gui","order":15,"description":""},{"name":"car_gui","order":16,"description":""},{"name":"cargo_landing_pad_gui","order":17,"description":""},{"name":"constant_combinator_gui","order":18,"description":""},{"name":"container_gui","order":19,"description":""},{"name":"controller_gui","order":20,"description":""},{"name":"decider_combinator_gui","order":21,"description":""},{"name":"deconstruction_item_gui","order":22,"description":""},{"name":"display_panel_gui","order":23,"description":""},{"name":"electric_energy_interface_gui","order":24,"description":""},{"name":"electric_network_gui","order":25,"description":""},{"name":"entity_variations_gui","order":26,"description":""},{"name":"entity_with_energy_source_gui","order":27,"description":""},{"name":"equipment_grid_gui","order":28,"description":""},{"name":"furnace_gui","order":29,"description":""},{"name":"generic_on_off_entity_gui","order":30,"description":""},{"name":"ghost_picker_gui","order":31,"description":""},{"name":"global_electric_network_gui","order":32,"description":""},{"name":"heat_interface_gui","order":33,"description":""},{"name":"infinity_pipe_gui","order":34,"description":""},{"name":"inserter_gui","order":35,"description":""},{"name":"item_with_inventory_gui","order":36,"description":""},{"name":"lab_gui","order":37,"description":""},{"name":"lamp_gui","order":38,"description":""},{"name":"linked_container_gui","order":39,"description":""},{"name":"loader_gui","order":40,"description":""},{"name":"logistic_gui","order":41,"description":""},{"name":"market_gui","order":42,"description":""},{"name":"mining_drill_gui","order":43,"description":""},{"name":"other_player_gui","order":44,"description":""},{"name":"permissions_gui","order":45,"description":""},{"name":"pick_stop_gui","order":46,"description":""},{"name":"pipe_gui","order":47,"description":""},{"name":"power_switch_gui","order":48,"description":""},{"name":"production_gui","order":49,"description":""},{"name":"programmable_speaker_gui","order":50,"description":""},{"name":"proxy_container_gui","order":51,"description":""},{"name":"pump_gui","order":52,"description":""},{"name":"rail_signal_base_gui","order":53,"description":""},{"name":"reactor_gui","order":54,"description":""},{"name":"resource_entity_gui","order":55,"description":""},{"name":"roboport_gui","order":56,"description":""},{"name":"rocket_silo_gui","order":57,"description":""},{"name":"script_inventory_gui","order":58,"description":""},{"name":"selector_combinator_gui","order":59,"description":""},{"name":"server_config_gui","order":60,"description":""},{"name":"space_platform_hub_gui","order":61,"description":""},{"name":"spider_vehicle_gui","order":62,"description":""},{"name":"splitter_gui","order":63,"description":""},{"name":"standalone_character_gui","order":64,"description":""},{"name":"storage_tank_gui","order":65,"description":""},{"name":"tile_variations_gui","order":66,"description":""},{"name":"tips_and_tricks_gui","order":67,"description":""},{"name":"train_gui","order":68,"description":""},{"name":"train_stop_gui","order":69,"description":""},{"name":"trains_gui","order":70,"description":""},{"name":"transport_belt_gui","order":71,"description":""},{"name":"turret_gui","order":72,"description":""},{"name":"upgrade_item_gui","order":73,"description":""},{"name":"wall_gui","order":74,"description":""}]},{"name":"render_mode","order":41,"description":"","values":[{"name":"chart","order":1,"description":""},{"name":"chart_zoomed_in","order":2,"description":""},{"name":"game","order":0,"description":""}]},{"name":"rich_text_setting","order":42,"description":"","values":[{"name":"disabled","order":1,"description":""},{"name":"enabled","order":0,"description":""},{"name":"highlight","order":2,"description":""}]},{"name":"riding","order":43,"description":"","subkeys":[{"name":"acceleration","order":0,"description":"","values":[{"name":"accelerating","order":1,"description":""},{"name":"braking","order":2,"description":""},{"name":"nothing","order":0,"description":""},{"name":"reversing","order":3,"description":""}]},{"name":"direction","order":1,"description":"","values":[{"name":"left","order":0,"description":""},{"name":"right","order":2,"description":""},{"name":"straight","order":1,"description":""}]}]},{"name":"robot_order_type","order":44,"description":"","values":[{"name":"construct","order":0,"description":"Construct a ghost."},{"name":"deconstruct","order":4,"description":"Deconstruct an entity."},{"name":"deliver","order":2,"description":"Deliver an item."},{"name":"deliver_items","order":5,"description":"Deliver specific items to an entity (item request proxy)."},{"name":"explode_cliff","order":7,"description":"Explode a cliff."},{"name":"pickup","order":1,"description":"Pickup an item."},{"name":"pickup_items","order":8,"description":"Pickup items from an entity (item request proxy)."},{"name":"repair","order":3,"description":"Repair an entity."},{"name":"upgrade","order":6,"description":"Upgrade an entity."}]},{"name":"rocket_silo_status","order":45,"description":"The various parts of the launch sequence of the rocket silo.","values":[{"name":"arms_advance","order":6,"description":"The next state is `rocket_ready` or if the rocket is destroyed in this state then the next state will be `lights_blinking_close`. The rocket is getting prepared for launch."},{"name":"arms_retract","order":10,"description":"The next state is `rocket_flying` or if the rocket is destroyed in this state then the next state will be `lights_blinking_close`. The rocket is getting launched."},{"name":"building_rocket","order":0,"description":"The rocket silo is crafting rocket parts. When there are enough rocket parts, the silo will switch into the `create_rocket` state."},{"name":"create_rocket","order":1,"description":"The next state is `lights_blinking_open`. The rocket silo rocket entity gets created."},{"name":"doors_closing","order":13,"description":"The next state is `building_rocket`."},{"name":"doors_opened","order":4,"description":"The next state is `rocket_rising` or if the rocket is destroyed in this state then the next state will be `lights_blinking_close`. The rocket is getting prepared for launch."},{"name":"doors_opening","order":3,"description":"The next state is `doors_opened`. The rocket is getting prepared for launch."},{"name":"engine_starting","order":9,"description":"The next state is `arms_retract` or if the rocket is destroyed in this state then the next state will be `lights_blinking_close`. The rocket is getting launched."},{"name":"launch_started","order":14,"description":"The next state is `engine_starting` or if the rocket is destroyed in this state then the next state will be `lights_blinking_close`. The rocket is getting launched."},{"name":"launch_starting","order":8,"description":"The next state is `launch_started`."},{"name":"lights_blinking_close","order":12,"description":"The next state is `doors_closing`."},{"name":"lights_blinking_open","order":2,"description":"The next state is `doors_opening`. The rocket is getting prepared for launch."},{"name":"rocket_flying","order":11,"description":"The next state is `lights_blinking_close`. The rocket is getting launched."},{"name":"rocket_ready","order":7,"description":"The rocket launch can be started by the player. When the launch is started, the silo switches into the `launch_starting` state."},{"name":"rocket_rising","order":5,"description":"The next state is `arms_advance` or if the rocket is destroyed in this state then the next state will be `lights_blinking_close`. The rocket is getting prepared for launch."}]},{"name":"segmented_unit_activity_mode","order":46,"description":"","values":[{"name":"asleep","order":0,"description":"The segmented unit is completely asleep, only performing the bare minimum checks to wake up if needed."},{"name":"full","order":2,"description":"The segmented unit is fully active and simulated as if it is being observed by a player."},{"name":"minimal","order":1,"description":"The segmented unit is minimally active, reducing unnecessary entity movement and trigger effects while continuing to patrol around its territory."}]},{"name":"segmented_unit_ai_state","order":47,"description":"","values":[{"name":"attacking","order":2,"description":"The segmented unit is attacking an entity that is trespassing on its territory, but the segmented unit is not using its full strength."},{"name":"enraged_at_nothing","order":4,"description":"The segmented unit is angry because it was attacked but it does not have a valid attack target, so it is wandering around trying to find a valid attack target."},{"name":"enraged_at_target","order":3,"description":"The segmented unit is angry because it was attacked and is aggressively attacking an entity with its full strength."},{"name":"investigating","order":1,"description":"The segmented unit is investigating a location where it detected a disturbance."},{"name":"patrolling","order":0,"description":"The segmented unit is navigating its territory's patrol path. If the unit is not assigned to a territory, then it is patrolling around the position it was created."}]},{"name":"segmented_unit_created_cause","order":48,"description":"","values":[{"name":"map_generated","order":0,"description":"The segmented unit was spawned naturally by the map generator."},{"name":"script_cloned","order":2,"description":"The segmented unit was cloned from an existing segmented unit via script."},{"name":"script_created","order":1,"description":"The segmented unit was created manually via script."}]},{"name":"selection_mode","order":49,"description":"","values":[{"name":"alt_reverse_select","order":3,"description":""},{"name":"alt_select","order":1,"description":""},{"name":"reverse_select","order":2,"description":""},{"name":"select","order":0,"description":""}]},{"name":"shooting","order":50,"description":"","values":[{"name":"not_shooting","order":0,"description":""},{"name":"shooting_enemies","order":1,"description":""},{"name":"shooting_selected","order":2,"description":""}]},{"name":"signal_state","order":51,"description":"State of an ordinary rail signal.","values":[{"name":"closed","order":1,"description":"Red."},{"name":"open","order":0,"description":"Green."},{"name":"reserved","order":2,"description":"Orange."},{"name":"reserved_by_circuit_network","order":3,"description":"Red - From circuit network."}]},{"name":"space_platform_state","order":52,"description":"","values":[{"name":"no_path","order":6,"description":"Doesn't have anywhere to go."},{"name":"no_schedule","order":5,"description":"Doesn't have any stations in schedule."},{"name":"on_the_path","order":3,"description":"Following the path."},{"name":"paused","order":8,"description":"Paused."},{"name":"starter_pack_on_the_way","order":2,"description":"Starter pack is on the way."},{"name":"starter_pack_requested","order":1,"description":"Starter pack was requested from the logistics system."},{"name":"waiting_at_station","order":7,"description":"Waiting at a station."},{"name":"waiting_for_departure","order":4,"description":"Platform is ready to leave this planet and does not accept deliveries."},{"name":"waiting_for_starter_pack","order":0,"description":"Waiting for a starter pack."}]},{"name":"target_type","order":53,"description":"","values":[{"name":"cargo_hatch","order":18,"description":""},{"name":"commandable","order":15,"description":""},{"name":"custom_chart_tag","order":16,"description":""},{"name":"entity","order":0,"description":""},{"name":"equipment","order":1,"description":""},{"name":"equipment_grid","order":2,"description":""},{"name":"gui_element","order":17,"description":""},{"name":"item","order":3,"description":""},{"name":"logistic_cell","order":4,"description":""},{"name":"logistic_network","order":5,"description":""},{"name":"logistic_section","order":6,"description":""},{"name":"permission_group","order":7,"description":""},{"name":"planet","order":8,"description":""},{"name":"player","order":9,"description":""},{"name":"rail_path","order":10,"description":""},{"name":"render_object","order":11,"description":""},{"name":"schedule","order":19,"description":""},{"name":"segmented_unit","order":21,"description":""},{"name":"space_platform","order":12,"description":""},{"name":"surface","order":13,"description":""},{"name":"territory","order":20,"description":""},{"name":"train","order":14,"description":""}]},{"name":"territory_created_cause","order":54,"description":"","values":[{"name":"map_generated","order":0,"description":"The territory was spawned naturally by the map generator."},{"name":"script_created","order":1,"description":"The territory was created manually via script."}]},{"name":"train_state","order":55,"description":"","values":[{"name":"arrive_signal","order":3,"description":"Braking before a rail signal."},{"name":"arrive_station","order":5,"description":"Braking before a station."},{"name":"destination_full","order":9,"description":"Same as no_path but all candidate train stops are full"},{"name":"manual_control","order":7,"description":"Can move if user explicitly sits in and rides the train."},{"name":"manual_control_stop","order":6,"description":"Switched to manual control and has to stop."},{"name":"no_path","order":2,"description":"Has no path and is stopped."},{"name":"no_schedule","order":1,"description":"Doesn't have anywhere to go."},{"name":"on_the_path","order":0,"description":"Normal state -- following the path."},{"name":"wait_signal","order":4,"description":"Waiting at a signal."},{"name":"wait_station","order":8,"description":"Waiting at a station."}]},{"name":"transport_line","order":56,"description":"","values":[{"name":"left_line","order":0,"description":""},{"name":"left_split_line","order":6,"description":""},{"name":"left_underground_line","order":2,"description":""},{"name":"right_line","order":1,"description":""},{"name":"right_split_line","order":7,"description":""},{"name":"right_underground_line","order":3,"description":""},{"name":"secondary_left_line","order":4,"description":""},{"name":"secondary_left_split_line","order":8,"description":""},{"name":"secondary_right_line","order":5,"description":""},{"name":"secondary_right_split_line","order":9,"description":""}]},{"name":"wire_connector_id","order":57,"description":"","values":[{"name":"circuit_green","order":1,"description":""},{"name":"circuit_red","order":0,"description":""},{"name":"combinator_input_green","order":3,"description":""},{"name":"combinator_input_red","order":2,"description":""},{"name":"combinator_output_green","order":5,"description":""},{"name":"combinator_output_red","order":4,"description":""},{"name":"pole_copper","order":6,"description":""},{"name":"power_switch_left_copper","order":7,"description":""},{"name":"power_switch_right_copper","order":8,"description":""}]},{"name":"wire_origin","order":58,"description":"","values":[{"name":"player","order":0,"description":"These wires can be modified by players, scripts, and the game. They are visible to the player if the entity's `draw_circuit_wires` prototype property is set to `true` and both ends of it are on the same surface."},{"name":"radars","order":2,"description":"These wires can only be modified by the game. They are not visible to the player, irrespective of the `draw_circuit_wires` prototype property."},{"name":"script","order":1,"description":"These wires can be modified by scripts and the game. They are not visible to the player, irrespective of the `draw_circuit_wires` prototype property."}]},{"name":"wire_type","order":59,"description":"","values":[{"name":"copper","order":2,"description":""},{"name":"green","order":1,"description":""},{"name":"red","order":0,"description":""}]}]}