factorio-types 1.2.33 → 1.2.35

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,7 +2,7 @@
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 2.0.47
5
+ // Factorio version 2.0.50
6
6
  // API version 6
7
7
 
8
8
  declare namespace runtime {
@@ -55,6 +55,7 @@ interface AddRecordData {
55
55
  index?: ScheduleRecordPosition;
56
56
  }
57
57
  interface AdvancedMapGenSettings {
58
+ asteroids: AsteroidMapSettings;
58
59
  pollution: PollutionMapSettings;
59
60
  enemy_evolution: EnemyEvolutionMapSettings;
60
61
  enemy_expansion: EnemyExpansionMapSettings;
@@ -78,7 +79,7 @@ interface Alert {
78
79
  message?: LocalisedString;
79
80
  }
80
81
  /**
81
- * A {@link string | runtime:string} that specifies where a GUI element should be.
82
+ * A string that specifies where a GUI element should be.
82
83
  */
83
84
  type Alignment = 'top-left' | 'middle-left' | /**
84
85
  * The same as `"middle-left"`
@@ -113,27 +114,36 @@ type Any = string | boolean | number | table | LuaObject;
113
114
  * Any basic type (string, number, boolean) or table.
114
115
  */
115
116
  type AnyBasic = string | boolean | number | table;
117
+ type ArithmeticCombinatorParameterOperation = '*' | '/' | '+' | '-' | '%' | '^' | '<<' | '>>' | 'AND' | 'OR' | 'XOR';
116
118
  interface ArithmeticCombinatorParameters {
117
119
  /**
118
120
  * First signal to use in an operation. If not specified, the second argument will be the value of `first_constant`.
119
121
  */
120
122
  first_signal?: SignalID;
121
123
  /**
122
- * Second signal to use in an operation. If not specified, the second argument will be the value of `second_constant`.
124
+ * Which circuit networks (red/green) to read `first_signal` from. Defaults to both.
123
125
  */
124
- second_signal?: SignalID;
126
+ first_signal_networks?: CircuitNetworkSelection;
125
127
  /**
126
128
  * Constant to use as the first argument of the operation. Has no effect when `first_signal` is set. Defaults to `0`.
127
129
  */
128
130
  first_constant?: int;
129
131
  /**
130
- * Constant to use as the second argument of the operation. Has no effect when `second_signal` is set. Defaults to `0`.
132
+ * When not specified, defaults to `"*"`.
131
133
  */
132
- second_constant?: int;
134
+ operation?: ArithmeticCombinatorParameterOperation;
133
135
  /**
134
- * When not specified, defaults to `"*"`.
136
+ * Second signal to use in an operation. If not specified, the second argument will be the value of `second_constant`.
137
+ */
138
+ second_signal?: SignalID;
139
+ /**
140
+ * Which circuit networks (red/green) to read `second_signal` from. Defaults to both.
135
141
  */
136
- operation?: '*' | '/' | '+' | '-' | '%' | '^' | '<<' | '>>' | 'AND' | 'OR' | 'XOR';
142
+ second_signal_networks?: CircuitNetworkSelection;
143
+ /**
144
+ * Constant to use as the second argument of the operation. Has no effect when `second_signal` is set. Defaults to `0`.
145
+ */
146
+ second_constant?: int;
137
147
  /**
138
148
  * Specifies the signal to output.
139
149
  */
@@ -261,7 +271,7 @@ interface AttackParametersProjectile extends BaseAttackParameters {
261
271
  'type': 'projectile';
262
272
  'projectile_center': Vector;
263
273
  'projectile_creation_distance': float;
264
- 'projectile_creation_parameters'?: CircularProjectileCreationSpecification[];
274
+ 'projectile_creation_parameters'?: CircularProjectileCreationSpecification;
265
275
  'projectile_orientation_offset': float;
266
276
  'shell_particle'?: CircularParticleCreationSpecification;
267
277
  }
@@ -278,7 +288,7 @@ interface AttackParametersStream extends BaseAttackParameters {
278
288
  'fluids'?: AttackParameterFluid[];
279
289
  'gun_barrel_length': float;
280
290
  'gun_center_shift': GunShift4Way;
281
- 'projectile_creation_parameters'?: CircularProjectileCreationSpecification[];
291
+ 'projectile_creation_parameters'?: CircularProjectileCreationSpecification;
282
292
  }
283
293
  interface AutoplaceControl {
284
294
  /**
@@ -308,25 +318,25 @@ interface AutoplaceSettings {
308
318
  * Specifies how probability and richness are calculated when placing something on the map.
309
319
  */
310
320
  interface AutoplaceSpecification {
321
+ placement_density: uint;
311
322
  /**
312
323
  * Control prototype name.
313
324
  */
314
325
  control?: string;
315
- default_enabled: boolean;
316
- force: string;
326
+ probability_expression: NoiseExpressionSourceString;
327
+ richness_expression?: NoiseExpressionSourceString;
317
328
  order: string;
318
- placement_density: uint;
329
+ default_enabled: boolean;
319
330
  tile_restriction?: AutoplaceSpecificationRestriction[];
320
- probability_expression: NoiseExpression;
321
- richness_expression?: NoiseExpression;
331
+ force: string;
322
332
  }
323
333
  interface AutoplaceSpecificationRestriction {
324
334
  /**
325
- * Tile prototype name
335
+ * Tile prototype name.
326
336
  */
327
337
  first?: string;
328
338
  /**
329
- * Second prototype name
339
+ * Second prototype name.
330
340
  */
331
341
  second?: string;
332
342
  }
@@ -434,10 +444,16 @@ interface BlueprintSchedule {
434
444
  interrupts?: BlueprintScheduleInterrupt[];
435
445
  }
436
446
  interface BlueprintScheduleInterrupt {
447
+ /**
448
+ * Defaults to an empty string.
449
+ */
437
450
  name?: string;
438
451
  conditions?: WaitCondition[];
439
452
  targets?: BlueprintScheduleRecord[];
440
- inside_interrupt: boolean;
453
+ /**
454
+ * Defaults to `false`.
455
+ */
456
+ inside_interrupt?: boolean;
441
457
  }
442
458
  interface BlueprintScheduleRecord {
443
459
  /**
@@ -499,13 +515,6 @@ type BoundingBox = {
499
515
  MapPosition,
500
516
  MapPosition
501
517
  ];
502
- /**
503
- * The name of a {@link LuaBurnerUsagePrototype | runtime:LuaBurnerUsagePrototype}.
504
- * @example ```
505
- "fuel"
506
- ```
507
- */
508
- type BurnerUsageID = string;
509
518
  interface BaseCapsuleAction {
510
519
  type: 'throw' | 'equipment-remote' | 'use-on-self' | 'artillery-remote' | 'destroy-cliffs';
511
520
  }
@@ -632,7 +641,7 @@ interface CircuitCondition {
632
641
  */
633
642
  comparator?: ComparatorString;
634
643
  /**
635
- * Defaults to blank
644
+ * Defaults to blank.
636
645
  */
637
646
  first_signal?: SignalID;
638
647
  /**
@@ -646,15 +655,36 @@ interface CircuitCondition {
646
655
  }
647
656
  interface CircuitConditionDefinition {
648
657
  /**
649
- * TODOC CircuitConditionDefinition now extends CircuitCondition, all fields of CircuitCondition should be pasted here directly
658
+ * Specifies how the inputs should be compared. If not specified, defaults to `"<"`.
659
+ */
660
+ comparator?: ComparatorString;
661
+ /**
662
+ * Defaults to blank.
650
663
  */
651
- condition: CircuitCondition;
664
+ first_signal?: SignalID;
652
665
  /**
653
- * Whether the condition is currently fulfilled
666
+ * What to compare `first_signal` to. If not specified, `first_signal` will be compared to `constant`.
667
+ */
668
+ second_signal?: SignalID;
669
+ /**
670
+ * Constant to compare `first_signal` to. Has no effect when `second_signal` is set. When neither `second_signal` nor `constant` are specified, the effect is as though `constant` were specified with the value `0`.
671
+ */
672
+ constant?: int;
673
+ /**
674
+ * Whether the condition is currently fulfilled.
654
675
  */
655
676
  fulfilled?: boolean;
656
677
  }
657
- type CircuitNetworkSelection = table;
678
+ interface CircuitNetworkSelection {
679
+ /**
680
+ * Defaults to `true`.
681
+ */
682
+ red?: boolean;
683
+ /**
684
+ * Defaults to `true`.
685
+ */
686
+ green?: boolean;
687
+ }
658
688
  interface CircularParticleCreationSpecification {
659
689
  /**
660
690
  * Name of the {@link LuaEntityPrototype | runtime:LuaEntityPrototype}.
@@ -678,7 +708,7 @@ interface CircularParticleCreationSpecification {
678
708
  type CircularProjectileCreationSpecification = [
679
709
  RealOrientation,
680
710
  Vector
681
- ];
711
+ ][];
682
712
  type CliffOrientation = 'west-to-east' | 'north-to-south' | 'east-to-west' | 'south-to-north' | 'west-to-north' | 'north-to-east' | 'east-to-south' | 'south-to-west' | 'west-to-south' | 'north-to-west' | 'east-to-north' | 'south-to-east' | 'west-to-none' | 'none-to-east' | 'east-to-none' | 'none-to-west' | 'north-to-none' | 'none-to-south' | 'south-to-none' | 'none-to-north';
683
713
  interface CliffPlacementSettings {
684
714
  /**
@@ -1167,8 +1197,50 @@ LuaDamagePrototype | /**
1167
1197
  * The prototype name.
1168
1198
  */
1169
1199
  string;
1170
- type DeciderCombinatorCondition = table;
1171
- type DeciderCombinatorOutput = table;
1200
+ interface DeciderCombinatorCondition {
1201
+ /**
1202
+ * Defaults to blank
1203
+ */
1204
+ first_signal?: SignalID;
1205
+ /**
1206
+ * Which circuit networks (red/green) to read `first_signal` from. Defaults to both.
1207
+ */
1208
+ first_signal_networks?: CircuitNetworkSelection;
1209
+ /**
1210
+ * What to compare `first_signal` to. If not specified, `first_signal` will be compared to `constant`.
1211
+ */
1212
+ second_signal?: SignalID;
1213
+ /**
1214
+ * Which circuit networks (red/green) to read `second_signal` from. Defaults to both.
1215
+ */
1216
+ second_signal_networks?: CircuitNetworkSelection;
1217
+ /**
1218
+ * Constant to compare `first_signal` to. Has no effect when `second_signal` is set. When neither `second_signal` nor `constant` are specified, the effect is as though `constant` were specified with the value `0`.
1219
+ */
1220
+ constant?: int;
1221
+ /**
1222
+ * Specifies how the inputs should be compared. If not specified, defaults to `"<"`.
1223
+ */
1224
+ comparator?: ComparatorString;
1225
+ /**
1226
+ * Either "or" (default) or "and". Tells how this condition is compared with the preceding conditions in the corresponding `conditions` array.
1227
+ */
1228
+ compare_type?: int;
1229
+ }
1230
+ interface DeciderCombinatorOutput {
1231
+ /**
1232
+ * Specifies a signal to output.
1233
+ */
1234
+ signal: SignalID;
1235
+ /**
1236
+ * Defaults to `true`. When `false`, will output a value of `1` for the given `output_signal`.
1237
+ */
1238
+ copy_count_from_input?: boolean;
1239
+ /**
1240
+ * Sets which input network to read the value of `signal` from if `copy_count_from_input` is `true`. Defaults to both.
1241
+ */
1242
+ networks?: CircuitNetworkSelection;
1243
+ }
1172
1244
  interface DeciderCombinatorParameters {
1173
1245
  /**
1174
1246
  * List of conditions.
@@ -1288,8 +1360,22 @@ interface EffectReceiver {
1288
1360
  base_effect: ModuleEffects;
1289
1361
  uses_module_effects: boolean;
1290
1362
  uses_beacon_effects: boolean;
1363
+ /**
1364
+ * Controls whether {@link LuaSurface::global_effect | runtime:LuaSurface::global_effect} affects this receiver.
1365
+ */
1291
1366
  uses_surface_effects: boolean;
1292
1367
  }
1368
+ /**
1369
+ * An item thrown overboard on a space platform.
1370
+ */
1371
+ interface EjectedItem {
1372
+ item: ItemWithQualityID;
1373
+ position: MapPosition;
1374
+ movement: Vector;
1375
+ platform_speed_at_creation: double;
1376
+ creation_tick: MapTick;
1377
+ expiration_tick: MapTick;
1378
+ }
1293
1379
  interface ElemID {
1294
1380
  type: ElemType;
1295
1381
  /**
@@ -2505,6 +2591,8 @@ type Ingredient = BaseIngredient | IngredientFluid;
2505
2591
  */
2506
2592
  interface IngredientFluid extends BaseIngredient {
2507
2593
  'type': 'fluid';
2594
+ 'fluidbox_index'?: uint;
2595
+ 'fluidbox_multiplier'?: uint8;
2508
2596
  /**
2509
2597
  * The maximum fluid temperature allowed.
2510
2598
  */
@@ -2535,7 +2623,7 @@ interface InventoryPosition {
2535
2623
  */
2536
2624
  inventory: defines.inventory;
2537
2625
  /**
2538
- * The stack index of the inventory to insert into.
2626
+ * The stack index of the inventory to insert into. Uses 0-based indexing, in contrast to the 1-based indexing of most other inventory-related functions.
2539
2627
  */
2540
2628
  stack: ItemStackIndex;
2541
2629
  /**
@@ -3035,13 +3123,16 @@ LuaItemPrototype | /**
3035
3123
  * The prototype name. Normal quality will be used.
3036
3124
  */
3037
3125
  string | /**
3038
- * A table of entity prototype and quality.
3126
+ * A table of item prototype and quality.
3039
3127
  */
3040
3128
  ItemIDAndQualityIDPair;
3041
3129
  /**
3042
3130
  * The internal name of a game control (key binding).
3043
3131
  */
3044
- type LinkedGameControl = 'move-up' | 'move-down' | 'move-left' | 'move-right' | 'open-character-gui' | 'open-gui' | 'confirm-gui' | 'toggle-free-cursor' | 'mine' | 'build' | 'build-ghost' | 'super-forced-build' | 'clear-cursor' | 'pipette' | 'rotate' | 'reverse-rotate' | 'flip-horizontal' | 'flip-vertical' | 'pick-items' | 'drop-cursor' | 'show-info' | 'shoot-enemy' | 'shoot-selected' | 'next-weapon' | 'toggle-driving' | 'zoom-in' | 'zoom-out' | 'use-item' | 'alternative-use-item' | 'toggle-console' | 'copy-entity-settings' | 'paste-entity-settings' | 'controller-gui-logistics-tab' | 'controller-gui-character-tab' | 'controller-gui-crafting-tab' | 'toggle-rail-layer' | 'select-for-blueprint' | 'select-for-cancel-deconstruct' | 'select-for-super-forced-deconstruct' | 'reverse-select' | 'alt-reverse-select' | 'deselect' | 'cycle-blueprint-forwards' | 'cycle-blueprint-backwards' | 'focus-search' | 'larger-terrain-building-area' | 'smaller-terrain-building-area' | 'remove-pole-cables' | 'build-with-obstacle-avoidance' | 'add-station' | 'add-temporary-station' | 'rename-all' | 'fast-wait-condition' | 'drag-map' | 'move-tag' | 'place-in-chat' | 'place-ping' | 'pin' | 'activate-tooltip' | 'next-surface' | 'previous-surface' | 'cycle-quality-up' | 'cycle-quality-down' | 'craft' | 'craft-5' | 'craft-all' | 'cancel-craft' | 'cancel-craft-5' | 'cancel-craft-all' | 'pick-item' | 'stack-transfer' | 'inventory-transfer' | 'fast-entity-transfer' | 'cursor-split' | 'stack-split' | 'inventory-split' | 'fast-entity-split' | 'toggle-filter' | 'open-item' | 'copy-inventory-filter' | 'paste-inventory-filter' | 'show-quick-panel' | 'next-quick-panel-page' | 'previous-quick-panel-page' | 'next-quick-panel-tab' | 'previous-quick-panel-tab' | 'rotate-active-quick-bars' | 'next-active-quick-bar' | 'previous-active-quick-bar' | 'quick-bar-button-1' | 'quick-bar-button-2' | 'quick-bar-button-3' | 'quick-bar-button-4' | 'quick-bar-button-5' | 'quick-bar-button-6' | 'quick-bar-button-7' | 'quick-bar-button-8' | 'quick-bar-button-9' | 'quick-bar-button-10' | 'quick-bar-button-1-secondary' | 'quick-bar-button-2-secondary' | 'quick-bar-button-3-secondary' | 'quick-bar-button-4-secondary' | 'quick-bar-button-5-secondary' | 'quick-bar-button-6-secondary' | 'quick-bar-button-7-secondary' | 'quick-bar-button-8-secondary' | 'quick-bar-button-9-secondary' | 'quick-bar-button-10-secondary' | 'action-bar-select-page-1' | 'action-bar-select-page-2' | 'action-bar-select-page-3' | 'action-bar-select-page-4' | 'action-bar-select-page-5' | 'action-bar-select-page-6' | 'action-bar-select-page-7' | 'action-bar-select-page-8' | 'action-bar-select-page-9' | 'action-bar-select-page-10' | 'copy' | 'cut' | 'paste' | 'cycle-clipboard-forwards' | 'cycle-clipboard-backwards' | 'undo' | 'redo' | 'toggle-menu' | 'toggle-map' | 'close-menu' | 'open-technology-gui' | 'production-statistics' | 'logistic-networks' | 'toggle-blueprint-library' | 'open-trains-gui' | 'open-factoriopedia' | 'back' | 'forward' | 'pause-game' | 'confirm-message' | 'previous-technology' | 'previous-mod' | 'connect-train' | 'disconnect-train' | 'submit-feedback' | 'editor-next-variation' | 'editor-previous-variation' | 'editor-clone-item' | 'editor-delete-item' | 'editor-toggle-pause' | 'editor-tick-once' | 'editor-speed-up' | 'editor-speed-down' | 'editor-reset-speed' | 'editor-set-clone-brush-source' | 'editor-set-clone-brush-destination' | 'editor-switch-to-surface' | 'editor-remove-scripting-object' | 'debug-toggle-atlas-gui' | 'debug-toggle-gui-visibility' | 'debug-toggle-debug-settings' | 'debug-toggle-basic' | 'debug-reset-zoom' | 'debug-reset-zoom-2x' | 'toggle-gui-debug' | 'toggle-gui-style-view' | 'toggle-gui-shadows' | 'toggle-gui-glows' | 'open-prototypes-gui' | 'open-prototype-explorer-gui' | 'increase-ui-scale' | 'decrease-ui-scale' | 'reset-ui-scale' | 'slash-editor' | 'toggle-entity' | 'next-player-in-replay' | 'move-blueprint-absolute-grid-up' | 'move-blueprint-absolute-grid-down' | 'move-blueprint-absolute-grid-left' | 'move-blueprint-absolute-grid-right' | 'move-blueprint-entities-up' | 'move-blueprint-entities-down' | 'move-blueprint-entities-left' | 'move-blueprint-entities-right' | 'play-next-track' | 'play-previous-track' | 'pause-resume-music';
3132
+ type LinkedGameControl = 'move-up' | 'move-down' | 'move-left' | 'move-right' | 'open-character-gui' | 'open-gui' | 'confirm-gui' | 'toggle-free-cursor' | 'mine' | 'build' | 'build-ghost' | 'super-forced-build' | 'clear-cursor' | 'pipette' | 'rotate' | 'reverse-rotate' | 'flip-horizontal' | 'flip-vertical' | 'pick-items' | 'drop-cursor' | 'show-info' | 'shoot-enemy' | 'shoot-selected' | 'next-weapon' | 'toggle-driving' | 'zoom-in' | 'zoom-out' | 'use-item' | 'alternative-use-item' | 'toggle-console' | 'copy-entity-settings' | 'paste-entity-settings' | 'controller-gui-logistics-tab' | 'controller-gui-character-tab' | 'controller-gui-crafting-tab' | 'toggle-rail-layer' | 'select-for-blueprint' | 'select-for-cancel-deconstruct' | 'select-for-super-forced-deconstruct' | 'reverse-select' | 'alt-reverse-select' | 'deselect' | 'cycle-blueprint-forwards' | 'cycle-blueprint-backwards' | 'focus-search' | 'larger-terrain-building-area' | 'smaller-terrain-building-area' | 'remove-pole-cables' | 'build-with-obstacle-avoidance' | 'add-station' | 'add-temporary-station' | 'rename-all' | 'fast-wait-condition' | 'drag-map' | 'move-tag' | 'place-in-chat' | 'place-ping' | 'pin' | 'activate-tooltip' | 'next-surface' | 'previous-surface' | 'cycle-quality-up' | 'cycle-quality-down' | 'craft' | 'craft-5' | 'craft-all' | 'cancel-craft' | 'cancel-craft-5' | 'cancel-craft-all' | 'pick-item' | 'stack-transfer' | 'inventory-transfer' | 'fast-entity-transfer' | 'cursor-split' | 'stack-split' | 'inventory-split' | 'fast-entity-split' | 'toggle-filter' | 'open-item' | 'copy-inventory-filter' | 'paste-inventory-filter' | 'show-quick-panel' | 'next-quick-panel-page' | 'previous-quick-panel-page' | 'next-quick-panel-tab' | 'previous-quick-panel-tab' | 'rotate-active-quick-bars' | 'next-active-quick-bar' | 'previous-active-quick-bar' | 'quick-bar-button-1' | 'quick-bar-button-2' | 'quick-bar-button-3' | 'quick-bar-button-4' | 'quick-bar-button-5' | 'quick-bar-button-6' | 'quick-bar-button-7' | 'quick-bar-button-8' | 'quick-bar-button-9' | 'quick-bar-button-10' | 'quick-bar-button-1-secondary' | 'quick-bar-button-2-secondary' | 'quick-bar-button-3-secondary' | 'quick-bar-button-4-secondary' | 'quick-bar-button-5-secondary' | 'quick-bar-button-6-secondary' | 'quick-bar-button-7-secondary' | 'quick-bar-button-8-secondary' | 'quick-bar-button-9-secondary' | 'quick-bar-button-10-secondary' | 'action-bar-select-page-1' | 'action-bar-select-page-2' | 'action-bar-select-page-3' | 'action-bar-select-page-4' | 'action-bar-select-page-5' | 'action-bar-select-page-6' | 'action-bar-select-page-7' | 'action-bar-select-page-8' | 'action-bar-select-page-9' | 'action-bar-select-page-10' | 'copy' | 'cut' | 'paste' | 'cycle-clipboard-forwards' | 'cycle-clipboard-backwards' | 'undo' | 'redo' | 'toggle-menu' | 'toggle-map' | 'close-menu' | 'open-technology-gui' | 'production-statistics' | 'logistic-networks' | 'toggle-blueprint-library' | 'open-trains-gui' | 'open-factoriopedia' | 'back' | 'forward' | 'pause-game' | 'confirm-message' | 'previous-technology' | 'previous-mod' | 'connect-train' | 'disconnect-train' | 'submit-feedback' | 'editor-next-variation' | 'editor-previous-variation' | 'editor-clone-item' | 'editor-delete-item' | 'editor-toggle-pause' | 'editor-tick-once' | 'editor-speed-up' | 'editor-speed-down' | 'editor-reset-speed' | 'editor-set-clone-brush-source' | 'editor-set-clone-brush-destination' | 'editor-switch-to-surface' | 'editor-remove-scripting-object' | 'debug-toggle-atlas-gui' | 'debug-toggle-gui-visibility' | 'debug-toggle-debug-settings' | 'debug-toggle-basic' | 'debug-reset-zoom' | 'debug-reset-zoom-2x' | 'toggle-gui-debug' | 'toggle-gui-style-view' | 'toggle-gui-shadows' | 'toggle-gui-glows' | 'open-prototypes-gui' | 'open-prototype-explorer-gui' | 'increase-ui-scale' | 'decrease-ui-scale' | 'reset-ui-scale' | 'slash-editor' | 'toggle-entity' | 'next-player-in-replay' | 'move-blueprint-absolute-grid-up' | 'move-blueprint-absolute-grid-down' | 'move-blueprint-absolute-grid-left' | 'move-blueprint-absolute-grid-right' | 'move-blueprint-entities-up' | 'move-blueprint-entities-down' | 'move-blueprint-entities-left' | 'move-blueprint-entities-right' | 'play-next-track' | 'play-previous-track' | 'pause-resume-music' | /**
3133
+ * Indicates no linked game control.
3134
+ */
3135
+ '';
3045
3136
  /**
3046
3137
  * Localised strings are a way to support translation of in-game text. It is an array where the first element is the key and the remaining elements are parameters that will be substituted for placeholders in the template designated by the key.
3047
3138
  *
@@ -5297,6 +5388,7 @@ interface MineableProperties {
5297
5388
  * Energy required to mine an entity.
5298
5389
  */
5299
5390
  mining_time: double;
5391
+ transfer_entity_health_to_products: boolean;
5300
5392
  /**
5301
5393
  * Prototype name of the particle produced when mining this entity. Will only be present if this entity produces any particle during mining.
5302
5394
  */
@@ -5421,14 +5513,9 @@ interface ModuleEffects {
5421
5513
  */
5422
5514
  type MouseButtonFlags = Record<'left' | 'right' | 'middle' | 'button-4' | 'button-5' | 'button-6' | 'button-7' | 'button-8' | 'button-9', true>;
5423
5515
  /**
5424
- * 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}.
5516
+ * The string representation of a noise expression. More detailed information is found on the {@link prototype docs | prototype:NamedNoiseExpression}.
5425
5517
  */
5426
- interface NoiseExpression {
5427
- /**
5428
- * Names the type of the expression and determines what other fields are required.
5429
- */
5430
- type: string;
5431
- }
5518
+ type NoiseExpressionSourceString = string;
5432
5519
  interface NthTickEventData {
5433
5520
  /**
5434
5521
  * The tick during which the event happened.
@@ -5697,6 +5784,24 @@ interface PlatformSchedule {
5697
5784
  current: uint;
5698
5785
  records: ScheduleRecord[];
5699
5786
  }
5787
+ interface PlaySoundSpecification {
5788
+ /**
5789
+ * The sound to play.
5790
+ */
5791
+ path: SoundPath;
5792
+ /**
5793
+ * Where the sound should be played. If not given, it's played globally on the player's controller's surface.
5794
+ */
5795
+ position?: MapPosition;
5796
+ /**
5797
+ * The volume of the sound to play. Must be between 0 and 1 inclusive.
5798
+ */
5799
+ volume_modifier?: double;
5800
+ /**
5801
+ * The volume mixer to play the sound through. Defaults to the default mixer for the given sound type.
5802
+ */
5803
+ override_sound_type?: SoundType;
5804
+ }
5700
5805
  /**
5701
5806
  * A player may be specified in one of three ways.
5702
5807
  */
@@ -5825,6 +5930,7 @@ interface ProgrammableSpeakerAlertParameters {
5825
5930
  }
5826
5931
  interface ProgrammableSpeakerCircuitParameters {
5827
5932
  signal_value_is_pitch: boolean;
5933
+ stop_playing_sounds: boolean;
5828
5934
  instrument_id: uint;
5829
5935
  note_id: uint;
5830
5936
  }
@@ -5836,6 +5942,8 @@ interface ProgrammableSpeakerParameters {
5836
5942
  playback_volume: float;
5837
5943
  playback_mode: ProgrammableSpeakerPlaybackMode;
5838
5944
  allow_polyphony: boolean;
5945
+ volume_controlled_by_signal: boolean;
5946
+ volume_signal_id: SignalID;
5839
5947
  }
5840
5948
  /**
5841
5949
  * Specifies from where the programmable speaker's sound will be heard.
@@ -5976,17 +6084,23 @@ interface RailLocation {
5976
6084
  direction: defines.direction;
5977
6085
  rail_layer: defines.rail_layer;
5978
6086
  }
5979
- /**
5980
- * A table containing the parameters required to raise a given game event. See the event being raised for what parameters are required.
5981
- */
5982
- type RaiseEventParameters = table;
5983
6087
  type RangeMode = 'center-to-center' | 'bounding-box-to-bounding-box' | 'center-to-bounding-box';
5984
6088
  /**
5985
- * 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".
6089
+ * The smooth orientation. It is a `float` in the range `[0, 1)` that covers a full circle, starting at the top and going clockwise.
5986
6090
  *
5987
- * For example then, a value of `0.625` would indicate "south-west", and a value of `0.875` would indicate "north-west".
6091
+ * This means a value of `0` indicates "north", a value of `0.5` indicates "south". For example then, a value of `0.625` would indicate "south-west", and a value of `0.875` would indicate "north-west".
5988
6092
  */
5989
6093
  type RealOrientation = float;
6094
+ /**
6095
+ * A recipe category may be specified in one of two ways.
6096
+ */
6097
+ type RecipeCategoryID = /**
6098
+ * By recipe category prototype.
6099
+ */
6100
+ LuaRecipeCategoryPrototype | /**
6101
+ * By name of the recipe category prototype.
6102
+ */
6103
+ string;
5990
6104
  /**
5991
6105
  * A recipe may be specified in one of three ways.
5992
6106
  */
@@ -6541,11 +6655,11 @@ interface ResearchTriggerSendItemToOrbit extends BaseResearchTrigger {
6541
6655
  }
6542
6656
  interface Resistance {
6543
6657
  /**
6544
- * Absolute damage decrease
6658
+ * Absolute damage decrease.
6545
6659
  */
6546
6660
  decrease: float;
6547
6661
  /**
6548
- * Percentual damage decrease
6662
+ * Percentual damage decrease.
6549
6663
  */
6550
6664
  percent: float;
6551
6665
  }
@@ -6560,10 +6674,16 @@ interface RollingStockDrawData {
6560
6674
  height: float;
6561
6675
  }
6562
6676
  interface ScheduleInterrupt {
6677
+ /**
6678
+ * Defaults to an empty string.
6679
+ */
6563
6680
  name?: string;
6564
6681
  conditions?: WaitCondition[];
6565
6682
  targets?: ScheduleRecord[];
6566
- inside_interrupt: boolean;
6683
+ /**
6684
+ * Defaults to `false`.
6685
+ */
6686
+ inside_interrupt?: boolean;
6567
6687
  }
6568
6688
  interface ScheduleRecord {
6569
6689
  /**
@@ -6718,27 +6838,97 @@ type SelectionModeFlags = Record</**
6718
6838
  * Selects entities that are `tile-ghost`s.
6719
6839
  */
6720
6840
  'tile-ghost', true>;
6721
- interface SelectorCombinatorParameters {
6841
+ type SelectorCombinatorParameterOperation = 'select' | 'count' | 'random' | 'quality-transfer' | 'rocket-capacity' | 'stack-size' | 'quality-filter';
6842
+ interface BaseSelectorCombinatorParameters {
6722
6843
  /**
6723
- * The signal to use.
6844
+ * Defaults to `"select"`.
6724
6845
  */
6725
- index_signal: SignalID;
6846
+ operation?: SelectorCombinatorParameterOperation;
6847
+ }
6848
+ type SelectorCombinatorParameters = BaseSelectorCombinatorParameters | SelectorCombinatorParametersCount | SelectorCombinatorParametersQualityFilter | SelectorCombinatorParametersQualityTransfer | SelectorCombinatorParametersRandom | SelectorCombinatorParametersSelect;
6849
+ /**
6850
+ *
6851
+ * Applies to variant case `count`
6852
+ */
6853
+ interface SelectorCombinatorParametersCount extends BaseSelectorCombinatorParameters {
6726
6854
  /**
6727
- * The signal index to use if not using a specific signal.
6855
+ * Defaults to `"select"`.
6728
6856
  */
6729
- index_constant: uint;
6857
+ 'operation'?: 'count';
6730
6858
  /**
6731
6859
  * The signal to emit.
6732
6860
  */
6733
- count_signal: SignalID;
6861
+ 'count_signal': SignalID;
6862
+ }
6863
+ /**
6864
+ *
6865
+ * Applies to variant case `quality-filter`
6866
+ */
6867
+ interface SelectorCombinatorParametersQualityFilter extends BaseSelectorCombinatorParameters {
6868
+ /**
6869
+ * Defaults to `"select"`.
6870
+ */
6871
+ 'operation'?: 'quality-filter';
6734
6872
  /**
6735
- * Must be one of `"select"`, `"count"`, `"random"`. When not specified, defaults to `"select"`.
6873
+ * The quality condition to use. Defaults to `null`.
6736
6874
  */
6737
- operation?: string;
6875
+ 'quality_filter'?: QualityCondition;
6876
+ }
6877
+ /**
6878
+ *
6879
+ * Applies to variant case `quality-transfer`
6880
+ */
6881
+ interface SelectorCombinatorParametersQualityTransfer extends BaseSelectorCombinatorParameters {
6738
6882
  /**
6739
- * If the maximum value is used.
6883
+ * Defaults to `"select"`.
6884
+ */
6885
+ 'operation'?: 'quality-transfer';
6886
+ 'quality_destination_signal': SignalID;
6887
+ 'quality_source_signal'?: SignalIDBase;
6888
+ /**
6889
+ * Defaults to normal quality.
6890
+ */
6891
+ 'quality_source_static'?: QualityID;
6892
+ /**
6893
+ * Defaults to `false`.
6740
6894
  */
6741
- select_max: boolean;
6895
+ 'select_quality_from_signal'?: boolean;
6896
+ }
6897
+ /**
6898
+ *
6899
+ * Applies to variant case `random`
6900
+ */
6901
+ interface SelectorCombinatorParametersRandom extends BaseSelectorCombinatorParameters {
6902
+ /**
6903
+ * Defaults to `"select"`.
6904
+ */
6905
+ 'operation'?: 'random';
6906
+ /**
6907
+ * Defaults to `0`.
6908
+ */
6909
+ 'random_update_interval'?: uint;
6910
+ }
6911
+ /**
6912
+ *
6913
+ * Applies to variant case `select`
6914
+ */
6915
+ interface SelectorCombinatorParametersSelect extends BaseSelectorCombinatorParameters {
6916
+ /**
6917
+ * Defaults to `"select"`.
6918
+ */
6919
+ 'operation'?: 'select';
6920
+ /**
6921
+ * The signal index to use if not using a specific `index_signal`. Defaults to `0`.
6922
+ */
6923
+ 'index_constant'?: uint;
6924
+ /**
6925
+ * The signal to use, if any.
6926
+ */
6927
+ 'index_signal'?: SignalID;
6928
+ /**
6929
+ * Whether the maximum value is used. Defaults to `true`.
6930
+ */
6931
+ 'select_max'?: boolean;
6742
6932
  }
6743
6933
  /**
6744
6934
  * An actual signal transmitted by the network.
@@ -6788,20 +6978,31 @@ interface SignalID {
6788
6978
  */
6789
6979
  quality?: QualityID;
6790
6980
  }
6981
+ interface SignalIDBase {
6982
+ /**
6983
+ * The type of the signal. If the type is `"item"`, this will be `nil` when reading.
6984
+ */
6985
+ type?: SignalIDType;
6986
+ /**
6987
+ * Name of the prototype.
6988
+ */
6989
+ name?: string;
6990
+ }
6791
6991
  type SignalIDType = 'item' | 'fluid' | 'virtual' | 'entity' | 'recipe' | 'space-location' | 'asteroid-chunk' | 'quality';
6792
6992
  /**
6793
6993
  * An item stack may be specified in one of two ways.
6794
6994
  * @example ```
6795
- -- Both of these lines specify an item stack of one iron plate
6995
+ -- All of these lines specify an item stack of one iron plate
6796
6996
  {name="iron-plate"}
6797
6997
  {name="iron-plate", count=1}
6998
+ {name="iron-plate", count=1, quality="normal"}
6798
6999
  ```
6799
7000
  * @example ```
6800
7001
  -- This is a stack of 47 copper plates
6801
7002
  {name="copper-plate", count=47}
6802
7003
  ```
6803
7004
  * @example ```
6804
- These are both full stacks of iron plates (for iron-plate, a full stack is 100 plates)
7005
+ --These are both full stacks of iron plates (for iron-plate, a full stack is 100 plates)
6805
7006
  "iron-plate"
6806
7007
  {name="iron-plate", count=100}
6807
7008
  ```
@@ -6844,6 +7045,21 @@ interface SmokeSource {
6844
7045
  *
6845
7046
  * - `"utility"` - Uses {@link UtilitySounds | prototype:UtilitySounds}. Example: `"utility/wire_connect_pole"`
6846
7047
  * - `"ambient"` - Uses {@link AmbientSound | prototype:AmbientSound}. Example: `"ambient/resource-deficiency"`
7048
+ * The following types can be combined with any tile name as long as its prototype defines the corresponding sound.
7049
+ *
7050
+ * - `"tile-walking"` - Uses {@link TilePrototype::walking_sound | prototype:TilePrototype::walking_sound}. Example: `"tile-walking/concrete"`
7051
+ * - `"tile-mined"` - Uses {@link TilePrototype::mined_sound | prototype:TilePrototype::mined_sound}
7052
+ * - `"tile-build-small"` - Uses {@link TilePrototype::build_sound | prototype:TilePrototype::build_sound}. Example: `"tile-build-small/concrete"`
7053
+ * - `"tile-build-medium"` - Uses {@link TilePrototype::build_sound | prototype:TilePrototype::build_sound}
7054
+ * - `"tile-build-large"` - Uses {@link TilePrototype::build_sound | prototype:TilePrototype::build_sound}
7055
+ * The following types can be combined with any entity name as long as its prototype defines the corresponding sound.
7056
+ *
7057
+ * - `"entity-build"` - Uses {@link Entity::build_sound | prototype:EntityPrototype::build_sound} Example: `"entity-build/wooden-chest"`
7058
+ * - `"entity-mined"` - Uses {@link Entity::mined_sound | prototype:EntityPrototype::mined_sound}
7059
+ * - `"entity-mining"` - Uses {@link Entity::mining_sound | prototype:EntityPrototype::mining_sound}
7060
+ * - `"entity-rotated"` - Uses {@link EntityPrototype::rotated_sound | prototype:EntityPrototype::rotated_sound}
7061
+ * - `"entity-open"` - Uses {@link Entity::open_sound | prototype:EntityPrototype::open_sound}
7062
+ * - `"entity-close"` - Uses {@link Entity::close_sound | prototype:EntityPrototype::close_sound}
6847
7063
  */
6848
7064
  type SoundPath = string;
6849
7065
  /**
@@ -6887,6 +7103,7 @@ interface SpaceLocationAsteroidSpawnDefinition {
6887
7103
  asteroid: string;
6888
7104
  probability: double;
6889
7105
  speed: double;
7106
+ angle_when_stopped: float;
6890
7107
  }
6891
7108
  /**
6892
7109
  * A space location prototype may be specified in one of two ways.
@@ -6942,9 +7159,6 @@ interface SpaceLocationPrototypeFilterType extends BaseSpaceLocationPrototypeFil
6942
7159
  */
6943
7160
  'type': string | string[];
6944
7161
  }
6945
- /**
6946
- * Space platform may be specified in one of one ways.
6947
- */
6948
7162
  type SpacePlatformIdentification = LuaSpacePlatform;
6949
7163
  interface SpawnPointDefinition {
6950
7164
  /**
@@ -6957,14 +7171,14 @@ interface SpawnPointDefinition {
6957
7171
  weight: double;
6958
7172
  }
6959
7173
  interface SpoilToTriggerResult {
6960
- /**
6961
- * The trigger runs (count-in-stack / items_per_trigger) times; rounded up.
6962
- */
6963
- items_per_trigger: uint;
6964
7174
  /**
6965
7175
  * The trigger items that are run.
6966
7176
  */
6967
7177
  trigger: TriggerItem[];
7178
+ /**
7179
+ * The trigger runs (count-in-stack / items_per_trigger) times; rounded up.
7180
+ */
7181
+ items_per_trigger: uint;
6968
7182
  }
6969
7183
  /**
6970
7184
  * It can be either the name of a {@link SpritePrototype | prototype:SpritePrototype} defined in the data stage, or a path in form "type/name" or "type.name".
@@ -7980,6 +8194,19 @@ interface UpgradeMapperSource {
7980
8194
  */
7981
8195
  comparator?: ComparatorString;
7982
8196
  }
8197
+ /**
8198
+ * Defines the mode of operation for a {@link ValvePrototype | prototype:ValvePrototype}.
8199
+ */
8200
+ type ValveMode = /**
8201
+ * Fluid will flow if input level > output level.
8202
+ */
8203
+ 'one-way' | /**
8204
+ * Fluid will flow if input level > {@link ValvePrototype::threshold | prototype:ValvePrototype::threshold} and input level > output level.
8205
+ */
8206
+ 'overflow' | /**
8207
+ * Fluid will flow if output level < {@link ValvePrototype::threshold | prototype:ValvePrototype::threshold} and input level > output level.
8208
+ */
8209
+ 'top-up';
7983
8210
  /**
7984
8211
  * A vector is a two-element array or dictionary containing the `x` and `y` components. The game will always provide the array format. Positive x goes east, positive y goes south.
7985
8212
  * @example ```
@@ -8061,7 +8288,7 @@ type WaitConditionType = 'time' | 'full' | 'empty' | 'not_empty' | 'item_count'
8061
8288
  interface WireConnection {
8062
8289
  target: LuaWireConnector;
8063
8290
  /**
8064
- * Defaults to defines.wire_origin.player
8291
+ * Defaults to `defines.wire_origin.player`.
8065
8292
  */
8066
8293
  origin?: defines.wire_origin;
8067
8294
  }
@@ -8141,11 +8368,11 @@ interface ZoomSpecification {
8141
8368
  */
8142
8369
  zoom?: double;
8143
8370
  /**
8144
- * The number of game tiles across the horizontal axis at the game's default 16:9 aspect ratio. Must be a positive number. This specification is designed to comfortably accommodate displays with extreme aspect ratios such as ultrawide monitors. The exact zoom level is calculated at dynamically as follows. For aspect ratios between 16:9 and 9:16, the zoom level is computed so that `distance` number of tiles are visible along the game window's longer axis. For aspect ratios between 16:9 and 1:1, this is the window's width. For aspect ratios between 1:1 and 9:16, this is the window's height. For aspect ratios greater than 16:9 or smaller than 9:16, then the zoom level is actually computed so that `distance * 9 / 16` number of tiles are visible along the game window's shorter axis. So for aspect ratios greater than 16:9, this is the window's height. For aspect ratios smaller than 9:16, this is the window's height. Mutually exclusive with `zoom`. Used with `max_distance`.
8371
+ * The number of game tiles across the horizontal axis at the game's default 16:9 aspect ratio. Must be a positive number. This specification is designed to comfortably accommodate displays with extreme aspect ratios such as ultra-wide monitors. The exact zoom level is calculated dynamically as follows. For aspect ratios between 16:9 and 9:16, the zoom level is computed so that `distance` number of tiles are visible along the game window's longer axis. For aspect ratios between 16:9 and 1:1, this is the window's width. For aspect ratios between 1:1 and 9:16, this is the window's height. For aspect ratios greater than 16:9 or smaller than 9:16, then the zoom level is actually computed so that `distance * 9 / 16` number of tiles are visible along the game window's shorter axis. So for aspect ratios greater than 16:9, this is the window's height. For aspect ratios smaller than 9:16, this is the window's height. Mutually exclusive with `zoom`. Used with `max_distance`.
8145
8372
  */
8146
8373
  distance?: double;
8147
8374
  /**
8148
- * The absolute maximum number of game tiles permitted along the window's longest axis, setting a hard limit on how far a player can see by simply manipulating the game window. Must be a positive number. Values greater than the default may allow players to see ungenerated chunks while exploring. The "closest" zoom level calculated from `distance` and `max_distance` is always used. Optionally used with `distance`. Defaults to `500`.
8375
+ * The absolute maximum number of game tiles permitted along the window's longest axis, setting a hard limit on how far a player can see by simply manipulating the game window. Must be a positive number. Values greater than the default may allow players to see un-generated chunks while exploring. The "closest" zoom level calculated from `distance` and `max_distance` is always used. Optionally used with `distance`. Defaults to `500`.
8149
8376
  */
8150
8377
  max_distance?: double;
8151
8378
  }