typed-factorio
Version:
Featureful typescript definitions for the Factorio modding api.
1,120 lines (1,118 loc) • 788 kB
TypeScript
// This is an auto-generated file. Do not edit directly!
/** @noSelfInFile */
/**
* @noResolution
*/
declare module "factorio:prototype" {
export interface ActivateEquipmentCapsuleAction {
readonly type: "equipment-remote"
/**
* Activation is only implemented for {@link ActiveDefenseEquipmentPrototype}.
* @see {@link https://lua-api.factorio.com/2.0.47/types/ActivateEquipmentCapsuleAction.html#equipment Online documentation}
*/
equipment: EquipmentID
}
export interface ActivateImpactTriggerEffectItem extends TriggerEffectItem {
readonly type: "activate-impact"
/**
* **Default:** `""`
*
* Name of a {@link DeliverCategory}.
* @see {@link https://lua-api.factorio.com/2.0.47/types/ActivateImpactTriggerEffectItem.html#deliver_category Online documentation}
*/
deliver_category?: string
}
export interface ActivatePasteTipTrigger extends CountBasedTipTrigger {
readonly type: "activate-paste"
}
/**
* The name of an {@link ActiveTriggerPrototype}.
* @example
* "chain-lightning-chain"
* @example
* "chain-lightning-turret-chain"
* @see {@link https://lua-api.factorio.com/2.0.47/types/ActiveTriggerID.html Online documentation}
*/
export type ActiveTriggerID = string
export interface ActivityBarStyleSpecification extends BaseStyleSpecification {
readonly type: "activity_bar_style"
speed?: float
bar_width?: uint32
color?: Color
bar_background?: ElementImageSet
bar?: ElementImageSet
bar_size_ratio?: float
}
export interface ActivityMatchingModifiers {
/**
* **Default:** `1`
* @see {@link https://lua-api.factorio.com/2.0.47/types/ActivityMatchingModifiers.html#multiplier Online documentation}
*/
multiplier?: float
/**
* **Default:** `0`
*
* Cannot be larger than `maximum`.
* @see {@link https://lua-api.factorio.com/2.0.47/types/ActivityMatchingModifiers.html#minimum Online documentation}
*/
minimum?: float
/**
* **Default:** `infinity`
* @see {@link https://lua-api.factorio.com/2.0.47/types/ActivityMatchingModifiers.html#maximum Online documentation}
*/
maximum?: float
/**
* **Default:** `0`
* @see {@link https://lua-api.factorio.com/2.0.47/types/ActivityMatchingModifiers.html#offset Online documentation}
*/
offset?: float
/**
* **Default:** `false`
* @see {@link https://lua-api.factorio.com/2.0.47/types/ActivityMatchingModifiers.html#inverted Online documentation}
*/
inverted?: boolean
}
/**
* @see MapGenPreset.advanced_settings
* @see {@link https://lua-api.factorio.com/2.0.47/types/MapGenPreset.html#advanced_settings Online documentation}
*/
export interface AdvancedMapGenSettings {
asteroids?: MapGenPresetAsteroidSettings
pollution?: MapGenPresetPollutionSettings
enemy_evolution?: MapGenPresetEnemyEvolutionSettings
enemy_expansion?: MapGenPresetEnemyExpansionSettings
difficulty_settings?: MapGenPresetDifficultySettings
}
export interface AdvancedVolumeControl {
/**
* Volume reduction (fade-out) controlled by distance (fraction of audible distance).
* @see {@link https://lua-api.factorio.com/2.0.47/types/AdvancedVolumeControl.html#attenuation Online documentation}
*/
attenuation?: Fade
/**
* Volume reduction (fade-out) or increase (fade-in) controlled by zoom level.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AdvancedVolumeControl.html#fades Online documentation}
*/
fades?: Fades
/**
* **Default:** `0`
*
* Has to be in the range [-1.0, 1.0].
*
* Positive values are used for night sounds, the volume of the sound is 1.0 when darkness = threshold, 0.0 when darkness = 0.0 and linearly interpolated in between.
*
* Negative values are used for day sounds, the sound of the sound is 0.0 when darkness = -threshold, 1.0 when darkness = 1.0 and linearly interpolated in between.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AdvancedVolumeControl.html#darkness_threshold Online documentation}
*/
darkness_threshold?: float
}
export interface AggregationSpecification {
max_count: uint32
/**
* **Default:** `1`
*
* If `count_already_playing` is `true`, this will determine maximum progress when instance is counted toward playing sounds.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AggregationSpecification.html#progress_threshold Online documentation}
*/
progress_threshold?: float
/**
* **Default:** `2`
*
* Has to be greater than or equal to 0.0.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AggregationSpecification.html#volume_reduction_rate Online documentation}
*/
volume_reduction_rate?: float
/**
* If `false`, the volume of sound instances above `max_count` is calculated according to the formula `volume = (x + 1) ^ (-volume_reduction_rate)`, where `x` is the order number of an instance above the threshold.
*
* If `true`, sound instances above `max_count` are removed.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AggregationSpecification.html#remove Online documentation}
*/
remove: boolean
/**
* **Default:** `false`
*
* If `true`, already playing sounds are taken into account when checking `max_count`.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AggregationSpecification.html#count_already_playing Online documentation}
*/
count_already_playing?: boolean
/**
* **Default:** `"closest"`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AggregationSpecification.html#priority Online documentation}
*/
priority?: "closest" | "farthest" | "newest" | "oldest"
}
export interface AgriculturalCraneProperties {
speed: AgriculturalCraneSpeed
/**
* **Default:** `0`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AgriculturalCraneProperties.html#min_arm_extent Online documentation}
*/
min_arm_extent?: double
/**
* **Default:** `0.2`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AgriculturalCraneProperties.html#min_grappler_extent Online documentation}
*/
min_grappler_extent?: double
/**
* **Default:** `45`
*
* In degrees.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AgriculturalCraneProperties.html#operation_angle Online documentation}
*/
operation_angle?: float
/**
* **Default:** `0.5`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AgriculturalCraneProperties.html#telescope_default_extention Online documentation}
*/
telescope_default_extention?: double
origin: Vector3D
shadow_direction: Vector3D
parts: readonly CranePart[]
}
export interface AgriculturalCraneSpeed {
arm: AgriculturalCraneSpeedArm
grappler: AgriculturalCraneSpeedGrappler
}
export interface AgriculturalCraneSpeedArm {
/**
* **Default:** `0.01`
*
* May not be 0.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AgriculturalCraneSpeedArm.html#turn_rate Online documentation}
*/
turn_rate?: double
/**
* **Default:** `0.05`
*
* Must be positive.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AgriculturalCraneSpeedArm.html#extension_speed Online documentation}
*/
extension_speed?: double
}
export interface AgriculturalCraneSpeedGrappler {
/**
* **Default:** `0.01`
*
* May not be 0.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AgriculturalCraneSpeedGrappler.html#vertical_turn_rate Online documentation}
*/
vertical_turn_rate?: double
/**
* **Default:** `0.01`
*
* May not be 0.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AgriculturalCraneSpeedGrappler.html#horizontal_turn_rate Online documentation}
*/
horizontal_turn_rate?: double
/**
* **Default:** `0.01`
*
* Must be positive.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AgriculturalCraneSpeedGrappler.html#extension_speed Online documentation}
*/
extension_speed?: double
/**
* **Default:** `true`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AgriculturalCraneSpeedGrappler.html#allow_transpolar_movement Online documentation}
*/
allow_transpolar_movement?: boolean
}
/**
* The name of an {@link AirbornePollutantPrototype}.
* @example
* "pollution"
* @example
* "spores"
* @see {@link https://lua-api.factorio.com/2.0.47/types/AirbornePollutantID.html Online documentation}
*/
export type AirbornePollutantID = string
export interface AlternativeBuildTipTrigger extends CountBasedTipTrigger {
readonly type: "alternative-build"
}
/**
* Lets the game know in what instances the audio file is played.
*
* ## Union members
* - `"menu-track"`: This track is only played in the main menu.
* - `"main-track"`: This track is played interleaved (alternating) with `"interlude"` tracks.
* - `"hero-track"`: This track is played when a character steps on a new surface for the first time. Only one `"hero-track"` per planet or space platform is allowed.
* - `"interlude"`: This track is played interleaved (alternating) with `"main-track"` tracks.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmbientSoundType.html Online documentation}
*/
export type AmbientSoundType = "menu-track" | "main-track" | "hero-track" | "interlude"
/**
* The name of an {@link AmmoCategory}.
* @example
* "bullet"
* @example
* "melee"
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoCategoryID.html Online documentation}
*/
export type AmmoCategoryID = string
export interface AmmoDamageModifier extends BaseModifier {
readonly type: "ammo-damage"
/**
* **Default:** `true`
*
* If set to `false`, use the icon from {@link UtilitySprites} for this technology effect icon.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoDamageModifier.html#infer_icon Online documentation}
*/
infer_icon?: boolean
/**
* **Default:** `true`
*
* If `false`, do not draw the small "constant" icon over the technology effect icon.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoDamageModifier.html#use_icon_overlay_constant Online documentation}
*/
use_icon_overlay_constant?: boolean
/**
* Name of the {@link AmmoCategory} that is affected.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoDamageModifier.html#ammo_category Online documentation}
*/
ammo_category: AmmoCategoryID
/**
* Modification value, which will be added to the current ammo damage modifier upon researching.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoDamageModifier.html#modifier Online documentation}
*/
modifier: double
}
/**
* Used to allow specifying different ammo effects depending on which kind of entity the ammo is used in.
*
* If ammo is used in an entity that isn't covered by the defined source_types, e.g. only `"player"` and `"vehicle"` are defined and the ammo is used by a turret, the first defined AmmoType in the {@link AmmoItemPrototype#ammo_type AmmoItemPrototype::ammo_type} array is used.
*
* ## Union members
* - `"default"`
* - `"player"`
* - `"turret"`
* - `"vehicle"`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoSourceType.html Online documentation}
*/
export type AmmoSourceType = "default" | "player" | "turret" | "vehicle"
/**
* Definition of actual parameters used in attack.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoType.html Online documentation}
*/
export interface AmmoType {
/**
* Describes actions taken upon attack happening.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoType.html#action Online documentation}
*/
action?: Trigger
/**
* **Default:** `false`
*
* When true, the gun will be able to shoot even when the target is out of range. Only applies when `target_type` equals `"position"`. The gun will fire at the maximum range in the direction of the target position.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoType.html#clamp_position Online documentation}
*/
clamp_position?: boolean
/**
* Energy consumption of a single shot, if applicable.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoType.html#energy_consumption Online documentation}
*/
energy_consumption?: Energy
/**
* **Default:** `1`
*
* Affects the `range` value of the shooting gun prototype's {@link BaseAttackParameters} to give a modified maximum range. The `min_range` value of the gun is unaffected.
*
* This has no effect on artillery turrets and wagons even though the bonus appears in the GUI. {@linkplain https://forums.factorio.com/103658 Forum thread}.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoType.html#range_modifier Online documentation}
*/
range_modifier?: double
/**
* **Default:** `1`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoType.html#cooldown_modifier Online documentation}
*/
cooldown_modifier?: double
/**
* **Default:** `1`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoType.html#consumption_modifier Online documentation}
*/
consumption_modifier?: float
/**
* **Default:** `"entity"`
*
* `"entity"` fires at an entity, `"position"` fires directly at a position, `"direction"` fires in a direction.
*
* If this is `"entity"`, `clamp_position` is forced to be `false`.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoType.html#target_type Online documentation}
*/
target_type?: "entity" | "position" | "direction"
/**
* Only exists (and is then mandatory) if the {@link AmmoItemPrototype#ammo_type AmmoItemPrototype::ammo_type} this AmmoType is defined on has multiple ammo types.
*
* Defines for which kind of entity this ammo type applies. Each entity kind can only be used once per array.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoType.html#source_type Online documentation}
*/
source_type?: AmmoSourceType
/**
* List of entities that can be targeted by this ammo type.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AmmoType.html#target_filter Online documentation}
*/
target_filter?: readonly EntityID[]
}
export interface AndTipTrigger {
readonly type: "and"
/**
* If all of the triggers are fulfilled, this trigger is considered fulfilled.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AndTipTrigger.html#triggers Online documentation}
*/
triggers: readonly TipTrigger[]
}
export interface AnimatedVector {
/**
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimatedVector.html#rotations Online documentation}
*/
rotations: readonly VectorRotation[]
/**
* Default render layer for the rotations.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimatedVector.html#render_layer Online documentation}
*/
render_layer?: RenderLayer
/**
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimatedVector.html#direction_shift Online documentation}
*/
direction_shift?: DirectionShift
}
/**
* Specifies an animation that can be used in the game.
*
* Note that if any frame of the animation is specified from the same source as any other {@link Sprite} or frame of other animation, it will be shared.
* @example
* -- simple animation
* horizontal_animation =
* {
* filename = "__base__/graphics/entity/steam-engine/steam-engine-H.png",
* width = 352,
* height = 257,
* frame_count = 32,
* line_length = 8,
* shift = {0.03125, -0.1484375}
* }
* @example
* -- animation with layers
* horizontal_animation =
* {
* layers =
* {
* {
* filename = "__base__/graphics/entity/steam-engine/steam-engine-H.png",
* width = 352,
* height = 257,
* frame_count = 32,
* line_length = 8,
* shift = {0.03125, -0.15625}
* },
* {
* filename = "__base__/graphics/entity/steam-engine/steam-engine-H-shadow.png",
* width = 508,
* height = 160,
* frame_count = 32,
* line_length = 8,
* draw_as_shadow = true,
* shift = {1.5, 0.75}
* }
* }
* }
* @see {@link https://lua-api.factorio.com/2.0.47/types/Animation.html Online documentation}
*/
export interface Animation extends Omit<AnimationParameters, "filename"> {
/**
* If this property is present, all Animation definitions have to be placed as entries in the array, and they will all be loaded from there. `layers` may not be an empty table. Each definition in the array may also have the `layers` property.
*
* `animation_speed` and `max_advance` of the first layer are used for all layers. All layers will run at the same speed.
*
* If this property is present, all other properties, including those inherited from AnimationParameters, are ignored.
* @see {@link https://lua-api.factorio.com/2.0.47/types/Animation.html#layers Online documentation}
*/
layers?: readonly Animation[]
/**
* Only loaded if `layers` is not defined. Mandatory if neither `stripes` nor `filenames` are defined.
*
* The path to the sprite file to use.
* @see {@link https://lua-api.factorio.com/2.0.47/types/Animation.html#filename Online documentation}
*/
filename?: FileName
/**
* Only loaded if `layers` is not defined.
* @see {@link https://lua-api.factorio.com/2.0.47/types/Animation.html#stripes Online documentation}
*/
stripes?: readonly Stripe[]
/**
* Only loaded if neither `layers` nor `stripes` are defined.
* @see {@link https://lua-api.factorio.com/2.0.47/types/Animation.html#filenames Online documentation}
*/
filenames?: readonly FileName[]
/**
* **Default:** `Value of `frame_count``
*
* Only loaded if `layers` is not defined and if `filenames` is defined.
* @see {@link https://lua-api.factorio.com/2.0.47/types/Animation.html#slice Online documentation}
*/
slice?: uint32
/**
* Only loaded if `layers` is not defined. Mandatory if `filenames` is defined.
* @see {@link https://lua-api.factorio.com/2.0.47/types/Animation.html#lines_per_file Online documentation}
*/
lines_per_file?: uint32
}
/**
* Struct type for {@link Animation4Way}
* @see Animation4Way
* @see {@link https://lua-api.factorio.com/2.0.47/types/Animation4Way.html Online documentation}
*/
export interface Animation4WayStruct {
north: Animation
north_east?: Animation
east?: Animation
south_east?: Animation
south?: Animation
south_west?: Animation
west?: Animation
north_west?: Animation
}
/**
* If this is loaded as a single Animation, it applies to all directions. Any direction that is not defined defaults to the north animation.
* @see {@link https://lua-api.factorio.com/2.0.47/types/Animation4Way.html Online documentation}
*/
export type Animation4Way = Animation4WayStruct | Animation
export interface AnimationElement {
/**
* **Default:** `"object"`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationElement.html#render_layer Online documentation}
*/
render_layer?: RenderLayer
/**
* Used to determine render order for sprites with the same `render_layer` in the same position. Sprites with a higher `secondary_draw_order` are drawn on top.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationElement.html#secondary_draw_order Online documentation}
*/
secondary_draw_order?: int8
/**
* **Default:** `false`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationElement.html#apply_tint Online documentation}
*/
apply_tint?: boolean
/**
* **Default:** `true`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationElement.html#always_draw Online documentation}
*/
always_draw?: boolean
animation?: Animation
}
/**
* This is a list of 1-based frame indices into the spritesheet. The actual length of the animation will then be the length of the frame_sequence (times `repeat_count`, plus the length minus two if `run_mode` is `"forward-then-backward"`). There is a limit for (actual) animation length of 255 frames.
*
* Indices can be used in any order, repeated or not used at all. Unused frames are not loaded into VRAM at all, frames referenced multiple times are loaded just once, see {@linkplain https://forums.factorio.com/53202 here}.
* @example
* -- Trivial example - frame_sequence defines same sequence in which the animation would load by default,
* -- so it is useless in this case:
* frame_count = 4,
* frame_sequence = { 1, 2, 3, 4 }
* @example
* -- Usage example - first five times repeat frame 2, then alternate between 4 and 3 two times. Frame 1 is not used:
* frame_count = 4,
* frame_sequence = { 2, 2, 2, 2, 2, 4, 3, 4, 3 }
* @example
* -- Complex example - animation contains different layers with different frame counts:
* local custom_frame_sequence = { 2, 2, 2, 2, 2, 4, 3, 4, 3 }
* layers =
* {
* {
* -- Animation with custom frame sequence
* frame_count = 4,
* frame_sequence = custom_frame_sequence,
* },
* {
* -- Single sprite that's repeated
* repeat_count = #custom_frame_sequence,
* },
* {
* -- Other animation with different frame count
* -- Assuming: #custom_frame_sequence < frame_count
* frame_count = #custom_frame_sequence,
* },
* }
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationFrameSequence.html Online documentation}
*/
export type AnimationFrameSequence = readonly uint16[]
export interface AnimationParameters extends SpriteParameters {
/**
* The width and height of one frame. If this is a tuple, the first member of the tuple is the width and the second is the height. Otherwise the size is both width and height. Width and height may only be in the range of 0-4096.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#size Online documentation}
*/
size?: SpriteSizeType | readonly [SpriteSizeType, SpriteSizeType]
/**
* Mandatory if `size` is not defined.
*
* Width of one frame in pixels, from 0-4096.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#width Online documentation}
*/
width?: SpriteSizeType
/**
* Mandatory if `size` is not defined.
*
* Height of one frame in pixels, from 0-4096.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#height Online documentation}
*/
height?: SpriteSizeType
/**
* **Default:** `"forward"`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#run_mode Online documentation}
*/
run_mode?: AnimationRunMode
/**
* **Default:** `1`
*
* Can't be `0`.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#frame_count Online documentation}
*/
frame_count?: uint32
/**
* **Default:** `0`
*
* Specifies how many pictures are on each horizontal line in the image file. `0` means that all the pictures are in one horizontal line. Once the specified number of pictures are loaded from a line, the pictures from the next line are loaded. This is to allow having longer animations loaded in to Factorio's graphics matrix than the game engine's width limit of 8192px per input file. The restriction on input files is to be compatible with most graphics cards.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#line_length Online documentation}
*/
line_length?: uint32
/**
* **Default:** `1`
*
* Modifier of the animation playing speed, the default of `1` means one animation frame per tick (60 fps). The speed of playing can often vary depending on the usage (output of steam engine for example). Has to be greater than `0`.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#animation_speed Online documentation}
*/
animation_speed?: float
/**
* **Default:** `MAX_FLOAT`
*
* Maximum amount of frames the animation can move forward in one update. Useful to cap the animation speed on entities where it is variable, such as car animations.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#max_advance Online documentation}
*/
max_advance?: float
/**
* **Default:** `1`
*
* How many times to repeat the animation to complete an animation cycle. E.g. if one layer is 10 frames, a second layer of 1 frame would need `repeat_count = 10` to match the complete cycle.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#repeat_count Online documentation}
*/
repeat_count?: uint8
/**
* Number of slices this is sliced into when using the "optimized atlas packing" option. If you are a modder, you can just ignore this property. Example: If this is 4, the sprite will be sliced into a 4×4 grid.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#dice Online documentation}
*/
dice?: uint8
/**
* Same as `dice` above, but this specifies only how many slices there are on the x axis.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#dice_x Online documentation}
*/
dice_x?: uint8
/**
* Same as `dice` above, but this specifies only how many slices there are on the y axis.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#dice_y Online documentation}
*/
dice_y?: uint8
frame_sequence?: AnimationFrameSequence
/**
* **Default:** `0`
*
* Only loaded if this is an icon, that is it has the flag `"group=icon"` or `"group=gui"`.
*
* Note that `mipmap_count` doesn't make sense in an animation, as it is not possible to layout mipmaps in a way that would load both the animation and the mipmaps correctly (besides animations with just one frame). See {@linkplain https://forums.factorio.com/viewtopic.php?p=549058#p549058 here}.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#mipmap_count Online documentation}
*/
mipmap_count?: uint8
/**
* **Default:** `false`
*
* Unused.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationParameters.html#generate_sdf Online documentation}
*/
generate_sdf?: boolean
}
/**
* ## Union members
* - `"forward"`
* - `"backward"`
* - `"forward-then-backward"`: Does not repeat the first and last frame when running backwards.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationRunMode.html Online documentation}
*/
export type AnimationRunMode = "forward" | "backward" | "forward-then-backward"
export interface AnimationSheet extends Omit<AnimationParameters, "filename"> {
variation_count: uint32
/**
* **Default:** `Value of `variation_count``
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationSheet.html#line_length Online documentation}
*/
line_length?: uint32
/**
* Only loaded, and mandatory if `filenames` is not defined.
*
* The path to the animation file to use.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationSheet.html#filename Online documentation}
*/
filename?: FileName
filenames?: readonly FileName[]
/**
* Mandatory if `filenames` is defined.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationSheet.html#lines_per_file Online documentation}
*/
lines_per_file?: uint32
}
/**
* Struct type for {@link AnimationVariations}
* @see AnimationVariations
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationVariations.html Online documentation}
*/
export interface AnimationVariationsStruct {
/**
* The variations are arranged vertically in the file, one row for each variation.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationVariations.html#sheet Online documentation}
*/
sheet?: AnimationSheet
/**
* Only loaded if `sheet` is not defined.
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationVariations.html#sheets Online documentation}
*/
sheets?: readonly AnimationSheet[]
}
/**
* @example
* -- array of animations
* animations =
* {
* {
* filename = "__base__/graphics/entity/explosion-gunshot/explosion-gunshot.png",
* draw_as_glow = true,
* priority = "extra-high",
* width = 34,
* height = 38,
* frame_count = 2,
* animation_speed = 1.5,
* shift = {0, 0}
* },
* {
* filename = "__base__/graphics/entity/explosion-gunshot/explosion-gunshot.png",
* draw_as_glow = true,
* priority = "extra-high",
* width = 34,
* height = 38,
* x = 34 * 2,
* frame_count = 2,
* animation_speed = 1.5,
* shift = {0, 0}
* },
* -- [...]
* }
* @example
* -- animation sheet using "sheet"
* pictures =
* {
* sheet =
* {
* filename = "__base__/graphics/entity/character/footprints.png",
* line_length = 2,
* frame_count = 2,
* width = 30,
* height = 22,
* shift = util.by_pixel(0.25, 0.25),
* scale = 0.5,
* variation_count = 8
* }
* }
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnimationVariations.html Online documentation}
*/
export type AnimationVariations = AnimationVariationsStruct | Animation | readonly Animation[]
/**
* A union of all prototypes. A specific prototype is loaded based on the value of the `type` key.
*
* See the {@linkplain https://lua-api.factorio.com/2.0.47/prototypes.html Prototypes page} for more information.
*
* ## Union members
* - {@link AccumulatorPrototype}: `'accumulator'`
* - {@link AchievementPrototype}: `'achievement'`
* - {@link ActiveDefenseEquipmentPrototype}: `'active-defense-equipment'`
* - {@link AgriculturalTowerPrototype}: `'agricultural-tower'`
* - {@link AirbornePollutantPrototype}: `'airborne-pollutant'`
* - {@link AmbientSound}: `'ambient-sound'`
* - {@link AmmoCategory}: `'ammo-category'`
* - {@link AmmoItemPrototype}: `'ammo'`
* - {@link AmmoTurretPrototype}: `'ammo-turret'`
* - {@link AnimationPrototype}: `'animation'`
* - {@link ArithmeticCombinatorPrototype}: `'arithmetic-combinator'`
* - {@link ArmorPrototype}: `'armor'`
* - {@link ArrowPrototype}: `'arrow'`
* - {@link ArtilleryFlarePrototype}: `'artillery-flare'`
* - {@link ArtilleryProjectilePrototype}: `'artillery-projectile'`
* - {@link ArtilleryTurretPrototype}: `'artillery-turret'`
* - {@link ArtilleryWagonPrototype}: `'artillery-wagon'`
* - {@link AssemblingMachinePrototype}: `'assembling-machine'`
* - {@link AsteroidChunkPrototype}: `'asteroid-chunk'`
* - {@link AsteroidCollectorPrototype}: `'asteroid-collector'`
* - {@link AsteroidPrototype}: `'asteroid'`
* - {@link AutoplaceControl}: `'autoplace-control'`
* - {@link BatteryEquipmentPrototype}: `'battery-equipment'`
* - {@link BeaconPrototype}: `'beacon'`
* - {@link BeamPrototype}: `'beam'`
* - {@link BeltImmunityEquipmentPrototype}: `'belt-immunity-equipment'`
* - {@link BlueprintBookPrototype}: `'blueprint-book'`
* - {@link BlueprintItemPrototype}: `'blueprint'`
* - {@link BoilerPrototype}: `'boiler'`
* - {@link BuildEntityAchievementPrototype}: `'build-entity-achievement'`
* - {@link BurnerGeneratorPrototype}: `'burner-generator'`
* - {@link BurnerUsagePrototype}: `'burner-usage'`
* - {@link CapsulePrototype}: `'capsule'`
* - {@link CaptureRobotPrototype}: `'capture-robot'`
* - {@link CarPrototype}: `'car'`
* - {@link CargoBayPrototype}: `'cargo-bay'`
* - {@link CargoLandingPadPrototype}: `'cargo-landing-pad'`
* - {@link CargoPodPrototype}: `'cargo-pod'`
* - {@link CargoWagonPrototype}: `'cargo-wagon'`
* - {@link ChainActiveTriggerPrototype}: `'chain-active-trigger'`
* - {@link ChangedSurfaceAchievementPrototype}: `'change-surface-achievement'`
* - {@link CharacterCorpsePrototype}: `'character-corpse'`
* - {@link CharacterPrototype}: `'character'`
* - {@link CliffPrototype}: `'cliff'`
* - {@link CollisionLayerPrototype}: `'collision-layer'`
* - {@link CombatRobotCountAchievementPrototype}: `'combat-robot-count-achievement'`
* - {@link CombatRobotPrototype}: `'combat-robot'`
* - {@link CompleteObjectiveAchievementPrototype}: `'complete-objective-achievement'`
* - {@link ConstantCombinatorPrototype}: `'constant-combinator'`
* - {@link ConstructWithRobotsAchievementPrototype}: `'construct-with-robots-achievement'`
* - {@link ConstructionRobotPrototype}: `'construction-robot'`
* - {@link ContainerPrototype}: `'container'`
* - {@link CopyPasteToolPrototype}: `'copy-paste-tool'`
* - {@link CorpsePrototype}: `'corpse'`
* - {@link CreatePlatformAchievementPrototype}: `'create-platform-achievement'`
* - {@link CurvedRailAPrototype}: `'curved-rail-a'`
* - {@link CurvedRailBPrototype}: `'curved-rail-b'`
* - {@link CustomEventPrototype}: `'custom-event'`
* - {@link CustomInputPrototype}: `'custom-input'`
* - {@link DamageType}: `'damage-type'`
* - {@link DeciderCombinatorPrototype}: `'decider-combinator'`
* - {@link DeconstructWithRobotsAchievementPrototype}: `'deconstruct-with-robots-achievement'`
* - {@link DeconstructibleTileProxyPrototype}: `'deconstructible-tile-proxy'`
* - {@link DeconstructionItemPrototype}: `'deconstruction-item'`
* - {@link DecorativePrototype}: `'optimized-decorative'`
* - {@link DelayedActiveTriggerPrototype}: `'delayed-active-trigger'`
* - {@link DeliverByRobotsAchievementPrototype}: `'deliver-by-robots-achievement'`
* - {@link DeliverCategory}: `'deliver-category'`
* - {@link DeliverImpactCombination}: `'deliver-impact-combination'`
* - {@link DepleteResourceAchievementPrototype}: `'deplete-resource-achievement'`
* - {@link DestroyCliffAchievementPrototype}: `'destroy-cliff-achievement'`
* - {@link DisplayPanelPrototype}: `'display-panel'`
* - {@link DontBuildEntityAchievementPrototype}: `'dont-build-entity-achievement'`
* - {@link DontCraftManuallyAchievementPrototype}: `'dont-craft-manually-achievement'`
* - {@link DontKillManuallyAchievementPrototype}: `'dont-kill-manually-achievement'`
* - {@link DontResearchBeforeResearchingAchievementPrototype}: `'dont-research-before-researching-achievement'`
* - {@link DontUseEntityInEnergyProductionAchievementPrototype}: `'dont-use-entity-in-energy-production-achievement'`
* - {@link EditorControllerPrototype}: `'editor-controller'`
* - {@link ElectricEnergyInterfacePrototype}: `'electric-energy-interface'`
* - {@link ElectricPolePrototype}: `'electric-pole'`
* - {@link ElectricTurretPrototype}: `'electric-turret'`
* - {@link ElevatedCurvedRailAPrototype}: `'elevated-curved-rail-a'`
* - {@link ElevatedCurvedRailBPrototype}: `'elevated-curved-rail-b'`
* - {@link ElevatedHalfDiagonalRailPrototype}: `'elevated-half-diagonal-rail'`
* - {@link ElevatedStraightRailPrototype}: `'elevated-straight-rail'`
* - {@link EnemySpawnerPrototype}: `'unit-spawner'`
* - {@link EnergyShieldEquipmentPrototype}: `'energy-shield-equipment'`
* - {@link EntityGhostPrototype}: `'entity-ghost'`
* - {@link EquipArmorAchievementPrototype}: `'equip-armor-achievement'`
* - {@link EquipmentCategory}: `'equipment-category'`
* - {@link EquipmentGhostPrototype}: `'equipment-ghost'`
* - {@link EquipmentGridPrototype}: `'equipment-grid'`
* - {@link ExplosionPrototype}: `'explosion'`
* - {@link FireFlamePrototype}: `'fire'`
* - {@link FishPrototype}: `'fish'`
* - {@link FluidPrototype}: `'fluid'`
* - {@link FluidStreamPrototype}: `'stream'`
* - {@link FluidTurretPrototype}: `'fluid-turret'`
* - {@link FluidWagonPrototype}: `'fluid-wagon'`
* - {@link FontPrototype}: `'font'`
* - {@link FuelCategory}: `'fuel-category'`
* - {@link FurnacePrototype}: `'furnace'`
* - {@link FusionGeneratorPrototype}: `'fusion-generator'`
* - {@link FusionReactorPrototype}: `'fusion-reactor'`
* - {@link GatePrototype}: `'gate'`
* - {@link GeneratorEquipmentPrototype}: `'generator-equipment'`
* - {@link GeneratorPrototype}: `'generator'`
* - {@link GodControllerPrototype}: `'god-controller'`
* - {@link GroupAttackAchievementPrototype}: `'group-attack-achievement'`
* - {@link GuiStyle}: `'gui-style'`
* - {@link GunPrototype}: `'gun'`
* - {@link HalfDiagonalRailPrototype}: `'half-diagonal-rail'`
* - {@link HeatInterfacePrototype}: `'heat-interface'`
* - {@link HeatPipePrototype}: `'heat-pipe'`
* - {@link HighlightBoxEntityPrototype}: `'highlight-box'`
* - {@link ImpactCategory}: `'impact-category'`
* - {@link InfinityCargoWagonPrototype}: `'infinity-cargo-wagon'`
* - {@link InfinityContainerPrototype}: `'infinity-container'`
* - {@link InfinityPipePrototype}: `'infinity-pipe'`
* - {@link InserterPrototype}: `'inserter'`
* - {@link InventoryBonusEquipmentPrototype}: `'inventory-bonus-equipment'`
* - {@link ItemEntityPrototype}: `'item-entity'`
* - {@link ItemGroup}: `'item-group'`
* - {@link ItemPrototype}: `'item'`
* - {@link ItemRequestProxyPrototype}: `'item-request-proxy'`
* - {@link ItemSubGroup}: `'item-subgroup'`
* - {@link ItemWithEntityDataPrototype}: `'item-with-entity-data'`
* - {@link ItemWithInventoryPrototype}: `'item-with-inventory'`
* - {@link ItemWithLabelPrototype}: `'item-with-label'`
* - {@link ItemWithTagsPrototype}: `'item-with-tags'`
* - {@link KillAchievementPrototype}: `'kill-achievement'`
* - {@link LabPrototype}: `'lab'`
* - {@link LampPrototype}: `'lamp'`
* - {@link LandMinePrototype}: `'land-mine'`
* - {@link LaneSplitterPrototype}: `'lane-splitter'`
* - {@link LegacyCurvedRailPrototype}: `'legacy-curved-rail'`
* - {@link LegacyStraightRailPrototype}: `'legacy-straight-rail'`
* - {@link LightningAttractorPrototype}: `'lightning-attractor'`
* - {@link LightningPrototype}: `'lightning'`
* - {@link LinkedBeltPrototype}: `'linked-belt'`
* - {@link LinkedContainerPrototype}: `'linked-container'`
* - {@link Loader1x1Prototype}: `'loader-1x1'`
* - {@link Loader1x2Prototype}: `'loader'`
* - {@link LocomotivePrototype}: `'locomotive'`
* - {@link LogisticContainerPrototype}: `'logistic-container'`
* - {@link LogisticRobotPrototype}: `'logistic-robot'`
* - {@link MapGenPresets}: `'map-gen-presets'`
* - {@link MapSettings}: `'map-settings'`
* - {@link MarketPrototype}: `'market'`
* - {@link MiningDrillPrototype}: `'mining-drill'`
* - {@link ModuleCategory}: `'module-category'`
* - {@link ModulePrototype}: `'module'`
* - {@link ModuleTransferAchievementPrototype}: `'module-transfer-achievement'`
* - {@link MouseCursor}: `'mouse-cursor'`
* - {@link MovementBonusEquipmentPrototype}: `'movement-bonus-equipment'`
* - {@link NamedNoiseExpression}: `'noise-expression'`
* - {@link NamedNoiseFunction}: `'noise-function'`
* - {@link NightVisionEquipmentPrototype}: `'night-vision-equipment'`
* - {@link OffshorePumpPrototype}: `'offshore-pump'`
* - {@link ParticlePrototype}: `'optimized-particle'`
* - {@link ParticleSourcePrototype}: `'particle-source'`
* - {@link PipePrototype}: `'pipe'`
* - {@link PipeToGroundPrototype}: `'pipe-to-ground'`
* - {@link PlaceEquipmentAchievementPrototype}: `'place-equipment-achievement'`
* - {@link PlanetPrototype}: `'planet'`
* - {@link PlantPrototype}: `'plant'`
* - {@link PlayerDamagedAchievementPrototype}: `'player-damaged-achievement'`
* - {@link PlayerPortPrototype}: `'player-port'`
* - {@link PowerSwitchPrototype}: `'power-switch'`
* - {@link ProcessionLayerInheritanceGroup}: `'procession-layer-inheritance-group'`
* - {@link ProcessionPrototype}: `'procession'`
* - {@link ProduceAchievementPrototype}: `'produce-achievement'`
* - {@link ProducePerHourAchievementPrototype}: `'produce-per-hour-achievement'`
* - {@link ProgrammableSpeakerPrototype}: `'programmable-speaker'`
* - {@link ProjectilePrototype}: `'projectile'`
* - {@link ProxyContainerPrototype}: `'proxy-container'`
* - {@link PumpPrototype}: `'pump'`
* - {@link QualityPrototype}: `'quality'`
* - {@link RadarPrototype}: `'radar'`
* - {@link RailChainSignalPrototype}: `'rail-chain-signal'`
* - {@link RailPlannerPrototype}: `'rail-planner'`
* - {@link RailRampPrototype}: `'rail-ramp'`
* - {@link RailRemnantsPrototype}: `'rail-remnants'`
* - {@link RailSignalPrototype}: `'rail-signal'`
* - {@link RailSupportPrototype}: `'rail-support'`
* - {@link ReactorPrototype}: `'reactor'`
* - {@link RecipeCategory}: `'recipe-category'`
* - {@link RecipePrototype}: `'recipe'`
* - {@link RemoteControllerPrototype}: `'remote-controller'`
* - {@link RepairToolPrototype}: `'repair-tool'`
* - {@link ResearchAchievementPrototype}: `'research-achievement'`
* - {@link ResearchWithSciencePackAchievementPrototype}: `'research-with-science-pack-achievement'`
* - {@link ResourceCategory}: `'resource-category'`
* - {@link ResourceEntityPrototype}: `'resource'`
* - {@link RoboportEquipmentPrototype}: `'roboport-equipment'`
* - {@link RoboportPrototype}: `'roboport'`
* - {@link RocketSiloPrototype}: `'rocket-silo'`
* - {@link RocketSiloRocketPrototype}: `'rocket-silo-rocket'`
* - {@link RocketSiloRocketShadowPrototype}: `'rocket-silo-rocket-shadow'`
* - {@link SegmentPrototype}: `'segment'`
* - {@link SegmentedUnitPrototype}: `'segmented-unit'`
* - {@link SelectionToolPrototype}: `'selection-tool'`
* - {@link SelectorCombinatorPrototype}: `'selector-combinator'`
* - {@link ShootAchievementPrototype}: `'shoot-achievement'`
* - {@link ShortcutPrototype}: `'shortcut'`
* - {@link SimpleEntityPrototype}: `'simple-entity'`
* - {@link SimpleEntityWithForcePrototype}: `'simple-entity-with-force'`
* - {@link SimpleEntityWithOwnerPrototype}: `'simple-entity-with-owner'`
* - {@link SmokeWithTriggerPrototype}: `'smoke-with-trigger'`
* - {@link SolarPanelEquipmentPrototype}: `'solar-panel-equipment'`
* - {@link SolarPanelPrototype}: `'solar-panel'`
* - {@link SoundPrototype}: `'sound'`
* - {@link SpaceConnectionDistanceTraveledAchievementPrototype}: `'space-connection-distance-traveled-achievement'`
* - {@link SpaceConnectionPrototype}: `'space-connection'`
* - {@link SpaceLocationPrototype}: `'space-location'`
* - {@link SpacePlatformHubPrototype}: `'space-platform-hub'`
* - {@link SpacePlatformStarterPackPrototype}: `'space-platform-starter-pack'`
* - {@link SpectatorControllerPrototype}: `'spectator-controller'`
* - {@link SpeechBubblePrototype}: `'speech-bubble'`
* - {@link SpiderLegPrototype}: `'spider-leg'`
* - {@link SpiderUnitPrototype}: `'spider-unit'`
* - {@link SpiderVehiclePrototype}: `'spider-vehicle'`
* - {@link SpidertronRemotePrototype}: `'spidertron-remote'`
* - {@link SplitterPrototype}: `'splitter'`
* - {@link SpritePrototype}: `'sprite'`
* - {@link StickerPrototype}: `'sticker'`
* - {@link StorageTankPrototype}: `'storage-tank'`
* - {@link StraightRailPrototype}: `'straight-rail'`
* - {@link SurfacePropertyPrototype}: `'surface-property'`
* - {@link SurfacePrototype}: `'surface'`
* - {@link TechnologyPrototype}: `'technology'`
* - {@link TemporaryContainerPrototype}: `'temporary-container'`
* - {@link ThrusterPrototype}: `'thruster'`
* - {@link TileEffectDefinition}: `'tile-effect'`
* - {@link TileGhostPrototype}: `'tile-ghost'`
* - {@link TilePrototype}: `'tile'`
* - {@link TipsAndTricksItem}: `'tips-and-tricks-item'`
* - {@link TipsAndTricksItemCategory}: `'tips-and-tricks-item-category'`
* - {@link ToolPrototype}: `'tool'`
* - {@link TrainPathAchievementPrototype}: `'train-path-achievement'`
* - {@link TrainStopPrototype}: `'train-stop'`
* - {@link TransportBeltPrototype}: `'transport-belt'`
* - {@link TreePrototype}: `'tree'`
* - {@link TriggerTargetType}: `'trigger-target-type'`
* - {@link TrivialSmokePrototype}: `'trivial-smoke'`
* - {@link TurretPrototype}: `'turret'`
* - {@link TutorialDefinition}: `'tutorial'`
* - {@link UndergroundBeltPrototype}: `'underground-belt'`
* - {@link UnitPrototype}: `'unit'`
* - {@link UpgradeItemPrototype}: `'upgrade-item'`
* - {@link UseEntityInEnergyProductionAchievementPrototype}: `'use-entity-in-energy-production-achievement'`
* - {@link UseItemAchievementPrototype}: `'use-item-achievement'`
* - {@link UtilityConstants}: `'utility-constants'`
* - {@link UtilitySounds}: `'utility-sounds'`
* - {@link UtilitySprites}: `'utility-sprites'`
* - {@link VirtualSignalPrototype}: `'virtual-signal'`
* - {@link WallPrototype}: `'wall'`
* @see {@link https://lua-api.factorio.com/2.0.47/types/AnyPrototype.html Online documentation}
*/
export type AnyPrototype =
| AccumulatorPrototype
| AchievementPrototype
| ActiveDefenseEquipmentPrototype
| AgriculturalTowerPrototype
| AirbornePollutantPrototype
| AmbientSound
| AmmoCategory
| AmmoItemPrototype
| AmmoTurretPrototype
| AnimationPrototype
| ArithmeticCombinatorPrototype
| ArmorPrototype
| ArrowPrototype
| ArtilleryFlarePrototype
| ArtilleryProjectilePrototype
| ArtilleryTurretPrototype
| ArtilleryWagonPrototype
| AssemblingMachinePrototype
| AsteroidChunkPrototype
| AsteroidCollectorPrototype
| AsteroidPrototype
| AutoplaceControl
| BatteryEquipmentPrototype
| BeaconPrototype
| BeamPrototype
| BeltImmunityEquipmentPrototype
| BlueprintBookPrototype
| BlueprintItemPrototype
| BoilerPrototype
| BuildEntityAchievementPrototype
| BurnerGeneratorPrototype
| BurnerUsagePrototype
| CapsulePrototype
| CaptureRobotPrototype
| CarPrototype
| CargoBayPrototype
| CargoLandingPadPrototype
| CargoPodPrototype
| CargoWagonPrototype
| ChainActiveTriggerPrototype
| ChangedSurfaceAchievementPrototype
| CharacterCorpsePrototype
| CharacterPrototype
| CliffPrototype
| CollisionLayerPrototype
| CombatRobotCountAchievementPrototype
| CombatRobotPrototype
| CompleteObjectiveAchievementPrototype
| ConstantCombinatorPrototype
| ConstructWithRobotsAchievementPrototype
| ConstructionRobotPrototype
| ContainerPrototype
| CopyPasteToolPrototype
| CorpsePrototype
| CreatePlatformAchievementPrototype
| CurvedRailAPrototype
| CurvedRailBPrototype
| CustomEventPrototype
| CustomInputPrototype
| DamageType
| DeciderCombinatorPrototype
| DeconstructWithRobotsAchievementPrototype
| DeconstructibleTileProxyPrototype
| DeconstructionItemPrototype
| DecorativePrototype
| DelayedActiveTriggerPrototype
| DeliverByRobotsAchievementPrototype
| DeliverCategory
| DeliverImpactCombination
| DepleteResourceAchievementPrototype
| DestroyCliffAchievementPrototype
| DisplayPanelPrototype
| DontBuildEntityAchievementPrototype
| DontCraftManuallyAchievementPrototype
| DontKillManuallyAchievementPrototype
| DontResearchBeforeResearchingAchievementPrototype
| DontUseEntityInEnergyProductionAchievementPrototype
| EditorControllerPrototype
| ElectricEnergyInterfacePrototype
| ElectricPolePrototype
| ElectricTurretPrototype
| ElevatedCurvedRailAPrototype
| ElevatedCurvedRailBPrototype
| ElevatedHalfDiagonalRailPrototype
| ElevatedStraightRailPrototype
| EnemySpawnerPrototype
| EnergyShieldEquipmentPrototype
| EntityGhostPrototype
| EquipArmorAchievementPrototype
| EquipmentCategory
| EquipmentGhostPrototype
| EquipmentGridPrototype
| ExplosionPrototype
| FireFlamePrototype
| FishPrototype
| FluidPrototype
| FluidStreamPrototype
| FluidTurretPrototype
| FluidWagonPrototype
| FontPrototype
| FuelCategory
| FurnacePrototype
| FusionGeneratorPrototype
| FusionReactorPrototype
| GatePrototype
| GeneratorEquipmentPrototype
| GeneratorPrototype
| GodControllerPrototype
| GroupAttackAchievementPrototype
| GuiStyle
| GunPrototype
| HalfDiagonalRailPrototype
| HeatInterfacePrototype
| HeatPipePrototype
| HighlightBoxEntityPrototype
| ImpactCategory
| InfinityCargoWagonPrototype
| InfinityContainerPrototype
| InfinityPipePrototype
| InserterPrototype
| InventoryBonusEquipmentPrototype
| ItemEntityPrototype
| ItemGroup
| ItemPrototype
| ItemRequestProxyPrototype
| ItemSubGroup
| ItemWithEntityDataProtot