typed-factorio 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
+ }