typed-factorio 0.5.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -512,8 +512,310 @@ interface MapViewSettings {
512
512
  }
513
513
 
514
514
  /**
515
- * Various game-related settings. See `data/base/prototypes/map-settings.lua` for a description of all attributes.
516
- * Updating any of the attributes will immediately take effect in the game engine.
515
+ * These values are for the time frame of one second (60 ticks).
516
+ *
517
+ * {@link https://lua-api.factorio.com/next/Concepts.html#PollutionMapSettings View documentation}
518
+ */
519
+ interface PollutionMapSettings {
520
+ /** Whether pollution is enabled at all. */
521
+ readonly enabled: boolean
522
+ /** The amount that is diffused to a neighboring chunk (possibly repeated for other directions as well). Defaults to `0.02`. */
523
+ readonly diffusion_ratio: double
524
+ /** The amount of PUs that need to be in a chunk for it to start diffusing. Defaults to `15`. */
525
+ readonly min_to_diffuse: double
526
+ /** The amount of pollution eaten by a chunk's tiles as a percentage of 1. Defaults to `1`. */
527
+ readonly aeging: double
528
+ /** Any amount of pollution larger than this value is visualized as this value instead. Defaults to `150`. */
529
+ readonly expected_max_per_chunk: double
530
+ /**
531
+ * Any amount of pollution smaller than this value (but bigger than zero) is visualized as this value instead.
532
+ * Defaults to `50`.
533
+ */
534
+ readonly min_to_show_per_chunk: double
535
+ /** Defaults to `60`. */
536
+ readonly min_pollution_to_damage_trees: double
537
+ /** Defaults to `150`. */
538
+ readonly pollution_with_max_forest_damage: double
539
+ /** Defaults to `50`. */
540
+ readonly pollution_per_tree_damage: double
541
+ /** Defaults to `10`. */
542
+ readonly pollution_restored_per_tree_damage: double
543
+ /** Defaults to `20`. */
544
+ readonly max_pollution_to_restore_trees: double
545
+ /** Defaults to `1`. */
546
+ readonly enemy_attack_pollution_consumption_modifier: double
547
+ }
548
+
549
+ /**
550
+ * These values represent a percentual increase in evolution. This means a value of `0.1` would increase evolution by 10%.
551
+ *
552
+ * {@link https://lua-api.factorio.com/next/Concepts.html#EnemyEvolutionMapSettings View documentation}
553
+ */
554
+ interface EnemyEvolutionMapSettings {
555
+ /** Whether enemy evolution is enabled at all. */
556
+ readonly enabled: boolean
557
+ /** The amount evolution naturally progresses by every second. Defaults to `0.000004`. */
558
+ readonly time_factor: double
559
+ /** The amount evolution progresses for every destroyed spawner. Defaults to `0.002`. */
560
+ readonly destroy_factor: double
561
+ /** The amount evolution progresses for every unit of pollution. Defaults to `0.0000009`. */
562
+ readonly pollution_factor: double
563
+ }
564
+
565
+ /**
566
+ * Candidate chunks are given scores to determine which one of them should be expanded into. This score takes into
567
+ * account various settings noted below. The iteration is over a square region centered around the chunk for which the
568
+ * calculation is done, and includes the central chunk as well. Distances are calculated as
569
+ * {@link https://en.wikipedia.org/wiki/Taxicab_geometry Manhattan distance}.
570
+ *
571
+ * The pseudocode algorithm to determine a chunk's score is as follows:
572
+ *
573
+ * ```lua
574
+ * player = 0
575
+ * for neighbour in all chunks within enemy_building_influence_radius from chunk:
576
+ * player += number of player buildings on neighbour
577
+ * * building_coefficient
578
+ * * neighbouring_chunk_coefficient^distance(chunk, neighbour)
579
+ *
580
+ * base = 0
581
+ * for neighbour in all chunk within friendly_base_influence_radius from chunk:
582
+ * base += num of enemy bases on neighbour
583
+ * * other_base_coefficient
584
+ * * neighbouring_base_chunk_coefficient^distance(chunk, neighbour)
585
+ *
586
+ * score(chunk) = 1 / (1 + player + base)
587
+ * ```
588
+ *
589
+ * {@link https://lua-api.factorio.com/next/Concepts.html#EnemyExpansionMapSettings View documentation}
590
+ */
591
+ interface EnemyExpansionMapSettings {
592
+ /** Whether enemy expansion is enabled at all. */
593
+ readonly enabled: boolean
594
+ /**
595
+ * Distance in chunks from the furthest base around to prevent expansions from reaching too far into the player's
596
+ * territory. Defaults to `7`.
597
+ */
598
+ readonly max_expansion_distance: uint
599
+ /** Defaults to `2`. */
600
+ readonly friendly_base_influence_radius: uint
601
+ /** Defaults to `2`. */
602
+ readonly enemy_building_influence_radius: uint
603
+ /** Defaults to `0.1`. */
604
+ readonly building_coefficient: double
605
+ /** Defaults to `2.0`. */
606
+ readonly other_base_coefficient: double
607
+ /** Defaults to `0.5`. */
608
+ readonly neighbouring_chunk_coefficient: double
609
+ /** Defaults to `0.4`. */
610
+ readonly neighbouring_base_chunk_coefficient: double
611
+ /**
612
+ * A chunk has to have at most this high of a percentage of unbuildable tiles for it to be considered a candidate to
613
+ * avoid chunks full of water as candidates. Defaults to `0.9`, or 90%.
614
+ */
615
+ readonly max_colliding_tiles_coefficient: double
616
+ /**
617
+ * The minimum size of a biter group that goes to build a new base. This is multiplied by the evolution factor.
618
+ * Defaults to `5`.
619
+ */
620
+ readonly settler_group_min_size: uint
621
+ /**
622
+ * The maximum size of a biter group that goes to build a new base. This is multiplied by the evolution factor.
623
+ * Defaults to `20`.
624
+ */
625
+ readonly settler_group_max_size: uint
626
+ /**
627
+ * The minimum time between expansions in ticks. The actual cooldown is adjusted to the current evolution levels.
628
+ * Defaults to `4*3,600=14,400` ticks.
629
+ */
630
+ readonly min_expansion_cooldown: uint
631
+ /**
632
+ * The maximum time between expansions in ticks. The actual cooldown is adjusted to the current evolution levels.
633
+ * Defaults to `60*3,600=216,000` ticks.
634
+ */
635
+ readonly max_expansion_cooldown: uint
636
+ }
637
+
638
+ interface UnitGroupMapSettings {
639
+ /**
640
+ * The minimum amount of time in ticks a group will spend gathering before setting off. The actual time is a random
641
+ * time between the minimum and maximum times. Defaults to `3,600` ticks.
642
+ */
643
+ readonly min_group_gathering_time: uint
644
+ /**
645
+ * The maximum amount of time in ticks a group will spend gathering before setting off. The actual time is a random
646
+ * time between the minimum and maximum times. Defaults to `10*3,600=36,000` ticks.
647
+ */
648
+ readonly max_group_gathering_time: uint
649
+ /**
650
+ * After gathering has finished, the group is allowed to wait this long in ticks for delayed members. New members
651
+ * are not accepted anymore however. Defaults to `2*3,600=7,200` ticks.
652
+ */
653
+ readonly max_wait_time_for_late_members: uint
654
+ /** The minimum group radius in tiles. The actual radius is adjusted based on the number of members. Defaults to `5.0`. */
655
+ readonly min_group_radius: double
656
+ /** The maximum group radius in tiles. The actual radius is adjusted based on the number of members. Defaults to `30.0`. */
657
+ readonly max_group_radius: double
658
+ /**
659
+ * The maximum speed a percentage of its regular speed that a group member can speed up to when catching up with the
660
+ * group. Defaults to `1.4`, or 140%.
661
+ */
662
+ readonly max_member_speedup_when_behind: double
663
+ /**
664
+ * The minimum speed a percentage of its regular speed that a group member can slow down to when ahead of the group.
665
+ * Defaults to `0.6`, or 60%.
666
+ */
667
+ readonly max_member_slowdown_when_ahead: double
668
+ /**
669
+ * The minimum speed as a percentage of its maximum speed that a group will slow down to so members that fell behind
670
+ * can catch up. Defaults to `0.3`, or 30%.
671
+ */
672
+ readonly max_group_slowdown_factor: double
673
+ /**
674
+ * When a member of a group falls back more than this factor times the group radius, the group will slow down to its
675
+ * `max_group_slowdown_factor` speed to let them catch up. Defaults to `3`.
676
+ */
677
+ readonly max_group_member_fallback_factor: double
678
+ /**
679
+ * When a member of a group falls back more than this factor times the group radius, it will be dropped from the
680
+ * group. Defaults to `10`.
681
+ */
682
+ readonly member_disown_distance: double
683
+ readonly tick_tolerance_when_member_arrives: uint
684
+ /** The maximum number of automatically created unit groups gathering for attack at any time. Defaults to `30`. */
685
+ readonly max_gathering_unit_groups: uint
686
+ /**
687
+ * The maximum number of members for an attack unit group. This only affects automatically created unit groups,
688
+ * manual groups created through the API are unaffected. Defaults to `200`.
689
+ */
690
+ readonly max_unit_group_size: uint
691
+ }
692
+
693
+ interface SteeringMapSetting {
694
+ /** Does not include the radius of the unit. */
695
+ readonly radius: double
696
+ readonly separation_factor: double
697
+ readonly separation_force: double
698
+ /** Used to make steering look better for aesthetic purposes. */
699
+ readonly force_unit_fuzzy_goto_behavior: boolean
700
+ }
701
+
702
+ interface SteeringMapSettings {
703
+ readonly default: SteeringMapSetting
704
+ readonly moving: SteeringMapSetting
705
+ }
706
+
707
+ interface PathFinderMapSettings {
708
+ /** Determines whether forwards (`>1`), backwards (`<-1`), or symmetrical (`1`) search is preferred. Defaults to `5`. */
709
+ readonly fwd2bwd_ratio: uint
710
+ /**
711
+ * When looking at which node to check next, their heuristic value is multiplied by this ratio. The higher it is,
712
+ * the more the search is directed straight at the goal. Defaults to `2`.
713
+ */
714
+ readonly goal_pressure_ratio: double
715
+ /** The maximum number of nodes that are expanded per tick. Defaults to `1,000`. */
716
+ readonly max_steps_worked_per_tick: double
717
+ /** The maximum amount of work each pathfinding job is allowed to do per tick. Defaults to `8,000`. */
718
+ readonly max_work_done_per_tick: uint
719
+ /** Whether to cache paths at all. Defaults to `true`. */
720
+ readonly use_path_cache: boolean
721
+ /** Number of elements in the short cache. Defaults to `5`. */
722
+ readonly short_cache_size: uint
723
+ /** Number of elements in the long cache. Defaults to `25`. */
724
+ readonly long_cache_size: uint
725
+ /** The minimal distance to the goal in tiles required to be searched in the short path cache. Defaults to `10`. */
726
+ readonly short_cache_min_cacheable_distance: double
727
+ /** The minimal number of nodes required to be searched in the short path cache. Defaults to `50`. */
728
+ readonly short_cache_min_algo_steps_to_cache: uint
729
+ /** The minimal distance to the goal in tiles required to be searched in the long path cache. Defaults to `30`. */
730
+ readonly long_cache_min_cacheable_distance: double
731
+ /**
732
+ * When looking for a connection to a cached path, search at most for this number of steps times the original
733
+ * estimate. Defaults to `100`.
734
+ */
735
+ readonly cache_max_connect_to_cache_steps_multiplier: uint
736
+ /**
737
+ * When looking for a path from cache, make sure it doesn't start too far from the requested start in relative
738
+ * terms. Defaults to `0.2`.
739
+ */
740
+ readonly cache_accept_path_start_distance_ratio: double
741
+ /**
742
+ * When looking for a path from cache, make sure it doesn't end too far from the requested end in relative terms.
743
+ * This is typically more lenient than the start ratio since the end target could be moving. Defaults to `0.15`.
744
+ */
745
+ readonly cache_accept_path_end_distance_ratio: double
746
+ /** Same principle as `cache_accept_path_start_distance_ratio`, but used for negative cache queries. Defaults to `0.3`. */
747
+ readonly negative_cache_accept_path_start_distance_ratio: double
748
+ /** Same principle as `cache_accept_path_end_distance_ratio`, but used for negative cache queries. Defaults to `0.3`. */
749
+ readonly negative_cache_accept_path_end_distance_ratio: double
750
+ /** When assigning a rating to the best path, this multiplier times start distances is considered. Defaults to `10`. */
751
+ readonly cache_path_start_distance_rating_multiplier: double
752
+ /**
753
+ * When assigning a rating to the best path, this multiplier times end distances is considered. This value is
754
+ * typically higher than the start multiplier as this results in better end path quality. Defaults to `20`.
755
+ */
756
+ readonly cache_path_end_distance_rating_multiplier: double
757
+ /**
758
+ * A penalty that is applied for another unit that is on the way to the goal. This is mainly relevant for situations
759
+ * where a group of units has arrived at the target they are supposed to attack, making units further back circle
760
+ * around to reach the target. Defaults to `30`.
761
+ */
762
+ readonly stale_enemy_with_same_destination_collision_penalty: double
763
+ /** The distance in tiles after which other moving units are not considered for pathfinding. Defaults to `5`. */
764
+ readonly ignore_moving_enemy_collision_distance: double
765
+ /**
766
+ * A penalty that is applied for another unit that is too close and either not moving or has a different goal.
767
+ * Defaults to `30`.
768
+ */
769
+ readonly enemy_with_different_destination_collision_penalty: double
770
+ /** The general collision penalty with other units. Defaults to `10`. */
771
+ readonly general_entity_collision_penalty: double
772
+ /** The collision penalty for positions that require the destruction of an entity to get to. Defaults to `3`. */
773
+ readonly general_entity_subsequent_collision_penalty: double
774
+ /**
775
+ * The collision penalty for collisions in the extended bounding box but outside the entity's actual bounding box.
776
+ * Defaults to `3`.
777
+ */
778
+ readonly extended_collision_penalty: double
779
+ /** The amount of path finder requests accepted per tick regardless of the requested path's length. Defaults to `10`. */
780
+ readonly max_clients_to_accept_any_new_request: uint
781
+ /**
782
+ * When the `max_clients_to_accept_any_new_request` amount is exhausted, only path finder requests with a short
783
+ * estimate will be accepted until this amount (per tick) is reached. Defaults to `100`.
784
+ */
785
+ readonly max_clients_to_accept_short_new_request: uint
786
+ /** The maximum direct distance in tiles before a request is no longer considered short. Defaults to `100`. */
787
+ readonly direct_distance_to_consider_short_request: uint
788
+ /** The maximum amount of nodes a short request will traverse before being rescheduled as a long request. Defaults to `1000`. */
789
+ readonly short_request_max_steps: uint
790
+ /**
791
+ * The amount of steps that are allocated to short requests each tick, as a percentage of all available steps.
792
+ * Defaults to `0.5`, or 50%.
793
+ */
794
+ readonly short_request_ratio: double
795
+ /** The minimum amount of steps that are guaranteed to be performed for every request. Defaults to `2000`. */
796
+ readonly min_steps_to_check_path_find_termination: uint
797
+ /**
798
+ * If the actual amount of steps is higher than the initial estimate by this factor, pathfinding is terminated.
799
+ * Defaults to `2000.0`.
800
+ */
801
+ readonly start_to_goal_cost_multiplier_to_terminate_path_find: double
802
+ /**
803
+ * The thresholds of waiting clients after each of which the per-tick work limit will be increased by the
804
+ * corresponding value in `overload_multipliers`. This is to avoid clients having to wait too long. Must have the
805
+ * same number of elements as `overload_multipliers`. Defaults to `{0, 100, 500}`.
806
+ */
807
+ readonly overload_levels: uint[]
808
+ /**
809
+ * The multipliers to the amount of per-tick work applied after the corresponding thresholds in `overload_levels`
810
+ * have been reached. Must have the same number of elements as `overload_multipliers`. Defaults to `{2, 3, 4}`.
811
+ */
812
+ readonly overload_multipliers: double[]
813
+ /** The delay in ticks between decrementing the score of all paths in the negative cache by one. Defaults to `20`. */
814
+ readonly negative_path_cache_delay_interval: uint
815
+ }
816
+
817
+ /**
818
+ * Various game-related settings. Updating any of the attributes will immediately take effect in the game engine.
517
819
  *
518
820
  * {@link https://lua-api.factorio.com/next/Concepts.html#MapSettings View documentation}
519
821
  *
@@ -525,227 +827,21 @@ interface MapViewSettings {
525
827
  * ```
526
828
  */
527
829
  interface MapSettings {
528
- readonly pollution: {
529
- enabled: boolean
530
- /**
531
- * These are values for 60 ticks (1 simulated second)
532
- *
533
- * (possibly repeated for other directions as well)
534
- */
535
- diffusion_ratio: number
536
- /** This much PUs must be on the chunk to start diffusing */
537
- min_to_diffuse: number
538
- /** Constant modifier a percentage of 1 - the pollution eaten by a chunks tiles */
539
- ageing: number
540
- /** Anything bigger than this is visualised as this value */
541
- expected_max_per_chunk: number
542
- /** Anything lower than this (but > 0) is visualised as this value */
543
- min_to_show_per_chunk: number
544
- min_pollution_to_damage_trees: number
545
- pollution_with_max_forest_damage: number
546
- pollution_per_tree_damage: number
547
- pollution_restored_per_tree_damage: number
548
- max_pollution_to_restore_trees: number
549
- enemy_attack_pollution_consumption_modifier: number
550
- }
551
- readonly enemy_evolution: {
552
- enabled: boolean
553
- /** Percentual increase in the evolve factor for every second (60 ticks) */
554
- time_factor: number
555
- /** Percentual increase in the evolve factor for every destroyed spawner */
556
- destroy_factor: number
557
- /** Percentual increase in the evolve factor for 1 pollution unit */
558
- pollution_factor: number
559
- }
560
- readonly enemy_expansion: {
561
- enabled: boolean
562
- /**
563
- * Distance in chunks from the furthest base around.
564
- *
565
- * Player's territory
566
- */
567
- max_expansion_distance: number
568
- friendly_base_influence_radius: number
569
- enemy_building_influence_radius: number
570
- /**
571
- * A candidate chunk's score is given as follows:
572
- *
573
- * And includes the central chunk as well. distance is the Manhattan distance, and ^ signifies exponentiation.
574
- */
575
- building_coefficient: number
576
- other_base_coefficient: number
577
- neighbouring_chunk_coefficient: number
578
- neighbouring_base_chunk_coefficient: number
579
- /**
580
- * A chunk has to have at most this much percent unbuildable tiles for it to be considered a candidate.
581
- *
582
- * This is to avoid chunks full of water to be marked as candidates.
583
- */
584
- max_colliding_tiles_coefficient: number
585
- /**
586
- * Size of the group that goes to build new base (in game this is multiplied by the
587
- *
588
- * Evolution factor).
589
- */
590
- settler_group_min_size: number
591
- settler_group_max_size: number
592
- /**
593
- * Ticks to expand to a single
594
- *
595
- * Where lerp is the linear interpolation function, and e is the current evolution factor.
596
- */
597
- min_expansion_cooldown: number
598
- max_expansion_cooldown: number
599
- }
600
- readonly unit_group: {
601
- /** Pollution triggered group waiting time is a random time between min and max gathering time */
602
- min_group_gathering_time: number
603
- max_group_gathering_time: number
604
- /**
605
- * After the gathering is finished the group can still wait for late members,
606
- *
607
- * But it doesn't accept new ones anymore
608
- */
609
- max_wait_time_for_late_members: number
610
- /** Limits for group radius (calculated by number of numbers) */
611
- max_group_radius: number
612
- min_group_radius: number
613
- /** When a member falls behind the group he can speedup up till this much of his regular speed */
614
- max_member_speedup_when_behind: number
615
- /** When a member gets ahead of its group, it will slow down to at most this factor of its speed */
616
- max_member_slowdown_when_ahead: number
617
- /** When members of a group are behind, the entire group will slow down to at most this factor of its max speed */
618
- max_group_slowdown_factor: number
619
- /** If a member falls behind more than this times the group radius, the group will slow down to max_group_slowdown_factor */
620
- max_group_member_fallback_factor: number
621
- /** If a member falls behind more than this time the group radius, it will be removed from the group. */
622
- member_disown_distance: number
623
- tick_tolerance_when_member_arrives: number
624
- /** Maximum number of automatically created unit groups gathering for attack at any time. */
625
- max_gathering_unit_groups: number
626
- /**
627
- * Maximum size of an attack unit group. This only affects automatically-created unit groups;
628
- *
629
- * Manual groups created through the API are unaffected.
630
- */
631
- max_unit_group_size: number
632
- }
633
- readonly steering: {
634
- readonly default: {
635
- /** Not including the radius of the unit */
636
- radius: number
637
- separation_force: number
638
- separation_factor: number
639
- force_unit_fuzzy_goto_behavior: boolean
640
- }
641
- readonly moving: {
642
- radius: number
643
- separation_force: number
644
- separation_factor: number
645
- /** Used only for special "to look good" purposes (like in trailer) */
646
- force_unit_fuzzy_goto_behavior: boolean
647
- }
648
- }
649
- readonly path_finder: {
650
- /** Defines whether we prefer forward (>1) or backward (<1) or symmetrical (1) search */
651
- fwd2bwd_ratio: number
652
- /**
653
- * When comparing nodes in open which one to check next
654
- *
655
- * The higher the number the more is the search directed directly towards the goal
656
- */
657
- goal_pressure_ratio: number
658
- /** How many nodes can be expanded at most per tick. */
659
- max_steps_worked_per_tick: number
660
- /** How much work each pathfinding job is allowed to do per tick. */
661
- max_work_done_per_tick: number
662
- /** Path cache settings */
663
- use_path_cache: boolean
664
- /** Number of elements in the cache */
665
- short_cache_size: number
666
- long_cache_size: number
667
- /** Minimal distance to goal for path to be searched in short path cache */
668
- short_cache_min_cacheable_distance: number
669
- /** Minimal number of algorithm steps for path to be inserted into the short path cache */
670
- short_cache_min_algo_steps_to_cache: number
671
- /** Minimal distance to goal for path to be searched in long path cache */
672
- long_cache_min_cacheable_distance: number
673
- /** When searching for connection to path cache path, search at most for this number of steps times the initial estimate */
674
- cache_max_connect_to_cache_steps_multiplier: number
675
- /** When looking for path from cache make sure it doesn't start too far from requested start in relative distance terms */
676
- cache_accept_path_start_distance_ratio: number
677
- /**
678
- * When looking for path from cache make sure it doesn't end too far from requested end this is typically higher
679
- * than accept value for the start because the end target can be moving
680
- */
681
- cache_accept_path_end_distance_ratio: number
682
- /** Same as cache_accept_path_start_distance_ratio, but used for negative cache queries */
683
- negative_cache_accept_path_start_distance_ratio: number
684
- /** Same as cache_accept_path_end_distance_ratio, but used for negative cache queries */
685
- negative_cache_accept_path_end_distance_ratio: number
686
- /** When assigning rating to the best path this * start distances is considered */
687
- cache_path_start_distance_rating_multiplier: number
688
- /**
689
- * When assigning rating to the best path this * end distances is considered
690
- *
691
- * This is typically higher than value for the start to achieve better path end quality
692
- */
693
- cache_path_end_distance_rating_multiplier: number
694
- /**
695
- * Somewhere along the path is stuck enemy we need to avoid
696
- *
697
- * Then units further in the back will use this and run around the target
698
- */
699
- stale_enemy_with_same_destination_collision_penalty: number
700
- /** If there is a moving unit further than this we don't really care */
701
- ignore_moving_enemy_collision_distance: number
702
- /** Enemy is not moving/or is too close and has different destination */
703
- enemy_with_different_destination_collision_penalty: number
704
- /** Simplification for now - collision with everything else is this */
705
- general_entity_collision_penalty: number
706
- /** Collision penalty for successors of positions that require destroy to reach */
707
- general_entity_subsequent_collision_penalty: number
708
- /** Collision penalty for collisions in the extended bounding box but outside the entity's actual bounding box */
709
- extended_collision_penalty: number
710
- /** Until this amount any client will be served by the path finder (no estimate on the path length) */
711
- max_clients_to_accept_any_new_request: number
712
- /** From max_clients_to_accept_any_new_request till this one only those that have a short estimate will be served */
713
- max_clients_to_accept_short_new_request: number
714
- /** This is the "threshold" to decide what is short and what is not */
715
- direct_distance_to_consider_short_request: number
716
- /** If a short request takes more than this many steps, it will be rescheduled as a long request */
717
- short_request_max_steps: number
718
- /** How many steps will be allocated to short requests each tick, as a ratio of all available steps per tick */
719
- short_request_ratio: number
720
- /** Absolute minimum of steps that will be performed for every path find request no matter what */
721
- min_steps_to_check_path_find_termination: number
722
- /** If the amount of steps is higher than this times estimate of start to goal then path finding is terminated */
723
- start_to_goal_cost_multiplier_to_terminate_path_find: number
724
- /**
725
- * When the number of waiting clients exceeds certain values, the per-tick work limit will be increased by the
726
- *
727
- * Overload_levels and overload_multipliers must be the same length.
728
- */
729
- overload_levels: number[]
730
- /**
731
- * When the number of waiting clients exceeds certain values, the per-tick work limit will be increased by the
732
- *
733
- * Overload_levels and overload_multipliers must be the same length.
734
- */
735
- overload_multipliers: number[]
736
- /** The score of all paths in the negative cache is decreased by one every this many ticks. */
737
- negative_path_cache_delay_interval: number
738
- }
830
+ readonly pollution: PollutionMapSettings
831
+ readonly enemy_evolution: EnemyEvolutionMapSettings
832
+ readonly enemy_expansion: EnemyExpansionMapSettings
833
+ readonly unit_group: UnitGroupMapSettings
834
+ readonly steering: SteeringMapSettings
835
+ readonly path_finder: PathFinderMapSettings
739
836
  /**
740
- * If a behavior fails this many times, the enemy (or enemy group)
741
- *
742
- * This solves biters stuck within their own base.
837
+ * If a behavior fails this many times, the enemy (or enemy group) is destroyed. This solves biters getting stuck
838
+ * within their own base.
743
839
  */
744
- max_failed_behavior_count: number
840
+ readonly max_failed_behavior_count: uint
745
841
  }
746
842
 
747
843
  /**
748
- * Technology and recipe difficulty settings.
844
+ * Technology and recipe difficulty settings. Updating any of the attributes will immediately take effect in the game engine.
749
845
  *
750
846
  * {@link https://lua-api.factorio.com/next/Concepts.html#DifficultySettings View documentation}
751
847
  */
@@ -758,7 +854,7 @@ interface DifficultySettings {
758
854
  * Either `"after-victory"`, `"always"` or `"never"`. Changing this to `"always"` or `"after-victory"` does not
759
855
  * automatically unlock the research queue. See {@link LuaForce} for that.
760
856
  */
761
- readonly research_queue_setting: "after-victory" | "always" | "never" | "always" | "after-victory"
857
+ readonly research_queue_setting: "after-victory" | "always" | "never"
762
858
  }
763
859
 
764
860
  /**
@@ -1503,7 +1599,7 @@ interface InfinityInventoryFilter {
1503
1599
  /** The count of the filter. */
1504
1600
  readonly count?: uint
1505
1601
  /** `"at-least"`, `"at-most"`, or `"exactly"`. Defaults to `"at-least"`. */
1506
- readonly mode?: "at-least" | "at-most" | "exactly" | "at-least"
1602
+ readonly mode?: "at-least" | "at-most" | "exactly"
1507
1603
  /** The index of this filter in the filters list. */
1508
1604
  readonly index: uint
1509
1605
  }
@@ -1521,7 +1617,7 @@ interface InfinityPipeFilter {
1521
1617
  /** The temperature of the fluid. Defaults to the default/minimum temperature of the fluid. */
1522
1618
  readonly temperature?: double
1523
1619
  /** `"at-least"`, `"at-most"`, `"exactly"`, `"add"`, or `"remove"`. Defaults to `"at-least"`. */
1524
- readonly mode?: "at-least" | "at-most" | "exactly" | "add" | "remove" | "at-least"
1620
+ readonly mode?: "at-least" | "at-most" | "exactly" | "add" | "remove"
1525
1621
  }
1526
1622
 
1527
1623
  interface FluidBoxFilter {
@@ -1553,7 +1649,7 @@ interface HeatSetting {
1553
1649
  /** The target temperature. Defaults to the minimum temperature of the heat buffer. */
1554
1650
  readonly temperature?: double
1555
1651
  /** `"at-least"`, `"at-most"`, `"exactly"`, `"add"`, or `"remove"`. Defaults to `"at-least"`. */
1556
- readonly mode?: "at-least" | "at-most" | "exactly" | "add" | "remove" | "at-least"
1652
+ readonly mode?: "at-least" | "at-most" | "exactly" | "add" | "remove"
1557
1653
  }
1558
1654
 
1559
1655
  interface HeatConnection {
@@ -2639,7 +2735,7 @@ type Alignment =
2639
2735
  */
2640
2736
  interface EventData {
2641
2737
  /** The identifier of the event this handler was registered to. */
2642
- readonly name: defines.events
2738
+ readonly name: EventId<EventData>
2643
2739
  /** The tick during which the event happened. */
2644
2740
  readonly tick: uint
2645
2741
  /** The name of the mod that raised the event if it was raised using {@link LuaBootstrap.raise_event LuaBootstrap::raise_event}. */
@@ -2935,7 +3031,7 @@ interface BaseItemPrototypeFilter {
2935
3031
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
2936
3032
  * filters, `"and"` has higher precedence than `"or"`.
2937
3033
  */
2938
- readonly mode?: "or" | "and" | "or" | "and" | "or"
3034
+ readonly mode?: "or" | "and"
2939
3035
  /** Inverts the condition. Default is `false`. */
2940
3036
  readonly invert?: boolean
2941
3037
  }
@@ -3103,7 +3199,7 @@ interface BaseModSettingPrototypeFilter {
3103
3199
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3104
3200
  * filters, `"and"` has higher precedence than `"or"`.
3105
3201
  */
3106
- readonly mode?: "or" | "and" | "or" | "and" | "or"
3202
+ readonly mode?: "or" | "and"
3107
3203
  /** Inverts the condition. Default is `false`. */
3108
3204
  readonly invert?: boolean
3109
3205
  }
@@ -3156,7 +3252,7 @@ interface BaseTechnologyPrototypeFilter {
3156
3252
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3157
3253
  * filters, `"and"` has higher precedence than `"or"`.
3158
3254
  */
3159
- readonly mode?: "or" | "and" | "or" | "and" | "or"
3255
+ readonly mode?: "or" | "and"
3160
3256
  /** Inverts the condition. Default is `false`. */
3161
3257
  readonly invert?: boolean
3162
3258
  }
@@ -3211,7 +3307,7 @@ interface BaseDecorativePrototypeFilter {
3211
3307
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3212
3308
  * filters, `"and"` has higher precedence than `"or"`.
3213
3309
  */
3214
- readonly mode?: "or" | "and" | "or" | "and" | "or"
3310
+ readonly mode?: "or" | "and"
3215
3311
  /** Inverts the condition. Default is `false`. */
3216
3312
  readonly invert?: boolean
3217
3313
  }
@@ -3241,7 +3337,7 @@ interface BaseAchievementPrototypeFilter {
3241
3337
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3242
3338
  * filters, `"and"` has higher precedence than `"or"`.
3243
3339
  */
3244
- readonly mode?: "or" | "and" | "or" | "and" | "or"
3340
+ readonly mode?: "or" | "and"
3245
3341
  /** Inverts the condition. Default is `false`. */
3246
3342
  readonly invert?: boolean
3247
3343
  }
@@ -3282,7 +3378,7 @@ interface BaseFluidPrototypeFilter {
3282
3378
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3283
3379
  * filters, `"and"` has higher precedence than `"or"`.
3284
3380
  */
3285
- readonly mode?: "or" | "and" | "or" | "and" | "or"
3381
+ readonly mode?: "or" | "and"
3286
3382
  /** Inverts the condition. Default is `false`. */
3287
3383
  readonly invert?: boolean
3288
3384
  }
@@ -3372,7 +3468,7 @@ interface BaseEquipmentPrototypeFilter {
3372
3468
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3373
3469
  * filters, `"and"` has higher precedence than `"or"`.
3374
3470
  */
3375
- readonly mode?: "or" | "and" | "or" | "and" | "or"
3471
+ readonly mode?: "or" | "and"
3376
3472
  /** Inverts the condition. Default is `false`. */
3377
3473
  readonly invert?: boolean
3378
3474
  }
@@ -3414,7 +3510,7 @@ interface BaseTilePrototypeFilter {
3414
3510
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3415
3511
  * filters, `"and"` has higher precedence than `"or"`.
3416
3512
  */
3417
- readonly mode?: "or" | "and" | "or" | "and" | "or"
3513
+ readonly mode?: "or" | "and"
3418
3514
  /** Inverts the condition. Default is `false`. */
3419
3515
  readonly invert?: boolean
3420
3516
  }
@@ -3506,7 +3602,7 @@ interface BaseRecipePrototypeFilter {
3506
3602
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3507
3603
  * filters, `"and"` has higher precedence than `"or"`.
3508
3604
  */
3509
- readonly mode?: "or" | "and" | "or" | "and" | "or"
3605
+ readonly mode?: "or" | "and"
3510
3606
  /** Inverts the condition. Default is `false`. */
3511
3607
  readonly invert?: boolean
3512
3608
  }
@@ -3677,7 +3773,7 @@ interface BaseEntityPrototypeFilter {
3677
3773
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3678
3774
  * filters, `"and"` has higher precedence than `"or"`.
3679
3775
  */
3680
- readonly mode?: "or" | "and" | "or" | "and" | "or"
3776
+ readonly mode?: "or" | "and"
3681
3777
  /** Inverts the condition. Default is `false`. */
3682
3778
  readonly invert?: boolean
3683
3779
  }
@@ -3830,7 +3926,7 @@ interface BaseScriptRaisedReviveEventFilter {
3830
3926
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3831
3927
  * filters, `"and"` has higher precedence than `"or"`.
3832
3928
  */
3833
- readonly mode?: "or" | "and" | "or" | "and" | "or"
3929
+ readonly mode?: "or" | "and"
3834
3930
  /** Inverts the condition. Default is `false`. */
3835
3931
  readonly invert?: boolean
3836
3932
  }
@@ -3912,7 +4008,7 @@ interface BaseEntityDiedEventFilter {
3912
4008
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3913
4009
  * filters, `"and"` has higher precedence than `"or"`.
3914
4010
  */
3915
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4011
+ readonly mode?: "or" | "and"
3916
4012
  /** Inverts the condition. Default is `false`. */
3917
4013
  readonly invert?: boolean
3918
4014
  }
@@ -3994,7 +4090,7 @@ interface BaseEntityMarkedForDeconstructionEventFilter {
3994
4090
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
3995
4091
  * filters, `"and"` has higher precedence than `"or"`.
3996
4092
  */
3997
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4093
+ readonly mode?: "or" | "and"
3998
4094
  /** Inverts the condition. Default is `false`. */
3999
4095
  readonly invert?: boolean
4000
4096
  }
@@ -4076,7 +4172,7 @@ interface BasePreGhostDeconstructedEventFilter {
4076
4172
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4077
4173
  * filters, `"and"` has higher precedence than `"or"`.
4078
4174
  */
4079
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4175
+ readonly mode?: "or" | "and"
4080
4176
  /** Inverts the condition. Default is `false`. */
4081
4177
  readonly invert?: boolean
4082
4178
  }
@@ -4158,7 +4254,7 @@ interface BaseScriptRaisedDestroyEventFilter {
4158
4254
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4159
4255
  * filters, `"and"` has higher precedence than `"or"`.
4160
4256
  */
4161
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4257
+ readonly mode?: "or" | "and"
4162
4258
  /** Inverts the condition. Default is `false`. */
4163
4259
  readonly invert?: boolean
4164
4260
  }
@@ -4240,7 +4336,7 @@ interface BaseUpgradeCancelledEventFilter {
4240
4336
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4241
4337
  * filters, `"and"` has higher precedence than `"or"`.
4242
4338
  */
4243
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4339
+ readonly mode?: "or" | "and"
4244
4340
  /** Inverts the condition. Default is `false`. */
4245
4341
  readonly invert?: boolean
4246
4342
  }
@@ -4322,7 +4418,7 @@ interface BasePlayerRepairedEntityEventFilter {
4322
4418
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4323
4419
  * filters, `"and"` has higher precedence than `"or"`.
4324
4420
  */
4325
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4421
+ readonly mode?: "or" | "and"
4326
4422
  /** Inverts the condition. Default is `false`. */
4327
4423
  readonly invert?: boolean
4328
4424
  }
@@ -4404,7 +4500,7 @@ interface BaseEntityMarkedForUpgradeEventFilter {
4404
4500
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4405
4501
  * filters, `"and"` has higher precedence than `"or"`.
4406
4502
  */
4407
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4503
+ readonly mode?: "or" | "and"
4408
4504
  /** Inverts the condition. Default is `false`. */
4409
4505
  readonly invert?: boolean
4410
4506
  }
@@ -4467,7 +4563,7 @@ interface BasePostEntityDiedEventFilter {
4467
4563
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4468
4564
  * filters, `"and"` has higher precedence than `"or"`.
4469
4565
  */
4470
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4566
+ readonly mode?: "or" | "and"
4471
4567
  /** Inverts the condition. Default is `false`. */
4472
4568
  readonly invert?: boolean
4473
4569
  }
@@ -4511,7 +4607,7 @@ interface BasePreRobotMinedEntityEventFilter {
4511
4607
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4512
4608
  * filters, `"and"` has higher precedence than `"or"`.
4513
4609
  */
4514
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4610
+ readonly mode?: "or" | "and"
4515
4611
  /** Inverts the condition. Default is `false`. */
4516
4612
  readonly invert?: boolean
4517
4613
  }
@@ -4593,7 +4689,7 @@ interface BaseEntityClonedEventFilter {
4593
4689
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4594
4690
  * filters, `"and"` has higher precedence than `"or"`.
4595
4691
  */
4596
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4692
+ readonly mode?: "or" | "and"
4597
4693
  /** Inverts the condition. Default is `false`. */
4598
4694
  readonly invert?: boolean
4599
4695
  }
@@ -4675,7 +4771,7 @@ interface BaseScriptRaisedBuiltEventFilter {
4675
4771
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4676
4772
  * filters, `"and"` has higher precedence than `"or"`.
4677
4773
  */
4678
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4774
+ readonly mode?: "or" | "and"
4679
4775
  /** Inverts the condition. Default is `false`. */
4680
4776
  readonly invert?: boolean
4681
4777
  }
@@ -4757,7 +4853,7 @@ interface BaseRobotMinedEntityEventFilter {
4757
4853
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4758
4854
  * filters, `"and"` has higher precedence than `"or"`.
4759
4855
  */
4760
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4856
+ readonly mode?: "or" | "and"
4761
4857
  /** Inverts the condition. Default is `false`. */
4762
4858
  readonly invert?: boolean
4763
4859
  }
@@ -4839,7 +4935,7 @@ interface BasePrePlayerMinedEntityEventFilter {
4839
4935
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4840
4936
  * filters, `"and"` has higher precedence than `"or"`.
4841
4937
  */
4842
- readonly mode?: "or" | "and" | "or" | "and" | "or"
4938
+ readonly mode?: "or" | "and"
4843
4939
  /** Inverts the condition. Default is `false`. */
4844
4940
  readonly invert?: boolean
4845
4941
  }
@@ -4923,7 +5019,7 @@ interface BaseRobotBuiltEntityEventFilter {
4923
5019
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
4924
5020
  * filters, `"and"` has higher precedence than `"or"`.
4925
5021
  */
4926
- readonly mode?: "or" | "and" | "or" | "and" | "or"
5022
+ readonly mode?: "or" | "and"
4927
5023
  /** Inverts the condition. Default is `false`. */
4928
5024
  readonly invert?: boolean
4929
5025
  }
@@ -5012,7 +5108,7 @@ interface BaseEntityDeconstructionCancelledEventFilter {
5012
5108
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
5013
5109
  * filters, `"and"` has higher precedence than `"or"`.
5014
5110
  */
5015
- readonly mode?: "or" | "and" | "or" | "and" | "or"
5111
+ readonly mode?: "or" | "and"
5016
5112
  /** Inverts the condition. Default is `false`. */
5017
5113
  readonly invert?: boolean
5018
5114
  }
@@ -5096,7 +5192,7 @@ interface BasePlayerBuiltEntityEventFilter {
5096
5192
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
5097
5193
  * filters, `"and"` has higher precedence than `"or"`.
5098
5194
  */
5099
- readonly mode?: "or" | "and" | "or" | "and" | "or"
5195
+ readonly mode?: "or" | "and"
5100
5196
  /** Inverts the condition. Default is `false`. */
5101
5197
  readonly invert?: boolean
5102
5198
  }
@@ -5185,7 +5281,7 @@ interface BasePlayerMinedEntityEventFilter {
5185
5281
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
5186
5282
  * filters, `"and"` has higher precedence than `"or"`.
5187
5283
  */
5188
- readonly mode?: "or" | "and" | "or" | "and" | "or"
5284
+ readonly mode?: "or" | "and"
5189
5285
  /** Inverts the condition. Default is `false`. */
5190
5286
  readonly invert?: boolean
5191
5287
  }
@@ -5272,7 +5368,7 @@ interface BaseEntityDamagedEventFilter {
5272
5368
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
5273
5369
  * filters, `"and"` has higher precedence than `"or"`.
5274
5370
  */
5275
- readonly mode?: "or" | "and" | "or" | "and" | "or"
5371
+ readonly mode?: "or" | "and"
5276
5372
  /** Inverts the condition. Default is `false`. */
5277
5373
  readonly invert?: boolean
5278
5374
  }
@@ -5385,7 +5481,7 @@ interface BaseSectorScannedEventFilter {
5385
5481
  * How to combine this with the previous filter. Must be `"or"` or `"and"`. Defaults to `"or"`. When evaluating the
5386
5482
  * filters, `"and"` has higher precedence than `"or"`.
5387
5483
  */
5388
- readonly mode?: "or" | "and" | "or" | "and" | "or"
5484
+ readonly mode?: "or" | "and"
5389
5485
  /** Inverts the condition. Default is `false`. */
5390
5486
  readonly invert?: boolean
5391
5487
  }
@@ -5499,5 +5595,41 @@ interface MapGenPreset {
5499
5595
  }
5500
5596
  }
5501
5597
 
5502
- /** There are not yet full definitions for this type. See {@link https://lua-api.factorio.com/1.1.36/LuaControlBehavior.html}. */
5503
- type BlueprintControlBehavior = unknown
5598
+ interface BlueprintControlBehavior {
5599
+ readonly condition?: CircuitCondition
5600
+ readonly circuit_condition?: CircuitCondition
5601
+ readonly filters?: Signal[]
5602
+ readonly is_on?: boolean
5603
+ readonly arithmetic_conditions?: ArithmeticCombinatorParameters
5604
+ readonly decider_conditions?: DeciderCombinatorParameters
5605
+ readonly circuit_enable_disable?: boolean
5606
+ readonly circuit_read_resources?: boolean
5607
+ readonly circuit_resource_read_mode?: defines.control_behavior.mining_drill.resource_read_mode
5608
+ readonly read_stopped_train?: boolean
5609
+ readonly train_stopped_signal?: SignalID
5610
+ readonly read_from_train?: boolean
5611
+ readonly send_to_train?: boolean
5612
+ readonly circuit_mode_of_operation?: number
5613
+ readonly circuit_read_hand_contents?: boolean
5614
+ readonly circuit_hand_read_mode?: defines.control_behavior.inserter.hand_read_mode
5615
+ readonly circuit_set_stack_size?: boolean
5616
+ readonly stack_control_input_signal?: SignalID
5617
+ readonly use_colors?: boolean
5618
+ readonly read_robot_stats?: boolean
5619
+ readonly read_logistics?: boolean
5620
+ readonly available_logistic_output_signal?: boolean
5621
+ readonly total_logistic_output_signal?: boolean
5622
+ readonly available_construction_output_signal?: boolean
5623
+ readonly total_construction_output_signal?: boolean
5624
+ readonly circuit_contents_read_mode?: defines.control_behavior.transport_belt.content_read_mode
5625
+ readonly output_signal?: SignalID
5626
+ readonly circuit_close_signal?: boolean
5627
+ readonly circuit_read_signal?: boolean
5628
+ readonly red_output_signal?: SignalID
5629
+ readonly orange_output_signal?: SignalID
5630
+ readonly green_output_signal?: SignalID
5631
+ readonly blue_output_signal?: SignalID
5632
+ readonly circuit_open_gate?: boolean
5633
+ readonly circuit_read_sensor?: boolean
5634
+ readonly circuit_parameters?: ProgrammableSpeakerCircuitParameters
5635
+ }