typed-factorio 1.14.0 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -24,7 +24,7 @@ interface LuaAISettings {
24
24
  */
25
25
  do_separation: boolean
26
26
  /**
27
- * The pathing resolution modifier, must be between -8 and 8.
27
+ * Defines how coarse the pathfinder's grid is, where smaller values mean a coarser grid. Defaults to `0`, which equals a resolution of `1x1` tiles, centered on tile centers. Values range from `-8` to `8` inclusive, where each integer increment doubles/halves the resolution. So, a resolution of `-8` equals a grid of `256x256` tiles, and a resolution of `8` equals `1/256` of a tile.
28
28
  * @see {@link https://lua-api.factorio.com/latest/LuaAISettings.html#LuaAISettings.path_resolution_modifier Online documentation}
29
29
  */
30
30
  path_resolution_modifier: int8
@@ -217,9 +217,11 @@ interface LuaBootstrap {
217
217
  */
218
218
  on_init(handler: (() => void) | nil): void
219
219
  /**
220
- * Register a function to be run on save load. This is only called for mods that have been part of the save previously, or for players connecting to a running multiplayer session. It gives the mod the opportunity to do some very specific actions, should it need to. Doing anything other than these three will lead to desyncs, which breaks multiplayer and replay functionality. Access to {@link LuaGameScript} is not available. The {@linkplain https://lua-api.factorio.com/latest/Global.html global} table can be accessed and is safe to read from, but not write to, as doing so will lead to an error.
220
+ * Register a function to be run on save load. This is only called for mods that have been part of the save previously, or for players connecting to a running multiplayer session.
221
221
  *
222
- * The only legitimate uses of this event are the following:
222
+ * It gives the mod the opportunity to rectify potential differences in local state introduced by the save/load cycle. Doing anything other than the following three will lead to desyncs, breaking multiplayer and replay functionality. Access to {@link LuaGameScript} is not available. The {@linkplain https://lua-api.factorio.com/latest/Global.html global} table can be accessed and is safe to read from, but not write to, as doing so will lead to an error.
223
+ *
224
+ * The only legitimate uses of this event are these:
223
225
  * - Re-setup {@linkplain https://www.lua.org/pil/13.html metatables} as they are not persisted through the save/load cycle.
224
226
  * - Re-setup conditional event handlers, meaning subscribing to an event only when some condition is met to save processing time.
225
227
  * - Create local references to data stored in the {@linkplain https://lua-api.factorio.com/latest/Global.html global} table.
@@ -230,14 +232,6 @@ interface LuaBootstrap {
230
232
  * @see {@link https://lua-api.factorio.com/latest/LuaBootstrap.html#LuaBootstrap.on_load Online documentation}
231
233
  */
232
234
  on_load(handler: (() => void) | nil): void
233
- /**
234
- * Register a metatable to have linkage recorded and restored when saving/loading. The metatable itself will not be saved. Instead, only the linkage to a registered metatable is saved, and the metatable registered under that name will be used when loading the table.
235
- * @param name The name of this metatable. Names must be unique per mod.
236
- * @param metatable The metatable to register.
237
- * @remarks `register_metatable()` can not be used in the console, in event listeners or during a `remote.call()`.
238
- * @see {@link https://lua-api.factorio.com/latest/LuaBootstrap.html#LuaBootstrap.register_metatable Online documentation}
239
- */
240
- register_metatable(name: string, metatable: table): void
241
235
  /**
242
236
  * Register a function to be run when mod configuration changes. This is called when the game version or any mod version changed, when any mod was added or removed, when a startup setting has changed, when any prototypes have been added or removed, or when a migration was applied. It allows the mod to make any changes it deems appropriate to both the data structures in its {@linkplain https://lua-api.factorio.com/latest/Global.html global} table or to the game state through {@link LuaGameScript}.
243
237
  * @param handler The handler for this event. Passing `nil` will unregister it.
@@ -287,6 +281,31 @@ interface LuaBootstrap {
287
281
  * @see {@link https://lua-api.factorio.com/latest/LuaBootstrap.html#LuaBootstrap.register_on_entity_destroyed Online documentation}
288
282
  */
289
283
  register_on_entity_destroyed(entity: LuaEntity): RegistrationNumber
284
+ /**
285
+ * Register a metatable to have linkage recorded and restored when saving/loading. The metatable itself will not be saved. Instead, only the linkage to a registered metatable is saved, and the metatable registered under that name will be used when loading the table.
286
+ * @param name The name of this metatable. Names must be unique per mod.
287
+ * @param metatable The metatable to register.
288
+ * @example The metatable first needs to be defined in the mod's root scope, then registered using this method. From then on, it will be properly restored for tables in {@linkplain https://lua-api.factorio.com/latest/Global.html global}.
289
+ *
290
+ * ```
291
+ * local metatable = {
292
+ * __index = function(key)
293
+ * return "no value for key " .. key
294
+ * end
295
+ * }
296
+ * script.register_metatable("my_metatable", metatable)
297
+ * ```
298
+ *
299
+ * This previously defined `metatable` can then be set on any table as usual:
300
+ *
301
+ * ```
302
+ * local table = {key="value"}
303
+ * setmetatable(table, metatable)
304
+ * ```
305
+ * @remarks `register_metatable()` can not be used in the console, in event listeners or during a `remote.call()`.
306
+ * @see {@link https://lua-api.factorio.com/latest/LuaBootstrap.html#LuaBootstrap.register_metatable Online documentation}
307
+ */
308
+ register_metatable(name: string, metatable: table): void
290
309
  /**
291
310
  * Generate a new, unique event ID that can be used to raise custom events with {@link LuaBootstrap#raise_event LuaBootstrap::raise_event}.
292
311
  * @returns The newly generated event ID.
@@ -351,6 +370,7 @@ interface LuaBootstrap {
351
370
  * - {@link ScriptRaisedBuiltEvent script_raised_built}
352
371
  * - {@link ScriptRaisedDestroyEvent script_raised_destroy}
353
372
  * - {@link ScriptRaisedReviveEvent script_raised_revive}
373
+ * - {@link ScriptRaisedTeleportedEvent script_raised_teleported}
354
374
  * - {@link ScriptRaisedSetTilesEvent script_raised_set_tiles}
355
375
  * @param event ID of the event to raise.
356
376
  * @param data Table with extra data that will be passed to the event handler. Any invalid LuaObjects will silently stop the event from being raised.
@@ -615,7 +635,7 @@ interface LuaBurner {
615
635
  */
616
636
  remaining_burning_fuel: double
617
637
  /**
618
- * The currently burning item.
638
+ * The currently burning item. Writing `nil` will void the currently burning item without producing a {@link LuaBurner#burnt_result LuaBurner::burnt_result}.
619
639
  * @remarks Writing to this automatically handles correcting {@link LuaBurner#remaining_burning_fuel LuaBurner::remaining_burning_fuel}.
620
640
  * @see {@link https://lua-api.factorio.com/latest/LuaBurner.html#LuaBurner.currently_burning Online documentation}
621
641
  */
@@ -859,10 +879,11 @@ interface LuaCommandProcessor {
859
879
  */
860
880
  interface LuaConstantCombinatorControlBehavior extends LuaControlBehavior {
861
881
  /**
862
- * Sets the signal at the given index
882
+ * Sets the signal at the given index.
883
+ * @param signal Passing `nil` clears the signal.
863
884
  * @see {@link https://lua-api.factorio.com/latest/LuaConstantCombinatorControlBehavior.html#LuaConstantCombinatorControlBehavior.set_signal Online documentation}
864
885
  */
865
- set_signal(index: uint, signal: Signal): void
886
+ set_signal(index: uint, signal?: Signal): void
866
887
  /**
867
888
  * Gets the signal at the given index. Returned {@link Signal} will not contain signal if none is set for the index.
868
889
  * @see {@link https://lua-api.factorio.com/latest/LuaConstantCombinatorControlBehavior.html#LuaConstantCombinatorControlBehavior.get_signal Online documentation}
@@ -881,7 +902,7 @@ interface LuaConstantCombinatorControlBehavior extends LuaControlBehavior {
881
902
  */
882
903
  enabled: boolean
883
904
  /**
884
- * The number of signals this constant combinator supports
905
+ * The number of signals this constant combinator supports.
885
906
  * @see {@link https://lua-api.factorio.com/latest/LuaConstantCombinatorControlBehavior.html#LuaConstantCombinatorControlBehavior.signals_count Online documentation}
886
907
  */
887
908
  readonly signals_count: uint
@@ -999,7 +1020,12 @@ interface LuaControl {
999
1020
  */
1000
1021
  get_inventory(inventory: defines.inventory): LuaInventory | nil
1001
1022
  /**
1002
- * The maximum inventory index this entity may use.
1023
+ * The highest index of all inventories this entity can use. Allows iteration over all of them if desired.
1024
+ * @example
1025
+ *
1026
+ * ```
1027
+ * for k = 1, entity.get_max_inventory_index() do [...] end
1028
+ * ```
1003
1029
  * @see {@link https://lua-api.factorio.com/latest/LuaControl.html#LuaControl.get_max_inventory_index Online documentation}
1004
1030
  */
1005
1031
  get_max_inventory_index(): defines.inventory
@@ -1274,7 +1300,7 @@ interface LuaControl {
1274
1300
  */
1275
1301
  readonly surface: LuaSurface
1276
1302
  /**
1277
- * Unique ID associated with the surface this entity is currently on.
1303
+ * Unique {@link LuaSurface#index index} (ID) associated with the surface this entity is currently on.
1278
1304
  * @see {@link https://lua-api.factorio.com/latest/LuaControl.html#LuaControl.surface_index Online documentation}
1279
1305
  */
1280
1306
  readonly surface_index: SurfaceIndex
@@ -1295,7 +1321,7 @@ interface LuaControl {
1295
1321
  get force(): LuaForce
1296
1322
  set force(value: ForceIdentification)
1297
1323
  /**
1298
- * Unique ID associated with the force of this entity.
1324
+ * Unique {@link LuaForce#index index} (ID) associated with the force of this entity.
1299
1325
  * @see {@link https://lua-api.factorio.com/latest/LuaControl.html#LuaControl.force_index Online documentation}
1300
1326
  */
1301
1327
  readonly force_index: ForceIndex
@@ -1375,26 +1401,26 @@ interface LuaControl {
1375
1401
  riding_state: RidingState
1376
1402
  /**
1377
1403
  * Current mining state.
1378
- * @remarks When the player isn't mining tiles the player will mine what ever entity is currently selected. See {@link LuaControl#selected LuaControl::selected} and {@link LuaControl#update_selected_entity LuaControl::update_selected_entity}.
1404
+ * @remarks When the player isn't mining tiles, the player will mine what ever entity is currently selected. See {@link LuaControl#selected LuaControl::selected} and {@link LuaControl#update_selected_entity LuaControl::update_selected_entity}.
1379
1405
  * @see {@link https://lua-api.factorio.com/latest/LuaControl.html#LuaControl.mining_state Online documentation}
1380
1406
  */
1381
1407
  get mining_state(): {
1382
1408
  /**
1383
- * Whether the player is mining at all
1409
+ * Whether the player is mining at all.
1384
1410
  */
1385
1411
  readonly mining: boolean
1386
1412
  /**
1387
- * What tiles the player is mining; only used when the player is mining tiles (holding a tile in the cursor).
1413
+ * What location the player is mining. Only relevant if `mining` is `true`.
1388
1414
  */
1389
1415
  readonly position?: MapPosition
1390
1416
  }
1391
1417
  set mining_state(value: {
1392
1418
  /**
1393
- * Whether the player is mining at all
1419
+ * Whether the player is mining at all.
1394
1420
  */
1395
1421
  readonly mining: boolean
1396
1422
  /**
1397
- * What tiles the player is mining; only used when the player is mining tiles (holding a tile in the cursor).
1423
+ * What location the player is mining. Only relevant if `mining` is `true`.
1398
1424
  */
1399
1425
  readonly position?: MapPosition | MapPositionArray
1400
1426
  })
@@ -2638,21 +2664,21 @@ interface LuaEntity extends LuaControl {
2638
2664
  */
2639
2665
  update_connections(): void
2640
2666
  /**
2641
- * Current recipe being assembled by this machine or `nil` if no recipe is set.
2667
+ * Current recipe being assembled by this machine, if any.
2642
2668
  *
2643
2669
  * _Can only be used if this is CraftingMachine_
2644
2670
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.get_recipe Online documentation}
2645
2671
  */
2646
2672
  get_recipe(): LuaRecipe | nil
2647
2673
  /**
2648
- * Sets the current recipe in this assembly machine.
2674
+ * Sets the given recipe in this assembly machine.
2649
2675
  *
2650
2676
  * _Can only be used if this is AssemblingMachine_
2651
- * @param recipe The new recipe or `nil` to clear the recipe.
2677
+ * @param recipe The new recipe. Writing `nil` clears the recipe, if any.
2652
2678
  * @returns Any items removed from this entity as a result of setting the recipe.
2653
2679
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.set_recipe Online documentation}
2654
2680
  */
2655
- set_recipe(recipe: string | LuaRecipe | nil): Record<string, uint>
2681
+ set_recipe(recipe?: string | LuaRecipe): Record<string, uint>
2656
2682
  /**
2657
2683
  * Rotates this entity as if the player rotated it.
2658
2684
  *
@@ -2699,11 +2725,11 @@ interface LuaEntity extends LuaControl {
2699
2725
  * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_
2700
2726
  *
2701
2727
  * _Can only be used if this is Vehicle_
2702
- * @param driver The new driver or `nil` to eject the current driver if any.
2703
- * @remarks This differs over {@link LuaEntity#set_passenger LuaEntity::set_passenger} in that the passenger can't drive the vehicle.
2728
+ * @param driver The new driver. Writing `nil` ejects the current driver, if any.
2729
+ * @remarks This differs from {@link LuaEntity#set_passenger LuaEntity::set_passenger} in that the passenger can't drive the vehicle.
2704
2730
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.set_driver Online documentation}
2705
2731
  */
2706
- set_driver(driver: LuaEntity | PlayerIdentification | nil): void
2732
+ set_driver(driver?: LuaEntity | PlayerIdentification): void
2707
2733
  /**
2708
2734
  * Gets the passenger of this car or spidertron if any.
2709
2735
  *
@@ -2720,10 +2746,11 @@ interface LuaEntity extends LuaControl {
2720
2746
  * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_
2721
2747
  *
2722
2748
  * _Can only be used if this is Car or SpiderVehicle_
2723
- * @remarks This differs over {@link LuaEntity#get_driver LuaEntity::get_driver} in that the passenger can't drive the car.
2749
+ * @param passenger The new passenger. Writing `nil` ejects the current passenger, if any.
2750
+ * @remarks This differs from {@link LuaEntity#get_driver LuaEntity::get_driver} in that the passenger can't drive the car.
2724
2751
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.set_passenger Online documentation}
2725
2752
  */
2726
- set_passenger(passenger: LuaEntity | PlayerIdentification): void
2753
+ set_passenger(passenger?: LuaEntity | PlayerIdentification): void
2727
2754
  /**
2728
2755
  * Returns `true` if this entity produces or consumes electricity and is connected to an electric network that has at least one entity that can produce power.
2729
2756
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.is_connected_to_electric_network Online documentation}
@@ -3014,6 +3041,18 @@ interface LuaEntity extends LuaControl {
3014
3041
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.stop_spider Online documentation}
3015
3042
  */
3016
3043
  stop_spider(): void
3044
+ /**
3045
+ * Returns a table with all beacons affecting this effect receiver. Can only be used when the entity has an effect receiver (AssemblingMachine, Furnace, Lab, MiningDrills)
3046
+ * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.get_beacons Online documentation}
3047
+ */
3048
+ get_beacons(): LuaEntity[] | nil
3049
+ /**
3050
+ * Returns a table with all entities affected by this beacon
3051
+ *
3052
+ * _Can only be used if this is Beacon_
3053
+ * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.get_beacon_effect_receivers Online documentation}
3054
+ */
3055
+ get_beacon_effect_receivers(): LuaEntity[]
3017
3056
  /**
3018
3057
  * Name of the entity prototype. E.g. "inserter" or "filter-inserter".
3019
3058
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.name Online documentation}
@@ -3316,7 +3355,7 @@ interface LuaEntity extends LuaControl {
3316
3355
  */
3317
3356
  backer_name?: string
3318
3357
  /**
3319
- * The label on this entity, if any. `nil` if this is not a spider-vehicule.
3358
+ * The label on this spider-vehicle entity, if any. `nil` if this is not a spider-vehicle.
3320
3359
  *
3321
3360
  * **Raised events:**
3322
3361
  * - {@link OnEntityRenamedEvent on_entity_renamed} _instantly_
@@ -3410,14 +3449,14 @@ interface LuaEntity extends LuaControl {
3410
3449
  */
3411
3450
  readonly consumption_bonus: double
3412
3451
  /**
3413
- * `"input"` or `"output"`, depending on whether this underground belt goes down or up.
3452
+ * Whether this underground belt goes into or out of the ground.
3414
3453
  *
3415
3454
  * _Can only be used if this is TransportBeltToGround_
3416
3455
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.belt_to_ground_type Online documentation}
3417
3456
  */
3418
3457
  readonly belt_to_ground_type: "input" | "output"
3419
3458
  /**
3420
- * `"input"` or `"output"`, depending on whether this loader puts to or gets from a container.
3459
+ * Whether this loader gets items from or puts item into a container.
3421
3460
  *
3422
3461
  * _Can only be used if this is Loader_
3423
3462
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.loader_type Online documentation}
@@ -3510,7 +3549,9 @@ interface LuaEntity extends LuaControl {
3510
3549
  */
3511
3550
  readonly electric_emissions?: double
3512
3551
  /**
3513
- * A universally unique number identifying this entity for the lifetime of the save. Only entities inheriting from {@linkplain https://wiki.factorio.com/Prototype/EntityWithOwner EntityWithOwner}, as well as {@linkplain https://wiki.factorio.com/Prototype/ItemRequestProxy ItemRequestProxy} and {@linkplain https://wiki.factorio.com/Prototype/EntityGhost EntityGhost} are assigned a unit number. `nil` if this entity doesn't have a unit number.
3552
+ * A unique number identifying this entity for the lifetime of the save. These are allocated sequentially, and not re-used (until overflow).
3553
+ *
3554
+ * Only entities inheriting from {@linkplain https://wiki.factorio.com/Prototype/EntityWithOwner EntityWithOwner}, as well as {@linkplain https://wiki.factorio.com/Prototype/ItemRequestProxy ItemRequestProxy} and {@linkplain https://wiki.factorio.com/Prototype/EntityGhost EntityGhost} are assigned a unit number. Returns `nil` otherwise.
3514
3555
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.unit_number Online documentation}
3515
3556
  */
3516
3557
  readonly unit_number?: UnitNumber
@@ -3729,6 +3770,11 @@ interface LuaEntity extends LuaControl {
3729
3770
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.effects Online documentation}
3730
3771
  */
3731
3772
  readonly effects?: ModuleEffects
3773
+ /**
3774
+ * Number of beacons affecting this effect receiver. Can only be used when the entity has an effect receiver (AssemblingMachine, Furnace, Lab, MiningDrills)
3775
+ * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.beacons_count Online documentation}
3776
+ */
3777
+ readonly beacons_count?: uint
3732
3778
  /**
3733
3779
  * The filters for this infinity container.
3734
3780
  *
@@ -4007,7 +4053,7 @@ interface LuaEntity extends LuaControl {
4007
4053
  */
4008
4054
  time_to_next_effect: uint
4009
4055
  /**
4010
- * Destination of this spidertron's autopilot, if any.
4056
+ * Destination of this spidertron's autopilot, if any. Writing `nil` clears all destinations.
4011
4057
  *
4012
4058
  * _Can only be used if this is SpiderVehicle_
4013
4059
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.autopilot_destination Online documentation}
@@ -4672,6 +4718,11 @@ interface BaseEntity extends LuaControl {
4672
4718
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.is_registered_for_repair Online documentation}
4673
4719
  */
4674
4720
  is_registered_for_repair(): boolean
4721
+ /**
4722
+ * Returns a table with all beacons affecting this effect receiver. Can only be used when the entity has an effect receiver (AssemblingMachine, Furnace, Lab, MiningDrills)
4723
+ * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.get_beacons Online documentation}
4724
+ */
4725
+ get_beacons(): LuaEntity[] | nil
4675
4726
  /**
4676
4727
  * Name of the entity prototype. E.g. "inserter" or "filter-inserter".
4677
4728
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.name Online documentation}
@@ -4816,7 +4867,7 @@ interface BaseEntity extends LuaControl {
4816
4867
  */
4817
4868
  backer_name?: string
4818
4869
  /**
4819
- * The label on this entity, if any. `nil` if this is not a spider-vehicule.
4870
+ * The label on this spider-vehicle entity, if any. `nil` if this is not a spider-vehicle.
4820
4871
  *
4821
4872
  * **Raised events:**
4822
4873
  * - {@link OnEntityRenamedEvent on_entity_renamed} _instantly_
@@ -4902,7 +4953,9 @@ interface BaseEntity extends LuaControl {
4902
4953
  */
4903
4954
  readonly electric_emissions?: double
4904
4955
  /**
4905
- * A universally unique number identifying this entity for the lifetime of the save. Only entities inheriting from {@linkplain https://wiki.factorio.com/Prototype/EntityWithOwner EntityWithOwner}, as well as {@linkplain https://wiki.factorio.com/Prototype/ItemRequestProxy ItemRequestProxy} and {@linkplain https://wiki.factorio.com/Prototype/EntityGhost EntityGhost} are assigned a unit number. `nil` if this entity doesn't have a unit number.
4956
+ * A unique number identifying this entity for the lifetime of the save. These are allocated sequentially, and not re-used (until overflow).
4957
+ *
4958
+ * Only entities inheriting from {@linkplain https://wiki.factorio.com/Prototype/EntityWithOwner EntityWithOwner}, as well as {@linkplain https://wiki.factorio.com/Prototype/ItemRequestProxy ItemRequestProxy} and {@linkplain https://wiki.factorio.com/Prototype/EntityGhost EntityGhost} are assigned a unit number. Returns `nil` otherwise.
4906
4959
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.unit_number Online documentation}
4907
4960
  */
4908
4961
  readonly unit_number?: UnitNumber
@@ -5062,6 +5115,11 @@ interface BaseEntity extends LuaControl {
5062
5115
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.effects Online documentation}
5063
5116
  */
5064
5117
  readonly effects?: ModuleEffects
5118
+ /**
5119
+ * Number of beacons affecting this effect receiver. Can only be used when the entity has an effect receiver (AssemblingMachine, Furnace, Lab, MiningDrills)
5120
+ * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.beacons_count Online documentation}
5121
+ */
5122
+ readonly beacons_count?: uint
5065
5123
  /**
5066
5124
  * The status of this entity, if any.
5067
5125
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.status Online documentation}
@@ -5352,7 +5410,7 @@ interface CraftingMachineEntity extends BaseEntity {
5352
5410
  */
5353
5411
  is_crafting(): boolean
5354
5412
  /**
5355
- * Current recipe being assembled by this machine or `nil` if no recipe is set.
5413
+ * Current recipe being assembled by this machine, if any.
5356
5414
  *
5357
5415
  * _Can only be used if this is CraftingMachine_
5358
5416
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.get_recipe Online documentation}
@@ -5763,14 +5821,14 @@ interface ProgrammableSpeakerEntity extends BaseEntity {
5763
5821
  */
5764
5822
  interface AssemblingMachineEntity extends BaseEntity {
5765
5823
  /**
5766
- * Sets the current recipe in this assembly machine.
5824
+ * Sets the given recipe in this assembly machine.
5767
5825
  *
5768
5826
  * _Can only be used if this is AssemblingMachine_
5769
- * @param recipe The new recipe or `nil` to clear the recipe.
5827
+ * @param recipe The new recipe. Writing `nil` clears the recipe, if any.
5770
5828
  * @returns Any items removed from this entity as a result of setting the recipe.
5771
5829
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.set_recipe Online documentation}
5772
5830
  */
5773
- set_recipe(recipe: string | LuaRecipe | nil): Record<string, uint>
5831
+ set_recipe(recipe?: string | LuaRecipe): Record<string, uint>
5774
5832
  /**
5775
5833
  * When locked; the recipe in this assembling machine can't be changed by the player.
5776
5834
  *
@@ -5799,11 +5857,11 @@ interface VehicleEntity extends BaseEntity {
5799
5857
  * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_
5800
5858
  *
5801
5859
  * _Can only be used if this is Vehicle_
5802
- * @param driver The new driver or `nil` to eject the current driver if any.
5803
- * @remarks This differs over {@link LuaEntity#set_passenger LuaEntity::set_passenger} in that the passenger can't drive the vehicle.
5860
+ * @param driver The new driver. Writing `nil` ejects the current driver, if any.
5861
+ * @remarks This differs from {@link LuaEntity#set_passenger LuaEntity::set_passenger} in that the passenger can't drive the vehicle.
5804
5862
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.set_driver Online documentation}
5805
5863
  */
5806
- set_driver(driver: LuaEntity | PlayerIdentification | nil): void
5864
+ set_driver(driver?: LuaEntity | PlayerIdentification): void
5807
5865
  /**
5808
5866
  * Whether equipment grid logistics are enabled while this vehicle is moving.
5809
5867
  *
@@ -5833,10 +5891,11 @@ interface CarEntity extends BaseEntity {
5833
5891
  * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_
5834
5892
  *
5835
5893
  * _Can only be used if this is Car or SpiderVehicle_
5836
- * @remarks This differs over {@link LuaEntity#get_driver LuaEntity::get_driver} in that the passenger can't drive the car.
5894
+ * @param passenger The new passenger. Writing `nil` ejects the current passenger, if any.
5895
+ * @remarks This differs from {@link LuaEntity#get_driver LuaEntity::get_driver} in that the passenger can't drive the car.
5837
5896
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.set_passenger Online documentation}
5838
5897
  */
5839
- set_passenger(passenger: LuaEntity | PlayerIdentification): void
5898
+ set_passenger(passenger?: LuaEntity | PlayerIdentification): void
5840
5899
  /**
5841
5900
  * Multiplies the acceleration the vehicle can create for one unit of energy. Defaults to `1`.
5842
5901
  *
@@ -5899,10 +5958,11 @@ interface SpiderVehicleEntity extends BaseEntity {
5899
5958
  * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_
5900
5959
  *
5901
5960
  * _Can only be used if this is Car or SpiderVehicle_
5902
- * @remarks This differs over {@link LuaEntity#get_driver LuaEntity::get_driver} in that the passenger can't drive the car.
5961
+ * @param passenger The new passenger. Writing `nil` ejects the current passenger, if any.
5962
+ * @remarks This differs from {@link LuaEntity#get_driver LuaEntity::get_driver} in that the passenger can't drive the car.
5903
5963
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.set_passenger Online documentation}
5904
5964
  */
5905
- set_passenger(passenger: LuaEntity | PlayerIdentification): void
5965
+ set_passenger(passenger?: LuaEntity | PlayerIdentification): void
5906
5966
  /**
5907
5967
  * Adds the given position to this spidertron's autopilot's queue of destinations.
5908
5968
  *
@@ -5954,7 +6014,7 @@ interface SpiderVehicleEntity extends BaseEntity {
5954
6014
  */
5955
6015
  selected_gun_index?: uint
5956
6016
  /**
5957
- * Destination of this spidertron's autopilot, if any.
6017
+ * Destination of this spidertron's autopilot, if any. Writing `nil` clears all destinations.
5958
6018
  *
5959
6019
  * _Can only be used if this is SpiderVehicle_
5960
6020
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.autopilot_destination Online documentation}
@@ -6140,6 +6200,19 @@ interface LinkedBeltEntity extends BaseEntity {
6140
6200
  readonly linked_belt_neighbour?: LuaEntity
6141
6201
  }
6142
6202
 
6203
+ /**
6204
+ * @noSelf
6205
+ */
6206
+ interface BeaconEntity extends BaseEntity {
6207
+ /**
6208
+ * Returns a table with all entities affected by this beacon
6209
+ *
6210
+ * _Can only be used if this is Beacon_
6211
+ * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.get_beacon_effect_receivers Online documentation}
6212
+ */
6213
+ get_beacon_effect_receivers(): LuaEntity[]
6214
+ }
6215
+
6143
6216
  interface GhostEntity extends BaseEntity {
6144
6217
  /**
6145
6218
  * Name of the entity or tile contained in this ghost
@@ -6304,7 +6377,7 @@ interface FlyingTextEntity extends BaseEntity {
6304
6377
 
6305
6378
  interface TransportBeltToGroundEntity extends BaseEntity {
6306
6379
  /**
6307
- * `"input"` or `"output"`, depending on whether this underground belt goes down or up.
6380
+ * Whether this underground belt goes into or out of the ground.
6308
6381
  *
6309
6382
  * _Can only be used if this is TransportBeltToGround_
6310
6383
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.belt_to_ground_type Online documentation}
@@ -6314,7 +6387,7 @@ interface TransportBeltToGroundEntity extends BaseEntity {
6314
6387
 
6315
6388
  interface LoaderEntity extends BaseEntity {
6316
6389
  /**
6317
- * `"input"` or `"output"`, depending on whether this loader puts to or gets from a container.
6390
+ * Whether this loader gets items from or puts item into a container.
6318
6391
  *
6319
6392
  * _Can only be used if this is Loader_
6320
6393
  * @see {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.loader_type Online documentation}
@@ -6635,10 +6708,10 @@ interface LuaEntityPrototype {
6635
6708
  readonly mining_trigger?: TriggerItem[]
6636
6709
  }
6637
6710
  /**
6638
- * Items that when placed will produce this entity, if any. Construction bots will always choose the first item in this list to build this entity.
6711
+ * Items that when placed will produce this entity, if any. Construction bots will choose the first item in the list to build this entity.
6639
6712
  * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.items_to_place_this Online documentation}
6640
6713
  */
6641
- readonly items_to_place_this?: SimpleItemStack[]
6714
+ readonly items_to_place_this?: ItemStackDefinition[]
6642
6715
  /**
6643
6716
  * The bounding box used for collision checking.
6644
6717
  * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.collision_box Online documentation}
@@ -7054,7 +7127,7 @@ interface LuaEntityPrototype {
7054
7127
  */
7055
7128
  readonly guns?: Record<string, LuaItemPrototype>
7056
7129
  /**
7057
- * A vector of the gun prototypes of this car, spider vehicule, or artillery wagon or turret.
7130
+ * A vector of the gun prototypes of this car, spider vehicle, artillery wagon, or turret.
7058
7131
  *
7059
7132
  * _Can only be used if this is Car, SpiderVehicle, ArtilleryTurret or ArtilleryWagon_
7060
7133
  * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.indexed_guns Online documentation}
@@ -7196,7 +7269,7 @@ interface LuaEntityPrototype {
7196
7269
  /**
7197
7270
  * The default maximum power output of this generator prototype.
7198
7271
  *
7199
- * _Can only be used if this is Generator_
7272
+ * _Can only be used if this is BurnerGenerator or Generator_
7200
7273
  * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.max_power_output Online documentation}
7201
7274
  */
7202
7275
  readonly max_power_output?: double
@@ -8170,10 +8243,10 @@ interface BaseEntityPrototype {
8170
8243
  readonly mining_trigger?: TriggerItem[]
8171
8244
  }
8172
8245
  /**
8173
- * Items that when placed will produce this entity, if any. Construction bots will always choose the first item in this list to build this entity.
8246
+ * Items that when placed will produce this entity, if any. Construction bots will choose the first item in the list to build this entity.
8174
8247
  * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.items_to_place_this Online documentation}
8175
8248
  */
8176
- readonly items_to_place_this?: SimpleItemStack[]
8249
+ readonly items_to_place_this?: ItemStackDefinition[]
8177
8250
  /**
8178
8251
  * The bounding box used for collision checking.
8179
8252
  * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.collision_box Online documentation}
@@ -9104,7 +9177,7 @@ interface CarEntityPrototype extends BaseEntityPrototype {
9104
9177
  */
9105
9178
  readonly turret_rotation_speed?: double
9106
9179
  /**
9107
- * A vector of the gun prototypes of this car, spider vehicule, or artillery wagon or turret.
9180
+ * A vector of the gun prototypes of this car, spider vehicle, artillery wagon, or turret.
9108
9181
  *
9109
9182
  * _Can only be used if this is Car, SpiderVehicle, ArtilleryTurret or ArtilleryWagon_
9110
9183
  * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.indexed_guns Online documentation}
@@ -9165,7 +9238,7 @@ interface GeneratorEntityPrototype extends BaseEntityPrototype {
9165
9238
  /**
9166
9239
  * The default maximum power output of this generator prototype.
9167
9240
  *
9168
- * _Can only be used if this is Generator_
9241
+ * _Can only be used if this is BurnerGenerator or Generator_
9169
9242
  * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.max_power_output Online documentation}
9170
9243
  */
9171
9244
  readonly max_power_output?: double
@@ -9190,7 +9263,7 @@ interface RollingStockEntityPrototype extends BaseEntityPrototype {
9190
9263
 
9191
9264
  interface SpiderVehicleEntityPrototype extends BaseEntityPrototype {
9192
9265
  /**
9193
- * A vector of the gun prototypes of this car, spider vehicule, or artillery wagon or turret.
9266
+ * A vector of the gun prototypes of this car, spider vehicle, artillery wagon, or turret.
9194
9267
  *
9195
9268
  * _Can only be used if this is Car, SpiderVehicle, ArtilleryTurret or ArtilleryWagon_
9196
9269
  * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.indexed_guns Online documentation}
@@ -9242,7 +9315,7 @@ interface SpiderVehicleEntityPrototype extends BaseEntityPrototype {
9242
9315
 
9243
9316
  interface ArtilleryTurretEntityPrototype extends BaseEntityPrototype {
9244
9317
  /**
9245
- * A vector of the gun prototypes of this car, spider vehicule, or artillery wagon or turret.
9318
+ * A vector of the gun prototypes of this car, spider vehicle, artillery wagon, or turret.
9246
9319
  *
9247
9320
  * _Can only be used if this is Car, SpiderVehicle, ArtilleryTurret or ArtilleryWagon_
9248
9321
  * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.indexed_guns Online documentation}
@@ -9259,7 +9332,7 @@ interface ArtilleryTurretEntityPrototype extends BaseEntityPrototype {
9259
9332
 
9260
9333
  interface ArtilleryWagonEntityPrototype extends BaseEntityPrototype {
9261
9334
  /**
9262
- * A vector of the gun prototypes of this car, spider vehicule, or artillery wagon or turret.
9335
+ * A vector of the gun prototypes of this car, spider vehicle, artillery wagon, or turret.
9263
9336
  *
9264
9337
  * _Can only be used if this is Car, SpiderVehicle, ArtilleryTurret or ArtilleryWagon_
9265
9338
  * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.indexed_guns Online documentation}
@@ -9430,6 +9503,16 @@ interface RobotWithLogisticsInterfaceEntityPrototype extends BaseEntityPrototype
9430
9503
  readonly draw_cargo?: boolean
9431
9504
  }
9432
9505
 
9506
+ interface BurnerGeneratorEntityPrototype extends BaseEntityPrototype {
9507
+ /**
9508
+ * The default maximum power output of this generator prototype.
9509
+ *
9510
+ * _Can only be used if this is BurnerGenerator or Generator_
9511
+ * @see {@link https://lua-api.factorio.com/latest/LuaEntityPrototype.html#LuaEntityPrototype.max_power_output Online documentation}
9512
+ */
9513
+ readonly max_power_output?: double
9514
+ }
9515
+
9433
9516
  interface BoilerEntityPrototype extends BaseEntityPrototype {
9434
9517
  /**
9435
9518
  * The target temperature of this boiler prototype.
@@ -10248,7 +10331,7 @@ interface LuaEquipmentGrid {
10248
10331
  */
10249
10332
  readonly max_shield: float
10250
10333
  /**
10251
- * True if this movement bonus equipment is turned off, otherwise false.
10334
+ * Whether this grid's equipment movement bonus is active.
10252
10335
  * @see {@link https://lua-api.factorio.com/latest/LuaEquipmentGrid.html#LuaEquipmentGrid.inhibit_movement_bonus Online documentation}
10253
10336
  */
10254
10337
  inhibit_movement_bonus: boolean
@@ -11127,9 +11210,10 @@ interface LuaForce {
11127
11210
  clear_chart(surface?: SurfaceIdentification): void
11128
11211
  /**
11129
11212
  * Force a rechart of the whole chart.
11213
+ * @param surface Which surface to rechart or all if not given.
11130
11214
  * @see {@link https://lua-api.factorio.com/latest/LuaForce.html#LuaForce.rechart Online documentation}
11131
11215
  */
11132
- rechart(): void
11216
+ rechart(surface?: SurfaceIdentification): void
11133
11217
  /**
11134
11218
  * Chart all generated chunks.
11135
11219
  * @param surface Which surface to chart or all if not given.
@@ -11611,7 +11695,7 @@ interface LuaForce {
11611
11695
  */
11612
11696
  research_queue_enabled: boolean
11613
11697
  /**
11614
- * Unique ID associated with this force.
11698
+ * This force's index in {@link LuaGameScript#forces LuaGameScript::forces} (unique ID). It is assigned when a force is created, and remains so until it is {@link OnForcesMergedEvent merged} (ie. deleted). Indexes of merged forces can be reused.
11615
11699
  * @see {@link https://lua-api.factorio.com/latest/LuaForce.html#LuaForce.index Online documentation}
11616
11700
  */
11617
11701
  readonly index: ForceIndex
@@ -11916,7 +12000,7 @@ interface LuaGameScript {
11916
12000
  */
11917
12001
  remove_offline_players(players?: readonly (LuaPlayer | string)[]): void
11918
12002
  /**
11919
- * Force a CRC check. Tells all peers to calculate their current map CRC; these CRC are then compared against each other. If a mismatch is detected, the game is desynced and some peers are forced to reconnect.
12003
+ * Force a CRC check. Tells all peers to calculate their current CRC, which are then compared to each other. If a mismatch is detected, the game desyncs and some peers are forced to reconnect.
11920
12004
  * @see {@link https://lua-api.factorio.com/latest/LuaGameScript.html#LuaGameScript.force_crc Online documentation}
11921
12005
  */
11922
12006
  force_crc(): void
@@ -12112,7 +12196,7 @@ interface LuaGameScript {
12112
12196
  */
12113
12197
  count_pipe_groups(): void
12114
12198
  /**
12115
- * Is the map loaded is multiplayer?
12199
+ * Whether the save is loaded as a multiplayer map.
12116
12200
  * @see {@link https://lua-api.factorio.com/latest/LuaGameScript.html#LuaGameScript.is_multiplayer Online documentation}
12117
12201
  */
12118
12202
  is_multiplayer(): boolean
@@ -12901,6 +12985,14 @@ interface ButtonGuiSpec extends BaseGuiSpec {
12901
12985
  * Which mouse buttons the button responds to. Defaults to `"left-and-right"`.
12902
12986
  */
12903
12987
  readonly mouse_button_filter?: MouseButtonFlagsWrite
12988
+ /**
12989
+ * Whether the button will automatically toggle when clicked. Defaults to `false`.
12990
+ */
12991
+ readonly auto_toggle?: boolean
12992
+ /**
12993
+ * The initial toggled state of the button. Defaults to `false`.
12994
+ */
12995
+ readonly toggled?: boolean
12904
12996
  }
12905
12997
 
12906
12998
  /**
@@ -13049,6 +13141,14 @@ interface SpriteButtonGuiSpec extends BaseGuiSpec {
13049
13141
  * The mouse buttons that the button responds to. Defaults to `"left-and-right"`.
13050
13142
  */
13051
13143
  readonly mouse_button_filter?: MouseButtonFlagsWrite
13144
+ /**
13145
+ * Whether the button will automatically toggle when clicked. Defaults to `false`.
13146
+ */
13147
+ readonly auto_toggle?: boolean
13148
+ /**
13149
+ * The initial toggled state of the button. Defaults to `false`.
13150
+ */
13151
+ readonly toggled?: boolean
13052
13152
  }
13053
13153
 
13054
13154
  /**
@@ -13594,6 +13694,11 @@ interface BaseGuiElement {
13594
13694
  * @see {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.tags Online documentation}
13595
13695
  */
13596
13696
  tags: Tags
13697
+ /**
13698
+ * Whether this element will raise {@link OnGuiHoverEvent on_gui_hover} and {@link OnGuiLeaveEvent on_gui_leave}.
13699
+ * @see {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.raise_hover_events Online documentation}
13700
+ */
13701
+ raise_hover_events: boolean
13597
13702
  /**
13598
13703
  * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
13599
13704
  */
@@ -13961,6 +14066,20 @@ interface SpriteButtonGuiElementMembers extends BaseGuiElement {
13961
14066
  * @see {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.show_percent_for_small_numbers Online documentation}
13962
14067
  */
13963
14068
  show_percent_for_small_numbers: boolean
14069
+ /**
14070
+ * Whether this button will automatically toggle when clicked.
14071
+ *
14072
+ * _Can only be used if this is button or sprite-button_
14073
+ * @see {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.auto_toggle Online documentation}
14074
+ */
14075
+ auto_toggle: boolean
14076
+ /**
14077
+ * Whether this button is currently toggled.
14078
+ *
14079
+ * _Can only be used if this is button or sprite-button_
14080
+ * @see {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.toggled Online documentation}
14081
+ */
14082
+ toggled: boolean
13964
14083
  /**
13965
14084
  * The mouse button filters for this button or sprite-button.
13966
14085
  *
@@ -14126,6 +14245,20 @@ interface ButtonGuiElementMembers extends BaseGuiElement {
14126
14245
  * @see {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.type Online documentation}
14127
14246
  */
14128
14247
  readonly type: "button"
14248
+ /**
14249
+ * Whether this button will automatically toggle when clicked.
14250
+ *
14251
+ * _Can only be used if this is button or sprite-button_
14252
+ * @see {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.auto_toggle Online documentation}
14253
+ */
14254
+ auto_toggle: boolean
14255
+ /**
14256
+ * Whether this button is currently toggled.
14257
+ *
14258
+ * _Can only be used if this is button or sprite-button_
14259
+ * @see {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.toggled Online documentation}
14260
+ */
14261
+ toggled: boolean
14129
14262
  /**
14130
14263
  * The mouse button filters for this button or sprite-button.
14131
14264
  *
@@ -14763,7 +14896,7 @@ type GuiElementMembers =
14763
14896
  * - `"progressbar"`: A partially filled bar that can be used to indicate progress.
14764
14897
  * - `"table"`: 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.
14765
14898
  * - `"textfield"`: A single-line box the user can type into. Relevant events: {@link OnGuiTextChangedEvent on_gui_text_changed}, {@link OnGuiConfirmedEvent on_gui_confirmed}
14766
- * - `"radiobutton"`: A clickable element that is functionally identical to a `checkbox`, but has a circular appearance. Relevant event: {@link OnGuiCheckedStateChangedEvent on_gui_checked_state_changed}
14899
+ * - `"radiobutton"`: 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 OnGuiCheckedStateChangedEvent on_gui_checked_state_changed}
14767
14900
  * - `"sprite"`: An element that shows an image.
14768
14901
  * - `"scroll-pane"`: An invisible element that is similar to a `flow`, but has the ability to show and use scroll bars.
14769
14902
  * - `"drop-down"`: A drop-down containing strings of text. Relevant event: {@link OnGuiSelectionStateChangedEvent on_gui_selection_state_changed}
@@ -16404,6 +16537,14 @@ interface LuaItemStack {
16404
16537
  * @see {@link https://lua-api.factorio.com/latest/LuaItemStack.html#LuaItemStack.drain_durability Online documentation}
16405
16538
  */
16406
16539
  drain_durability(amount: double): void
16540
+ /**
16541
+ * Use the capsule item with the entity as the source, targeting the given position.
16542
+ * @param entity The entity to use the capsule item with.
16543
+ * @param target_position The position to use the capsule item with.
16544
+ * @returns Array of the entities that were created by the capsule action.
16545
+ * @see {@link https://lua-api.factorio.com/latest/LuaItemStack.html#LuaItemStack.use_capsule Online documentation}
16546
+ */
16547
+ use_capsule(entity: LuaEntity, target_position: MapPosition | MapPositionArray): LuaEntity[]
16407
16548
  /**
16408
16549
  * Would a call to {@link LuaItemStack#set_stack LuaItemStack::set_stack} succeed?
16409
16550
  * @param stack Stack that would be set, possibly `nil`.
@@ -16873,7 +17014,7 @@ interface LuaItemStack {
16873
17014
  * _Can only be used if this is BlueprintItem_
16874
17015
  * @see {@link https://lua-api.factorio.com/latest/LuaItemStack.html#LuaItemStack.default_icons Online documentation}
16875
17016
  */
16876
- readonly default_icons: BlueprintItemIcon[]
17017
+ readonly default_icons: BlueprintSignalIcon[]
16877
17018
  /**
16878
17019
  * _Can only be used if this is ItemWithTags_
16879
17020
  * @see {@link https://lua-api.factorio.com/latest/LuaItemStack.html#LuaItemStack.tags Online documentation}
@@ -17076,6 +17217,14 @@ interface BaseItemStack {
17076
17217
  * @see {@link https://lua-api.factorio.com/latest/LuaItemStack.html#LuaItemStack.is_blueprint_setup Online documentation}
17077
17218
  */
17078
17219
  is_blueprint_setup(): boolean
17220
+ /**
17221
+ * Use the capsule item with the entity as the source, targeting the given position.
17222
+ * @param entity The entity to use the capsule item with.
17223
+ * @param target_position The position to use the capsule item with.
17224
+ * @returns Array of the entities that were created by the capsule action.
17225
+ * @see {@link https://lua-api.factorio.com/latest/LuaItemStack.html#LuaItemStack.use_capsule Online documentation}
17226
+ */
17227
+ use_capsule(entity: LuaEntity, target_position: MapPosition | MapPositionArray): LuaEntity[]
17079
17228
  /**
17080
17229
  * Would a call to {@link LuaItemStack#set_stack LuaItemStack::set_stack} succeed?
17081
17230
  * @param stack Stack that would be set, possibly `nil`.
@@ -17537,7 +17686,7 @@ interface BlueprintItemStack extends BaseItemStack {
17537
17686
  * _Can only be used if this is BlueprintItem_
17538
17687
  * @see {@link https://lua-api.factorio.com/latest/LuaItemStack.html#LuaItemStack.default_icons Online documentation}
17539
17688
  */
17540
- readonly default_icons: BlueprintItemIcon[]
17689
+ readonly default_icons: BlueprintSignalIcon[]
17541
17690
  }
17542
17691
 
17543
17692
  /**
@@ -19254,7 +19403,7 @@ interface LuaPlayer extends LuaControl {
19254
19403
  */
19255
19404
  readonly cutscene_character: LuaEntity | nil
19256
19405
  /**
19257
- * This player's unique index in {@link LuaGameScript#players LuaGameScript::players}. It is given to them when they are {@link OnPlayerCreatedEvent created} and remains assigned to them until they are {@link OnPlayerRemovedEvent removed}.
19406
+ * This player's index in {@link LuaGameScript#players LuaGameScript::players} (unique ID). It is assigned when a player is created, and remains so (even when the player is not {@link LuaPlayer#connected connected}) until the player is irreversably {@link OnPlayerRemovedEvent removed}. Indexes of removed players can be reused.
19258
19407
  * @see {@link https://lua-api.factorio.com/latest/LuaPlayer.html#LuaPlayer.index Online documentation}
19259
19408
  */
19260
19409
  readonly index: PlayerIndex
@@ -19340,8 +19489,15 @@ interface LuaPlayer extends LuaControl {
19340
19489
  */
19341
19490
  permission_group?: LuaPermissionGroup
19342
19491
  /**
19343
- * The current per-player settings for the this player, indexed by prototype name. Returns the same structure as {@link LuaSettings#get_player_settings LuaSettings::get_player_settings}.
19344
- * @remarks This table will become invalid if its associated player does.
19492
+ * The current per-player settings for the this player, indexed by prototype name. Returns the same structure as {@link LuaSettings#get_player_settings LuaSettings::get_player_settings}. This table becomes invalid if its associated player does.
19493
+ *
19494
+ * Even though this attribute is marked as read-only, individual settings can be changed by overwriting their {@link ModSetting} table. Mods can only change their own settings. Using the in-game console, all player settings can be changed.
19495
+ * @example
19496
+ *
19497
+ * ```
19498
+ * -- Change the value of the "active_lifestyle" setting
19499
+ * player.mod_settings["active_lifestyle"] = {value = true}
19500
+ * ```
19345
19501
  * @see {@link https://lua-api.factorio.com/latest/LuaPlayer.html#LuaPlayer.mod_settings Online documentation}
19346
19502
  */
19347
19503
  readonly mod_settings: LuaCustomTable<string, ModSetting>
@@ -19719,22 +19875,22 @@ interface LuaRecipe {
19719
19875
  */
19720
19876
  readonly category: string
19721
19877
  /**
19722
- * Ingredients for this recipe.
19723
- * @example What the "steel-chest" recipe would return
19878
+ * The ingredients to this recipe.
19879
+ * @example The ingredients of `"advanced-oil-processing"` would look like this:
19724
19880
  *
19725
19881
  * ```
19726
- * {{type="item", name="steel-plate", amount=8}}
19727
- * ```
19728
- * @example What the "advanced-oil-processing" recipe would return
19729
- *
19730
- * ```
19731
- * {{type="fluid", name="crude-oil", amount=10}, {type="fluid", name="water", amount=5}}
19882
+ * {{type="fluid", name="crude-oil", amount=100}, {type="fluid", name="water", amount=50}}
19732
19883
  * ```
19733
19884
  * @see {@link https://lua-api.factorio.com/latest/LuaRecipe.html#LuaRecipe.ingredients Online documentation}
19734
19885
  */
19735
19886
  readonly ingredients: Ingredient[]
19736
19887
  /**
19737
- * The results of this recipe.
19888
+ * The results/products of this recipe.
19889
+ * @example The products of `"advanced-oil-processing"` would look like this:
19890
+ *
19891
+ * ```
19892
+ * {{type="fluid", name="heavy-oil", amount=25}, {type="fluid", name="light-oil", amount=45}, {type="fluid", name="petroleum-gas", amount=55}}
19893
+ * ```
19738
19894
  * @see {@link https://lua-api.factorio.com/latest/LuaRecipe.html#LuaRecipe.products Online documentation}
19739
19895
  */
19740
19896
  readonly products: Product[]
@@ -19847,12 +20003,22 @@ interface LuaRecipePrototype {
19847
20003
  */
19848
20004
  readonly category: string
19849
20005
  /**
19850
- * Ingredients for this recipe.
20006
+ * The ingredients to this recipe.
20007
+ * @example The ingredients of `"advanced-oil-processing"` would look like this:
20008
+ *
20009
+ * ```
20010
+ * {{type="fluid", name="crude-oil", amount=100}, {type="fluid", name="water", amount=50}}
20011
+ * ```
19851
20012
  * @see {@link https://lua-api.factorio.com/latest/LuaRecipePrototype.html#LuaRecipePrototype.ingredients Online documentation}
19852
20013
  */
19853
20014
  readonly ingredients: Ingredient[]
19854
20015
  /**
19855
- * The results of this recipe.
20016
+ * The results/products of this recipe.
20017
+ * @example The products of `"advanced-oil-processing"` would look like this:
20018
+ *
20019
+ * ```
20020
+ * {{type="fluid", name="heavy-oil", amount=25}, {type="fluid", name="light-oil", amount=45}, {type="fluid", name="petroleum-gas", amount=55}}
20021
+ * ```
19856
20022
  * @see {@link https://lua-api.factorio.com/latest/LuaRecipePrototype.html#LuaRecipePrototype.products Online documentation}
19857
20023
  */
19858
20024
  readonly products: Product[]
@@ -20344,6 +20510,10 @@ interface LuaRendering {
20344
20510
  * Only used if `orientation_target` is a LuaEntity.
20345
20511
  */
20346
20512
  readonly orientation_target_offset?: Vector
20513
+ /**
20514
+ * Only used if `orientation_target` is a LuaEntity.
20515
+ */
20516
+ readonly use_target_orientation?: boolean
20347
20517
  readonly surface: SurfaceIdentification
20348
20518
  /**
20349
20519
  * In ticks. Defaults to living forever.
@@ -20409,6 +20579,10 @@ interface LuaRendering {
20409
20579
  * Only used if `orientation_target` is a LuaEntity.
20410
20580
  */
20411
20581
  readonly orientation_target_offset?: Vector
20582
+ /**
20583
+ * Only used if `orientation_target` is a LuaEntity.
20584
+ */
20585
+ readonly use_target_orientation?: boolean
20412
20586
  /**
20413
20587
  * Offsets the center of the sprite if `orientation_target` is given. This offset will rotate together with the sprite.
20414
20588
  */
@@ -20545,6 +20719,10 @@ interface LuaRendering {
20545
20719
  * Only used if `orientation_target` is a LuaEntity.
20546
20720
  */
20547
20721
  readonly orientation_target_offset?: Vector
20722
+ /**
20723
+ * Only used if `orientation_target` is a LuaEntity.
20724
+ */
20725
+ readonly use_target_orientation?: boolean
20548
20726
  /**
20549
20727
  * Offsets the center of the animation if `orientation_target` is given. This offset will rotate together with the animation.
20550
20728
  */
@@ -20596,13 +20774,13 @@ interface LuaRendering {
20596
20774
  is_valid(id: uint64): boolean
20597
20775
  /**
20598
20776
  * Gets an array of all valid object ids.
20599
- * @param mod_name If provided, get only the render objects created by this mod.
20777
+ * @param mod_name If provided, get only the render objects created by this mod. An empty string (`""`) refers to all objects not belonging to a mod, such as those created using console commands.
20600
20778
  * @see {@link https://lua-api.factorio.com/latest/LuaRendering.html#LuaRendering.get_all_ids Online documentation}
20601
20779
  */
20602
20780
  get_all_ids(mod_name?: string): uint64[]
20603
20781
  /**
20604
- * Destroys all render objects.
20605
- * @param mod_name If provided, only the render objects created by this mod are destroyed.
20782
+ * Destroys all render objects. Passing an empty string (`""`)
20783
+ * @param mod_name If provided, only the render objects created by this mod are destroyed. An empty string (`""`) refers to all objects not belonging to a mod, such as those created using console commands.
20606
20784
  * @see {@link https://lua-api.factorio.com/latest/LuaRendering.html#LuaRendering.clear Online documentation}
20607
20785
  */
20608
20786
  clear(mod_name?: string): void
@@ -20687,6 +20865,17 @@ interface LuaRendering {
20687
20865
  * @see {@link https://lua-api.factorio.com/latest/LuaRendering.html#LuaRendering.set_only_in_alt_mode Online documentation}
20688
20866
  */
20689
20867
  set_only_in_alt_mode(id: uint64, only_in_alt_mode: boolean): void
20868
+ /**
20869
+ * Get whether this uses the target orientation.
20870
+ * @returns `nil` if the object is not a sprite, polygon, or animation.
20871
+ * @see {@link https://lua-api.factorio.com/latest/LuaRendering.html#LuaRendering.get_use_target_orientation Online documentation}
20872
+ */
20873
+ get_use_target_orientation(id: uint64): boolean | nil
20874
+ /**
20875
+ * Set whether this uses the target orientation.
20876
+ * @see {@link https://lua-api.factorio.com/latest/LuaRendering.html#LuaRendering.set_use_target_orientation Online documentation}
20877
+ */
20878
+ set_use_target_orientation(id: uint64, use_target_orientation: boolean): void
20690
20879
  /**
20691
20880
  * Get the color or tint of the object with this id.
20692
20881
  *
@@ -21346,8 +21535,15 @@ interface LuaRoboportControlBehavior extends LuaControlBehavior {
21346
21535
  */
21347
21536
  interface LuaSettings {
21348
21537
  /**
21349
- * Gets the current per-player settings for the given player, indexed by prototype name. Returns the same structure as {@link LuaPlayer#mod_settings LuaPlayer::mod_settings}.
21350
- * @remarks This table will become invalid if its associated player does.
21538
+ * Gets the current per-player settings for the given player, indexed by prototype name. Returns the same structure as {@link LuaPlayer#mod_settings LuaPlayer::mod_settings}. This table becomes invalid if its associated player does.
21539
+ *
21540
+ * Even though this attribute is marked as read-only, individual settings can be changed by overwriting their {@link ModSetting} table. Mods can only change their own settings. Using the in-game console, all player settings can be changed.
21541
+ * @example
21542
+ *
21543
+ * ```
21544
+ * -- Change the value of the "active_lifestyle" setting
21545
+ * settings.get_player_settings(player_index)["active_lifestyle"] = {value = true}
21546
+ * ```
21351
21547
  * @see {@link https://lua-api.factorio.com/latest/LuaSettings.html#LuaSettings.get_player_settings Online documentation}
21352
21548
  */
21353
21549
  get_player_settings(player: PlayerIdentification): LuaCustomTable<string, ModSetting>
@@ -21359,14 +21555,14 @@ interface LuaSettings {
21359
21555
  /**
21360
21556
  * The current global mod settings, indexed by prototype name.
21361
21557
  *
21362
- * Even though these are marked as read-only, they can be changed by overwriting individual {@link ModSetting} tables in the custom table. Mods can only change their own settings. Using the in-game console, all global settings can be changed.
21558
+ * Even though this attribute is marked as read-only, individual settings can be changed by overwriting their {@link ModSetting} table. Mods can only change their own settings. Using the in-game console, all player settings can be changed.
21363
21559
  * @see {@link https://lua-api.factorio.com/latest/LuaSettings.html#LuaSettings.global Online documentation}
21364
21560
  */
21365
21561
  readonly global: LuaCustomTable<string, ModSetting>
21366
21562
  /**
21367
21563
  * The default player mod settings for this map, indexed by prototype name.
21368
21564
  *
21369
- * Even though these are marked as read-only, they can be changed by overwriting individual {@link ModSetting} tables in the custom table. Mods can only change their own settings. Using the in-game console, all player settings can be changed.
21565
+ * Even though this attribute is marked as read-only, individual settings can be changed by overwriting their {@link ModSetting} table. Mods can only change their own settings. Using the in-game console, all player settings can be changed.
21370
21566
  * @see {@link https://lua-api.factorio.com/latest/LuaSettings.html#LuaSettings.player Online documentation}
21371
21567
  */
21372
21568
  readonly player: LuaCustomTable<string, ModSetting>
@@ -22263,7 +22459,7 @@ interface BaseSurfaceCreateEntity {
22263
22459
  */
22264
22460
  readonly target?: LuaEntity | (MapPosition | MapPositionArray)
22265
22461
  /**
22266
- * Source entity. Used for beams and highlight-boxes.
22462
+ * Source entity. Used for beams, projectiles, and highlight-boxes.
22267
22463
  */
22268
22464
  readonly source?: LuaEntity | (MapPosition | MapPositionArray)
22269
22465
  /**
@@ -22274,6 +22470,10 @@ interface BaseSurfaceCreateEntity {
22274
22470
  * If given set the last_user to this player. If fast_replace is true simulate fast replace using this player.
22275
22471
  */
22276
22472
  readonly player?: PlayerIdentification
22473
+ /**
22474
+ * If fast_replace is true simulate fast replace using this character.
22475
+ */
22476
+ readonly character?: LuaEntity
22277
22477
  /**
22278
22478
  * If false while fast_replace is true and player is nil any items from fast-replacing will be deleted instead of dropped on the ground.
22279
22479
  */
@@ -23673,7 +23873,7 @@ interface LuaSurface {
23673
23873
  */
23674
23874
  readonly can_open_gates?: boolean
23675
23875
  /**
23676
- * Defines how coarse the pathfinder's grid is. Smaller values mean a coarser grid (negative numbers allowed). Allowed values are from -8 to 8. Defaults to `0`.
23876
+ * Defines how coarse the pathfinder's grid is, where smaller values mean a coarser grid. Defaults to `0`, which equals a resolution of `1x1` tiles, centered on tile centers. Values range from `-8` to `8` inclusive, where each integer increment doubles/halves the resolution. So, a resolution of `-8` equals a grid of `256x256` tiles, and a resolution of `8` equals `1/256` of a tile.
23677
23877
  */
23678
23878
  readonly path_resolution_modifier?: int
23679
23879
  /**
@@ -23827,12 +24027,12 @@ interface LuaSurface {
23827
24027
  */
23828
24028
  name: string
23829
24029
  /**
23830
- * Unique ID associated with this surface.
24030
+ * This surface's index in {@link LuaGameScript#surfaces LuaGameScript::surfaces} (unique ID). It is assigned when a surface is created, and remains so until it is {@link OnSurfaceDeletedEvent deleted}. Indexes of deleted surfaces can be reused.
23831
24031
  * @see {@link https://lua-api.factorio.com/latest/LuaSurface.html#LuaSurface.index Online documentation}
23832
24032
  */
23833
24033
  readonly index: SurfaceIndex
23834
24034
  /**
23835
- * The generation settings for this surface. These can be modified to after surface generation, but note that this will not retroactively update the surface. To manually adjust it, {@link LuaSurface#regenerate_entity LuaSurface::regenerate_entity}, {@link LuaSurface#regenerate_decorative LuaSurface::regenerate_decorative} and {@link LuaSurface#delete_chunk LuaSurface::delete_chunk} can be used.
24035
+ * The generation settings for this surface. These can be modified after surface generation, but note that this will not retroactively update the surface. To manually regenerate it, {@link LuaSurface#regenerate_entity LuaSurface::regenerate_entity}, {@link LuaSurface#regenerate_decorative LuaSurface::regenerate_decorative}, and {@link LuaSurface#delete_chunk LuaSurface::delete_chunk} can be used.
23836
24036
  * @see {@link https://lua-api.factorio.com/latest/LuaSurface.html#LuaSurface.map_gen_settings Online documentation}
23837
24037
  */
23838
24038
  get map_gen_settings(): MapGenSettings
@@ -23858,7 +24058,7 @@ interface LuaSurface {
23858
24058
  */
23859
24059
  readonly darkness: float
23860
24060
  /**
23861
- * Current wind speed.
24061
+ * Current wind speed in tiles per tick.
23862
24062
  * @see {@link https://lua-api.factorio.com/latest/LuaSurface.html#LuaSurface.wind_speed Online documentation}
23863
24063
  */
23864
24064
  wind_speed: double
@@ -24042,7 +24242,7 @@ interface LuaTechnology {
24042
24242
  */
24043
24243
  level: uint
24044
24244
  /**
24045
- * The count formula used for this infinite research. `nil` if this research isn't infinite.
24245
+ * The count formula, if this research has any. See the {@linkplain https://wiki.factorio.com/Prototype/Technology#Technology_data wiki} for details.
24046
24246
  * @see {@link https://lua-api.factorio.com/latest/LuaTechnology.html#LuaTechnology.research_unit_count_formula Online documentation}
24047
24247
  */
24048
24248
  readonly research_unit_count_formula?: string
@@ -24145,7 +24345,7 @@ interface LuaTechnologyPrototype {
24145
24345
  */
24146
24346
  readonly max_level: uint
24147
24347
  /**
24148
- * The count formula used for this infinite research. `nil` if this research isn't infinite.
24348
+ * The count formula, if this research has any. See the {@linkplain https://wiki.factorio.com/Prototype/Technology#Technology_data wiki} for details.
24149
24349
  * @see {@link https://lua-api.factorio.com/latest/LuaTechnologyPrototype.html#LuaTechnologyPrototype.research_unit_count_formula Online documentation}
24150
24350
  */
24151
24351
  readonly research_unit_count_formula?: string
@@ -24322,10 +24522,10 @@ interface LuaTilePrototype {
24322
24522
  */
24323
24523
  readonly next_direction?: LuaTilePrototype
24324
24524
  /**
24325
- * Items that when placed will produce this tile. It is a dictionary indexed by the item prototype name. `nil` (instead of an empty table) if no items can place this tile.
24525
+ * Items that when placed will produce this tile, if any. Construction bots will choose the first item in the list to build this tile.
24326
24526
  * @see {@link https://lua-api.factorio.com/latest/LuaTilePrototype.html#LuaTilePrototype.items_to_place_this Online documentation}
24327
24527
  */
24328
- readonly items_to_place_this: SimpleItemStack[] | nil
24528
+ readonly items_to_place_this?: ItemStackDefinition[]
24329
24529
  /**
24330
24530
  * False if this tile is not allowed in blueprints regardless of the ability to build it.
24331
24531
  * @see {@link https://lua-api.factorio.com/latest/LuaTilePrototype.html#LuaTilePrototype.can_be_part_of_blueprint Online documentation}