Factorio.com|Forums|Wiki|Mod Portal|API Docs

# Factorio Runtime Docs Version 2.0.77

# LuaTechnology - Runtime Docs

## Class LuaTechnology

One research item.

## Members

reload() |  | Reload this technology from its prototype.
Reload this technology from its prototype.
research_recursive() |  | Research this technology and all of its prerequisites recursively.
Research this technology and all of its prerequisites recursively.
force | :: R LuaForce | The force this technology belongs to.
The force this technology belongs to.
name | :: R string | Name of this technology.
Name of this technology.
localised_name | :: R LocalisedString | Localised name of this technology.
Localised name of this technology.
localised_description | :: R LocalisedString |
prototype | :: R LuaTechnologyPrototype | The prototype of this technology.
The prototype of this technology.
enabled | :: RW boolean | Can this technology be researched?
Can this technology be researched?
visible_when_disabled | :: RW boolean | If this technology will be visible in the research GUI even though it is disabled.
If this technology will be visible in the research GUI even though it is disabled.
upgrade | :: R boolean | Is this an upgrade-type research?
Is this an upgrade-type research?
researched | :: RW boolean | Has this technology been researched? [...]
Has this technology been researched? [...]
prerequisites | :: R dictionary[string → LuaTechnology] | Prerequisites of this technology. [...]
Prerequisites of this technology. [...]
successors | :: R dictionary[string → LuaTechnology] | Successors of this technology, i.e. [...]
Successors of this technology, i.e. [...]
research_unit_ingredients | :: R array[ResearchIngredient] | The types of ingredients that labs will require to research this technology.
The types of ingredients that labs will require to research this technology.
research_unit_count | :: R uint32 | The number of research units required for this technology. [...]
The number of research units required for this technology. [...]
research_unit_energy | :: R double | Amount of energy required to finish a unit of research.
Amount of energy required to finish a unit of research.
order | :: R string | The string used to alphabetically sort these prototypes. [...]
The string used to alphabetically sort these prototypes. [...]
level | :: RW uint32 | The current level of this technology. [...]
The current level of this technology. [...]
research_unit_count_formula | :: R MathExpression? | The count formula, if this research has any. [...]
The count formula, if this research has any. [...]
saved_progress | :: RW double | Saved technology progress fraction as a value in range `[0, 1)`. [...]
Saved technology progress fraction as a value in range `[0, 1)`. [...]
valid | :: R boolean | Is this object valid? [...]
Is this object valid? [...]
object_name | :: R string | The class name of this object. [...]
The class name of this object. [...]

## Methods

### reload()

Reload this technology from its prototype.

### research_recursive()

Research this technology and all of its prerequisites recursively.

## Attributes

### force :: Read LuaForce

The force this technology belongs to.

### name :: Read string

Name of this technology.

### localised_name :: Read LocalisedString

Localised name of this technology.

### localised_description :: Read LocalisedString

### prototype :: Read LuaTechnologyPrototype

The prototype of this technology.

### enabled :: Read|Write boolean

Can this technology be researched?

### visible_when_disabled :: Read|Write boolean

If this technology will be visible in the research GUI even though it is disabled.

### upgrade :: Read boolean

Is this an upgrade-type research?

### researched :: Read|Write boolean

Has this technology been researched? Switching from `false` to `true` will trigger the technology advancement perks; switching from `true` to `false` will reverse them.

### prerequisites :: Read dictionary[string → LuaTechnology]

Prerequisites of this technology. The result maps technology name to the LuaTechnology object.

### successors :: Read dictionary[string → LuaTechnology]

Successors of this technology, i.e. technologies which have this technology as a prerequisite.

### research_unit_ingredients :: Read array[ResearchIngredient]

The types of ingredients that labs will require to research this technology.

### research_unit_count :: Read uint32

The number of research units required for this technology.

This is multiplied by the current research cost multiplier, unless LuaTechnologyPrototype::ignore_tech_cost_multiplier is `true`.

### research_unit_energy :: Read double

Amount of energy required to finish a unit of research.

### order :: Read string

The string used to alphabetically sort these prototypes. It is a simple string that has no additional semantic meaning.

### level :: Read|Write uint32

The current level of this technology. For level-based technology writing to this is the same as researching the technology to the previous level. Writing the level will set LuaTechnology::enabled to `true`.

### research_unit_count_formula :: Read MathExpression?

The count formula, if this research has any. See TechnologyUnit::count_formula for details.

### saved_progress :: Read|Write double

Saved technology progress fraction as a value in range `[0, 1)`. 0 means there is no saved progress.

### valid :: Read boolean

Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.

### object_name :: Read string

The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.

Class used in

- LuaForce::technologies
- LuaForce::current_research
- LuaForce::previous_research
- LuaTechnology::prerequisites
- LuaTechnology::successors
- TechnologyID
- on_research_finished
- on_research_queued
- on_research_reversed
- on_research_started