Prototype/CraftingMachine: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(0.17.67)
(Rotation for non-square machines note)
Line 2: Line 2:
The abstract basis of the assembling machines and furnaces. Contains the properties that both of them have.
The abstract basis of the assembling machines and furnaces. Contains the properties that both of them have.


Note that a crafting machine cannot be rotated unless it has at least one of the following: a fluid box, a heat energy source, a fluid energy source, or a non-square collision box.
Note that a crafting machine cannot be rotated unless it has at least one of the following: a fluid box, a heat energy source, a fluid energy source, or a non-square collision box. Crafting machines with non-square collision boxes can only be rotated before placement, not after.


{{Prototype TOC|''abstract''}}
{{Prototype TOC|''abstract''}}

Revision as of 21:43, 3 September 2019

Prototype definitions » PrototypeBase » Prototype/Entity » Prototype/EntityWithHealth » Prototype/EntityWithOwner » Prototype/CraftingMachine


The abstract basis of the assembling machines and furnaces. Contains the properties that both of them have.

Note that a crafting machine cannot be rotated unless it has at least one of the following: a fluid box, a heat energy source, a fluid energy source, or a non-square collision box. Crafting machines with non-square collision boxes can only be rotated before placement, not after.


Prototype/CraftingMachine — abstract
crafting_categories::table of strings
crafting_speed::double
energy_source::EnergySource
energy_usage::Energy
allowed_effects::EffectTypeLimitation (optional)
always_draw_idle_animation::bool (optional)
animation::Animation4Way (optional)
base_productivity::float (optional)
default_recipe_tint::table of Color (optional)
draw_entity_info_icon_background::bool (optional)
entity_info_icon_shift::vector (optional)
fluid_boxes::table of FluidBox (optional)
idle_animation::Animation4Way (optional)
match_animation_speed_to_activity::bool (optional)
module_specification::ModuleSpecification (optional)
return_ingredients_on_change::bool (optional)
scale_entity_info_icon::bool (optional)
shift_animation_transition_duration::uint16 (optional)
shift_animation_waypoint_stop_duration::uint16 (optional)
shift_animation_waypoints::table of table (array) of vector (optional)
show_recipe_icon::bool (optional)
show_recipe_icon_on_map::bool (optional)
status_colors::table of Color (optional)
working_visualisations::table of WorkingVisualisation (optional)
Inherited from Prototype/EntityWithOwner
allow_run_time_change_of_is_military_target::bool (optional)
is_military_target::bool (optional)
Inherited from Prototype/EntityWithHealth
alert_when_damaged::bool (optional)
attack_reaction::AttackReaction (optional)
corpse::string or table of strings (optional)
create_ghost_on_death::bool (optional)
damaged_trigger_effect::TriggerEffect (optional)
dying_explosion::ExplosionDefinition or table of ExplosionDefinition (optional)
dying_trigger_effect::TriggerEffect (optional)
healing_per_tick::float (optional)
hide_resistances::bool (optional)
integration_patch::Sprite4Way (optional)
integration_patch_render_layer::RenderLayer (optional)
loot::Loot (optional)
max_health::float (optional)
random_corpse_variation::bool (optional)
repair_sound::Sound (optional)
repair_speed_modifier::float (optional)
resistances::Resistances (optional)
Inherited from Prototype/Entity
icons, icon, icon_size (IconSpecification)::IconSpecification
additional_pastable_entities::table of string (optional)
alert_icon_scale::float (optional)
alert_icon_shift::vector (optional)
allow_copy_paste::bool (optional)
autoplace::AutoplaceSpecification (optional)
build_base_evolution_requirement::double (optional)
build_grid_size::uint8 (optional)
build_sound::Sound (optional)
close_sound::Sound (optional)
collision_box::BoundingBox (optional)
collision_mask::CollisionMask (optional)
created_effect::Trigger (optional)
created_smoke::CreateTrivialSmokeEffectItem (optional)
drawing_box::BoundingBox (optional)
emissions_per_second::double (optional)
enemy_map_color::Color (optional)
fast_replaceable_group::string (optional)
flags::EntityPrototypeFlags (optional)
friendly_map_color::Color (optional)
hit_visualization_box::BoundingBox (optional)
map_color::Color (optional)
map_generator_bounding_box::BoundingBox (optional)
minable::MinableProperties (optional)
mined_sound::Sound (optional)
mining_sound::Sound (optional)
next_upgrade::string (optional)
open_sound::Sound (optional)
placeable_by::ItemToPlace or table of ItemToPlace (optional)
protected_from_tile_building::bool (optional)
radius_visualisation_specification::RadiusVisualisationSpecification (optional)
remains_when_mined::string or table of string (optional)
remove_decoratives::string (optional)
rotated_sound::Sound (optional)
selectable_in_game::bool (optional)
selection_box::BoundingBox (optional)
selection_priority::uint8 (optional)
shooting_cursor_size::double (optional)
sticker_box::BoundingBox (optional)
subgroup::string (optional)
tile_height::uint32 (optional)
tile_width::uint32 (optional)
trigger_target_mask::TriggerTargetMask (optional)
vehicle_impact_sound::Sound (optional)
water_reflection::WaterReflectionDefinition (optional)
working_sound::WorkingSound (optional)
Inherited from PrototypeBase
name::string
type::string
localised_description::LocalisedString (optional)
localised_name::LocalisedString (optional)
order::Order (optional)

Extensions

Mandatory properties

This prototype inherits all the properties from Prototype/EntityWithHealth.

energy_usage

Type: Energy
Sets how much energy this machine uses while crafting. Energy usage has to be positive.

crafting_speed

Type: double
How fast this crafting machine can craft. 1 means that for example a 1 second long recipe take 1 second to craft. 0.5 means it takes 2 seconds, and 2 means it takes 0.5 seconds.

Crafting speed has to be positive.

crafting_categories

Type: table of strings
A list of recipe categories this crafting machine can use.

Example:

crafting_categories = {"crafting", "smelting"}

energy_source

Type: EnergySource
Defines how the crafting machine is powered.

When using an electric energy source and drain is not specified, it will be set to energy_usage ÷ 30 automatically.

animation

Type: Animation4Way
The animation played when crafting. When the crafting machine is idle, the animation will be paused.

When a crafting machine cannot be rotated, only the north rotation of the animation will be used.

idle_animation

Type: Animation4Way
The animation played when idle. Idle animation must have the same frame count as animation.

When a crafting machine cannot be rotated, only the north rotation of the idle animation will be used.

Optional properties

fluid_boxes

Type: table of FluidBox
Can have off_when_no_fluid_recipe key that has a bool value. off_when_no_fluid_recipe defaults to false.

If a crafting machine has fluid boxes and off_when_no_fluid_recipe is true, the crafting machine can only be rotated when a recipe consuming or producing fluid is set, or it has one of the other properties listed in #Basics.

fluid_boxes =
    {
      {
        production_type = "input",
        pipe_picture = assembler2pipepictures(),
        pipe_covers = pipecoverspictures(),
        base_area = 10,
        base_level = -1,
        pipe_connections = {{ type="input", position = {0, -2} }},
        secondary_draw_orders = { north = -1 }
      },
      {
        production_type = "output",
        pipe_picture = assembler2pipepictures(),
        pipe_covers = pipecoverspictures(),
        base_area = 10,
        base_level = 1,
        pipe_connections = {{ type="output", position = {0, 2} }},
        secondary_draw_orders = { north = -1 }
      },
      off_when_no_fluid_recipe = true
    },

allowed_effects

Type: EffectTypeLimitation
Sets the module effects that are allowed to be used on this machine.

has_backer_name

Type: bool
Default: false
Whether this machine automatically gets assigned a random name from the list of Factorio backers when it is placed.

scale_entity_info_icon

Type: bool
Default: false
Whether the "alt-mode icon" should be scaled to the size of the machine.

show_recipe_icon

Type: bool
Default: true
Whether the "alt-mode icon" should be drawn at all.

always_draw_idle_animation

Type: bool
Default: false

default_recipe_tint

Type: table of Color
Format:

crafting_machine_tint = { primary = {r=1,g=1,b=1,a=1}, secondary = {r=1,g=1,b=1,a=1}, tertiary = {r=1,g=1,b=1,a=1}, quaternary = {r=1,g=1,b=1,a=1}}

Each key/value pair is optional and defaults to the above value.

return_ingredients_on_change

Type: bool
Default: false
Controls whether the ingredients of an in-progress recipe are destroyed when mining the machine/changing the recipe. If set to true, the ingredients do not get destroyed. This affects only the ingredients of the recipe that is currently in progress, so those that visually have already been consumed while their resulting product has not yet been produced.

entity_info_icon_shift

Type: vector
Default: {0, -0.3} for Prototype/AssemblingMachine and {0, -0.1} for Prototype/Furnace
Shift of the "alt-mode icon" relative to the machine's center.

draw_entity_info_icon_background

Type: bool
Default: true
Whether the "alt-mode icon" should have a black background.

match_animation_speed_to_activity

Type: bool
Default: false
Whether the speed of the animation and working visualization should be based on the machine's speed (boosted or slowed by modules).

base_productivity

Type: float
Default: 0
Productivity bonus that this machine always has.

module_specification

Type: ModuleSpecification
The number of module slots in this machine, and their icon positions.

module_specification = {
  module_info_icon_shift = {
    0,
    0.8
  },
  module_slots = 2
},

working_visualisations

Type: table of WorkingVisualisation