factorio-types 0.0.37 → 0.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,8 @@
2
2
  // Factorio API reference https://lua-api.factorio.com/latest/index.html
3
3
  // Generated from JSON source https://lua-api.factorio.com/latest/runtime-api.json
4
4
  // Definition source https://github.com/sguest/factorio-types
5
- // Factorio version 1.1.86
6
- // API version 3
5
+ // Factorio version 1.1.89
6
+ // API version 4
7
7
 
8
8
  /**
9
9
  * Depending on the value of `filter`, the table may take additional fields. `filter` may be one of the following:
@@ -42,7 +42,7 @@ interface Alert {
42
42
  }
43
43
 
44
44
  /**
45
- * A {@link string | string} that specifies where a GUI element should be.
45
+ * A {@link string | runtime:string} that specifies where a GUI element should be.
46
46
  */
47
47
  type Alignment = 'top-left' | 'middle-left' | /* The same as `"middle-left"` */ 'left' | 'bottom-left' | 'top-center' | 'middle-center' | /* The same as `"middle-center"` */ 'center' | 'bottom-center' | 'top-right' | /* The same as `"middle-right"` */ 'right' | 'bottom-right'
48
48
 
@@ -124,7 +124,7 @@ interface AttackParameterFluid {
124
124
  damage_modifier: number,
125
125
 
126
126
  /**
127
- * Name of the {@link LuaFluidPrototype | LuaFluidPrototype}.
127
+ * Name of the {@link LuaFluidPrototype | runtime:LuaFluidPrototype}.
128
128
  */
129
129
  type: string
130
130
  }
@@ -139,12 +139,12 @@ type AttackParameters = AttackParametersProjectile | AttackParametersStream | De
139
139
  interface AutoplaceControl {
140
140
 
141
141
  /**
142
- * For things that are placed as spots such as ores and enemy bases, frequency is generally proportional to number of spots placed per unit area. For continuous features such as forests, frequency is how compressed the probability function is over distance, i.e. the inverse of 'scale' (similar to terrain_segmentation). When the {@link LuaAutoplaceControlPrototype | LuaAutoplaceControlPrototype} is of the category `"terrain"`, then scale is shown in the map generator GUI instead of frequency.
142
+ * For things that are placed as spots such as ores and enemy bases, frequency is generally proportional to number of spots placed per unit area. For continuous features such as forests, frequency is how compressed the probability function is over distance, i.e. the inverse of 'scale' (similar to terrain_segmentation). When the {@link LuaAutoplaceControlPrototype | runtime:LuaAutoplaceControlPrototype} is of the category `"terrain"`, then scale is shown in the map generator GUI instead of frequency.
143
143
  */
144
144
  frequency: MapGenSize,
145
145
 
146
146
  /**
147
- * Has different effects for different things, but generally affects the 'health' or density of a thing that is placed without affecting where it is placed. For trees, richness affects tree health. For ores, richness multiplies the amount of ore at any given tile in a patch. Metadata about autoplace controls (such as whether or not 'richness' does anything for them) can be found in the {@link LuaAutoplaceControlPrototype | LuaAutoplaceControlPrototype} by looking up `game.autoplace_control_prototypes[(control prototype name)]`, e.g. `game.autoplace_control_prototypes["enemy-base"].richness` is false, because enemy base autoplacement doesn't use richness.
147
+ * Has different effects for different things, but generally affects the 'health' or density of a thing that is placed without affecting where it is placed. For trees, richness affects tree health. For ores, richness multiplies the amount of ore at any given tile in a patch. Metadata about autoplace controls (such as whether or not 'richness' does anything for them) can be found in the {@link LuaAutoplaceControlPrototype | runtime:LuaAutoplaceControlPrototype} by looking up `game.autoplace_control_prototypes[(control prototype name)]`, e.g. `game.autoplace_control_prototypes["enemy-base"].richness` is false, because enemy base autoplacement doesn't use richness.
148
148
  */
149
149
  richness: MapGenSize,
150
150
 
@@ -323,7 +323,7 @@ interface BlueprintSignalIcon {
323
323
  }
324
324
 
325
325
  /**
326
- * Two positions, specifying the top-left and bottom-right corner of the box respectively. Like with {@link MapPosition | MapPosition}, the names of the members may be omitted. When read from the game, the third member `orientation` is present if it is non-zero.
326
+ * Two positions, specifying the top-left and bottom-right corner of the box respectively. Like with {@link MapPosition | runtime:MapPosition}, the names of the members may be omitted. When read from the game, the third member `orientation` is present if it is non-zero.
327
327
  * @example
328
328
  * Explicit definition:
329
329
  * ```
@@ -363,7 +363,7 @@ interface ChartTagSpec {
363
363
  }
364
364
 
365
365
  /**
366
- * Coordinates of a chunk in a {@link LuaSurface | LuaSurface} where each integer `x`/`y` represents a different chunk. This uses the same format as {@link MapPosition | MapPosition}, meaning it can be specified either with or without explicit keys. A {@link MapPosition | MapPosition} can be translated to a ChunkPosition by dividing the `x`/`y` values by 32.
366
+ * Coordinates of a chunk in a {@link LuaSurface | runtime:LuaSurface} where each integer `x`/`y` represents a different chunk. This uses the same format as {@link MapPosition | runtime:MapPosition}, meaning it can be specified either with or without explicit keys. A {@link MapPosition | runtime:MapPosition} can be translated to a ChunkPosition by dividing the `x`/`y` values by 32.
367
367
  */
368
368
  type ChunkPosition = {
369
369
  x: number,
@@ -371,7 +371,7 @@ type ChunkPosition = {
371
371
  }
372
372
 
373
373
  /**
374
- * A {@link ChunkPosition | ChunkPosition} with an added bounding box for the area of the chunk.
374
+ * A {@link ChunkPosition | runtime:ChunkPosition} with an added bounding box for the area of the chunk.
375
375
  */
376
376
  interface ChunkPositionAndArea {
377
377
  area: BoundingBox,
@@ -417,7 +417,7 @@ interface CircuitConnectionDefinition {
417
417
  target_entity: LuaEntity,
418
418
 
419
419
  /**
420
- * Wire color, either {@link defines.wire_type.red | defines.wire_type.red} or {@link defines.wire_type.green | defines.wire_type.green}.
420
+ * Wire color, either {@link defines.wire_type.red | runtime:defines.wire_type.red} or {@link defines.wire_type.green | runtime:defines.wire_type.green}.
421
421
  */
422
422
  wire: defines.wire_type
423
423
  }
@@ -436,7 +436,7 @@ interface CircularParticleCreationSpecification {
436
436
  height_deviation: number,
437
437
 
438
438
  /**
439
- * Name of the {@link LuaEntityPrototype | LuaEntityPrototype}
439
+ * Name of the {@link LuaEntityPrototype | runtime:LuaEntityPrototype}
440
440
  */
441
441
  name: string,
442
442
  speed: number,
@@ -484,21 +484,21 @@ interface CliffPlacementSettings {
484
484
  type CollisionMask = {[key: string]: true}
485
485
 
486
486
  /**
487
- * A {@link string | string} specifying a collision mask layer.
487
+ * A {@link string | runtime:string} specifying a collision mask layer.
488
488
  *
489
489
  * In addition to the listed layers, there is `"layer-13"` through `"layer-55"`. These layers are currently unused by the game but may change. If a mod is going to use one of the unused layers it's recommended to start at the higher layers because the base game will take from the lower ones.
490
490
  */
491
491
  type CollisionMaskLayer = 'ground-tile' | 'water-tile' | 'resource-layer' | 'doodad-layer' | 'floor-layer' | 'item-layer' | 'ghost-layer' | 'object-layer' | 'player-layer' | 'train-layer' | 'rail-layer' | 'transport-belt-layer' | 'not-setup' | 'layer-13' | 'layer-14' | 'layer-15' | 'layer-16' | 'layer-17' | 'layer-18' | 'layer-19' | 'layer-20' | 'layer-21' | 'layer-22' | 'layer-23' | 'layer-24' | 'layer-25' | 'layer-26' | 'layer-27' | 'layer-28' | 'layer-29' | 'layer-30' | 'layer-31' | 'layer-32' | 'layer-33' | 'layer-34' | 'layer-35' | 'layer-36' | 'layer-37' | 'layer-38' | 'layer-39' | 'layer-40' | 'layer-41' | 'layer-42' | 'layer-43' | 'layer-44' | 'layer-45' | 'layer-46' | 'layer-47' | 'layer-48' | 'layer-49' | 'layer-50' | 'layer-51' | 'layer-52' | 'layer-53' | 'layer-54' | 'layer-55'
492
492
 
493
493
  /**
494
- * A {@link CollisionMask | CollisionMask} which also includes any flags this mask has.
494
+ * A {@link CollisionMask | runtime:CollisionMask} which also includes any flags this mask has.
495
495
  */
496
496
  type CollisionMaskWithFlags = {[key: string]: true}
497
497
 
498
498
  /**
499
499
  * Red, green, blue and alpha values, all in range [0, 1] or all in range [0, 255] if any value is > 1. All values here are optional. Color channels default to `0`, the alpha channel defaults to `1`.
500
500
  *
501
- * Similar to {@link MapPosition | MapPosition}, Color allows the short-hand notation of passing an array of exactly 3 or 4 numbers. The game usually expects colors to be in pre-multiplied form (color channels are pre-multiplied by alpha).
501
+ * Similar to {@link MapPosition | runtime:MapPosition}, Color allows the short-hand notation of passing an array of exactly 3 or 4 numbers. The game usually expects colors to be in pre-multiplied form (color channels are pre-multiplied by alpha).
502
502
  * @example
503
503
  * ```
504
504
  * red1 = {r = 0.5, g = 0, b = 0, a = 0.5} -- Half-opacity red
@@ -516,7 +516,7 @@ type Color = {
516
516
  }
517
517
 
518
518
  /**
519
- * Same as {@link Color | Color}, but red, green, blue and alpha values can be any floating point number, without any special handling of the range [1, 255].
519
+ * Same as {@link Color | runtime:Color}, but red, green, blue and alpha values can be any floating point number, without any special handling of the range [1, 255].
520
520
  */
521
521
  type ColorModifier = {
522
522
  a?: number,
@@ -593,6 +593,12 @@ interface ConstantCombinatorParameters {
593
593
  signal: SignalID
594
594
  }
595
595
 
596
+ interface CopperConnectionDefinition {
597
+ source_wire_connector: defines.wire_connection_id,
598
+ target_entity: LuaEntity,
599
+ target_wire_connector: defines.wire_connection_id
600
+ }
601
+
596
602
  interface CraftingQueueItem {
597
603
 
598
604
  /**
@@ -730,18 +736,20 @@ interface DecorativeResult {
730
736
  * Technology and recipe difficulty settings. Updating any of the attributes will immediately take effect in the game engine.
731
737
  */
732
738
  interface DifficultySettings {
733
- recipe_difficulty: defines.difficulty_settings.recipe_difficulty,
734
-
739
+ recipe_difficulty: defines.difficulty_settings.recipe_difficulty
740
+
735
741
  /**
736
- * Either `"after-victory"`, `"always"` or `"never"`. Changing this to `"always"` or `"after-victory"` does not automatically unlock the research queue. See {@link LuaForce | LuaForce} for that.
742
+ * Either `"after-victory"`, `"always"` or `"never"`. Changing this to `"always"` or `"after-victory"` does not automatically unlock the research queue. See {@link LuaForce | runtime:LuaForce} for that.
737
743
  */
738
- research_queue_setting: string,
739
- technology_difficulty: defines.difficulty_settings.technology_difficulty,
740
-
744
+ research_queue_setting: string
745
+
746
+ technology_difficulty: defines.difficulty_settings.technology_difficulty
747
+
741
748
  /**
742
749
  * A value in range [0.001, 1000].
743
750
  */
744
751
  technology_price_multiplier: number
752
+
745
753
  }
746
754
 
747
755
  interface DisplayResolution {
@@ -907,7 +915,7 @@ interface EquipmentPoint {
907
915
  }
908
916
 
909
917
  /**
910
- * Position inside an equipment grid. This uses the same format as {@link MapPosition | MapPosition}, meaning it can be specified either with or without explicit keys.
918
+ * Position inside an equipment grid. This uses the same format as {@link MapPosition | runtime:MapPosition}, meaning it can be specified either with or without explicit keys.
911
919
  * @example
912
920
  * Explicit definition:
913
921
  * ```
@@ -936,12 +944,12 @@ type EquipmentPosition = {
936
944
  type EquipmentPrototypeFilter = EquipmentPrototypeFilterType | DefaultEquipmentPrototypeFilter
937
945
 
938
946
  /**
939
- * Information about the event that has been raised. The table can also contain other fields depending on the type of event. See {@link the list of Factorio events | events.html} for more information on these.
947
+ * Information about the event that has been raised. The table can also contain other fields depending on the type of event. See {@link the list of Factorio events | runtime:events} for more information on these.
940
948
  */
941
949
  interface EventData {
942
950
 
943
951
  /**
944
- * The name of the mod that raised the event if it was raised using {@link LuaBootstrap::raise_event | LuaBootstrap::raise_event}.
952
+ * The name of the mod that raised the event if it was raised using {@link LuaBootstrap::raise_event | runtime:LuaBootstrap::raise_event}.
945
953
  */
946
954
  mod_name?: string,
947
955
 
@@ -977,7 +985,7 @@ interface Fluid {
977
985
  name: string,
978
986
 
979
987
  /**
980
- * The temperature. When reading from {@link LuaFluidBox | LuaFluidBox}, this field will always be present. It is not necessary to specify it when writing, however. When not specified, the fluid will be set to the fluid's default temperature as specified in the fluid's prototype.
988
+ * The temperature. When reading from {@link LuaFluidBox | runtime:LuaFluidBox}, this field will always be present. It is not necessary to specify it when writing, however. When not specified, the fluid will be set to the fluid's default temperature as specified in the fluid's prototype.
981
989
  */
982
990
  temperature?: number
983
991
  }
@@ -1062,7 +1070,7 @@ type ForceCondition = /* All forces pass. */ 'all' | /* Forces which will attack
1062
1070
  /**
1063
1071
  * A force may be specified in one of three ways.
1064
1072
  */
1065
- type ForceIdentification = /* The force index. */ number | /* The force name. */ string | /* A reference to {@link LuaForce | LuaForce} may be passed directly. */ LuaForce
1073
+ type ForceIdentification = /* The force index. */ number | /* The force name. */ string | /* A reference to {@link LuaForce | runtime:LuaForce} may be passed directly. */ LuaForce
1066
1074
 
1067
1075
  /**
1068
1076
  * Parameters that affect the look and control of the game. Updating any of the member attributes here will immediately take effect in the game engine.
@@ -1173,8 +1181,12 @@ interface GuiAnchor {
1173
1181
  */
1174
1182
  type GuiArrowSpecification = GuiArrowSpecificationCraftingQueue | GuiArrowSpecificationEntity | GuiArrowSpecificationItemStack | GuiArrowSpecificationPosition | DefaultGuiArrowSpecification
1175
1183
 
1184
+ type GuiArrowType = 'nowhere' | 'goal' | 'entity_info' | 'active_window' | 'entity' | 'position' | 'crafting_queue' | 'item_stack'
1185
+
1186
+ type GuiElementType = /* A clickable element. Relevant event: {@link on_gui_click | runtime:on_gui_click} */ 'button' | /* A `button` that displays a sprite rather than text. Relevant event: {@link on_gui_click | runtime:on_gui_click} */ 'sprite-button' | /* A clickable element with a check mark that can be turned off or on. Relevant event: {@link on_gui_checked_state_changed | runtime:on_gui_checked_state_changed} */ 'checkbox' | /* An invisible container that lays out its children either horizontally or vertically. */ 'flow' | /* A non-transparent box that contains other elements. It can have a title (set via the `caption` attribute). Just like a `flow`, it lays out its children either horizontally or vertically. Relevant event: {@link on_gui_location_changed | runtime:on_gui_location_changed} */ 'frame' | /* A piece of text. */ 'label' | /* A horizontal or vertical separation line. */ 'line' | /* A partially filled bar that can be used to indicate progress. */ 'progressbar' | /* An invisible container that lays out its children in a specific number of columns. The width of each column is determined by the widest element it contains. */ 'table' | /* A single-line box the user can type into. Relevant events: {@link on_gui_text_changed | runtime:on_gui_text_changed}, {@link on_gui_confirmed | runtime:on_gui_confirmed} */ 'textfield' | /* An element that is similar to a `checkbox`, but with a circular appearance. Clicking a selected radio button will not unselect it. Radio buttons are not linked to each other in any way. Relevant event: {@link on_gui_checked_state_changed | runtime:on_gui_checked_state_changed} */ 'radiobutton' | /* An element that shows an image. */ 'sprite' | /* An invisible element that is similar to a `flow`, but has the ability to show and use scroll bars. */ 'scroll-pane' | /* A drop-down containing strings of text. Relevant event: {@link on_gui_selection_state_changed | runtime:on_gui_selection_state_changed} */ 'drop-down' | /* A list of strings, only one of which can be selected at a time. Shows a scroll bar if necessary. Relevant event: {@link on_gui_selection_state_changed | runtime:on_gui_selection_state_changed} */ 'list-box' | /* A camera that shows the game at the given position on the given surface. It can visually track an {@link entity | runtime:LuaGuiElement::entity} that is set after the element has been created. */ 'camera' | /* A button that lets the player pick from a certain kind of prototype, with optional filtering. Relevant event: {@link on_gui_elem_changed | runtime:on_gui_elem_changed} */ 'choose-elem-button' | /* A multi-line `textfield`. Relevant event: {@link on_gui_text_changed | runtime:on_gui_text_changed} */ 'text-box' | /* A horizontal number line which can be used to choose a number. Relevant event: {@link on_gui_value_changed | runtime:on_gui_value_changed} */ 'slider' | /* A minimap preview, similar to the normal player minimap. It can visually track an {@link entity | runtime:LuaGuiElement::entity} that is set after the element has been created. */ 'minimap' | /* A preview of an entity. The {@link entity | runtime:LuaGuiElement::entity} has to be set after the element has been created. */ 'entity-preview' | /* An empty element that just exists. The root GUI elements `screen` and `relative` are `empty-widget`s. */ 'empty-widget' | /* A collection of `tab`s and their contents. Relevant event: {@link on_gui_selected_tab_changed | runtime:on_gui_selected_tab_changed} */ 'tabbed-pane' | /* A tab for use in a `tabbed-pane`. */ 'tab' | /* A switch with three possible states. Can have labels attached to either side. Relevant event: {@link on_gui_switch_state_changed | runtime:on_gui_switch_state_changed} */ 'switch'
1187
+
1176
1188
  /**
1177
- * Screen coordinates of a GUI element in a {@link LuaGui | LuaGui}. This uses the same format as {@link TilePosition | TilePosition}, meaning it can be specified either with or without explicit keys.
1189
+ * Screen coordinates of a GUI element in a {@link LuaGui | runtime:LuaGui}. This uses the same format as {@link TilePosition | runtime:TilePosition}, meaning it can be specified either with or without explicit keys.
1178
1190
  */
1179
1191
  type GuiLocation = {
1180
1192
  x: number,
@@ -1386,7 +1398,7 @@ interface ItemStackLocation {
1386
1398
  * If `entity-description.furnace` exists, it is concatenated with `"\n"` and returned. Otherwise, if `item-description.furnace` exists, it is returned as-is. Otherwise, `"optional fallback"` is returned. If this value wasn't specified, the translation result would be `"Unknown key: 'item-description.furnace'"`.
1387
1399
  *
1388
1400
  */
1389
- type LocalisedString = string | number | boolean | object | null | Array<string | LocalisedString>
1401
+ type LocalisedString = string | number | boolean | object | null | LocalisedString[]
1390
1402
 
1391
1403
  interface LogisticFilter {
1392
1404
 
@@ -1616,10 +1628,10 @@ type LuaSectorScannedEventFilter = LuaSectorScannedEventFilterGhostName | LuaSec
1616
1628
  type LuaUpgradeCancelledEventFilter = LuaUpgradeCancelledEventFilterGhostName | LuaUpgradeCancelledEventFilterGhostType | LuaUpgradeCancelledEventFilterName | LuaUpgradeCancelledEventFilterType | DefaultLuaUpgradeCancelledEventFilter
1617
1629
 
1618
1630
  /**
1619
- * All regular {@link MapSettings | MapSettings} plus an additional table that contains the {@link DifficultySettings | DifficultySettings}.
1631
+ * A standard table containing all {@link MapSettings | runtime:MapSettings} attributes plus an additional table that contains all {@link DifficultySettings | runtime:DifficultySettings} properties.
1620
1632
  */
1621
1633
  interface MapAndDifficultySettings {
1622
- difficulty_settings: DifficultySettings,
1634
+ difficulty_settings: MapDifficultySettings,
1623
1635
  enemy_evolution: EnemyEvolutionMapSettings,
1624
1636
  enemy_expansion: EnemyExpansionMapSettings,
1625
1637
 
@@ -1633,6 +1645,21 @@ interface MapAndDifficultySettings {
1633
1645
  unit_group: UnitGroupMapSettings
1634
1646
  }
1635
1647
 
1648
+ interface MapDifficultySettings {
1649
+ recipe_difficulty: defines.difficulty_settings.recipe_difficulty,
1650
+
1651
+ /**
1652
+ * Either `"after-victory"`, `"always"` or `"never"`. Changing this to `"always"` or `"after-victory"` does not automatically unlock the research queue. See {@link LuaForce | runtime:LuaForce} for that.
1653
+ */
1654
+ research_queue_setting: string,
1655
+ technology_difficulty: defines.difficulty_settings.technology_difficulty,
1656
+
1657
+ /**
1658
+ * A value in range [0.001, 1000].
1659
+ */
1660
+ technology_price_multiplier: number
1661
+ }
1662
+
1636
1663
  /**
1637
1664
  * The data that can be extracted from a map exchange string, as a plain table.
1638
1665
  */
@@ -1716,8 +1743,8 @@ interface MapGenSettings {
1716
1743
  - `moisture` - a value between 0 and 1 that determines whether a tile becomes sandy (low moisture) or grassy (high moisture).
1717
1744
  - `aux` - a value between 0 and 1 that determines whether low-moisture tiles become sand or red desert.
1718
1745
  - `temperature` - provides a value (vaguely representing degrees Celsius, varying between -20 and 50) that is used (together with moisture and aux) as part of tree and decorative placement.
1719
- - `elevation` - tiles values less than zero become water. Cliffs are placed along certain contours according to {@link CliffPlacementSettings | CliffPlacementSettings}.
1720
- - `cliffiness` - determines whether (when >0.5) or not (when <0.5) a cliff will be placed at an otherwise suitable (according to {@link CliffPlacementSettings | CliffPlacementSettings}) location.
1746
+ - `elevation` - tiles values less than zero become water. Cliffs are placed along certain contours according to {@link CliffPlacementSettings | runtime:CliffPlacementSettings}.
1747
+ - `cliffiness` - determines whether (when >0.5) or not (when <0.5) a cliff will be placed at an otherwise suitable (according to {@link CliffPlacementSettings | runtime:CliffPlacementSettings}) location.
1721
1748
  - `enemy-base-intensity` - a number that is referenced by both `enemy-base-frequency` and `enemy-base-radius`. i.e. if this is overridden, enemy base frequency and size will both be affected and do something reasonable. By default, this expression returns a value proportional to distance from any starting point, clamped at about 7.
1722
1749
  - `enemy-base-frequency` - a number representing average number of enemy bases per tile for a region, by default in terms of `enemy-base-intensity`.
1723
1750
  - `enemy-base-radius` - a number representing the radius of an enemy base, if one were to be placed on the given tile, by default proportional to a constant plus `enemy-base-intensity`. Climate controls ('Moisture' and 'Terrain type' at the bottom of the Terrain tab in the map generator GUI) don't have their own dedicated structures in MapGenSettings. Instead, their values are stored as property expression overrides with long names:
@@ -1802,17 +1829,23 @@ type MapPosition = {
1802
1829
  *
1803
1830
  */
1804
1831
  interface MapSettings {
1805
- enemy_evolution: EnemyEvolutionMapSettings,
1806
- enemy_expansion: EnemyExpansionMapSettings,
1807
-
1832
+ enemy_evolution: EnemyEvolutionMapSettings
1833
+
1834
+ enemy_expansion: EnemyExpansionMapSettings
1835
+
1808
1836
  /**
1809
1837
  * If a behavior fails this many times, the enemy (or enemy group) is destroyed. This solves biters getting stuck within their own base.
1810
1838
  */
1811
- max_failed_behavior_count: number,
1812
- path_finder: PathFinderMapSettings,
1813
- pollution: PollutionMapSettings,
1814
- steering: SteeringMapSettings,
1839
+ max_failed_behavior_count: number
1840
+
1841
+ path_finder: PathFinderMapSettings
1842
+
1843
+ pollution: PollutionMapSettings
1844
+
1845
+ steering: SteeringMapSetting
1846
+
1815
1847
  unit_group: UnitGroupMapSettings
1848
+
1816
1849
  }
1817
1850
 
1818
1851
  /**
@@ -1887,12 +1920,12 @@ interface ModuleEffects {
1887
1920
  /**
1888
1921
  * A set of flags. Active flags are in the dictionary as `true`, while inactive flags aren't present at all.
1889
1922
  *
1890
- * To write to this, use an array{@link [string | string}] of the mouse buttons that should be possible to use with on button. The flag `"left-and-right"` can also be set, which will set `"left"` and `"right"` to `true`.
1923
+ * To write to this, use an array{@link [string | runtime:string}] of the mouse buttons that should be possible to use with on button. The flag `"left-and-right"` can also be set, which will set `"left"` and `"right"` to `true`.
1891
1924
  */
1892
1925
  type MouseButtonFlags = {[key: string]: true}
1893
1926
 
1894
1927
  /**
1895
- * A fragment of a functional program used to generate coherent noise, probably for purposes related to terrain generation. These can only be meaningfully written/modified during the data load phase. More detailed information is found on the {@link wiki | https://wiki.factorio.com/Types/NoiseExpression}.
1928
+ * A fragment of a functional program used to generate coherent noise, probably for purposes related to terrain generation. These can only be meaningfully written/modified during the data load phase. More detailed information is found on the {@link prototype docs | prototype:NamedNoiseExpression}.
1896
1929
  */
1897
1930
  interface NoiseExpression {
1898
1931
 
@@ -2176,9 +2209,14 @@ interface PipeConnection {
2176
2209
  target?: LuaFluidBox,
2177
2210
 
2178
2211
  /**
2179
- * The index of the connected fluidbox, if any.
2212
+ * The index of the target fluidbox, if any.
2180
2213
  */
2181
- target_index?: number,
2214
+ target_fluidbox_index?: number,
2215
+
2216
+ /**
2217
+ * The index of the target fluidbox pipe connection, if any.
2218
+ */
2219
+ target_pipe_connection_index?: number,
2182
2220
 
2183
2221
  /**
2184
2222
  * The absolute position of the connection's intended target.
@@ -2199,7 +2237,7 @@ interface PlaceAsTileResult {
2199
2237
  /**
2200
2238
  * A player may be specified in one of three ways.
2201
2239
  */
2202
- type PlayerIdentification = /* The player index. */ number | /* The player name. */ string | /* A reference to {@link LuaPlayer | LuaPlayer} may be passed directly. */ LuaPlayer
2240
+ type PlayerIdentification = /* The player index. */ number | /* The player name. */ string | /* A reference to {@link LuaPlayer | runtime:LuaPlayer} may be passed directly. */ LuaPlayer
2203
2241
 
2204
2242
  /**
2205
2243
  * These values are for the time frame of one second (60 ticks).
@@ -2340,7 +2378,7 @@ interface PrototypeHistory {
2340
2378
  }
2341
2379
 
2342
2380
  /**
2343
- * The smooth orientation. It is a {@link float | float} in the range `[0, 1)` that covers a full circle, starting at the top and going clockwise. This means a value of `0` indicates "north", a value of `0.5` indicates "south".
2381
+ * The smooth orientation. It is a {@link float | runtime:float} in the range `[0, 1)` that covers a full circle, starting at the top and going clockwise. This means a value of `0` indicates "north", a value of `0.5` indicates "south".
2344
2382
  *
2345
2383
  * For example then, a value of `0.625` would indicate "south-west", and a value of `0.875` would indicate "north-west".
2346
2384
  */
@@ -2377,6 +2415,11 @@ interface RidingState {
2377
2415
  direction: defines.riding.direction
2378
2416
  }
2379
2417
 
2418
+ interface RollingStockDrawData {
2419
+ orientaton: RealOrientation,
2420
+ position: MapPosition
2421
+ }
2422
+
2380
2423
  /**
2381
2424
  * An area defined using the map editor.
2382
2425
  */
@@ -2526,31 +2569,31 @@ interface SmokeSource {
2526
2569
  }
2527
2570
 
2528
2571
  /**
2529
- * It can be either the name of a {@link sound prototype | https://wiki.factorio.com/Prototype/Sound} defined in the data stage, or a path in the form `"type/name"`. The latter option can be sorted into three categories.
2572
+ * It can be either the name of a {@link SoundPrototype | prototype:SoundPrototype} defined in the data stage, or a path in the form `"type/name"`. The latter option can be sorted into three categories.
2530
2573
  *
2531
- * The validity of a SoundPath can be verified at runtime using {@link LuaGameScript::is_valid_sound_path | LuaGameScript::is_valid_sound_path}.
2574
+ * The validity of a SoundPath can be verified at runtime using {@link LuaGameScript::is_valid_sound_path | runtime:LuaGameScript::is_valid_sound_path}.
2532
2575
  *
2533
2576
  * The utility and ambient types each contain general use sound prototypes defined by the game itself.
2534
- * - `"utility"` - Uses the {@link UtilitySounds | https://wiki.factorio.com/Prototype/UtilitySounds} prototype. Example: `"utility/wire_connect_pole"`
2535
- * - `"ambient"` - Uses {@link AmbientSound | https://wiki.factorio.com/Prototype/AmbientSound} prototypes. Example: `"ambient/resource-deficiency"`
2577
+ * - `"utility"` - Uses {@link UtilitySounds | prototype:UtilitySounds}. Example: `"utility/wire_connect_pole"`
2578
+ * - `"ambient"` - Uses {@link AmbientSound | prototype:AmbientSound}. Example: `"ambient/resource-deficiency"`
2536
2579
  *
2537
2580
  * The following types can be combined with any tile name as long as its prototype defines the
2538
2581
  * corresponding sound.
2539
- * - `"tile-walking"` - Uses {@link Tile::walking_sound | https://wiki.factorio.com/Prototype/Tile#walking_sound}. Example: `"tile-walking/concrete"`
2540
- * - `"tile-mined"` - Uses {@link Tile::mined_sound | https://wiki.factorio.com/Prototype/Tile#mined_sound}
2541
- * - `"tile-build-small"` - Uses {@link Tile::build_sound | https://wiki.factorio.com/Prototype/Tile#build_sound}. Example: `"tile-build-small/concrete"`
2542
- * - `"tile-build-medium"` - Uses {@link Tile::build_sound | https://wiki.factorio.com/Prototype/Tile#build_sound}
2543
- * - `"tile-build-large"` - Uses {@link Tile::build_sound | https://wiki.factorio.com/Prototype/Tile#build_sound}
2582
+ * - `"tile-walking"` - Uses {@link TilePrototype::walking_sound | prototype:TilePrototype::walking_sound}. Example: `"tile-walking/concrete"`
2583
+ * - `"tile-mined"` - Uses {@link TilePrototype::mined_sound | prototype:TilePrototype::mined_sound}
2584
+ * - `"tile-build-small"` - Uses {@link TilePrototype::build_sound | prototype:TilePrototype::build_sound}. Example: `"tile-build-small/concrete"`
2585
+ * - `"tile-build-medium"` - Uses {@link TilePrototype::build_sound | prototype:TilePrototype::build_sound}
2586
+ * - `"tile-build-large"` - Uses {@link TilePrototype::build_sound | prototype:TilePrototype::build_sound}
2544
2587
  *
2545
2588
  * The following types can be combined with any entity name as long as its prototype defines the
2546
2589
  * corresponding sound.
2547
- * - `"entity-build"` - Uses {@link Entity::build_sound | https://wiki.factorio.com/Prototype/Entity#build_sound}. Example: `"entity-build/wooden-chest"`
2548
- * - `"entity-mined"` - Uses {@link Entity::mined_sound | https://wiki.factorio.com/Prototype/Entity#mined_sound}
2549
- * - `"entity-mining"` - Uses {@link Entity::mining_sound | https://wiki.factorio.com/Prototype/Entity#mining_sound}
2550
- * - `"entity-vehicle_impact"` - Uses {@link Entity::vehicle_impact_sound | https://wiki.factorio.com/Prototype/Entity#vehicle_impact_sound}
2551
- * - `"entity-rotated"` - Uses {@link Entity::rotated_sound | https://wiki.factorio.com/Prototype/Entity#rotated_sound}
2552
- * - `"entity-open"` - Uses {@link Entity::open_sound | https://wiki.factorio.com/Prototype/Entity#open_sound}
2553
- * - `"entity-close"` - Uses {@link Entity::close_sound | https://wiki.factorio.com/Prototype/Entity#close_sound}
2590
+ * - `"entity-build"` - Uses {@link Entity::build_sound | prototype:EntityPrototype::build_sound}. Example: `"entity-build/wooden-chest"`
2591
+ * - `"entity-mined"` - Uses {@link Entity::mined_sound | prototype:EntityPrototype::mined_sound}
2592
+ * - `"entity-mining"` - Uses {@link Entity::mining_sound | prototype:EntityPrototype::mining_sound}
2593
+ * - `"entity-vehicle_impact"` - Uses {@link EntityPrototype::vehicle_impact_sound | prototype:EntityPrototype::vehicle_impact_sound}
2594
+ * - `"entity-rotated"` - Uses {@link EntityPrototype::rotated_sound | prototype:EntityPrototype::rotated_sound}
2595
+ * - `"entity-open"` - Uses {@link Entity::open_sound | prototype:EntityPrototype::open_sound}
2596
+ * - `"entity-close"` - Uses {@link Entity::close_sound | prototype:EntityPrototype::close_sound}
2554
2597
  */
2555
2598
  type SoundPath = string
2556
2599
 
@@ -2573,9 +2616,9 @@ interface SpawnPointDefinition {
2573
2616
  }
2574
2617
 
2575
2618
  /**
2576
- * It can be either the name of a {@link sprite prototype | https://wiki.factorio.com/Prototype/Sprite} defined in the data stage, or a path in form "type/name".
2619
+ * It can be either the name of a {@link SpritePrototype | prototype:SpritePrototype} defined in the data stage, or a path in form "type/name".
2577
2620
  *
2578
- * The validity of a SpritePath can be verified at runtime using {@link LuaGameScript::is_valid_sprite_path | LuaGameScript::is_valid_sprite_path}.
2621
+ * The validity of a SpritePath can be verified at runtime using {@link LuaGameScript::is_valid_sprite_path | runtime:LuaGameScript::is_valid_sprite_path}.
2579
2622
  *
2580
2623
  * The supported types are:
2581
2624
  * - `"item"` - for example "item/iron-plate" is the icon sprite of iron plate
@@ -2616,7 +2659,7 @@ interface SteeringMapSettings {
2616
2659
  /**
2617
2660
  * A surface may be specified in one of three ways.
2618
2661
  */
2619
- type SurfaceIdentification = /* It will be the index of the surface. `nauvis` has index `1`, the first surface-created surface will have index `2` and so on. */ number | /* It will be the surface name. E.g. `"nauvis"`. */ string | /* A reference to {@link LuaSurface | LuaSurface} may be passed directly. */ LuaSurface
2662
+ type SurfaceIdentification = /* It will be the index of the surface. `nauvis` has index `1`, the first surface-created surface will have index `2` and so on. */ number | /* It will be the surface name. E.g. `"nauvis"`. */ string | /* A reference to {@link LuaSurface | runtime:LuaSurface} may be passed directly. */ LuaSurface
2620
2663
 
2621
2664
  interface TabAndContent {
2622
2665
  content: LuaGuiElement,
@@ -2638,7 +2681,7 @@ type Tags = {[key: string]: AnyBasic}
2638
2681
  /**
2639
2682
  * A technology may be specified in one of three ways.
2640
2683
  */
2641
- type TechnologyIdentification = /* The technology name. */ string | /* A reference to {@link LuaTechnology | LuaTechnology} may be passed directly. */ LuaTechnology | /* A reference to {@link LuaTechnologyPrototype | LuaTechnologyPrototype} may be passed directly. */ LuaTechnologyPrototype
2684
+ type TechnologyIdentification = /* The technology name. */ string | /* A reference to {@link LuaTechnology | runtime:LuaTechnology} may be passed directly. */ LuaTechnology | /* A reference to {@link LuaTechnologyPrototype | runtime:LuaTechnologyPrototype} may be passed directly. */ LuaTechnologyPrototype
2642
2685
 
2643
2686
  /**
2644
2687
  * The effect that is applied when a technology is researched. It is a table that contains at least the field `type`.
@@ -2670,7 +2713,7 @@ interface Tile {
2670
2713
  }
2671
2714
 
2672
2715
  /**
2673
- * Coordinates of a tile on a {@link LuaSurface | LuaSurface} where each integer `x`/`y` represents a different tile. This uses the same format as {@link MapPosition | MapPosition}, except it rounds any non-integer `x`/`y` down to whole numbers. It can be specified either with or without explicit keys.
2716
+ * Coordinates of a tile on a {@link LuaSurface | runtime:LuaSurface} where each integer `x`/`y` represents a different tile. This uses the same format as {@link MapPosition | runtime:MapPosition}, except it rounds any non-integer `x`/`y` down to whole numbers. It can be specified either with or without explicit keys.
2674
2717
  */
2675
2718
  type TilePosition = {
2676
2719
  x: number,
@@ -2702,7 +2745,7 @@ interface TrainScheduleRecord {
2702
2745
  rail?: LuaEntity,
2703
2746
 
2704
2747
  /**
2705
- * When a train is allowed to reach rail target from any direction it will be `nil`. If rail has to be reached from specific direction, this value allows to choose the direction. This value corresponds to {@link LuaEntity::connected_rail_direction | LuaEntity::connected_rail_direction} of a TrainStop.
2748
+ * When a train is allowed to reach rail target from any direction it will be `nil`. If rail has to be reached from specific direction, this value allows to choose the direction. This value corresponds to {@link LuaEntity::connected_rail_direction | runtime:LuaEntity::connected_rail_direction} of a TrainStop.
2706
2749
  */
2707
2750
  rail_direction?: defines.rail_direction,
2708
2751
 
@@ -2972,7 +3015,7 @@ interface DefaultAchievementPrototypeFilter extends BaseAchievementPrototypeFilt
2972
3015
  interface BaseAttackParameters {
2973
3016
 
2974
3017
  /**
2975
- * List of the names of compatible {@link LuaAmmoCategoryPrototypes | LuaAmmoCategoryPrototype}.
3018
+ * List of the names of compatible {@link LuaAmmoCategoryPrototypes | runtime:LuaAmmoCategoryPrototype}.
2976
3019
  */
2977
3020
  ammo_categories?: string[],
2978
3021
 
@@ -3086,7 +3129,7 @@ interface CapsuleActionArtilleryRemote extends BaseCapsuleAction {
3086
3129
  type: 'artillery-remote',
3087
3130
 
3088
3131
  /**
3089
- * Name of the {@link flare prototype | LuaEntityPrototype}.
3132
+ * Name of the {@link flare prototype | runtime:LuaEntityPrototype}.
3090
3133
  */
3091
3134
  flare: string
3092
3135
  }
@@ -3110,7 +3153,7 @@ interface CapsuleActionEquipmentRemote extends BaseCapsuleAction {
3110
3153
  type: 'equipment-remote',
3111
3154
 
3112
3155
  /**
3113
- * Name of the {@link LuaEquipmentPrototype | LuaEquipmentPrototype}.
3156
+ * Name of the {@link LuaEquipmentPrototype | runtime:LuaEquipmentPrototype}.
3114
3157
  */
3115
3158
  equipment: string
3116
3159
  }
@@ -3447,7 +3490,7 @@ interface EntityPrototypeFilterFlag extends BaseEntityPrototypeFilter {
3447
3490
  filter: 'flag',
3448
3491
 
3449
3492
  /**
3450
- * One of the values in {@link EntityPrototypeFlags | EntityPrototypeFlags}.
3493
+ * One of the values in {@link EntityPrototypeFlags | runtime:EntityPrototypeFlags}.
3451
3494
  */
3452
3495
  flag: string
3453
3496
  }
@@ -3652,7 +3695,7 @@ interface FluidPrototypeFilterSubgroup extends BaseFluidPrototypeFilter {
3652
3695
  filter: 'subgroup',
3653
3696
 
3654
3697
  /**
3655
- * A {@link LuaGroup | LuaGroup} (subgroup) name
3698
+ * A {@link LuaGroup | runtime:LuaGroup} (subgroup) name
3656
3699
  */
3657
3700
  subgroup: string
3658
3701
  }
@@ -3823,7 +3866,7 @@ interface ItemPrototypeFilterFlag extends BaseItemPrototypeFilter {
3823
3866
  filter: 'flag',
3824
3867
 
3825
3868
  /**
3826
- * One of the values in {@link ItemPrototypeFlags | ItemPrototypeFlags}.
3869
+ * One of the values in {@link ItemPrototypeFlags | runtime:ItemPrototypeFlags}.
3827
3870
  */
3828
3871
  flag: string
3829
3872
  }
@@ -3850,7 +3893,7 @@ interface ItemPrototypeFilterFuelCategory extends BaseItemPrototypeFilter {
3850
3893
  filter: 'fuel-category',
3851
3894
 
3852
3895
  /**
3853
- * A {@link LuaFuelCategoryPrototype | LuaFuelCategoryPrototype} name
3896
+ * A {@link LuaFuelCategoryPrototype | runtime:LuaFuelCategoryPrototype} name
3854
3897
  */
3855
3898
  'fuel-category': string
3856
3899
  }
@@ -3971,7 +4014,7 @@ interface ItemPrototypeFilterSubgroup extends BaseItemPrototypeFilter {
3971
4014
  filter: 'subgroup',
3972
4015
 
3973
4016
  /**
3974
- * A {@link LuaGroup | LuaGroup} (subgroup) name
4017
+ * A {@link LuaGroup | runtime:LuaGroup} (subgroup) name
3975
4018
  */
3976
4019
  subgroup: string
3977
4020
  }
@@ -4105,7 +4148,7 @@ interface LuaEntityDamagedEventFilterDamageType extends BaseLuaEntityDamagedEven
4105
4148
  filter: 'damage-type',
4106
4149
 
4107
4150
  /**
4108
- * A {@link LuaDamagePrototype | LuaDamagePrototype} name
4151
+ * A {@link LuaDamagePrototype | runtime:LuaDamagePrototype} name
4109
4152
  */
4110
4153
  type: string
4111
4154
  }
@@ -5778,7 +5821,7 @@ interface RecipePrototypeFilterCategory extends BaseRecipePrototypeFilter {
5778
5821
  filter: 'category',
5779
5822
 
5780
5823
  /**
5781
- * A {@link LuaRecipeCategoryPrototype | LuaRecipeCategoryPrototype} name
5824
+ * A {@link LuaRecipeCategoryPrototype | runtime:LuaRecipeCategoryPrototype} name
5782
5825
  */
5783
5826
  category: string
5784
5827
  }
@@ -5899,7 +5942,7 @@ interface RecipePrototypeFilterSubgroup extends BaseRecipePrototypeFilter {
5899
5942
  filter: 'subgroup',
5900
5943
 
5901
5944
  /**
5902
- * A {@link LuaGroup | LuaGroup} (subgroup) name
5945
+ * A {@link LuaGroup | runtime:LuaGroup} (subgroup) name
5903
5946
  */
5904
5947
  subgroup: string
5905
5948
  }