Prototype/CraftingMachine: Difference between revisions
(Rotation for non-square machines note) |
(Moved note on extremely fast machine speed from Types/EffectTypeLimitation to allowed_effects) |
||
(16 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{Prototype parent|Prototype/ | {{Prototype parent|Prototype/EntityWithOwner}} | ||
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. | ||
Line 13: | Line 13: | ||
== Mandatory properties == | == Mandatory properties == | ||
This prototype inherits all the properties from [[Prototype/ | This prototype inherits all the properties from [[Prototype/EntityWithOwner]]. | ||
{{Prototype property|energy_usage|[[Types/Energy|Energy]]}} | {{Prototype property|energy_usage|[[Types/Energy|Energy]]}} | ||
Line 35: | Line 35: | ||
When using an electric energy source and <code>drain</code> is not specified, it will be set to <code>energy_usage ÷ 30</code> automatically. | When using an electric energy source and <code>drain</code> is not specified, it will be set to <code>energy_usage ÷ 30</code> automatically. | ||
== Optional properties == | == Optional properties == | ||
{{Prototype property|fluid_boxes|[[Types/table|table]] of [[Types/FluidBox|FluidBox]]|optional=true}} | {{Prototype property|fluid_boxes|[[Types/table|table]] of [[Types/FluidBox|FluidBox]]|optional=true}} | ||
Can have off_when_no_fluid_recipe key that has a [[Types/bool|bool]] value. off_when_no_fluid_recipe defaults to false. | Can have off_when_no_fluid_recipe key that has a [[Types/bool|bool]] value. off_when_no_fluid_recipe defaults to false. off_when_no_fluid_recipe is ignored by [[Prototype/Furnace]]s and considered to always be 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 | 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 at the top of the page. | ||
<syntaxhighlight lang="lua">fluid_boxes = | <syntaxhighlight lang="lua">fluid_boxes = | ||
Line 76: | Line 66: | ||
},</syntaxhighlight> | },</syntaxhighlight> | ||
{{Prototype property|allowed_effects|[[Types/EffectTypeLimitation|EffectTypeLimitation]]|optional=true}} | {{Prototype property|allowed_effects|[[Types/EffectTypeLimitation|EffectTypeLimitation]]|No effects are allowed|optional=true}} | ||
Sets the module effects that are allowed to be used on this machine. | Sets the module effects that are allowed to be used on this machine. | ||
Note: If the time to complete a recipe is shorter than one tick, only one craft can be completed per tick, but productivity bonus is applied to the non-limited ''completable'' work. For a simple example, if a recipe were to take half a tick, only one recipe would be completed, but twice the productivity bonus would occur. The surplus production from productivity is '''not''' limited to one craft per tick. | |||
{{Prototype property|scale_entity_info_icon|[[Types/bool|bool]]|false|optional=true}} | {{Prototype property|scale_entity_info_icon|[[Types/bool|bool]]|false|optional=true}} | ||
Line 87: | Line 76: | ||
{{Prototype property|show_recipe_icon|[[Types/bool|bool]]|true|optional=true}} | {{Prototype property|show_recipe_icon|[[Types/bool|bool]]|true|optional=true}} | ||
Whether the "alt-mode icon" should be drawn at all. | Whether the "alt-mode icon" should be drawn at all. | ||
{{Prototype property|return_ingredients_on_change|[[Types/bool|bool]]|true|optional=true}} | |||
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. | |||
{{Prototype property|animation|[[Types/Animation4Way|Animation4Way]]|optional=true}} | |||
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. | |||
The <code>animation_speed</code> of the animation is divided by 2 by the game. For example, the default animation speed of 1 means one animation frame per 2 ticks (30 fps) instead of the usual 60 fps. | |||
{{Prototype property|idle_animation|[[Types/Animation4Way|Animation4Way]]|optional=true}} | |||
Idle animation must have the same frame count as animation. It is used for drawing the machine in idle state, but the is animation frozen on a single frame when the machine is idle.<br> | |||
This is an animation and not just sprite to make it possible for idle state and working state to match their visuals when the machine switches from one state to another. | |||
When a crafting machine cannot be rotated, only the north rotation of the idle animation will be used. | |||
The <code>animation_speed</code> of the animation is divided by 2 by the game. For example, the default animation speed of 1 means one animation frame per 2 ticks (30 fps) instead of the usual 60 fps. | |||
{{Prototype property|always_draw_idle_animation|[[Types/bool|bool]]|false|optional=true}} | {{Prototype property|always_draw_idle_animation|[[Types/bool|bool]]|false|optional=true}} | ||
Only loaded if <code>idle_animation</code> is present. | |||
{{Prototype property|default_recipe_tint|[[Types/table|table]] of [[Types/Color|Color]]|optional=true}} | {{Prototype property|default_recipe_tint|[[Types/table|table]] of [[Types/Color|Color]]|optional=true}} | ||
Format: | Format: | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua">default_recipe_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}}</syntaxhighlight> | ||
Each key/value pair is optional and defaults to the above value. | Each key/value pair is optional and defaults to the above value. | ||
{{Prototype property| | {{Prototype property|shift_animation_waypoints|[[Types/table|table]] of [[Types/table|table]] (array) of [[Types/vector|vector]]|optional=true}} | ||
Table with the following optional key/value pairs: | |||
* north - [[Types/table|array]] of [[Types/vector|vector]] | |||
* east - [[Types/table|array]] of [[Types/vector|vector]] | |||
* south - [[Types/table|array]] of [[Types/vector|vector]] | |||
* west - [[Types/table|array]] of [[Types/vector|vector]] | |||
Only loaded if one of <code>shift_animation_waypoint_stop_duration</code> or <code>shift_animation_transition_duration</code> is not 0. | |||
{{Prototype property|shift_animation_waypoint_stop_duration|[[Types/uint16|uint16]]|0|optional=true}} | |||
Only loaded if <code>shift_animation_waypoints</code> is present. | |||
{{Prototype property|shift_animation_transition_duration |[[Types/uint16|uint16]]|0|optional=true}} | |||
Only loaded if <code>shift_animation_waypoints</code> is present. | |||
{{Prototype property|status_colors|[[Types/table|table]] of [[Types/Color|Color]]|optional=true}} | |||
Table with the following optional key/value pairs: | |||
* idle - [[Types/Color|Color]] - Default: White | |||
* no_minable_resources - [[Types/Color|Color]] - Default: <code>idle</code> | |||
* full_output - [[Types/Color|Color]] - Default: <code>idle</code> | |||
* insufficient_input - [[Types/Color|Color]] - Default: <code>idle</code> | |||
* disabled - [[Types/Color|Color]] - Default: <code>idle</code> | |||
* no_power - [[Types/Color|Color]] - Default: No color | |||
* working - [[Types/Color|Color]] - Default: White | |||
* low_power - [[Types/Color|Color]] - Default: <code>working</code> | |||
Used by [[Types/WorkingVisualisation#apply_tint]]. | |||
{{Prototype property|entity_info_icon_shift|[[Types/vector|vector]]|<nowiki>{0, -0.3}</nowiki> for [[Prototype/AssemblingMachine]] and <nowiki>{0, -0.1}</nowiki> for [[Prototype/Furnace]]|optional=true}} | {{Prototype property|entity_info_icon_shift|[[Types/vector|vector]]|<nowiki>{0, -0.3}</nowiki> for [[Prototype/AssemblingMachine]] and <nowiki>{0, -0.1}</nowiki> for [[Prototype/Furnace]]|optional=true}} | ||
Line 104: | Line 137: | ||
Whether the "alt-mode icon" should have a black background. | Whether the "alt-mode icon" should have a black background. | ||
{{Prototype property|match_animation_speed_to_activity|[[Types/bool|bool]]| | {{Prototype property|match_animation_speed_to_activity|[[Types/bool|bool]]|true|optional=true}} | ||
Whether the speed of the animation and working visualization should be based on the machine's speed (boosted or slowed by modules). | Whether the speed of the animation and working visualization should be based on the machine's speed (boosted or slowed by modules). | ||
{{Prototype property|show_recipe_icon_on_map|[[Types/bool|bool]]|true|optional=true}} | |||
Whether the recipe icon should be shown on the map. | |||
{{Prototype property|base_productivity|[[Types/float|float]]|0|optional=true}} | {{Prototype property|base_productivity|[[Types/float|float]]|0|optional=true}} | ||
Line 122: | Line 158: | ||
{{Prototype property|working_visualisations|[[Types/table|table]] of [[Types/WorkingVisualisation|WorkingVisualisation]]|optional=true}} | {{Prototype property|working_visualisations|[[Types/table|table]] of [[Types/WorkingVisualisation|WorkingVisualisation]]|optional=true}} | ||
Used to display different animations when the machine is running, for example tinted based on the current recipe. | |||
The <code>animation_speed</code> of the animations is divided by 2 by the game. For example, the default animation speed of 1 means one animation frame per 2 ticks (30 fps) instead of the usual 60 fps. |
Latest revision as of 16:18, 17 June 2022
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.
Extensions
- Prototype/AssemblingMachine assembling-machine
- Prototype/RocketSilo rocket-silo
- Prototype/Furnace furnace
Mandatory properties
This prototype inherits all the properties from Prototype/EntityWithOwner.
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.
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. off_when_no_fluid_recipe is ignored by Prototype/Furnaces and considered to always be 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 at the top of the page.
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
Default: No effects are allowed
Sets the module effects that are allowed to be used on this machine.
Note: If the time to complete a recipe is shorter than one tick, only one craft can be completed per tick, but productivity bonus is applied to the non-limited completable work. For a simple example, if a recipe were to take half a tick, only one recipe would be completed, but twice the productivity bonus would occur. The surplus production from productivity is not limited to one craft per tick.
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.
return_ingredients_on_change
Type: bool
Default: true
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.
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.
The animation_speed
of the animation is divided by 2 by the game. For example, the default animation speed of 1 means one animation frame per 2 ticks (30 fps) instead of the usual 60 fps.
idle_animation
Type: Animation4Way
Idle animation must have the same frame count as animation. It is used for drawing the machine in idle state, but the is animation frozen on a single frame when the machine is idle.
This is an animation and not just sprite to make it possible for idle state and working state to match their visuals when the machine switches from one state to another.
When a crafting machine cannot be rotated, only the north rotation of the idle animation will be used.
The animation_speed
of the animation is divided by 2 by the game. For example, the default animation speed of 1 means one animation frame per 2 ticks (30 fps) instead of the usual 60 fps.
always_draw_idle_animation
Type: bool
Default: false
Only loaded if idle_animation
is present.
default_recipe_tint
default_recipe_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.
shift_animation_waypoints
Type: table of table (array) of vector
Table with the following optional key/value pairs:
Only loaded if one of shift_animation_waypoint_stop_duration
or shift_animation_transition_duration
is not 0.
shift_animation_waypoint_stop_duration
Type: uint16
Default: 0
Only loaded if shift_animation_waypoints
is present.
shift_animation_transition_duration
Type: uint16
Default: 0
Only loaded if shift_animation_waypoints
is present.
status_colors
Type: table of Color
Table with the following optional key/value pairs:
- idle - Color - Default: White
- no_minable_resources - Color - Default:
idle
- full_output - Color - Default:
idle
- insufficient_input - Color - Default:
idle
- disabled - Color - Default:
idle
- no_power - Color - Default: No color
- working - Color - Default: White
- low_power - Color - Default:
working
Used by Types/WorkingVisualisation#apply_tint.
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: true
Whether the speed of the animation and working visualization should be based on the machine's speed (boosted or slowed by modules).
show_recipe_icon_on_map
Type: bool
Default: true
Whether the recipe icon should be shown on the map.
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
Used to display different animations when the machine is running, for example tinted based on the current recipe.
The animation_speed
of the animations is divided by 2 by the game. For example, the default animation speed of 1 means one animation frame per 2 ticks (30 fps) instead of the usual 60 fps.