<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.factorio.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Muppet9010</id>
	<title>Official Factorio Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.factorio.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Muppet9010"/>
	<link rel="alternate" type="text/html" href="https://wiki.factorio.com/Special:Contributions/Muppet9010"/>
	<updated>2026-04-14T15:37:49Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Console&amp;diff=195070</id>
		<title>Console</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Console&amp;diff=195070"/>
		<updated>2023-11-04T15:48:00Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Access a mod&amp;#039;s data */ correct mod name in text description to match example code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
The &#039;&#039;&#039;console&#039;&#039;&#039; is Factorio&#039;s in-game command-line interface. See [[command line parameters]] for the command line interface of the Factorio executable.&lt;br /&gt;
&lt;br /&gt;
The in-game console can be used for:&lt;br /&gt;
&lt;br /&gt;
* Chatting with other players&lt;br /&gt;
* Occasional status updates&lt;br /&gt;
* Running commands / scripts / cheats&lt;br /&gt;
&lt;br /&gt;
There are three types of commands:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[#Normal commands|Normal]]&#039;&#039;&#039; - Display information about the game and customize your experience.&lt;br /&gt;
* &#039;&#039;&#039;[[#Multiplayer commands|Multiplayer]]&#039;&#039;&#039; - Message filtering, banning users, etc.&lt;br /&gt;
* &#039;&#039;&#039;[[#Scripting and cheat commands|Scripting/Cheating]]&#039;&#039;&#039; - Run small Lua scripts (but they &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;disable achievements for the save game&amp;lt;/span&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== Using the console ===&lt;br /&gt;
The console display can be toggled with the {{keybinding|/}} (slash) or {{keybinding|~}} (tilde) keys.&lt;br /&gt;
&lt;br /&gt;
You can customize the keys via &#039;&#039;&#039;Settings menu → Controls → Toggle chat (and Lua console)&#039;&#039;&#039;.&lt;br /&gt;
When the console is open, you&#039;ll see a blinking cursor at the bottom of the screen; type your message or command and hit &#039;&#039;&#039;Return&#039;&#039;&#039; to send it (this will also close the console).&lt;br /&gt;
Documentation about message and command prefixes can be found further down this page.&lt;br /&gt;
&lt;br /&gt;
The console supports [[rich text]] tags. These tags are useful for sharing blueprints, marking map locations in chat or adding icons to map markers and train stations. Ctrl + Alt-clicking the map or ground will automatically insert a GPS tag and post it into the console. Shift-clicking most things with the console open will insert a tag for that thing into the console.&lt;br /&gt;
&lt;br /&gt;
When the console is closed, only the most recent messages/commands will be displayed, but they will gradually fade away (opening the console will immediately re-display all recent messages).&lt;br /&gt;
Note that by default, all executed commands are made visible to all users. The fade-out time can be changed via &#039;&#039;&#039;Settings menu → Interface → Chat message delay&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The console can be cleared with the &#039;&#039;&#039;/clear&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Use the {{keybinding|&amp;amp;uarr;}} and {{keybinding|&amp;amp;darr;}} keys to scroll through the console history. The {{keybinding|Tab}} key provides intelligent code completion on commands, options and player names.&lt;br /&gt;
&lt;br /&gt;
== Normal commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Command&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Example&lt;br /&gt;
! style=&amp;quot;width:46%&amp;quot;| Description&lt;br /&gt;
! style=&amp;quot;width:4%&amp;quot;| Admin only&lt;br /&gt;
|-&lt;br /&gt;
| /alerts &amp;lt;enable/disable/mute/unmute&amp;gt; &amp;lt;alert&amp;gt;&lt;br /&gt;
| /alerts disable turret_fire&lt;br /&gt;
| Enables, disables, mutes, or unmutes the given  [[alerts|alert]] type. Available alerts: entity_destroyed, entity_under_attack, not_enough_construction_robots, no_material_for_construction, not_enough_repair packs, turret_fire, custom, no_storage, train_out_of_fuel, fluid_mixing.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /clear&lt;br /&gt;
| /clear&lt;br /&gt;
| Clears the console.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /color &amp;lt;color&amp;gt;&lt;br /&gt;
| /color 20 255 255&lt;br /&gt;
| Changes your color. Can either be one of the pre-defined colors or [[:Wikipedia:RGB_color_space|RGB value]] in the format of “# # #”. Available colors: default, red, green, blue, orange, yellow, pink, purple, white, black, gray, brown, cyan, acid.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /enable-research-queue&lt;br /&gt;
| /enable-research-queue&lt;br /&gt;
| Enables the [[research]] queue.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /evolution&lt;br /&gt;
| /evolution&lt;br /&gt;
| Prints info about the alien evolution factor.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /help [command]&lt;br /&gt;
| /help&lt;br /&gt;
| Prints a list of available commands, the optional argument can specify the command that should be described.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /h [command]&lt;br /&gt;
| /h&lt;br /&gt;
| Same as /help.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /mute-programmable-speaker &amp;lt;mute/unmute&amp;gt; &amp;lt;local/everyone&amp;gt;&lt;br /&gt;
| /mute-programmable-speaker mute local&lt;br /&gt;
| Mutes or unmutes the global sounds created by the Programmable Speaker. Use “local” to mute just the local client. Admins can use “everyone” to mute the sounds for everyone on the server.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /perf-avg-frames &amp;lt;number&amp;gt;&lt;br /&gt;
| /perf-avg-frames 100&lt;br /&gt;
| Number of ticks/updates used to average performance counters. Default is 100. Value of 5-10 is recommended for fast convergence, but numbers will jitter more rapidly.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /permissions&lt;br /&gt;
| /permissions&lt;br /&gt;
| Opens the permissions GUI.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /permissions &amp;lt;action&amp;gt; &amp;lt;parameters&amp;gt;&lt;br /&gt;
| /permissions add-player DeveloperGroup kovarex&lt;br /&gt;
| Available actions are add-player &amp;lt;group&amp;gt; &amp;lt;player&amp;gt;, create-group &amp;lt;name&amp;gt;, delete-group &amp;lt;group&amp;gt;, edit-group &amp;lt;group&amp;gt; &amp;lt;input_action&amp;gt; &amp;lt;true/false&amp;gt;, get-player-group &amp;lt;player&amp;gt;, remove-player &amp;lt;group&amp;gt; &amp;lt;player&amp;gt;, rename-group &amp;lt;group&amp;gt; &amp;lt;new_name&amp;gt; and reset&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /reset-tips&lt;br /&gt;
| /reset-tips&lt;br /&gt;
| Resets the state of the tips and tricks as if the game was just started for the first time.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /screenshot [x resolution] [y resolution] [zoom]&lt;br /&gt;
| /screenshot&lt;br /&gt;
| Takes a screenshot with the GUI hidden, centered on the player. It is saved in the &amp;quot;script-output&amp;quot; subfolder of your [[User data directory]].  Resolution is optional and defaults to the current window size. Zoom is optional and defaults to 1.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /seed&lt;br /&gt;
| /seed&lt;br /&gt;
| Prints the starting map seed.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /time&lt;br /&gt;
| /time&lt;br /&gt;
| Prints info about how old the map is.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-action-logging&lt;br /&gt;
| /toggle-action-logging&lt;br /&gt;
| Toggles logging all input actions performed by the game. This value isn’t persisted between game restarts and only affects your local game in multiplayer sessions.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-heavy-mode&lt;br /&gt;
| /toggle-heavy-mode&lt;br /&gt;
| Used to investigate [[Desynchronization#Using_heavy_mode_command|desyncs]]. Will slow down the game and make multiplayer unplayable.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /unlock-shortcut-bar&lt;br /&gt;
| /unlock-shortcut-bar&lt;br /&gt;
| Unlocks all [[shortcut bar]] items, including blueprint string import, copy &amp;amp; paste, deconstruction and upgrade planner.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /unlock-tips&lt;br /&gt;
| /unlock-tips&lt;br /&gt;
| Unlocks all tips and tricks entries.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /version&lt;br /&gt;
| /version&lt;br /&gt;
| Prints the current game version.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multiplayer commands ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Command&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Example&lt;br /&gt;
! style=&amp;quot;width:46%&amp;quot;| Description&lt;br /&gt;
! style=&amp;quot;width:4%&amp;quot;| Admin only&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;message&amp;gt;&lt;br /&gt;
| Hello team!&lt;br /&gt;
| Console input that does not start with {{keybinding|/}} is shown as a chat message to your team.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /admin&lt;br /&gt;
| /admin&lt;br /&gt;
| Opens the player management GUI.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /admins&lt;br /&gt;
| /admins&lt;br /&gt;
| Prints a list of game admins.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /ban &amp;lt;player&amp;gt; &amp;lt;reason&amp;gt;&lt;br /&gt;
| /ban xTROLLx Throwing grenades in base&lt;br /&gt;
| Bans the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /bans&lt;br /&gt;
| /bans&lt;br /&gt;
| Prints a list of banned players.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /banlist &amp;lt;add/remove/get/clear&amp;gt; &amp;lt;player&amp;gt;&lt;br /&gt;
| /banlist get&lt;br /&gt;
| Adds or removes a player from the banlist. Same as /ban or /unban.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /config &amp;lt;get/set&amp;gt; &amp;lt;option&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
| /config set password hunter2&lt;br /&gt;
| Gets or sets various multiplayer game settings. Available configs are: afk-auto-kick, allow-commands, allow-debug-settings, autosave-interval, autosave-only-on-server, ignore-player-limit-for-returning-players, max-players, max-upload-speed, only-admins-can-pause, password, require-user-verification, visibility-lan, visibility-public. The units for the options afk-auto-kick and autosave-interval are in minutes.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /delete-blueprint-library &amp;lt;player&amp;gt;&lt;br /&gt;
| /delete-blueprint-library everybody confirm&lt;br /&gt;
| Deletes the blueprint library storage for the given offline player from the save file. Enter “everybody confirm” to delete the storage of all offline players.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /demote &amp;lt;player&amp;gt;&lt;br /&gt;
| /demote AzureDiamond&lt;br /&gt;
| Demotes the player from admin.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /ignore &amp;lt;player&amp;gt;&lt;br /&gt;
| /ignore Cthon98&lt;br /&gt;
| Prevents the chat from showing messages from this player. Admin messages are still shown.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /ignores&lt;br /&gt;
| /ignores&lt;br /&gt;
| Prints a list of ignored players.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /kick &amp;lt;player&amp;gt; &amp;lt;reason&amp;gt;&lt;br /&gt;
| /kick xTROLLx Throwing grenades in base&lt;br /&gt;
| Kicks the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /mute &amp;lt;player&amp;gt;&lt;br /&gt;
| /mute Cthon98&lt;br /&gt;
| Prevents the player from saying anything in chat.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /mutes&lt;br /&gt;
| /mutes&lt;br /&gt;
| All players that are muted (can’t talk in chat).&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /open &amp;lt;player&amp;gt;&lt;br /&gt;
| /open AzureDiamond&lt;br /&gt;
| Opens another player’s inventory.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /o &amp;lt;player&amp;gt;&lt;br /&gt;
| /o AzureDiamond&lt;br /&gt;
| Same as /open.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /players [online/o/count/c]&lt;br /&gt;
| /players&lt;br /&gt;
| Prints a list of players in the game. (parameter online/o, it prints only players that are online, count/c prints only count)&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /p [online/o/count/c]&lt;br /&gt;
| /p o c&lt;br /&gt;
| Same as /players.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /promote &amp;lt;player&amp;gt;&lt;br /&gt;
| /promote AzureDiamond&lt;br /&gt;
| Promotes the player to admin.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /purge &amp;lt;player&amp;gt;&lt;br /&gt;
| /purge Cthon98&lt;br /&gt;
| Clears all the messages from this player from the chat log.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /reply &amp;lt;message&amp;gt;&lt;br /&gt;
| /reply oh, really?&lt;br /&gt;
| Replies to the last player that whispered to you.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /r &amp;lt;message&amp;gt;&lt;br /&gt;
| /r oh, really?&lt;br /&gt;
| Same as /reply.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /server-save&lt;br /&gt;
| /server-save&lt;br /&gt;
| Saves the game on the server in a multiplayer game.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /shout &amp;lt;message&amp;gt;&lt;br /&gt;
| /shout Hello world!&lt;br /&gt;
| Sends a message to all players including other forces.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /s &amp;lt;message&amp;gt;&lt;br /&gt;
| /s Hello world!&lt;br /&gt;
| Same as /shout.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /swap-players &amp;lt;player&amp;gt; [player]&lt;br /&gt;
| /swap-players AzureDiamond&lt;br /&gt;
| Swaps your character with the given player’s character, or if two players are given swaps the two player characters.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /unban &amp;lt;player&amp;gt;&lt;br /&gt;
| /unban xTROLLx&lt;br /&gt;
| Unbans the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /unignore &amp;lt;player&amp;gt;&lt;br /&gt;
| /unignore Cthon98&lt;br /&gt;
| Allows the chat to show messages from this player.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /unmute &amp;lt;player&amp;gt;&lt;br /&gt;
| /unmute Cthon98&lt;br /&gt;
| Allows the player to talk in chat again.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /whisper &amp;lt;player&amp;gt; &amp;lt;message&amp;gt;&lt;br /&gt;
| /whisper AzureDiamond that&#039;s what I see&lt;br /&gt;
| Sends a message to the specified player.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /w &amp;lt;player&amp;gt; &amp;lt;message&amp;gt;&lt;br /&gt;
| /w AzureDiamond that&#039;s what I see&lt;br /&gt;
| Same as /whisper.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /whitelist &amp;lt;add/remove/get/clear&amp;gt; [player]&lt;br /&gt;
| /whitelist get&lt;br /&gt;
| Adds or removes a player from the whitelist, where only whitelisted players can join the game. Enter nothing for “player” when using “get” to print a list of all whitelisted players. An empty whitelist disables the whitelist functionality allowing anyone to join.&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Scripting and cheat commands ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| /cheat &amp;lt;all&amp;gt;&lt;br /&gt;
| Researches all technologies and enables cheat mode. Using the &#039;&#039;&#039;all&#039;&#039;&#039; option also gives the player some additional items.&lt;br /&gt;
|-&lt;br /&gt;
| /command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed).&lt;br /&gt;
|-&lt;br /&gt;
| /c &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed).&lt;br /&gt;
|-&lt;br /&gt;
| /editor&lt;br /&gt;
| Toggles the map editor.&lt;br /&gt;
|-&lt;br /&gt;
| /measured-command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed) and measures time it took.&lt;br /&gt;
|-&lt;br /&gt;
| /mc &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed) and measures time it took.&lt;br /&gt;
|-&lt;br /&gt;
| /silent-command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed) without printing it to the console.&lt;br /&gt;
|-&lt;br /&gt;
| /sc &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed) without printing it to the console.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is a very powerful feature, which also allows cheating, and as such &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;achievements will be permanently disabled for the save&amp;lt;/span&amp;gt; as soon as you use a script command.&lt;br /&gt;
&lt;br /&gt;
== Basic example scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Use it as calculator ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(1234*5678)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zoom beyond normal bounds ===&lt;br /&gt;
Note that zooming too far out can cause performance hits. Be careful.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.zoom=0.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mine faster ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.manual_mining_speed_modifier=1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Craft faster ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.manual_crafting_speed_modifier=1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unlock and research all technologies ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.research_all_technologies()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Undo this with the command in the next section.&lt;br /&gt;
&lt;br /&gt;
Note: Specific technologies can be researched using the [[map editor]] by shift clicking the &amp;quot;start research&amp;quot; button on the technology GUI.&lt;br /&gt;
&lt;br /&gt;
=== Unresearch all technologies ===&lt;br /&gt;
This does not reset manually applied bonuses&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, tech in pairs(game.player.force.technologies) do &lt;br /&gt;
	tech.researched=false&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Specific technologies can be unresearched using the [[map editor]] by clicking the &amp;quot;un-research&amp;quot; button on the technology GUI.&lt;br /&gt;
&lt;br /&gt;
=== Reset your force ===&lt;br /&gt;
This resets all data for your force, including kill and production statistics, technologies, bonuses and charting status.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.reset()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Always show rail block visualization ===&lt;br /&gt;
Permanently show the rail block visualization instead of only when holding a rail signal. Disable by replacing true with false.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.game_view_settings.show_rail_block_visualisation = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set all trains to Automatic mode ===&lt;br /&gt;
Set all trains to automatic mode - for example after building them with a blueprint. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for key,ent in pairs (game.player.surface.find_entities_filtered{name=&amp;quot;locomotive&amp;quot;}) do &lt;br /&gt;
    ent.train.manual_mode = false&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inventory manipulation scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Cheat mode ===&lt;br /&gt;
Allows for infinite free crafting. Disable by replacing true with false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.cheat_mode=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Refill resources (refill oil, iron etc.) ===&lt;br /&gt;
While holding the cursor over a resource tile in-game:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.selected.amount=7500&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively you can refill all resources in the map with the following command. Change ore.amount to the desired value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c surface = game.player.surface&lt;br /&gt;
for _, ore in pairs(surface.find_entities_filtered({type=&amp;quot;resource&amp;quot;})) do&lt;br /&gt;
    ore.amount = 10000&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add items to the player&#039;s inventory ===&lt;br /&gt;
Replace iron-plate with the [[data.raw|internal name]] of the item desired.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.insert{name=&amp;quot;iron-plate&amp;quot;, count=100}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For instance, here&#039;s a stack of the god-mode energy system interface:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.insert{name=&amp;quot;electric-energy-interface&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are several god-mode items available:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;infinity-chest&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;infinity-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;electric-energy-interface&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;heat-interface&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a powerful armor with equipment and some tools for construction:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c	local player = game.player&lt;br /&gt;
player.insert{name=&amp;quot;power-armor-mk2&amp;quot;, count = 1}&lt;br /&gt;
local p_armor = player.get_inventory(5)[1].grid&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;energy-shield-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;energy-shield-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;personal-roboport-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;night-vision-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;battery-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;battery-mk2-equipment&amp;quot;})&lt;br /&gt;
player.insert{name=&amp;quot;construction-robot&amp;quot;, count = 25}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase player inventory slots ===&lt;br /&gt;
Gives 100 additional bonus inventory slots to your entire force. Used by the [[Toolbelt (research)]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.character_inventory_slots_bonus=100&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== World manipulation scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Reveal the map around the player ===&lt;br /&gt;
&lt;br /&gt;
Reveals the map around the player, similar to a [[radar]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local radius=150&lt;br /&gt;
game.player.force.chart(game.player.surface, {{game.player.position.x-radius, game.player.position.y-radius}, {game.player.position.x+radius, game.player.position.y+radius}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or from start position&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local radius=150&lt;br /&gt;
game.player.force.chart(game.player.surface, {{x = -radius, y = -radius}, {x = radius, y = radius}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Change 150 to the desired radius, higher values take longer.&lt;br /&gt;
&lt;br /&gt;
=== Hide revealed map ===&lt;br /&gt;
&lt;br /&gt;
Hides all revealed chunks, inverted map revealing.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local force = game.player.force&lt;br /&gt;
for chunk in surface.get_chunks() do&lt;br /&gt;
  force.unchart_chunk({x = chunk.x, y = chunk.y}, surface)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reveal all generated map ===&lt;br /&gt;
&lt;br /&gt;
Revels all of the generated map to the player&#039;s team.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.chart_all()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete chunks ===&lt;br /&gt;
If much of the map is revealed, it increases the size of the save file. The following command cancels the generation of all chunks that are currently queued for generation and removes chunks outside a 32 chunks radius around 0,0. Note that this will remove player entities if there are any on these chunks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface;&lt;br /&gt;
game.player.force.cancel_charting(surface); &lt;br /&gt;
local chunk_radius = 32;&lt;br /&gt;
for chunk in surface.get_chunks() do&lt;br /&gt;
  if (chunk.x &amp;lt; -chunk_radius or chunk.x &amp;gt; chunk_radius or chunk.y &amp;lt; -chunk_radius or chunk.y &amp;gt; chunk_radius) then&lt;br /&gt;
    surface.delete_chunk(chunk)&lt;br /&gt;
  end&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete unrevealed chunks ===&lt;br /&gt;
This command deletes chunks that are not revealed by the player. Can be used after the command for [[#Hide revealed map|hiding revealed map]] to delete the chunks not covered by radar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;/c local surface = game.player.surface&lt;br /&gt;
local force = game.player.force&lt;br /&gt;
for chunk in surface.get_chunks() do&lt;br /&gt;
  if not force.is_chunk_charted(surface, chunk) then&lt;br /&gt;
    surface.delete_chunk(chunk)&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Turn off night ===&lt;br /&gt;
Enables eternal day.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.always_day=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change game speed ===&lt;br /&gt;
0.5 is half speed, 1 is default, 2 is double speed, etc. Minimum is 0.01. This can be used for a lot of things like when you know you will have to wait for long periods of time for something to complete. Increasing will decrease performance, be careful.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.speed=X&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Freeze time ===&lt;br /&gt;
Stops the advancement of the time. Unfreezes it if you by replace &amp;quot;true&amp;quot; with &amp;quot;false&amp;quot;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.freeze_daytime=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove all pollution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.clear_pollution()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Completely turn off pollution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, surface in pairs(game.surfaces) do&lt;br /&gt;
  surface.clear_pollution()&lt;br /&gt;
end&lt;br /&gt;
game.map_settings.pollution.enabled = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add a lot of pollution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.pollute(game.player.position, 1000000)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where speakers are, who placed them ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local speakers = game.player.surface.find_entities_filtered{force = game.player.force, type=&amp;quot;programmable-speaker&amp;quot;}&lt;br /&gt;
for key, speaker in pairs(speakers) do&lt;br /&gt;
    game.player.print(speaker.last_user.name .. &amp;quot; placed a speaker at [gps=&amp;quot; .. speaker.position.x .. &amp;quot;,&amp;quot; .. speaker.position.y .. &amp;quot;]&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable friendly fire for your force ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.friendly_fire = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add new resource patch ===&lt;br /&gt;
This creates a new 11×11 patch of resources, centered on the player character, where the ground is not water.&lt;br /&gt;
The patch it creates is perfectly square but it randomizes the amount similar to natural generation, with fewer ore at the edges and more ore in the center.&lt;br /&gt;
The default numbers result in a patch with 2500-3000 ore.&lt;br /&gt;
&lt;br /&gt;
If you want a larger patch, change &amp;quot;local size = 5&amp;quot; to a larger number.&lt;br /&gt;
A larger patch will have exponentially more ore.&lt;br /&gt;
Entering a number above 30 is not recommended.&lt;br /&gt;
&lt;br /&gt;
If you want a richer patch, change &amp;quot;local density = 10&amp;quot; to a larger number.&lt;br /&gt;
Entering a very large number shouldn&#039;t hurt anything but you probably don&#039;t need to go above 100.&lt;br /&gt;
&lt;br /&gt;
To choose which resource is spawned, change &amp;quot;stone&amp;quot; near the bottom to &amp;quot;iron-ore&amp;quot;, &amp;quot;copper-ore&amp;quot;, &amp;quot;coal&amp;quot;, or &amp;quot;uranium-ore&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local ore=nil&lt;br /&gt;
local size=5&lt;br /&gt;
local density=10&lt;br /&gt;
for y=-size, size do&lt;br /&gt;
	for x=-size, size do&lt;br /&gt;
		a=(size+1-math.abs(x))*10&lt;br /&gt;
		b=(size+1-math.abs(y))*10&lt;br /&gt;
		if a&amp;lt;b then&lt;br /&gt;
			ore=math.random(a*density-a*(density-8), a*density+a*(density-8))&lt;br /&gt;
		end&lt;br /&gt;
		if b&amp;lt;a then&lt;br /&gt;
			ore=math.random(b*density-b*(density-8), b*density+b*(density-8))&lt;br /&gt;
		end&lt;br /&gt;
		if surface.get_tile(game.player.position.x+x, game.player.position.y+y).collides_with(&amp;quot;ground-tile&amp;quot;) then&lt;br /&gt;
			surface.create_entity({name=&amp;quot;stone&amp;quot;, amount=ore, position={game.player.position.x+x, game.player.position.y+y}})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more flexibility, the [[map editor]] can also be used to create/alter/remove resource patches.&lt;br /&gt;
&lt;br /&gt;
=== Remove resources around the player ===&lt;br /&gt;
Removes all resource patches from the ground in a 50 x 50 area around the player.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local size=50&lt;br /&gt;
local pos=game.player.position&lt;br /&gt;
&lt;br /&gt;
for _, e in pairs(surface.find_entities_filtered{area={{pos.x-size, pos.y-size},{pos.x+size, pos.y+size}}, type=&amp;quot;resource&amp;quot;}) &lt;br /&gt;
	do e.destroy() &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add new oil patch ===&lt;br /&gt;
This creates 9 crude oil patches in a 3×3 square.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for y=0,2 do&lt;br /&gt;
	for x=0,2 do&lt;br /&gt;
		game.player.surface.create_entity({name=&amp;quot;crude-oil&amp;quot;, amount=100000, position={game.player.position.x+x*7-7, game.player.position.y+y*7-7}})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or randomly without any collision:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local position=nil&lt;br /&gt;
for i=1,9 do&lt;br /&gt;
	position=game.player.surface.find_non_colliding_position(&amp;quot;crude-oil&amp;quot;, game.player.position, 0, i/2+1.5)&lt;br /&gt;
	if position then &lt;br /&gt;
		game.player.surface.create_entity({name=&amp;quot;crude-oil&amp;quot;, amount=100000, position=position})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Regenerate resources ===&lt;br /&gt;
For solid resources like iron, destroys all resource entities and creates resource entities as in the original map generation. For fluid resources like oil, sets the yield of all existing resource entities to the original amount. Regenerates resources on the entire surface.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
for _, e in pairs(surface.find_entities_filtered{type=&amp;quot;resource&amp;quot;}) do&lt;br /&gt;
  if e.prototype.infinite_resource then&lt;br /&gt;
    e.amount = e.initial_amount&lt;br /&gt;
  else&lt;br /&gt;
    e.destroy()&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
local non_infinites = {}&lt;br /&gt;
for resource, prototype in pairs(game.get_filtered_entity_prototypes{{filter=&amp;quot;type&amp;quot;, type=&amp;quot;resource&amp;quot;}}) do&lt;br /&gt;
  if not prototype.infinite_resource then&lt;br /&gt;
    table.insert(non_infinites, resource)&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
surface.regenerate_entity(non_infinites)&lt;br /&gt;
for _, e in pairs(surface.find_entities_filtered{type=&amp;quot;mining-drill&amp;quot;}) do&lt;br /&gt;
    e.update_connections()&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Count entities ===&lt;br /&gt;
Counts all entities whose name includes the string in local entity.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local entity=&amp;quot;belt&amp;quot;&lt;br /&gt;
local surface=game.player.surface&lt;br /&gt;
local count=0&lt;br /&gt;
for key, ent in pairs(surface.find_entities_filtered({force=game.player.force})) do&lt;br /&gt;
	if string.find(ent.name,entity) then&lt;br /&gt;
		count=count+1&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
game.player.print(count)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Turn off cliff generation ===&lt;br /&gt;
Sets size to &amp;quot;none&amp;quot;. Only effective on chunks that are generated after using this command. Use [[#Remove all cliffs]] to delete existing cliffs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local mgs = game.player.surface.map_gen_settings&lt;br /&gt;
mgs.cliff_settings.cliff_elevation_0 = 1024&lt;br /&gt;
game.player.surface.map_gen_settings = mgs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove all cliffs ===&lt;br /&gt;
Removes all cliffs existing cliffs from the world. Use [[#Turn off cliff generation]] to turn off cliff generation in new chunks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, v in pairs(game.player.surface.find_entities_filtered{type=&amp;quot;cliff&amp;quot;}) do&lt;br /&gt;
  v.destroy()&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete all decoratives ===&lt;br /&gt;
Delete the decoratives that can be found in the world.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.destroy_decoratives({})&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change map generation settings ===&lt;br /&gt;
This allows to change the map generation settings for new chunks; it does not alter already generated chunks. [[#Delete chunks|Deleted chunks]] are affected by the setting change because they are newly generated when they get explored again.&lt;br /&gt;
&lt;br /&gt;
To change resource generation settings, replace &amp;quot;iron-ore&amp;quot; with the [[Data.raw#resource|resource]] that should be changed and replace &amp;quot;very-high&amp;quot; with the desired [https://lua-api.factorio.com/latest/Concepts.html#MapGenSize MapGenSize] in the following command. Replace &amp;quot;iron-ore&amp;quot; with &amp;quot;enemy-base&amp;quot; to change the enemy base generation settings. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local resource = &amp;quot;iron-ore&amp;quot;&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.autoplace_controls[resource].size = &amp;quot;very-high&amp;quot;&lt;br /&gt;
mgs.autoplace_controls[resource].frequency = &amp;quot;very-high&amp;quot;&lt;br /&gt;
mgs.autoplace_controls[resource].richness = &amp;quot;very-high&amp;quot;&lt;br /&gt;
surface.map_gen_settings = mgs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change water generation settings, replace &amp;quot;very-high&amp;quot; with the desired [https://lua-api.factorio.com/latest/Concepts.html#MapGenSize MapGenSize] in the following command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.water = &amp;quot;very-high&amp;quot; --[[ size]]&lt;br /&gt;
mgs.terrain_segmentation  = &amp;quot;very-high&amp;quot; --[[ frequency]]&lt;br /&gt;
surface.map_gen_settings = mgs &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Making a structure indestructible ===&lt;br /&gt;
This makes it impossible for an entity to be damaged or killed, e.g. by biters. Hover over the entity and then run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.selected.destructible = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Connect linked belts ===&lt;br /&gt;
If there exist at least two [[Prototype/LinkedBelt|linked belts]], and one of them has the &amp;quot;Entity tag&amp;quot; &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt;, and another linked belt has the &amp;quot;Entity tag&amp;quot; &amp;lt;code&amp;gt;out&amp;lt;/code&amp;gt;, then the following command should link these two linked belts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local i = game.get_entity_by_tag(&#039;in&#039;)&lt;br /&gt;
local o = game.get_entity_by_tag(&#039;out&#039;)&lt;br /&gt;
i.linked_belt_type = &#039;input&#039;&lt;br /&gt;
o.linked_belt_type = &#039;output&#039;&lt;br /&gt;
i.connect_linked_belts(o)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enemy/evolution scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Set evolution factor ===&lt;br /&gt;
Ranges from 0 (new game) to 1.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.forces[&amp;quot;enemy&amp;quot;].evolution_factor=X&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable time-based evolution &amp;amp; increases pollution-based evolution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.map_settings.enemy_evolution.time_factor=0&lt;br /&gt;
/c game.map_settings.enemy_evolution.pollution_factor=game.map_settings.enemy_evolution.pollution_factor*2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;2&amp;quot; at the end of the last command will double the default pollution factor. You can substitute another number to increase (or decrease) the pollution factor further.&lt;br /&gt;
&lt;br /&gt;
=== Kill all biters on the &amp;quot;enemy&amp;quot; force ===&lt;br /&gt;
Note that this will kill only mobile units, spawners will not be killed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.forces[&amp;quot;enemy&amp;quot;].kill_all_units()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill all enemies ===&lt;br /&gt;
This will kill all biters, bases and worms. Anything that is an enemy will be completely destroyed. This only affects enemies in the generated world, so any unexplored parts of the map which still need to be generated will still have enemies. You can [[#Prevent biters being on newly generated chunks|prevent biters being on newly generated chunks]] if desired.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=&amp;quot;enemy&amp;quot;})) do&lt;br /&gt;
	entity.destroy()&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill all nearby enemies ===&lt;br /&gt;
&lt;br /&gt;
This will kill all biters, bases and worms in a configurable radius. The default, 250 tiles, is about two zoomed-out screen widths on full HD. After destruction, it shows how many objects were destroyed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local pp = game.player.position&lt;br /&gt;
local cnt = 0&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=&amp;quot;enemy&amp;quot;, radius=250, position=pp })) do&lt;br /&gt;
	cnt = cnt+1&lt;br /&gt;
	entity.destroy()&lt;br /&gt;
 end	&lt;br /&gt;
game.player.print(cnt)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable peaceful mode ===&lt;br /&gt;
Enabling peaceful mode prevents biter attacks until provoked. Substitute true for false to disable. Already existing biters are not affected by this command so attacks could continue for a while after activating peaceful mode.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.peaceful_mode = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable biter expansion ===&lt;br /&gt;
Biter expansion allows biters to create new nests, it is enabled by default. Substitute true for false to disable.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.map_settings.enemy_expansion.enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prevent biters being on newly generated chunks ===&lt;br /&gt;
On newly generated chunks no biters will be present, however all current biters will remain unaffected. Equivalent of setting the Enemy Base Size to None under the Terrain settings during map generation but achieved mid game by [[#Change map generation settings|changing map generation settings]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.autoplace_controls[&amp;quot;enemy-base&amp;quot;].size = &amp;quot;none&amp;quot;&lt;br /&gt;
surface.map_gen_settings = mgs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Player character scripts ==&lt;br /&gt;
Commands concerning the player directly.&lt;br /&gt;
=== Get player position ===&lt;br /&gt;
Prints coordinates of your current position.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(game.player.position.x .. &amp;quot;, &amp;quot; .. game.player.position.y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Teleport player ===&lt;br /&gt;
Moves the player to the specified location. You should be able to teleport to a specific player if you obtain their coordinates via them executing the previous command and giving them to you.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.teleport({X, Y})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To teleport to the world&#039;s origin, use 0,0.&lt;br /&gt;
&lt;br /&gt;
=== Enable god mode ===&lt;br /&gt;
God mode removes your player character allowing you to fly over obstacles and take no damage.&lt;br /&gt;
&lt;br /&gt;
Disassociate your controls from the character and destroy it:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.character.destroy()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To undo, spawn a player character. This will spawn a new character at the spawn point of the world, and connect your controls to it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.create_character()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable long reach ===&lt;br /&gt;
Enables long reach, which allows the player to build and interact with entities at a greater distance. The default reach is 10.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local reach = 10000&lt;br /&gt;
game.player.force.character_build_distance_bonus = reach&lt;br /&gt;
game.player.force.character_reach_distance_bonus = reach&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Find player corpses ===&lt;br /&gt;
Pings player corpses on the map.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local found_corpses = game.player.surface.find_entities_filtered{type=&amp;quot;character-corpse&amp;quot;}&lt;br /&gt;
for _,corpse in pairs(found_corpses) do&lt;br /&gt;
    local player = game.get_player(corpse.character_corpse_player_index)&lt;br /&gt;
    local name = player and player.name or &amp;quot;????&amp;quot;&lt;br /&gt;
    game.player.print(name .. &amp;quot; --&amp;gt; [gps=&amp;quot; .. corpse.position.x .. &amp;quot;,&amp;quot; .. corpse.position.y .. &amp;quot;]&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Run faster ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.character_running_speed_modifier=3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Research scripts ==&lt;br /&gt;
=== Enable faster research ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.laboratory_speed_modifier=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-0.5 is half speed, 0 is normal speed, 1 is double speed, 2 is triple etc.&lt;br /&gt;
&lt;br /&gt;
=== Research specific technologies ===&lt;br /&gt;
The internal technology names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.technologies[&#039;electric-energy-distribution-1&#039;].researched=true&lt;br /&gt;
/c game.player.force.technologies[&#039;steel-processing&#039;].researched=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To research a high level of an infinite technology, set its level:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.technologies[&#039;worker-robots-speed-6&#039;].level = 100&lt;br /&gt;
/c game.player.force.technologies[&#039;mining-productivity-4&#039;].level = 100&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unresearch specific technologies ===&lt;br /&gt;
The internal technology names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.technologies[&#039;electric-energy-distribution-1&#039;].researched=false&lt;br /&gt;
/c game.player.force.technologies[&#039;steel-processing&#039;].researched=false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enabling specific recipes ===&lt;br /&gt;
The internal recipe/item names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;electric-energy-interface&amp;quot;].enabled=true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;rocket-silo&amp;quot;].enabled=true&lt;br /&gt;
/c game.player.force.recipes.loader.enabled=true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;fast-loader&amp;quot;].enabled = true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;express-loader&amp;quot;].enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable all recipes ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for name, recipe in pairs(game.player.force.recipes) do recipe.enabled = true end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resetting technology effects to default ===&lt;br /&gt;
This will reset the enabled/unlocked state of all recipes to what they would be purely based on the currently researched technologies, as well as resetting other technology effects like mining speed, etc. Any manual modifications to these effects and recipe unlocks will be undone.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.reset_technology_effects()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Note: Can be used as a quick workaround when recipes are unavailable after adding or changing mods even though the technology unlocking them has already been researched.&lt;br /&gt;
&lt;br /&gt;
== Modding tools ==&lt;br /&gt;
A list of the internal names of most things in the vanilla game can also be found on [[data.raw]].&lt;br /&gt;
&lt;br /&gt;
=== Access a mod&#039;s data ===&lt;br /&gt;
If the first word of the command is __mod-name__ it will run in the context of the mod with the same name. For instance, this command prints the data from the Even Distribution mod:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c __even-distribution__ game.player.print(serpent.dump(global))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Print to console the tile under the player ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(game.player.surface.get_tile(game.player.position).name)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write all researched technologies to file ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local list = {}&lt;br /&gt;
for _, tech in pairs(game.player.force.technologies) do &lt;br /&gt;
	if tech.researched then&lt;br /&gt;
    list[#list+1] = tech.name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
game.write_file(&amp;quot;techs.lua&amp;quot;, serpent.block(list) .. &amp;quot;\n&amp;quot;, true)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write all enabled recipes to file ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local list = {}&lt;br /&gt;
for _, recipe in pairs(game.player.force.recipes) do &lt;br /&gt;
	if recipe.enabled then&lt;br /&gt;
    list[#list+1] = recipe.name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
game.write_file(&amp;quot;recipes.lua&amp;quot;, serpent.block(list) .. &amp;quot;\n&amp;quot;, true)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write mod list to file ===&lt;br /&gt;
Write all currently active mods and their version to the file script-output/mods.txt in the [[user data directory]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.write_file(&amp;quot;mods.txt&amp;quot;, serpent.block(game.active_mods))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
{{History|1.1.92|&lt;br /&gt;
* Added a notification when a technology is researched.&lt;br /&gt;
* Added /enable-research-queue console command to enable the research queue without disabling achievements.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Command line parameters]]&lt;br /&gt;
* http://lua-api.factorio.com/latest/ - Factorio API reference for latest version&lt;br /&gt;
&lt;br /&gt;
{{C|Technical}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/RotatedAnimation&amp;diff=190603</id>
		<title>Types/RotatedAnimation</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/RotatedAnimation&amp;diff=190603"/>
		<updated>2022-12-26T23:27:48Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* line_length */  clarify what the field is actually setting and re-organise existing description to be far more readable.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mandatory properties ==&lt;br /&gt;
&lt;br /&gt;
=== direction_count ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
The sequential animation instance is loaded equal to the entities direction within the direction_count setting.&lt;br /&gt;
&lt;br /&gt;
Direction count to [[Types/Direction]] (animation sequence number):&lt;br /&gt;
*&#039;&#039;&#039;1&#039;&#039;&#039; - &#039;&#039;&#039;North&#039;&#039;&#039; (1)&lt;br /&gt;
*&#039;&#039;&#039;2&#039;&#039;&#039; - &#039;&#039;&#039;North&#039;&#039;&#039; (1), South (2)&lt;br /&gt;
*&#039;&#039;&#039;4&#039;&#039;&#039; - &#039;&#039;&#039;North&#039;&#039;&#039; (1), &#039;&#039;&#039;East&#039;&#039;&#039; (2), &#039;&#039;&#039;South&#039;&#039;&#039; (3), &#039;&#039;&#039;West&#039;&#039;&#039; (4)&lt;br /&gt;
*&#039;&#039;&#039;8&#039;&#039;&#039; - &#039;&#039;&#039;North&#039;&#039;&#039; (1), &#039;&#039;&#039;Northeast&#039;&#039;&#039; (2), &#039;&#039;&#039;East&#039;&#039;&#039; (3), &#039;&#039;&#039;Southeast&#039;&#039;&#039; (4), &#039;&#039;&#039;South&#039;&#039;&#039; (5), &#039;&#039;&#039;Southwest&#039;&#039;&#039; (6), &#039;&#039;&#039;West&#039;&#039;&#039; (7), &#039;&#039;&#039;Northwest&#039;&#039;&#039; (8)&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
=== layers ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/RotatedAnimation]]&lt;br /&gt;
&lt;br /&gt;
If this property is present, all RotatedAnimation definitions have to be placed as entries in the array, and they will all be loaded from there. Each item (RotatedAnimation definition) in the array may also have the &amp;lt;code&amp;gt;layers&amp;lt;/code&amp;gt; property.&lt;br /&gt;
&lt;br /&gt;
If this property is present, all other properties are ignored and the mandatory properties do not have to be defined.&lt;br /&gt;
&lt;br /&gt;
Layers may not be an empty table.&lt;br /&gt;
&lt;br /&gt;
=== hr_version ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/RotatedAnimation]]&lt;br /&gt;
&lt;br /&gt;
If this property exists and high resolution sprites are turned on, its contents are used to load the RotatedAnimation.&lt;br /&gt;
&lt;br /&gt;
=== filename ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/FileName]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;stripes&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filenames&amp;lt;/code&amp;gt; is not specified.&lt;br /&gt;
&lt;br /&gt;
=== filenames ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[types/table]] of [[Types/FileName]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Only loaded if &amp;lt;code&amp;gt;stripes&amp;lt;/code&amp;gt; is not present.&lt;br /&gt;
&lt;br /&gt;
=== slice ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;filenames&amp;lt;/code&amp;gt; is present.&lt;br /&gt;
&lt;br /&gt;
=== lines_per_file ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;filenames&amp;lt;/code&amp;gt; is present.&lt;br /&gt;
&lt;br /&gt;
=== priority ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpritePriority]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;medium&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== flags ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteFlags]]&lt;br /&gt;
&lt;br /&gt;
=== size ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]] or [[Types/table]] of [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
The width and height of the one frame. If this is an array, the first member of the array is the width and the second is the height. Otherwise the size is both width and height.&lt;br /&gt;
&lt;br /&gt;
Width and height may only be in the range of 0-8192.&lt;br /&gt;
&lt;br /&gt;
=== width ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; is not given. Width of one frame in pixels, from 0-8192.&lt;br /&gt;
&lt;br /&gt;
=== height ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; is not given. Height of one frame in pixels, from 0-8192.&lt;br /&gt;
&lt;br /&gt;
=== x ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Horizontal position of the animation in the source file in pixels.&lt;br /&gt;
&lt;br /&gt;
=== y ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Vertical position of the animation in the source file in pixels.&lt;br /&gt;
&lt;br /&gt;
=== position ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
Loaded only when &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; are both 0. The first member of the array is x and the second is y. &lt;br /&gt;
&lt;br /&gt;
=== shift ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/vector]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== scale ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Values different than 1 specify the scale of the animation on default zoom.&lt;br /&gt;
Scale 2 means that the picture will be 2 times bigger on screen (and more pixelated).&lt;br /&gt;
&lt;br /&gt;
=== draw_as_shadow ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Only one of &amp;lt;code&amp;gt;draw_as_shadow&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;draw_as_glow&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;draw_as_light&amp;lt;/code&amp;gt; can be true. &amp;lt;code&amp;gt;draw_as_shadow&amp;lt;/code&amp;gt; takes precedence over &amp;lt;code&amp;gt;draw_as_glow&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;draw_as_light&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== draw_as_glow ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Only one of &amp;lt;code&amp;gt;draw_as_shadow&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;draw_as_glow&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;draw_as_light&amp;lt;/code&amp;gt; can be true. &amp;lt;code&amp;gt;draw_as_glow&amp;lt;/code&amp;gt; takes precedence over &amp;lt;code&amp;gt;draw_as_light&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Draws first as a normal sprite, and again as a light layer.&amp;lt;sup&amp;gt;[https://forums.factorio.com/91682]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== draw_as_light ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Only one of &amp;lt;code&amp;gt;draw_as_shadow&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;draw_as_glow&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;draw_as_light&amp;lt;/code&amp;gt; can be true.&lt;br /&gt;
&lt;br /&gt;
=== mipmap_count ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Only loaded if this is an icon (has flag &amp;quot;group=icon&amp;quot; or &amp;quot;group=gui&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== apply_runtime_tint ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== tint ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Color]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: {r=1, g=1, b=1, a=1} (white)&lt;br /&gt;
&lt;br /&gt;
=== blend_mode ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/BlendMode]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;normal&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== load_in_minimal_mode ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Minimal mode is entered when mod loading fails. You are in it when you see the gray box after (part of) the loading screen that tells you a mod error ([https://cdn.discordapp.com/attachments/340530709712076801/532315796626472972/unknown.png Example]). If you are a modder, you can just ignore this property.&lt;br /&gt;
&lt;br /&gt;
=== premul_alpha ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: true&lt;br /&gt;
&lt;br /&gt;
Whether alpha should be premultiplied.&lt;br /&gt;
&lt;br /&gt;
=== generate_sdf ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Unused.&lt;br /&gt;
&lt;br /&gt;
=== run_mode ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;forward&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Possible values are:&lt;br /&gt;
*forward&lt;br /&gt;
*backward&lt;br /&gt;
*forward-then-backward&lt;br /&gt;
&lt;br /&gt;
=== frame_count ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Can&#039;t be 0.&lt;br /&gt;
&lt;br /&gt;
=== line_length ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Specifies how many pictures are on each horizontal line in the image file. 0 means that all the pictures are in one horizontal line.&lt;br /&gt;
Once the specified number of pictures are loaded from a line, the pictures from the next line are loaded.&lt;br /&gt;
This is to allow having longer animations loaded in to Factorio&#039;s graphics matrix than the game engine&#039;s width limit of 8192px per input file. The restriction on input files is to be compatible with most graphics cards.&lt;br /&gt;
&lt;br /&gt;
=== animation_speed ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Modifier of the animation playing speed, the default is 1, which means one animation frame per tick (60 fps).&lt;br /&gt;
The speed of playing can often vary depending on the usage (output of steam engine for example). Has to be greater than 0.&lt;br /&gt;
&lt;br /&gt;
=== max_advance ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: MAX_FLOAT&lt;br /&gt;
&lt;br /&gt;
=== repeat_count ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Can&#039;t be 0.&lt;br /&gt;
&lt;br /&gt;
=== dice ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
=== dice_x ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
=== dice_y ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
=== frame_sequence ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/AnimationFrameSequence]]&lt;br /&gt;
&lt;br /&gt;
=== still_frame ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
=== axially_symmetrical ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
If true, &amp;lt;code&amp;gt;direction_count&amp;lt;/code&amp;gt; must be greater than 1.&lt;br /&gt;
&lt;br /&gt;
=== counterclockwise ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== middle_orientation ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/RealOrientation]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0.5&lt;br /&gt;
&lt;br /&gt;
=== orientation_range ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Automatically clamped to be between 0 and 1.&lt;br /&gt;
&lt;br /&gt;
=== apply_projection ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: true&lt;br /&gt;
&lt;br /&gt;
=== stripes ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table|table]] (array) of [[Types/Stripe|Stripe]]&lt;br /&gt;
&lt;br /&gt;
{{Prototype property type usage|{{FULLPAGENAME}}}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/PushBackTriggerEffectItem&amp;diff=190528</id>
		<title>Types/PushBackTriggerEffectItem</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/PushBackTriggerEffectItem&amp;diff=190528"/>
		<updated>2022-12-08T20:02:02Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: Add functional description of effect.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The push back effect used by the [[discharge defense]].&lt;br /&gt;
&lt;br /&gt;
Aims to push the target entity away from the source entity by the &amp;lt;code&amp;gt;distance&amp;lt;/code&amp;gt; from the target entity&#039;s current position. Searches within double the &amp;lt;code&amp;gt;distance&amp;lt;/code&amp;gt; from the pushed to position for the nearest non-colliding position for the target entity to be teleported too. If no valid non-colliding position is found or the target is not teleportable then no push back occurs.&lt;br /&gt;
&lt;br /&gt;
Extends [[Types/TriggerEffectItem]].&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
Inherits all properties from [[Types/TriggerEffectItem]].&lt;br /&gt;
&lt;br /&gt;
=== distance ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/TriggerDelivery&amp;diff=190517</id>
		<title>Types/TriggerDelivery</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/TriggerDelivery&amp;diff=190517"/>
		<updated>2022-12-06T20:23:17Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* source_effects */ Clarified that the target of the TriggerDelivery isn&amp;#039;t accessible when used via source_effects. i.e. can&amp;#039;t use a push-back as a source_effects of an attack as it receives the source as both ends of the push.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[types/table]]s. The table is loaded as one of the [[#Extensions]], depending on the value of the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; key in the table.&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Mandatory property. Either &amp;quot;instant&amp;quot;, &amp;quot;projectile&amp;quot;, &amp;quot;flame-thrower&amp;quot;, &amp;quot;beam&amp;quot;, &amp;quot;stream&amp;quot;, or &amp;quot;artillery&amp;quot;.&lt;br /&gt;
* If this is &amp;lt;code&amp;gt;&amp;quot;instant&amp;quot;&amp;lt;/code&amp;gt;, that definition is loaded as a [[Types/InstantTriggerDelivery]],&lt;br /&gt;
* If this is &amp;lt;code&amp;gt;&amp;quot;projectile&amp;quot;&amp;lt;/code&amp;gt;, that definition is loaded as a [[Types/ProjectileTriggerDelivery]],&lt;br /&gt;
* If this is &amp;lt;code&amp;gt;&amp;quot;flame-thrower&amp;quot;&amp;lt;/code&amp;gt;, that definition is loaded as a [[Types/FlameThrowerExplosionTriggerDelivery]],&lt;br /&gt;
* If this is &amp;lt;code&amp;gt;&amp;quot;beam&amp;quot;&amp;lt;/code&amp;gt;, that definition is loaded as a [[Types/BeamTriggerDelivery]],&lt;br /&gt;
* If this is &amp;lt;code&amp;gt;&amp;quot;stream&amp;quot;&amp;lt;/code&amp;gt;, that definition is loaded as a [[Types/StreamTriggerDelivery]],&lt;br /&gt;
* If this is &amp;lt;code&amp;gt;&amp;quot;artillery&amp;quot;&amp;lt;/code&amp;gt;, that definition is loaded as a [[Types/ArtilleryTriggerDelivery]].&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
* [[Types/InstantTriggerDelivery]]&lt;br /&gt;
* [[Types/ProjectileTriggerDelivery]]&lt;br /&gt;
* [[Types/FlameThrowerExplosionTriggerDelivery]]&lt;br /&gt;
* [[Types/BeamTriggerDelivery]]&lt;br /&gt;
* [[Types/StreamTriggerDelivery]]&lt;br /&gt;
* [[Types/ArtilleryTriggerDelivery]]&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
=== source_effects ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/TriggerEffect]]&lt;br /&gt;
&lt;br /&gt;
Provides the source of the TriggerDelivery as as both the source and target to the [[Types/TriggerEffect]].&lt;br /&gt;
&lt;br /&gt;
=== target_effects ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/TriggerEffect]]&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/DamageTriggerEffectItem&amp;diff=189774</id>
		<title>Types/DamageTriggerEffectItem</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/DamageTriggerEffectItem&amp;diff=189774"/>
		<updated>2022-08-28T23:17:19Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* vaporize */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__Extends [[Types/TriggerEffectItem]].&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
Inherits all properties from [[Types/TriggerEffectItem]].&lt;br /&gt;
&lt;br /&gt;
=== damage ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/DamagePrototype|DamagePrototype]]&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
=== apply_damage_to_trees ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool|bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: true&lt;br /&gt;
&lt;br /&gt;
=== vaporize ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool|bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; no corpse for killed entities will be created.&lt;br /&gt;
&lt;br /&gt;
=== lower_distance_threshold ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint16|uint16]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: max uint16&lt;br /&gt;
&lt;br /&gt;
=== upper_distance_threshold ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint16|uint16]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: max uint16&lt;br /&gt;
&lt;br /&gt;
=== lower_damage_modifier ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float|float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== upper_damage_modifier ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float|float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/AmmoType&amp;diff=189565</id>
		<title>Types/AmmoType</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/AmmoType&amp;diff=189565"/>
		<updated>2022-07-29T14:11:11Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* range_modifier */  clarify that this affects the max range and not the min range.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
Definition of actual parameters used in attack.&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
&lt;br /&gt;
=== category ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Name of a [[Prototype/AmmoCategory]]. Defines whether the attack will be affected by upgrades.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
=== action ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Trigger]]&lt;br /&gt;
&lt;br /&gt;
Describes actions taken upon attack happening.&lt;br /&gt;
&lt;br /&gt;
=== clamp_position ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
When true, the gun will be able to shoot even when the target is out of range. Only applies when target_type is position. The gun will fire at the maximum range in the direction of the target position. Defaults to false.&lt;br /&gt;
&lt;br /&gt;
=== energy_consumption ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
Energy consumption of a single shot, if applicable.&lt;br /&gt;
&lt;br /&gt;
=== range_modifier ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Affects the &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; value of the shooting gun prototype&#039;s &amp;lt;code&amp;gt;BaseAttackParameters&amp;lt;/code&amp;gt; to give a modified maximum range. The &amp;lt;code&amp;gt;min_range&amp;lt;/code&amp;gt; value of the gun is unaffected.&lt;br /&gt;
&lt;br /&gt;
=== cooldown_modifier ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== consumption_modifier ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== target_type ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;entity&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Either &amp;quot;entity&amp;quot;, &amp;quot;position&amp;quot; or &amp;quot;direction&amp;quot;. If this is &amp;quot;entity&amp;quot;, &amp;lt;code&amp;gt;clamp_position&amp;lt;/code&amp;gt; is forced to be false. &lt;br /&gt;
&amp;quot;entity&amp;quot; fires at an entity, &amp;quot;position&amp;quot; fires directly at a position, &amp;quot;direction&amp;quot; fires in a direction.&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/BaseAttackParameters&amp;diff=189564</id>
		<title>Types/BaseAttackParameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/BaseAttackParameters&amp;diff=189564"/>
		<updated>2022-07-29T13:11:13Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* ammo_category */  description had a a typo saying this setting was mandatory if this setting was not given, rather than this setting was mandatory if the list version of the setting wasn&amp;#039;t given.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The abstract base of all [[Types/AttackParameters|attack parameters]].&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
* [[Types/ProjectileAttackParameters]]&lt;br /&gt;
* [[Types/BeamAttackParameters]]&lt;br /&gt;
* [[Types/StreamAttackParameters]]&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
=== range ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
Before an entity can attack, the distance (in tiles) between the entity and target must be less than or equal to this.&lt;br /&gt;
&lt;br /&gt;
=== cooldown ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
Number of ticks in which it will be possible to shoot again. If &amp;lt; 1, multiple shots can be performed in one tick.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
=== min_range ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
The minimum distance (in tiles) between an entity and target. If a unit&#039;s target is less than this, the unit will attempt to move away before attacking. A [[Flamethrower turret]] does not move, but has a minimum range. Less than this, it is unable to target an enemy.&lt;br /&gt;
&lt;br /&gt;
=== turn_range ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
If this is &amp;lt;= 0, it is set to 1. Arc from 0 to 1, so for example 0.25 is 90°. Used by the [[flamethrower turret]] in the base game. Arcs greater than 0.5 but less than 1 will be clamped to 0.5 as targeting in arcs larger than half circle is not implemented.[https://forums.factorio.com/94654]&lt;br /&gt;
&lt;br /&gt;
=== fire_penalty ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Used when searching for the nearest enemy, when this is &amp;gt; 0, enemies that aren&#039;t burning are preferred over burning enemies. Definition of &amp;quot;burning&amp;quot; for this: Entity has sticker attached to it, and the sticker has a [[Prototype/Sticker#spread_fire_entity|spread_fire_entity]] set.&lt;br /&gt;
&lt;br /&gt;
=== rotate_penalty ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
A higher penalty will discourage turrets from targeting units that would take longer to turn to face.&lt;br /&gt;
&lt;br /&gt;
=== health_penalty ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
A higher penalty will discourage turrets from targeting units with higher health. A negative penalty will encourage turrets to target units with higher health.&lt;br /&gt;
&lt;br /&gt;
=== range_mode ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;center-to-center&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Either &amp;quot;center-to-center&amp;quot; or &amp;quot;bounding-box-to-bounding-box&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== min_attack_distance ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If less than &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt;, the entity will choose a random distance between &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;min_attack_distance&amp;lt;/code&amp;gt; and attack from that distance.&lt;br /&gt;
&lt;br /&gt;
=== damage_modifier ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== ammo_consumption_modifier ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Must be greater than or equal to 0.&lt;br /&gt;
&lt;br /&gt;
=== cooldown_deviation ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Must be between 0 and 1.&lt;br /&gt;
&lt;br /&gt;
=== warmup ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Number of ticks it takes for the weapon to actually shoot after the order for shooting has been made. This also allows to &amp;quot;adjust&amp;quot; the shooting animation to the effect of shooting.&lt;br /&gt;
&lt;br /&gt;
[[Types/CapsuleAction]]s cannot have attack_parameters with non-zero warmup.&lt;br /&gt;
&lt;br /&gt;
=== lead_target_for_projectile_speed ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Base game uses&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;lead_target_for_projectile_speed = 0.2* 0.75 * 1.5, -- this is same as particle horizontal speed of flamethrower fire stream&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Presumably this should be set to the projectile speed to make the unit/turret lead their projectiles.&lt;br /&gt;
&lt;br /&gt;
=== movement_slow_down_cooldown ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;lt;code&amp;gt;cooldown&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== movement_slow_down_factor ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== ammo_type ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/AmmoType]]&lt;br /&gt;
&lt;br /&gt;
Can be mandatory.&lt;br /&gt;
&lt;br /&gt;
=== activation_type ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;shoot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
One of &amp;quot;shoot&amp;quot;, &amp;quot;throw&amp;quot;, &amp;quot;consume&amp;quot; or &amp;quot;activate&amp;quot;. Used in tooltips to set the tooltip category. It is also used to get the locale keys for activation instructions and speed of the action for the tooltip.&lt;br /&gt;
&lt;br /&gt;
For example, an activation_type of &amp;quot;throw&amp;quot; will result in the tooltip category &amp;quot;thrown&amp;quot; and the tooltip locale keys &amp;quot;gui.instruction-to-throw&amp;quot; and &amp;quot;description.throwing-speed&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== sound ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/LayeredSound]]&lt;br /&gt;
&lt;br /&gt;
Played once at the start of the attack if this is a [[Types/ProjectileAttackParameters]].&lt;br /&gt;
&lt;br /&gt;
=== animation ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/RotatedAnimation]]&lt;br /&gt;
&lt;br /&gt;
=== cyclic_sound ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/CyclicSound]]&lt;br /&gt;
&lt;br /&gt;
Played during the attack.&lt;br /&gt;
&lt;br /&gt;
=== use_shooter_direction ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== ammo_categories ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] (array) [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Names of [[Prototype/AmmoCategory|Prototype/AmmoCategories]].&lt;br /&gt;
&lt;br /&gt;
=== ammo_category ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
The name of a [[Prototype/AmmoCategory]]. Mandatory if &amp;lt;code&amp;gt;ammo_type&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ammo_categories&amp;lt;/code&amp;gt; is not given, otherwise ignored.&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/Entity&amp;diff=187710</id>
		<title>Prototype/Entity</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/Entity&amp;diff=187710"/>
		<updated>2021-12-17T13:05:15Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Prototype parent|PrototypeBase}}&lt;br /&gt;
Abstract base of all entities in the game.&lt;br /&gt;
Entity is basically everything that can be on the map (except tiles).&lt;br /&gt;
For in game script access to entity, take a look at [http://lua-api.factorio.com/latest/LuaEntity.html LuaEntity]&lt;br /&gt;
&lt;br /&gt;
{{Prototype TOC|&#039;&#039;abstract&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;factorio-list&amp;quot;&amp;gt;&lt;br /&gt;
* [[Prototype/Arrow]] &#039;&#039;&#039;arrow&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ArtilleryFlare]] &#039;&#039;&#039;artillery-flare&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ArtilleryProjectile]] &#039;&#039;&#039;artillery-projectile&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Beam]] &#039;&#039;&#039;beam&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/CharacterCorpse]] &#039;&#039;&#039;character-corpse&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Cliff]] &#039;&#039;&#039;cliff&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Corpse]] &#039;&#039;&#039;corpse&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/RailRemnants]] &#039;&#039;&#039;rail-remnants&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/DeconstructibleTileProxy]] &#039;&#039;&#039;deconstructible-tile-proxy&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/EntityGhost]] &#039;&#039;&#039;entity-ghost&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/EntityParticle]] &#039;&#039;&#039;particle&#039;&#039;&#039; (for migration, cannot be used)&lt;br /&gt;
** [[Prototype/LeafParticle]] &#039;&#039;&#039;leaf-particle&#039;&#039;&#039; (for migration, cannot be used)&lt;br /&gt;
* [[Prototype/EntityWithHealth]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
** [[Prototype/Accumulator]] &#039;&#039;&#039;accumulator&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/ArtilleryTurret]] &#039;&#039;&#039;artillery-turret&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Beacon]] &#039;&#039;&#039;beacon&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Boiler]] &#039;&#039;&#039;boiler&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/BurnerGenerator]] &#039;&#039;&#039;burner-generator&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Character]] &#039;&#039;&#039;character&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Combinator]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/ArithmeticCombinator]] &#039;&#039;&#039;arithmetic-combinator&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/DeciderCombinator]] &#039;&#039;&#039;decider-combinator&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/ConstantCombinator]] &#039;&#039;&#039;constant-combinator&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Container]] &#039;&#039;&#039;container&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/LogisticContainer]] &#039;&#039;&#039;logistic-container&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/InfinityContainer]] &#039;&#039;&#039;infinity-container&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/CraftingMachine]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/AssemblingMachine]] &#039;&#039;&#039;assembling-machine&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/RocketSilo]] &#039;&#039;&#039;rocket-silo&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/Furnace]] &#039;&#039;&#039;furnace&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/ElectricEnergyInterface]] &#039;&#039;&#039;electric-energy-interface&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/ElectricPole]] &#039;&#039;&#039;electric-pole&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/EnemySpawner]] &#039;&#039;&#039;unit-spawner&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Fish]] &#039;&#039;&#039;fish&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/FlyingRobot]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/CombatRobot]] &#039;&#039;&#039;combat-robot&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/RobotWithLogisticInterface]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
**** [[Prototype/ConstructionRobot]] &#039;&#039;&#039;construction-robot&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/LogisticRobot]] &#039;&#039;&#039;logistic-robot&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Gate]] &#039;&#039;&#039;gate&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Generator]] &#039;&#039;&#039;generator&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/HeatInterface]] &#039;&#039;&#039;heat-interface&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/HeatPipe]] &#039;&#039;&#039;heat-pipe&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Inserter]] &#039;&#039;&#039;inserter&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Lab]] &#039;&#039;&#039;lab&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Lamp]] &#039;&#039;&#039;lamp&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/LandMine]] &#039;&#039;&#039;land-mine&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/LinkedContainer]] &#039;&#039;&#039;linked-container&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Market]] &#039;&#039;&#039;market&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/MiningDrill]] &#039;&#039;&#039;mining-drill&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/OffshorePump]] &#039;&#039;&#039;offshore-pump&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Pipe]] &#039;&#039;&#039;pipe&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/InfinityPipe]] &#039;&#039;&#039;infinity-pipe&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/PipeToGround]] &#039;&#039;&#039;pipe-to-ground&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/PlayerPort]] &#039;&#039;&#039;player-port&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/PowerSwitch]] &#039;&#039;&#039;power-switch&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/ProgrammableSpeaker]] &#039;&#039;&#039;programmable-speaker&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Pump]] &#039;&#039;&#039;pump&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Radar]] &#039;&#039;&#039;radar&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Rail]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/CurvedRail]] &#039;&#039;&#039;curved-rail&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/StraightRail]] &#039;&#039;&#039;straight-rail&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/RailSignalBase]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/RailChainSignal]] &#039;&#039;&#039;rail-chain-signal&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/RailSignal]] &#039;&#039;&#039;rail-signal&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Reactor]] &#039;&#039;&#039;reactor&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Roboport]] &#039;&#039;&#039;roboport&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/SimpleEntity]] &#039;&#039;&#039;simple-entity&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/SimpleEntityWithOwner]] &#039;&#039;&#039;simple-entity-with-owner&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/SimpleEntityWithForce]] &#039;&#039;&#039;simple-entity-with-force&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/SolarPanel]] &#039;&#039;&#039;solar-panel&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/SpiderLeg]] &#039;&#039;&#039;spider-leg&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/StorageTank]] &#039;&#039;&#039;storage-tank&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/TrainStop]] &#039;&#039;&#039;train-stop&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/TransportBeltConnectable]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/LinkedBelt]] &#039;&#039;&#039;linked-belt&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/Loader1x1]] &#039;&#039;&#039;loader-1x1&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/Loader1x2]] &#039;&#039;&#039;loader&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/Splitter]] &#039;&#039;&#039;splitter&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/TransportBelt]] &#039;&#039;&#039;transport-belt&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/UndergroundBelt]] &#039;&#039;&#039;underground-belt&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Tree]] &#039;&#039;&#039;tree&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Turret]] &#039;&#039;&#039;turret&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/AmmoTurret]] &#039;&#039;&#039;ammo-turret&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/ElectricTurret]] &#039;&#039;&#039;electric-turret&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/FluidTurret]] &#039;&#039;&#039;fluid-turret&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Unit]] &#039;&#039;&#039;unit&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Vehicle]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/Car]] &#039;&#039;&#039;car&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/RollingStock]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
**** [[Prototype/ArtilleryWagon]] &#039;&#039;&#039;artillery-wagon&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/CargoWagon]] &#039;&#039;&#039;cargo-wagon&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/FluidWagon]] &#039;&#039;&#039;fluid-wagon&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/Locomotive]] &#039;&#039;&#039;locomotive&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/SpiderVehicle]] &#039;&#039;&#039;spider-vehicle&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Wall]] &#039;&#039;&#039;wall&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Explosion]] &#039;&#039;&#039;explosion&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/FlameThrowerExplosion]] &#039;&#039;&#039;flame-thrower-explosion&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/FireFlame]] &#039;&#039;&#039;fire&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/FluidStream]] &#039;&#039;&#039;stream&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/FlyingText]] &#039;&#039;&#039;flying-text&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/HighlightBoxEntity]] &#039;&#039;&#039;highlight-box&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ItemEntity]] &#039;&#039;&#039;item-entity&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ItemRequestProxy]] &#039;&#039;&#039;item-request-proxy&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ParticleSource]] &#039;&#039;&#039;particle-source&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Projectile]] &#039;&#039;&#039;projectile&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ResourceEntity]] &#039;&#039;&#039;resource&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/RocketSiloRocket]] &#039;&#039;&#039;rocket-silo-rocket&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/RocketSiloRocketShadow]] &#039;&#039;&#039;rocket-silo-rocket-shadow&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Smoke]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
** [[Prototype/SimpleSmoke]] &#039;&#039;&#039;smoke&#039;&#039;&#039; (for migration, cannot be used)&lt;br /&gt;
** [[Prototype/SmokeWithTrigger]] &#039;&#039;&#039;smoke-with-trigger&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/SpeechBubble]] &#039;&#039;&#039;speech-bubble&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Sticker]] &#039;&#039;&#039;sticker&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/TileGhost]] &#039;&#039;&#039;tile-ghost&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
Inherits all properties from [[PrototypeBase]].&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|icons, icon,  icon_size (IconSpecification)|[[Types/IconSpecification|IconSpecification]]}}&lt;br /&gt;
An icon is mandatory for entities that have at least one of these flags active: placeable-neutral, placeable-player, placeable-enemy.&lt;br /&gt;
&lt;br /&gt;
The icon will be used in the editor building selection and the bonus gui.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;icon = &amp;quot;__base__/graphics/icons/wooden-chest.png&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
=== order ===&lt;br /&gt;
:&#039;&#039;See [[PrototypeBase#order]]&#039;&#039;&lt;br /&gt;
Inherited from [[PrototypeBase]].&lt;br /&gt;
&lt;br /&gt;
The order string is taken from the items in &amp;lt;code&amp;gt;placeable_by&amp;lt;/code&amp;gt; if they exist, or from an item that has its [[Prototype/Item#place_result|place_result]] set to this entity if it exists.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|collision_box|[[Types/BoundingBox|BoundingBox]]|Empty=&amp;lt;nowiki&amp;gt;{{0, 0}, {0, 0}} means no collisions.&amp;lt;/nowiki&amp;gt;|optional=true}}&lt;br /&gt;
Specification of the entity collision boundaries.&lt;br /&gt;
&lt;br /&gt;
Empty collision box is used for smoke, projectiles, particles, explosions etc.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;collision_box = {{-0.4, -0.4}, {0.4, 0.4}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The {0,0} coordinate in the collision box will match the entity position.&lt;br /&gt;
&lt;br /&gt;
It should be near the center of the collision box, to keep correct entity drawing order. It must include the {0,0} coordinate.&lt;br /&gt;
&lt;br /&gt;
Note, that for buildings, it is customary to leave 0.1 wide border between the edge of the tile and the edge of the building, this lets the player move between the building and electric poles/inserters etc.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|collision_mask|[[Types/CollisionMask|CollisionMask]]|&amp;lt;nowiki&amp;gt;{&amp;quot;item-layer&amp;quot;, &amp;quot;object-layer&amp;quot;, &amp;quot;player-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/nowiki&amp;gt;|optional=true}}&lt;br /&gt;
&lt;br /&gt;
Two entities can collide only if they share a layer from the collision mask.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
NOTE: &#039;&#039;&#039;Some entity types have their own default&#039;&#039;&#039; that differs from the above default. They are listed here:&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [[Prototype/Arrow]] - no masks&lt;br /&gt;
* [[Prototype/ArtilleryFlare]] - no masks&lt;br /&gt;
* [[Prototype/ArtilleryProjectile]] - no masks&lt;br /&gt;
* [[Prototype/Beam]] - no masks&lt;br /&gt;
* [[Prototype/Car]] - &amp;lt;code&amp;gt;{&amp;quot;player-layer&amp;quot;, &amp;quot;train-layer&amp;quot;, &amp;quot;consider-tile-transitions&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Character]] - &amp;lt;code&amp;gt;{&amp;quot;player-layer&amp;quot;, &amp;quot;train-layer&amp;quot;, &amp;quot;consider-tile-transitions&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/CharacterCorpse]] - no masks&lt;br /&gt;
* [[Prototype/Cliff]] - &amp;lt;code&amp;gt;{ &amp;quot;item-layer&amp;quot;, &amp;quot;object-layer&amp;quot;, &amp;quot;player-layer&amp;quot;, &amp;quot;water-tile&amp;quot;, &amp;quot;not-colliding-with-itself&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Corpse]] - no masks&lt;br /&gt;
* [[Prototype/DeconstructibleTileProxy]] - &amp;lt;code&amp;gt;{&amp;quot;ground-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/EntityGhost]] - &amp;lt;code&amp;gt;{&amp;quot;ghost-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/EntityParticle]] - no masks&lt;br /&gt;
* [[Prototype/Explosion]] - no masks&lt;br /&gt;
* [[Prototype/FireFlame]] - no masks&lt;br /&gt;
* [[Prototype/Fish]] - &amp;lt;code&amp;gt;{&amp;quot;ground-tile&amp;quot;, &amp;quot;colliding-with-tiles-only&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/FluidStream]] - no masks&lt;br /&gt;
* [[Prototype/FlyingRobot]] - no masks&lt;br /&gt;
* [[Prototype/FlyingText]] - no masks&lt;br /&gt;
* [[Prototype/Gate]] - &amp;lt;code&amp;gt;{&amp;quot;item-layer&amp;quot;, &amp;quot;object-layer&amp;quot;, &amp;quot;player-layer&amp;quot;, &amp;quot;water-tile&amp;quot;, &amp;quot;train-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/HeatPipe]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;floor-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/HighlightBoxEntity]] - no masks&lt;br /&gt;
* [[Prototype/ItemEntity]] - &amp;lt;code&amp;gt;{&amp;quot;item-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/ItemRequestProxy]] - no masks&lt;br /&gt;
* [[Prototype/LandMine]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/LinkedBelt]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;item-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Loader1x1]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;item-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Loader1x2]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;item-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/ParticleSource]] - no masks&lt;br /&gt;
* [[Prototype/PlayerPort]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;floor-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Projectile]] - no masks&lt;br /&gt;
* [[Prototype/Rail]] - &amp;lt;code&amp;gt;{&amp;quot;item-layer&amp;quot;, &amp;quot;object-layer&amp;quot;,  &amp;quot;rail-layer&amp;quot;, &amp;quot;floor-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/RailSignalBase]] - &amp;lt;code&amp;gt;{&amp;quot;floor-layer&amp;quot;, &amp;quot;rail-layer&amp;quot;, &amp;quot;item-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/ResourceEntity]] - &amp;lt;code&amp;gt;{&amp;quot;resource-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/RollingStock]] - &amp;lt;code&amp;gt;{&amp;quot;train-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Smoke]] - no masks&lt;br /&gt;
* [[Prototype/SpeechBubble]] - no masks&lt;br /&gt;
* [[Prototype/SpiderLeg]] - &amp;lt;code&amp;gt;{&amp;quot;player-layer&amp;quot;, &amp;quot;rail-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Splitter]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;item-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Sticker]] - no masks&lt;br /&gt;
* [[Prototype/TileGhost]] - &amp;lt;code&amp;gt;{&amp;quot;ghost-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/TransportBelt]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;floor-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/UndergroundBelt]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;item-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Unit]] - &amp;lt;code&amp;gt;{&amp;quot;player-layer&amp;quot;, &amp;quot;train-layer&amp;quot;, &amp;quot;not-colliding-with-itself&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Vehicle]] - &amp;lt;code&amp;gt;{&amp;quot;player-layer&amp;quot;, &amp;quot;train-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|map_generator_bounding_box|[[Types/BoundingBox|BoundingBox]]|The value of collision box.|optional=true}}&lt;br /&gt;
Used instead of the collision box during map generation. Allows space entities differently during map generation, for example if the box is bigger, the entities will be placed farther apart.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|selection_box|[[Types/BoundingBox|BoundingBox]]|&amp;lt;nowiki&amp;gt;Empty = {{0, 0}, {0, 0}}&amp;lt;/nowiki&amp;gt;|optional=true}}&lt;br /&gt;
Specification of the entity selection area.&lt;br /&gt;
When empty  the entity will have no selection area (and thus is not selectable).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;selection_box = {{-0.5, -0.5}, {0.5, 0.5}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The selection box is usually a little bit bigger than the collision box, for tilable entities (like buildings) it should match the tile size of the building.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|drawing_box|[[Types/BoundingBox|BoundingBox]]|&amp;lt;nowiki&amp;gt;Empty = {{0, 0}, {0, 0}} (selection_box is used instead)&amp;lt;/nowiki&amp;gt;|optional=true}}&lt;br /&gt;
Specification of space needed to see the whole entity. &lt;br /&gt;
&lt;br /&gt;
This is used to calculate the correct zoom and positioning in the entity info gui.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;drawing_box = {{-0.5, -0.5}, {0.5, 0.5}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|sticker_box|[[Types/BoundingBox|BoundingBox]]|The value of collision box.|optional=true}}&lt;br /&gt;
Used to set the area of the entity that can have stickers on it, currently only used for units to specify the area where the green slow down stickers can appear.&lt;br /&gt;
It is optional and the collision box is used when not specified.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;sticker_box = {{-0.5, -0.5}, {0.5, 0.5}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|hit_visualization_box|[[Types/BoundingBox|BoundingBox]]|&amp;lt;nowiki&amp;gt;Empty = {{0, 0}, {0, 0}}&amp;lt;/nowiki&amp;gt;|optional=true}}&lt;br /&gt;
Where beams should hit the entity. Useful if the bounding box only covers part of the entity (e.g. feet of the character) and beams only hitting there would look weird.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|trigger_target_mask|[[Types/TriggerTargetMask|TriggerTargetMask]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|flags|[[Types/EntityPrototypeFlags|EntityPrototypeFlags]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|minable|[[Types/MinableProperties|MinableProperties]]|not minable|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|subgroup|[[Types/string|string]]|optional=true}}&lt;br /&gt;
The name of the subgroup this entity should be sorted into in the map editor building selection.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|allow_copy_paste|[[Types/bool|bool]]|true|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|selectable_in_game|[[Types/bool|bool]]|true|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|selection_priority|[[Types/uint8|uint8]]|50|optional=true}}&lt;br /&gt;
The entity with the higher number is selectable before the entity with the lower number. When two entities have the same selection priority, the one with the highest [[Types/CollisionMask|collision mask]] (as determined by the order on that page) is selected.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|remove_decoratives|[[Types/string|string]]|&amp;quot;automatic&amp;quot;|optional=true}}&lt;br /&gt;
Either &amp;quot;automatic&amp;quot;, &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;. Whether this entity should remove decoratives that collide with it when this entity is built. When set to &amp;quot;automatic&amp;quot;, if the entity type is considered a building (e.g. an assembling machine or a wall) it will remove decoratives.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|emissions_per_second|[[Types/double|double]]|0|optional=true}}&lt;br /&gt;
Amount of emissions created (positive number) or cleaned (negative number) every second by the entity.&lt;br /&gt;
This is passive, and it is independent concept of the emissions of machines, these are created actively depending on the power consumption.&lt;br /&gt;
Currently used just for trees.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;emissions_per_second = -0.001 -- cleaning effect of big tree&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|shooting_cursor_size|[[Types/double|double]]|optional=true}}&lt;br /&gt;
The cursor size used when shooting at this entity.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|created_smoke|[[Types/CreateTrivialSmokeEffectItem|CreateTrivialSmokeEffectItem]]|The &amp;quot;smoke-building&amp;quot;-smoke|optional=true}}&lt;br /&gt;
The smoke that is shown when the entity is placed.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|working_sound|[[Types/WorkingSound|WorkingSound]]|optional=true}}&lt;br /&gt;
Will also work on entities that don&#039;t actually do work.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|created_effect|[[Types/Trigger|Trigger]]|optional=true}}&lt;br /&gt;
The effect/trigger that happens when the entity is placed.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|build_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|mined_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|mining_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|rotated_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|vehicle_impact_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
When playing this sound, the volume is scaled by the speed of the vehicle when colliding with this entity.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|open_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|close_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|radius_visualisation_specification|[[Types/RadiusVisualisationSpecification|RadiusVisualisationSpecification]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|build_base_evolution_requirement|[[Types/double|double]]|0|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alert_icon_shift|[[Types/vector|vector]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alert_icon_scale|[[Types/float|float]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|fast_replaceable_group|[[Types/string|string]]|&amp;quot;&amp;quot;|optional=true}}&lt;br /&gt;
This allows you to replace an entity that&#039;s already placed, with a different one in your inventory. For example, replacing a burner inserter with a fast inserter. The replacement entity can be a different rotation to the replaced entity and you can replace an entity with the same type.&lt;br /&gt;
&lt;br /&gt;
This is simply a string, so any string can be used here. The entity that should be replaced simply has to use the same string here.&lt;br /&gt;
&lt;br /&gt;
The ones the game uses are:&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;container&amp;quot;&lt;br /&gt;
    &amp;quot;furnace&amp;quot;&lt;br /&gt;
    &amp;quot;transport-belt&amp;quot;&lt;br /&gt;
    &amp;quot;electric-pole&amp;quot;&lt;br /&gt;
    &amp;quot;steam-engine&amp;quot;&lt;br /&gt;
    &amp;quot;inserter&amp;quot;&lt;br /&gt;
    &amp;quot;long-handed-inserter&amp;quot;&lt;br /&gt;
    &amp;quot;pipe&amp;quot; - has special directional replacement logic to prevent directional change during a replacement from pipe to underground pipe.&lt;br /&gt;
    &amp;quot;assembling-machine&amp;quot;&lt;br /&gt;
    &amp;quot;wall&amp;quot;&lt;br /&gt;
    &amp;quot;loader&amp;quot;&lt;br /&gt;
    &amp;quot;rail-signal&amp;quot;&lt;br /&gt;
    &amp;quot;mining-drill&amp;quot;&lt;br /&gt;
    &amp;quot;pumpjack&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|next_upgrade|[[Types/string|string]]|optional=true}}&lt;br /&gt;
Name of the entity that will be automatically selected as the upgrade of this entity when using the [[upgrade planner]] without configuration.&lt;br /&gt;
&lt;br /&gt;
This entity may not have &#039;not-upgradable&#039; flag set and must be minable. This entity mining result must not contain item product with &amp;quot;hidden&amp;quot; flag set. Mining results with no item products are allowed. The entity may not be a [[Prototype/RollingStock]].&amp;lt;br&amp;gt;&lt;br /&gt;
The upgrade target entity needs to have the same bounding box, collision mask, and fast replaceable group as this entity. The upgrade target entity must have least 1 item that builds it that isn&#039;t hidden.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|placeable_by|[[Types/ItemToPlace|ItemToPlace]] or [[Types/table|table]] of [[Types/ItemToPlace|ItemToPlace]]|optional=true}}&lt;br /&gt;
Item that when placed creates this entity. Determines which item is picked when &amp;quot;Q&amp;quot; (smart pipette) is used on the entity, determines which item is needed in a blueprint of this entity.&lt;br /&gt;
&lt;br /&gt;
The item count specified here can&#039;t be larger than the stack size of that item.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|remains_when_mined|[[Types/string|string]] or [[Types/table|table]] of [[Types/string|string]]|optional=true}}&lt;br /&gt;
The entity that remains when this one is mined, deconstructed or fast-replaced. The entity wont actually be spawned if it would collide with the entity that is in the process of being mined.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|additional_pastable_entities|[[Types/table|table]] of [[Types/string|string]]|optional=true}}&lt;br /&gt;
Names of the entity prototypes this entity prototype can be pasted on to in addition to the standard supported types.&lt;br /&gt;
This is used to allow copying between types that aren&#039;t compatible on the C++ code side, by allowing mods to receive the [https://lua-api.factorio.com/latest/events.html#on_entity_settings_pasted on_entity_settings_pasted] event for the given entity and do the setting pasting via script.&amp;lt;br&amp;gt;&lt;br /&gt;
 additional_pastable_entities = {&amp;quot;steel-chest&amp;quot;, &amp;quot;iron-chest&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|tile_width|[[Types/uint32|uint32]]|calculated by the collision box width rounded up.|optional=true}}&lt;br /&gt;
Used to determine how the center of the entity should be positioned when building (unless the offgrid [[Types/EntityPrototypeFlags|flag]] is specified).&lt;br /&gt;
When the tile width is odd, the center will be in the center of the tile, when it is even, the center is on the tile transition.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|tile_height|[[Types/uint32|uint32]]|calculated by the collision box height rounded up.|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|autoplace|[[Types/AutoplaceSpecification|AutoplaceSpecification]]|nil (entity is not autoplacable)|optional=true}}&lt;br /&gt;
Used to specify the rules for placing this entity during map generation.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|map_color|[[Types/Color|Color]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|friendly_map_color|[[Types/Color|Color]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|enemy_map_color|[[Types/Color|Color]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|water_reflection|[[Types/WaterReflectionDefinition|WaterReflectionDefinition]]|optional=true}}&lt;br /&gt;
May also be defined inside &amp;lt;code&amp;gt;graphics_set&amp;lt;/code&amp;gt; instead of directly in the entity prototype. This is useful for entities that use the a &amp;lt;code&amp;gt;graphics_set&amp;lt;/code&amp;gt; property to define their graphics, because then all graphics can be defined in one place.&amp;lt;br&amp;gt;&lt;br /&gt;
Currently only renders for [[Prototype/EntityWithHealth]].[https://forums.factorio.com/100703]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;{&lt;br /&gt;
    type = &amp;quot;container&amp;quot;,&lt;br /&gt;
    name = &amp;quot;wooden-chest&amp;quot;,&lt;br /&gt;
    icon = &amp;quot;__base__/graphics/icons/wooden-chest.png&amp;quot;,&lt;br /&gt;
    flags = {&amp;quot;placeable-neutral&amp;quot;, &amp;quot;player-creation&amp;quot;},&lt;br /&gt;
    minable = {mining_time = 1, result = &amp;quot;wooden-chest&amp;quot;},&lt;br /&gt;
    max_health = 100,&lt;br /&gt;
    corpse = &amp;quot;small-remnants&amp;quot;,&lt;br /&gt;
    collision_box = {{-0.35, -0.35}, {0.35, 0.35}},&lt;br /&gt;
    fast_replaceable_group = &amp;quot;container&amp;quot;,&lt;br /&gt;
    selection_box = {{-0.5, -0.5}, {0.5, 0.5}},&lt;br /&gt;
    inventory_size = 16,&lt;br /&gt;
    open_sound = { filename = &amp;quot;__base__/sound/wooden-chest-open.ogg&amp;quot; },&lt;br /&gt;
    close_sound = { filename = &amp;quot;__base__/sound/wooden-chest-close.ogg&amp;quot; },&lt;br /&gt;
    vehicle_impact_sound =  { filename = &amp;quot;__base__/sound/car-wood-impact.ogg&amp;quot;, volume = 1.0 },&lt;br /&gt;
    picture =&lt;br /&gt;
    {&lt;br /&gt;
      filename = &amp;quot;__base__/graphics/entity/wooden-chest/wooden-chest.png&amp;quot;,&lt;br /&gt;
      priority = &amp;quot;extra-high&amp;quot;,&lt;br /&gt;
      width = 46,&lt;br /&gt;
      height = 33,&lt;br /&gt;
      shift = {0.25, 0.015625}&lt;br /&gt;
    },&lt;br /&gt;
    circuit_wire_connection_point =&lt;br /&gt;
    {&lt;br /&gt;
      shadow =&lt;br /&gt;
      {&lt;br /&gt;
        red = {0.734375, 0.453125},&lt;br /&gt;
        green = {0.609375, 0.515625},&lt;br /&gt;
      },&lt;br /&gt;
      wire =&lt;br /&gt;
      {&lt;br /&gt;
        red = {0.40625, 0.21875},&lt;br /&gt;
        green = {0.40625, 0.375},&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    circuit_connector_sprites = get_circuit_connector_sprites({0.1875, 0.15625}, nil, 18),&lt;br /&gt;
    circuit_wire_max_distance = 9&lt;br /&gt;
  }&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/RotatedAnimation&amp;diff=187709</id>
		<title>Types/RotatedAnimation</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/RotatedAnimation&amp;diff=187709"/>
		<updated>2021-12-16T23:08:42Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* direction_count */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mandatory properties ==&lt;br /&gt;
&lt;br /&gt;
=== direction_count ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
The sequential animation instance is loaded equal to the entities direction within the direction_count setting. If the entity direction is outside of the configured direction_count then the North (1st) animation is shown.&lt;br /&gt;
&lt;br /&gt;
Direction count to [[Types/Direction]] (animation sequence number):&lt;br /&gt;
*&#039;&#039;&#039;1&#039;&#039;&#039; - &#039;&#039;&#039;North&#039;&#039;&#039; (1)&lt;br /&gt;
*&#039;&#039;&#039;2&#039;&#039;&#039; - &#039;&#039;&#039;North&#039;&#039;&#039; (1), South (2)&lt;br /&gt;
*&#039;&#039;&#039;4&#039;&#039;&#039; - &#039;&#039;&#039;North&#039;&#039;&#039; (1), &#039;&#039;&#039;East&#039;&#039;&#039; (2), &#039;&#039;&#039;South&#039;&#039;&#039; (3), &#039;&#039;&#039;West&#039;&#039;&#039; (4)&lt;br /&gt;
*&#039;&#039;&#039;8&#039;&#039;&#039; - &#039;&#039;&#039;North&#039;&#039;&#039; (1), &#039;&#039;&#039;Northeast&#039;&#039;&#039; (2), &#039;&#039;&#039;East&#039;&#039;&#039; (3), &#039;&#039;&#039;Southeast&#039;&#039;&#039; (4), &#039;&#039;&#039;South&#039;&#039;&#039; (5), &#039;&#039;&#039;Southwest&#039;&#039;&#039; (6), &#039;&#039;&#039;West&#039;&#039;&#039; (7), &#039;&#039;&#039;Northwest&#039;&#039;&#039; (8)&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
=== layers ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/RotatedAnimation]]&lt;br /&gt;
&lt;br /&gt;
If this property is present, all RotatedAnimation definitions have to be placed as entries in the array, and they will all be loaded from there. Each item (RotatedAnimation definition) in the array may also have the &amp;lt;code&amp;gt;layers&amp;lt;/code&amp;gt; property.&lt;br /&gt;
&lt;br /&gt;
If this property is present, all other properties are ignored and the mandatory properties do not have to be defined.&lt;br /&gt;
&lt;br /&gt;
Layers may not be an empty table.&lt;br /&gt;
&lt;br /&gt;
=== hr_version ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/RotatedAnimation]]&lt;br /&gt;
&lt;br /&gt;
If this property exists and high resolution sprites are turned on, its contents are used to load the RotatedAnimation.&lt;br /&gt;
&lt;br /&gt;
=== filename ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/FileName]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;stripes&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filenames&amp;lt;/code&amp;gt; is not specified.&lt;br /&gt;
&lt;br /&gt;
=== filenames ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[types/table]] of [[Types/FileName]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Only loaded if &amp;lt;code&amp;gt;stripes&amp;lt;/code&amp;gt; is not present.&lt;br /&gt;
&lt;br /&gt;
=== slice ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;filenames&amp;lt;/code&amp;gt; is present.&lt;br /&gt;
&lt;br /&gt;
=== lines_per_file ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;filenames&amp;lt;/code&amp;gt; is present.&lt;br /&gt;
&lt;br /&gt;
=== priority ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpritePriority]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;medium&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== flags ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteFlags]]&lt;br /&gt;
&lt;br /&gt;
=== size ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]] or [[Types/table]] of [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
The width and height of the one frame. If this is an array, the first member of the array is the width and the second is the height. Otherwise the size is both width and height.&lt;br /&gt;
&lt;br /&gt;
Width and height may only be in the range of 0-8192.&lt;br /&gt;
&lt;br /&gt;
=== width ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; is not given. Width of one frame in pixels, from 0-8192.&lt;br /&gt;
&lt;br /&gt;
=== height ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; is not given. Height of one frame in pixels, from 0-8192.&lt;br /&gt;
&lt;br /&gt;
=== x ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Horizontal position of the animation in the source file in pixels.&lt;br /&gt;
&lt;br /&gt;
=== y ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Vertical position of the animation in the source file in pixels.&lt;br /&gt;
&lt;br /&gt;
=== position ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
Loaded only when &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; are both 0. The first member of the array is x and the second is y. &lt;br /&gt;
&lt;br /&gt;
=== shift ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/vector]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== scale ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Values different than 1 specify the scale of the animation on default zoom.&lt;br /&gt;
Scale 2 means that the picture will be 2 times bigger on screen (and more pixelated).&lt;br /&gt;
&lt;br /&gt;
=== draw_as_shadow ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Only one of &amp;lt;code&amp;gt;draw_as_shadow&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;draw_as_glow&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;draw_as_light&amp;lt;/code&amp;gt; can be true. &amp;lt;code&amp;gt;draw_as_shadow&amp;lt;/code&amp;gt; takes precedence over &amp;lt;code&amp;gt;draw_as_glow&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;draw_as_light&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== draw_as_glow ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Only one of &amp;lt;code&amp;gt;draw_as_shadow&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;draw_as_glow&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;draw_as_light&amp;lt;/code&amp;gt; can be true. &amp;lt;code&amp;gt;draw_as_glow&amp;lt;/code&amp;gt; takes precedence over &amp;lt;code&amp;gt;draw_as_light&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Draws first as a normal sprite, and again as a light layer.&amp;lt;sup&amp;gt;[https://forums.factorio.com/91682]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== draw_as_light ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Only one of &amp;lt;code&amp;gt;draw_as_shadow&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;draw_as_glow&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;draw_as_light&amp;lt;/code&amp;gt; can be true.&lt;br /&gt;
&lt;br /&gt;
=== mipmap_count ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Only loaded if this is an icon (has flag &amp;quot;group=icon&amp;quot; or &amp;quot;group=gui&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== apply_runtime_tint ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== tint ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Color]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: {r=1, g=1, b=1, a=1} (white)&lt;br /&gt;
&lt;br /&gt;
=== blend_mode ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/BlendMode]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;normal&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== load_in_minimal_mode ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Minimal mode is entered when mod loading fails. You are in it when you see the gray box after (part of) the loading screen that tells you a mod error ([https://cdn.discordapp.com/attachments/340530709712076801/532315796626472972/unknown.png Example]). If you are a modder, you can just ignore this property.&lt;br /&gt;
&lt;br /&gt;
=== premul_alpha ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: true&lt;br /&gt;
&lt;br /&gt;
Whether alpha should be premultiplied.&lt;br /&gt;
&lt;br /&gt;
=== generate_sdf ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Unused.&lt;br /&gt;
&lt;br /&gt;
=== run_mode ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;forward&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Possible values are:&lt;br /&gt;
*forward&lt;br /&gt;
*backward&lt;br /&gt;
*forward-then-backward&lt;br /&gt;
&lt;br /&gt;
=== frame_count ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Can&#039;t be 0.&lt;br /&gt;
&lt;br /&gt;
=== line_length ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Once the specified number of pictures is loaded, other pictures are loaded on other line.&lt;br /&gt;
This is to allow having longer animations in matrix, to avoid pictures with too big width.&lt;br /&gt;
The game engine limits the width of any input picture to 2048px, so it is compatible with most graphics cards.&lt;br /&gt;
&lt;br /&gt;
=== animation_speed ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Modifier of the animation playing speed, the default is 1, which means one animation frame per tick (60 fps).&lt;br /&gt;
The speed of playing can often vary depending on the usage (output of steam engine for example). Has to be greater than 0.&lt;br /&gt;
&lt;br /&gt;
=== max_advance ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: MAX_FLOAT&lt;br /&gt;
&lt;br /&gt;
=== repeat_count ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Can&#039;t be 0.&lt;br /&gt;
&lt;br /&gt;
=== dice ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
=== dice_x ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
=== dice_y ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
=== frame_sequence ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/AnimationFrameSequence]]&lt;br /&gt;
&lt;br /&gt;
=== still_frame ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
=== axially_symmetrical ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
If true, &amp;lt;code&amp;gt;direction_count&amp;lt;/code&amp;gt; must be greater than 1.&lt;br /&gt;
&lt;br /&gt;
=== counterclockwise ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== middle_orientation ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/RealOrientation]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0.5&lt;br /&gt;
&lt;br /&gt;
=== orientation_range ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Automatically clamped to be between 0 and 1.&lt;br /&gt;
&lt;br /&gt;
=== apply_projection ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: true&lt;br /&gt;
&lt;br /&gt;
=== stripes ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table|table]] (array) of [[Types/Stripe|Stripe]]&lt;br /&gt;
&lt;br /&gt;
{{Prototype property type usage|{{FULLPAGENAME}}}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Locomotive&amp;diff=186443</id>
		<title>Locomotive</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Locomotive&amp;diff=186443"/>
		<updated>2021-06-28T14:49:03Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Driving controls */ clarify which key does left turn and which does right turn.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Locomotive}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Locomotive&#039;&#039;&#039; is the engine for movement of [[Railway|trains]] over [[Railway#Tracks|track]]. Trains are useful for moving large amounts of items over large distances.&lt;br /&gt;
&lt;br /&gt;
Locomotives are also good vehicles for the player to reach fixed destinations, as they are considerably faster than the [[car]] or [[tank]].  Naturally they do not have the same freedom of movement, however, as they are confined to the track. They can be set up to travel automatically between [[train stop]]s, or be controlled manually, even if the [[player]] is in a [[cargo wagon]] attached to the train, rather than the controlling locomotive itself. Automatic trains can also use [[rail signal]]s and [[rail chain signal]]s to designate different or changing paths on a railway, as well as manage multiple trains on multiple or intertwining tracks.&lt;br /&gt;
&lt;br /&gt;
Locomotives are [[burner devices]] and require [[fuel]] to run; the more powerful the fuel used, the faster the locomotive&#039;s acceleration and top speed will be. [[Solid fuel]], [[rocket fuel]] and [[nuclear fuel]] will give +20%, +80% and +150% acceleration respectively, and provide +5%, +15% and +15% for top speed respectively. Multiple locomotives can be used on a single train to increase its speed.&lt;br /&gt;
&lt;br /&gt;
While locomotives can be assembled by hand, the [[engine unit]] for it require [[Assembling machine|automated construction]] to build, so it cannot be built from raw materials by hand. The color of the locomotive can be customized.&lt;br /&gt;
&lt;br /&gt;
== Connecting/Disconnecting a locomotive ==&lt;br /&gt;
[[File:locomotive_gui.png|thumb|right|200px|Locomotive GUI]]&lt;br /&gt;
&lt;br /&gt;
To connect locomotives, cargo wagons or [[fluid wagon]]s to each other, either place the cars next to each other on the track (there will be an outlined green connection), or connect an already existing disconnected car by driving the locomotive near the car and press {{Keybinding|G}} by default. To disconnect the last car in a train, press {{Keybinding|V}} by default.&lt;br /&gt;
&lt;br /&gt;
== Defense ==&lt;br /&gt;
Locomotives in transit can usually crash through everything in its way (including biters, [[car|other]] [[tank|vehicles]], and the player). However, if the locomotive is moving too slowly, or the target is too tough, it will stop the train instead. If the locomotive hits an [[enemy]], the enemies will fight back and try to destroy the train and the rails.&lt;br /&gt;
&lt;br /&gt;
[[Construction robot]]s are a good way to automatically repair damage at train stations.&lt;br /&gt;
&lt;br /&gt;
[[File:train_kills_biters.gif|frame|none|Train killing three big biters.]]&lt;br /&gt;
&lt;br /&gt;
== Maximum speed ==&lt;br /&gt;
The maximum speed that a locomotive can get to depends on the train that it is pulling. The speed of an accelerating, fully fueled, train is calculated every tick by the game with the following formula:&lt;br /&gt;
&lt;br /&gt;
 train_speed = max(0, abs(train_speed) - train_friction_force ÷ train_weight)&lt;br /&gt;
 train_speed = train_speed + (10 × number_of_locomotives_in_moving_direction × fuel_acceleration_bonus ÷ train_weight)&lt;br /&gt;
 train_speed = train_speed × (1 - air_resistance_of_front_rolling_stock ÷ (train_weight ÷ 1000))&lt;br /&gt;
&lt;br /&gt;
Where train_friction_force is the summed up friction of each wagon and locomotive (0.5 for any type of wagon including locomotives) and train_weight is the summed up weight of each wagon and locomotive, see their individual pages for the weight values. The friction and air resistance of wagons and locomotives can be found in their prototypes. The calculated train_speed is capped to &amp;lt;code&amp;gt;max_speed = 1.2 * fuel_top_speed_multiplier&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Fuel duration (in seconds) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 1 item of !! Burning time in seconds&lt;br /&gt;
|-&lt;br /&gt;
| {{Icon|Wood}} || 3.33&lt;br /&gt;
|-&lt;br /&gt;
| {{Icon|Coal}} || 6.67&lt;br /&gt;
|-&lt;br /&gt;
| {{Icon|Solid fuel}} || 20&lt;br /&gt;
|-&lt;br /&gt;
| {{Icon|Rocket fuel}} || 166.67&lt;br /&gt;
|-&lt;br /&gt;
| {{Icon|Nuclear fuel}} || 2016.67&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Driving controls ==&lt;br /&gt;
&#039;&#039;These are the default bindings. They can be changed in the Options menu.&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|Enter/Exit&lt;br /&gt;
|{{Keybinding|enter}}&lt;br /&gt;
|-&lt;br /&gt;
|Accelerate&lt;br /&gt;
|{{Keybinding|W}}&lt;br /&gt;
|-&lt;br /&gt;
|Decelerate/Reverse&lt;br /&gt;
|{{Keybinding|S}}&lt;br /&gt;
|-&lt;br /&gt;
|Pick which fork to take at junction (left, right)&lt;br /&gt;
|{{Keybinding|A}},{{Keybinding|D}}&lt;br /&gt;
|-&lt;br /&gt;
|Connect/Disconnect rolling stock&lt;br /&gt;
|{{Keybinding|G}},{{Keybinding|V}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
Locomotives are directly connected to the following achievements:&lt;br /&gt;
{{Achievement|getting-on-track}}&lt;br /&gt;
{{Achievement|getting-on-track-like-a-pro}}&lt;br /&gt;
{{Achievement|watch-your-step}}&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&amp;lt;gallery widths=320px&amp;gt;&lt;br /&gt;
File:trains_colors.png|The player among different colored locomotives.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
{{history|0.17.0|&lt;br /&gt;
* Locomotive fuel consumption doubled.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.16.0|&lt;br /&gt;
* Locomotive will show train ID in its tooltip. The ID can be used in circuit network conditions.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.15.19|&lt;br /&gt;
* Locomotive snaps to a train stop when placing the first locomotive next to the train stop.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.15.7|&lt;br /&gt;
* Inserters will no longer take fuel from locomotives and instead will take the burnt result items if the locomotive fuel uses that system.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.15.0|&lt;br /&gt;
* Renamed &amp;quot;diesel-locomotive&amp;quot; to &amp;quot;locomotive&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.14.0|&lt;br /&gt;
* Added support for equipment grids in locomotives.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.13.0|&lt;br /&gt;
* New locomotive graphics.&lt;br /&gt;
* Can now be colored.&lt;br /&gt;
* Trains are now regular size in horizontal and vertical orientations.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.12.1|&lt;br /&gt;
* Trains that are moving automatically cannot be rotated.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.12.0|&lt;br /&gt;
* Now show contents in tooltip.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.11.18|&lt;br /&gt;
* Increased the crafting cost of the cargo wagon and locomotive.&lt;br /&gt;
* Removing and merging the locomotive of a train without any additional locomotives doesn&#039;t clear the schedule anymore.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.11.6|&lt;br /&gt;
* Copy paste can now be used for train schedules.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.10.2|&lt;br /&gt;
* Now recalculates path on rotation.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.10.0|&lt;br /&gt;
* Backer names are used for locomotives.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.9.0|&lt;br /&gt;
* Recipe change}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.5.0|&lt;br /&gt;
* Train can find the path backward when it has locomotives in the back&lt;br /&gt;
* New locomotive graphics.&lt;br /&gt;
* Locomotive + wagon + rails are more expensive.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.4.1|&lt;br /&gt;
* Smooth (precise) rolling stock placement.&lt;br /&gt;
* Rotating while building affects the direction of the rolling stock.&lt;br /&gt;
* Rolling stocks can be disconnected from both sides.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.4.0|&lt;br /&gt;
* Locomotive uses fuel.&lt;br /&gt;
* Locomotive and Car are minable&lt;br /&gt;
* Easier riding in locomotive and car (accelerate vs. brake vs. reverse)&lt;br /&gt;
* Automated train transportation. Trains can be given schedule to go to Train Stops (named after backers).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.2.8|&lt;br /&gt;
* Now shows health bar below locomotive.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.2.1|&lt;br /&gt;
* Now emits light if active.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.1.0|&lt;br /&gt;
* Introduced}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Cargo wagon]]&lt;br /&gt;
* [[Fluid wagon]]&lt;br /&gt;
&lt;br /&gt;
{{LogisticsNav}}&lt;br /&gt;
{{C|Railway}}&lt;br /&gt;
{{C|Rolling stock}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/EntityPrototypeFlags&amp;diff=184157</id>
		<title>Types/EntityPrototypeFlags</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/EntityPrototypeFlags&amp;diff=184157"/>
		<updated>2021-01-03T16:06:03Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* &amp;quot;player-creation&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Array ([[Types/table]]) of strings. The possible strings are listed below.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-rotatable&amp;quot; ==&lt;br /&gt;
Can&#039;t be rotated before or after placing.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;placeable-[force]&amp;quot; ==&lt;br /&gt;
*&amp;quot;placeable-player&amp;quot;&lt;br /&gt;
*&amp;quot;placeable-neutral&amp;quot;&lt;br /&gt;
*&amp;quot;placeable-enemy&amp;quot;&lt;br /&gt;
placeable neutral/player/enemy determine the default force when placing entities in the map editor and using the *AUTO* option for the force.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;placeable-off-grid&amp;quot; ==&lt;br /&gt;
placeable-off-grid refers to the fact that most entities are placed on an invisible &#039;grid&#039; within the world, entities with the placeable-off-grid flag do not have to line up with this grid (like trees and land-mines)&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;player-creation&amp;quot; ==&lt;br /&gt;
Makes it possible for the biter AI to target the entity as a distraction. Makes it possible to blueprint, deconstruct, and repair the entity (can be turned off again using the specific flags). Enables smoke to be created automatically when building the entity. Enables the entity to appear on the map/minimap.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;building-direction-8-way&amp;quot; ==&lt;br /&gt;
Uses 45 degree angle increments when selecting direction.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;filter-directions&amp;quot; ==&lt;br /&gt;
Used to automatically detect the proper direction, if possible. Used by base with the pump, train stop, and train signal.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;fast-replaceable-no-build-while-moving&amp;quot; ==&lt;br /&gt;
Fast replace will not apply when building while moving.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;breaths-air&amp;quot; ==&lt;br /&gt;
This is used to specify that the entity breathes air, and so is affected by poison (currently [[Poison_capsule|poison capsules]] are the only source).&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-repairable&amp;quot; ==&lt;br /&gt;
Used to specify that the entity can not be &#039;healed&#039; by repair-packs (or construction robots with repair packs)&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-on-map&amp;quot; ==&lt;br /&gt;
The entity does not get drawn on the map.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-blueprintable&amp;quot; ==&lt;br /&gt;
The entity can&#039;t be used in blueprints.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-deconstructable&amp;quot; ==&lt;br /&gt;
The entity can&#039;t be deconstructed.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;hidden&amp;quot; ==&lt;br /&gt;
Hides the entity from the bonus GUI (button above the map) and from the made in property of recipe tooltips.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;hide-alt-info&amp;quot; ==&lt;br /&gt;
Hides the alt-info of an entity in alt-mode, for example the recipe icon.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;fast-replaceable-no-cross-type-while-moving&amp;quot; ==&lt;br /&gt;
Do not fast replace over other entity types when building while moving.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;no-gap-fill-while-building&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-flammable&amp;quot; ==&lt;br /&gt;
Do not apply fire stickers to the entity.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;no-automated-item-removal&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Prevents inserters and loaders from taking items from this entity.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;no-automated-item-insertion&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Prevents inserters and loaders from inserting items into this entity.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;no-copy-paste&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-selectable-in-game&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-upgradable&amp;quot; == &lt;br /&gt;
The entity can&#039;t be selected by the [[upgrade planner]].&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-in-kill-statistics&amp;quot; ==&lt;br /&gt;
The entity is not shown in the kill statistics.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
    flags = {&amp;quot;placeable-neutral&amp;quot;, &amp;quot;player-creation&amp;quot;}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Console&amp;diff=182144</id>
		<title>Console</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Console&amp;diff=182144"/>
		<updated>2020-09-07T16:58:23Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Using the console */ Expand the TAB part to be more complete.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
The &#039;&#039;&#039;console&#039;&#039;&#039; is Factorio&#039;s in-game command-line interface. See [[command line parameters]] for the command line interface of the Factorio executable.&lt;br /&gt;
&lt;br /&gt;
The in-game console can be used for:&lt;br /&gt;
&lt;br /&gt;
* Chatting with other players&lt;br /&gt;
* Occasional status updates&lt;br /&gt;
* Running commands / scripts / cheats&lt;br /&gt;
&lt;br /&gt;
There are three types of commands:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[#Normal commands|Normal]]&#039;&#039;&#039; - Display information about the game and customize your experience.&lt;br /&gt;
* &#039;&#039;&#039;[[#Multiplayer commands|Multiplayer]]&#039;&#039;&#039; - Message filtering, banning users, etc.&lt;br /&gt;
* &#039;&#039;&#039;[[#Scripting and cheat commands|Scripting/Cheating]]&#039;&#039;&#039; - Run small Lua scripts (but they &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;disable achievements for the save game&amp;lt;/span&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== Using the console ===&lt;br /&gt;
The console display can be toggled with the {{keybinding|/}} (slash) or {{keybinding|~}} (tilde) keys.&lt;br /&gt;
&lt;br /&gt;
You can customize the keys via &#039;&#039;&#039;Options Menu → Keyboard → Toggle Lua console&#039;&#039;&#039;.&lt;br /&gt;
When the console is open, you&#039;ll see a blinking cursor at the bottom of the screen; type your message or command and hit &#039;&#039;&#039;Return&#039;&#039;&#039; to send it (this will also close the console).&lt;br /&gt;
Documentation about message and command prefixes can be found further down this page.&lt;br /&gt;
&lt;br /&gt;
The console supports [[rich text]] tags. These tags are useful for sharing blueprints, marking map locations in chat or adding icons to map markers and train stations. Ctrl + Alt-clicking the map or ground will automatically insert a GPS tag and post it into the console. Shift-clicking most things with the console open will insert a tag for that thing into the console.&lt;br /&gt;
&lt;br /&gt;
When the console is closed, only the most recent messages/commands will be displayed, but they will gradually fade away (opening the console will immediately re-display all recent messages).&lt;br /&gt;
Note that by default, all executed commands are made visible to all users. You can set the fade-out time via &#039;&#039;&#039;Options Menu → Other Settings → Message Delay&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you want to immediately hide the console, open the console and then press &#039;&#039;&#039;Escape&#039;&#039;&#039; key (or press &#039;&#039;&#039;Return&#039;&#039;&#039; without entering any message/command).&lt;br /&gt;
This not only closes the console, but it also hides all the recent messages/commands.&lt;br /&gt;
The console can be cleared with the &#039;&#039;&#039;/clear&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Use the {{keybinding|&amp;amp;uarr;}} and {{keybinding|&amp;amp;darr;}} keys to scroll through the console history. The {{keybinding|Tab}} key provides intelligent code completion on commands, options and player names.&lt;br /&gt;
&lt;br /&gt;
== Normal commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Command&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Example&lt;br /&gt;
! style=&amp;quot;width:46%&amp;quot;| Description&lt;br /&gt;
! style=&amp;quot;width:4%&amp;quot;| Admin only&lt;br /&gt;
|-&lt;br /&gt;
| /alerts &amp;lt;enable/disable/mute/unmute&amp;gt; &amp;lt;alert&amp;gt;&lt;br /&gt;
| /alerts disable turret_fire&lt;br /&gt;
| Enables, disables, mutes, or unmutes the given  [[alerts|alert]] type. Available alerts: entity_destroyed, entity_under_attack, not_enough_construction_robots, no_material_for_construction, not_enough_repair packs, turret_fire, custom, no_storage, train_out_of_fuel, fluid_mixing.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /clear&lt;br /&gt;
| /clear&lt;br /&gt;
| Clears the console.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /color &amp;lt;color&amp;gt;&lt;br /&gt;
| /color 20 255 255 100&lt;br /&gt;
| Changes your color. Can either be one of the pre-defined colors or [[:Wikipedia:RGBA_color_space|RGBA value]] in the format of “# # # #”. Available colors: default, red, green, blue, orange, yellow, pink, purple, white, black, gray, brown, cyan, acid.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /evolution&lt;br /&gt;
| /evolution&lt;br /&gt;
| Prints info about the alien evolution factor.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /help [command]&lt;br /&gt;
| /help&lt;br /&gt;
| Prints a list of available commands, the optional argument can specify the command that should be described.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /h [command]&lt;br /&gt;
| /h&lt;br /&gt;
| Same as /help.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /mute-programmable-speaker &amp;lt;mute/unmute&amp;gt; &amp;lt;local/everyone&amp;gt;&lt;br /&gt;
| /mute-programmable-speaker mute local&lt;br /&gt;
| Mutes or unmutes the global sounds created by the Programmable Speaker. Use “local” to mute just the local client. Admins can use “everyone” to mute the sounds for everyone on the server.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /perf-avg-frames &amp;lt;number&amp;gt;&lt;br /&gt;
| /perf-avg-frames 100&lt;br /&gt;
| Number of ticks/updates used to average performance counters. Default is 100. Value of 5-10 is recommended for fast convergence, but numbers will jitter more rapidly.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /permissions&lt;br /&gt;
| /permissions&lt;br /&gt;
| Opens the permissions GUI.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /screenshot [x resolution] [y resolution] [zoom]&lt;br /&gt;
| /screenshot&lt;br /&gt;
| Takes a screenshot with the GUI hidden, centered on the player. It is saved in the &amp;quot;script-output&amp;quot; subfolder of your [[User data directory]].  Resolution is optional and defaults to the current window size. Zoom is optional and defaults to 1.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /seed&lt;br /&gt;
| /seed&lt;br /&gt;
| Prints the starting map seed.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /time&lt;br /&gt;
| /time&lt;br /&gt;
| Prints info about how old the map is.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-action-logging&lt;br /&gt;
| /toggle-action-logging&lt;br /&gt;
| Toggles logging all input actions performed by the game. This value isn’t persisted between game restarts and only affects your local game in multiplayer sessions.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-heavy-mode&lt;br /&gt;
| /toggle-heavy-mode&lt;br /&gt;
| Used to investigate [[Desynchronization#Using_heavy_mode_command|desyncs]]. Will slow down the game and make multiplayer unplayable.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-rockets-sent-gui&lt;br /&gt;
| /toggle-rockets-sent-gui&lt;br /&gt;
| Toggles if the rockets sent button is shown in the upper left corner of the screen.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /unlock-shortcut-bar&lt;br /&gt;
| /unlock-shortcut-bar&lt;br /&gt;
| Unlocks all shortcut bar items.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /version&lt;br /&gt;
| /version&lt;br /&gt;
| Prints the current game version.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multiplayer commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Command&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Example&lt;br /&gt;
! style=&amp;quot;width:46%&amp;quot;| Description&lt;br /&gt;
! style=&amp;quot;width:4%&amp;quot;| Admin only&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;message&amp;gt;&lt;br /&gt;
| Hello team!&lt;br /&gt;
| Console input that does not start with {{keybinding|/}} is shown as a chat message to your team.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /admin&lt;br /&gt;
| /admin&lt;br /&gt;
| Opens the player management GUI.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /admins&lt;br /&gt;
| /admins&lt;br /&gt;
| Prints a list of game admins.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /ban &amp;lt;player&amp;gt; &amp;lt;reason&amp;gt;&lt;br /&gt;
| /ban xTROLLx Throwing grenades in base&lt;br /&gt;
| Bans the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /banlist &amp;lt;add/remove/get/clear&amp;gt; &amp;lt;player&amp;gt;&lt;br /&gt;
| /banlist get&lt;br /&gt;
| Adds or removes a player from the banlist. Same as /ban or /unban.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /config &amp;lt;get/set&amp;gt; &amp;lt;option&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
| /config set password hunter2&lt;br /&gt;
| Gets or sets various multiplayer game settings. Available configs are: afk-auto-kick, allow-commands, allow-debug-settings, autosave-interval, autosave-only-on-server, ignore-player-limit-for-returning-players, max-players, max-upload-speed, only-admins-can-pause, password, require-user-verification, visibility-lan, visibility-public.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /delete-blueprint-library &amp;lt;player&amp;gt;&lt;br /&gt;
| /delete-blueprint-library everybody confirm&lt;br /&gt;
| Deletes the blueprint library storage for the given offline player from the save file. Enter “everybody confirm” to delete the storage of all offline players.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /demote &amp;lt;player&amp;gt;&lt;br /&gt;
| /demote AzureDiamond&lt;br /&gt;
| Demotes the player from admin.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /ignore &amp;lt;player&amp;gt;&lt;br /&gt;
| /ignore Cthon98&lt;br /&gt;
| Prevents the chat from showing messages from this player. Admin messages are still shown.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /ignores&lt;br /&gt;
| /ignores&lt;br /&gt;
| Prints a list of ignored players.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /kick &amp;lt;player&amp;gt; &amp;lt;reason&amp;gt;&lt;br /&gt;
| /kick xTROLLx Throwing grenades in base&lt;br /&gt;
| Kicks the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /mute &amp;lt;player&amp;gt;&lt;br /&gt;
| /mute Cthon98&lt;br /&gt;
| Prevents the player from saying anything in chat.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /mutes&lt;br /&gt;
| /mutes&lt;br /&gt;
| All players that are muted (can’t talk in chat).&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /open &amp;lt;player&amp;gt;&lt;br /&gt;
| /open AzureDiamond&lt;br /&gt;
| Opens another player’s inventory.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /o &amp;lt;player&amp;gt;&lt;br /&gt;
| /o AzureDiamond&lt;br /&gt;
| Same as /open.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /players [online/o/count/c]&lt;br /&gt;
| /players&lt;br /&gt;
| Prints a list of players in the game. (parameter online/o, it prints only players that are online, count/c prints only count)&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /promote &amp;lt;player&amp;gt;&lt;br /&gt;
| /promote AzureDiamond&lt;br /&gt;
| Promotes the player to admin.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /purge &amp;lt;player&amp;gt;&lt;br /&gt;
| /purge Cthon98&lt;br /&gt;
| Clears all the messages from this player from the chat log.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /reply &amp;lt;message&amp;gt;&lt;br /&gt;
| /reply oh, really?&lt;br /&gt;
| Replies to the last player that whispered to you.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /r &amp;lt;message&amp;gt;&lt;br /&gt;
| /r oh, really?&lt;br /&gt;
| Same as /reply.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /server-save&lt;br /&gt;
| /server-save&lt;br /&gt;
| Saves the game on the server in a multiplayer game.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /shout &amp;lt;message&amp;gt;&lt;br /&gt;
| /shout Hello world!&lt;br /&gt;
| Sends a message to all players including other forces.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /s &amp;lt;message&amp;gt;&lt;br /&gt;
| /s Hello world!&lt;br /&gt;
| Same as /shout.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /swap-players &amp;lt;player&amp;gt; [player]&lt;br /&gt;
| /swap-players AzureDiamond&lt;br /&gt;
| Swaps your character with the given player’s character, or if two players are given swaps the two player characters.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /unban &amp;lt;player&amp;gt;&lt;br /&gt;
| /unban xTROLLx&lt;br /&gt;
| Unbans the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /unignore &amp;lt;player&amp;gt;&lt;br /&gt;
| /unignore Cthon98&lt;br /&gt;
| Allows the chat to show messages from this player.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /unmute &amp;lt;player&amp;gt;&lt;br /&gt;
| /unmute Cthon98&lt;br /&gt;
| Allows the player to talk in chat again.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /whisper &amp;lt;player&amp;gt; &amp;lt;message&amp;gt;&lt;br /&gt;
| /whisper AzureDiamond that&#039;s what I see&lt;br /&gt;
| Sends a message to the specified player.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /w &amp;lt;player&amp;gt; &amp;lt;message&amp;gt;&lt;br /&gt;
| /w AzureDiamond that&#039;s what I see&lt;br /&gt;
| Same as /whisper.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /whitelist &amp;lt;add/remove/get/clear&amp;gt; [player]&lt;br /&gt;
| /whitelist get&lt;br /&gt;
| Adds or removes a player from the whitelist, where only whitelisted players can join the game. Enter nothing for “player” when using “get” to print a list of all whitelisted players. An empty whitelist disables the whitelist functionality allowing anyone to join.&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Scripting and cheat commands ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| /cheat &amp;lt;all&amp;gt;&lt;br /&gt;
| Researches all technologies and enables cheat mode. Using the &#039;&#039;&#039;all&#039;&#039;&#039; option also gives the player some additional items.&lt;br /&gt;
|-&lt;br /&gt;
| /command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed).&lt;br /&gt;
|-&lt;br /&gt;
| /c &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed).&lt;br /&gt;
|-&lt;br /&gt;
| /editor&lt;br /&gt;
| Toggles the map editor.&lt;br /&gt;
|-&lt;br /&gt;
| /measured-command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed) and measures time it took.&lt;br /&gt;
|-&lt;br /&gt;
| /silent-command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed) without printing it to the console.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is a very powerful feature, which also allows cheating, and as such &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;achievements will be permanently disabled for the save&amp;lt;/span&amp;gt; as soon as you use a script command.&lt;br /&gt;
&lt;br /&gt;
== Basic example scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Use it as calculator ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(1234*5678)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zoom beyond normal bounds ===&lt;br /&gt;
Note that zooming too far out can cause performance hits. Be careful.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.zoom=0.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mine faster ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.manual_mining_speed_modifier=1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Craft faster ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.manual_crafting_speed_modifier=1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unlock and research all technologies ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.research_all_technologies()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Undo this with the command in the next section.&lt;br /&gt;
&lt;br /&gt;
=== Unresearch all technologies ===&lt;br /&gt;
This does not reset manually applied bonuses&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, tech in pairs(game.player.force.technologies) do &lt;br /&gt;
	tech.researched=false&lt;br /&gt;
	game.player.force.set_saved_technology_progress(tech, 0)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reset your force ===&lt;br /&gt;
This resets all data for your force, including kill and production statistics, technologies, bonuses and charting status.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.reset()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Always show rail block visualization ===&lt;br /&gt;
Permanently show the rail block visualization instead of only when holding a rail signal. Disable by replacing true with false.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.game_view_settings.show_rail_block_visualisation = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inventory manipulation scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Cheat mode ===&lt;br /&gt;
Allows for infinite free crafting. Disable by replacing true with false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.cheat_mode=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Refill resources (refill oil, iron etc.) ===&lt;br /&gt;
While holding the cursor over a resource tile in-game&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.selected.amount=7500&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively you can refill all resources in the map with the following command. Change ore.amount to the desired value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c surface = game.player.surface&lt;br /&gt;
for _, ore in pairs(surface.find_entities_filtered({type=&amp;quot;resource&amp;quot;})) do&lt;br /&gt;
    ore.amount = 10000&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add items to the player&#039;s inventory ===&lt;br /&gt;
Replace iron-plate with the [[data.raw|internal name]] of the item desired.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.insert{name=&amp;quot;iron-plate&amp;quot;, count=100}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For instance, here&#039;s a stack of the god-mode energy system interface:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.insert{name=&amp;quot;electric-energy-interface&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a powerful armor with equipment and some tools for construction:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c	local player = game.player&lt;br /&gt;
player.insert{name=&amp;quot;power-armor-mk2&amp;quot;, count = 1}&lt;br /&gt;
local p_armor = player.get_inventory(5)[1].grid&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;energy-shield-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;energy-shield-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;personal-roboport-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;night-vision-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;battery-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;battery-mk2-equipment&amp;quot;})&lt;br /&gt;
player.insert{name=&amp;quot;construction-robot&amp;quot;, count = 25}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase player inventory slots ===&lt;br /&gt;
Gives 100 additional bonus inventory slots to your entire force. Used by the [[Toolbelt]] research.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.character_inventory_slots_bonus=100&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== World manipulation scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Reveal the map around the player ===&lt;br /&gt;
&lt;br /&gt;
Reveals the map around the player, similar to a [[radar]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local radius=150&lt;br /&gt;
game.player.force.chart(game.player.surface, {{game.player.position.x-radius, game.player.position.y-radius}, {game.player.position.x+radius, game.player.position.y+radius}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or from start position&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local radius=150&lt;br /&gt;
game.player.force.chart(game.player.surface, {{x = -radius, y = -radius}, {x = radius, y = radius}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Change 150 to the desired radius, higher values take longer.&lt;br /&gt;
&lt;br /&gt;
=== Hide revealed map ===&lt;br /&gt;
&lt;br /&gt;
Hides all revealed chunks, inverted map revealing.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local force = game.player.force&lt;br /&gt;
for chunk in surface.get_chunks() do&lt;br /&gt;
  force.unchart_chunk({x = chunk.x, y = chunk.y}, surface)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reveal all generated map ===&lt;br /&gt;
&lt;br /&gt;
Revels all of the generated map to the player&#039;s team.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.chart_all()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete chunks ===&lt;br /&gt;
If much of the map is revealed, it increases the size of the save file. The following command cancels the generation of all chunks that are currently queued for generation and removes chunks outside a 32 chunks radius around 0,0. Note that this will remove player entities if there are any on these chunks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface;&lt;br /&gt;
game.player.force.cancel_charting(surface); &lt;br /&gt;
local chunk_radius = 32;&lt;br /&gt;
for chunk in surface.get_chunks() do&lt;br /&gt;
  if (chunk.x &amp;lt; -chunk_radius or chunk.x &amp;gt; chunk_radius or chunk.y &amp;lt; -chunk_radius or chunk.y &amp;gt; chunk_radius) then&lt;br /&gt;
    surface.delete_chunk(chunk)&lt;br /&gt;
  end&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Turn off night ===&lt;br /&gt;
Enables eternal day.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.always_day=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change game speed ===&lt;br /&gt;
0.5 is half speed, 1 is default, 2 is double speed, etc. Minimum is 0.01. This can be used for a lot of things like when you know you will have to wait for long periods of time for something to complete. Increasing will decrease performance, be careful.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.speed=X&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Expensive (marathon) or normal mode ===&lt;br /&gt;
To change from normal to expensive mode preset (this changes the research cost and intermediate product cost):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.difficulty_settings.recipe_difficulty=1&lt;br /&gt;
game.difficulty_settings.technology_difficulty=1&lt;br /&gt;
game.difficulty_settings.technology_price_multiplier=4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change back to normal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.difficulty_settings.recipe_difficulty=0&lt;br /&gt;
game.difficulty_settings.technology_difficulty=0&lt;br /&gt;
game.difficulty_settings.technology_price_multiplier=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Freeze time ===&lt;br /&gt;
Stops the advancement of the time if you replace &amp;quot;BOOL&amp;quot; with &amp;quot;true&amp;quot; or unfreezes it if you replace it with &amp;quot;false&amp;quot;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.freeze_daytime=BOOL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove all pollution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.clear_pollution()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Completely turn off pollution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, surface in pairs(game.surfaces) do&lt;br /&gt;
  surface.clear_pollution()&lt;br /&gt;
end&lt;br /&gt;
game.map_settings.pollution.enabled = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add a lot of pollution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.pollute(game.player.position, 1000000)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where speakers are, by who ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c speakers = game.player.surface.find_entities_filtered{force = game.player.force, type=&amp;quot;programmable-speaker&amp;quot;}&lt;br /&gt;
for key, speaker in pairs(speakers) do&lt;br /&gt;
    game.player.print(speaker.last_user.name .. &amp;quot; placed a speaker at X=&amp;quot; .. speaker.position.x .. &amp;quot;, Y=&amp;quot; .. speaker.position.y)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable friendly fire for your force ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.friendly_fire = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add new resource patch ===&lt;br /&gt;
This creates a new 11×11 patch of resources, centered on the player character, where the ground is not water.&lt;br /&gt;
The patch it creates is perfectly square but it randomizes the amount similar to natural generation, with fewer ore at the edges and more ore in the center.&lt;br /&gt;
The default numbers result in a patch with 2500-3000 ore.&lt;br /&gt;
&lt;br /&gt;
If you want a larger patch, change &amp;quot;local size = 5&amp;quot; to a larger number.&lt;br /&gt;
A larger patch will have exponentially more ore.&lt;br /&gt;
Entering a number above 30 is not recommended.&lt;br /&gt;
&lt;br /&gt;
If you want a richer patch, change &amp;quot;local density = 10&amp;quot; to a larger number.&lt;br /&gt;
Entering a very large number shouldn&#039;t hurt anything but you probably don&#039;t need to go above 100.&lt;br /&gt;
&lt;br /&gt;
To choose which resource is spawned, change &amp;quot;stone&amp;quot; near the bottom to &amp;quot;iron-ore&amp;quot;, &amp;quot;copper-ore&amp;quot;, &amp;quot;coal&amp;quot;, or &amp;quot;uranium-ore&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local ore=nil&lt;br /&gt;
local size=5&lt;br /&gt;
local density=10&lt;br /&gt;
for y=-size, size do&lt;br /&gt;
	for x=-size, size do&lt;br /&gt;
		a=(size+1-math.abs(x))*10&lt;br /&gt;
		b=(size+1-math.abs(y))*10&lt;br /&gt;
		if a&amp;lt;b then&lt;br /&gt;
			ore=math.random(a*density-a*(density-8), a*density+a*(density-8))&lt;br /&gt;
		end&lt;br /&gt;
		if b&amp;lt;a then&lt;br /&gt;
			ore=math.random(b*density-b*(density-8), b*density+b*(density-8))&lt;br /&gt;
		end&lt;br /&gt;
		if surface.get_tile(game.player.position.x+x, game.player.position.y+y).collides_with(&amp;quot;ground-tile&amp;quot;) then&lt;br /&gt;
			surface.create_entity({name=&amp;quot;stone&amp;quot;, amount=ore, position={game.player.position.x+x, game.player.position.y+y}})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove resources around the player ===&lt;br /&gt;
Removes all resource patches from the ground in a 50 x 50 area around the player.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local size=50&lt;br /&gt;
local pos=game.player.position&lt;br /&gt;
&lt;br /&gt;
for _, e in pairs(surface.find_entities_filtered{area={{pos.x-size, pos.y-size},{pos.x+size, pos.y+size}}, type=&amp;quot;resource&amp;quot;}) &lt;br /&gt;
	do e.destroy() &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add new oil patch ===&lt;br /&gt;
This creates 9 crude oil patches in a 3×3 square.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for y=0,2 do&lt;br /&gt;
	for x=0,2 do&lt;br /&gt;
		game.player.surface.create_entity({name=&amp;quot;crude-oil&amp;quot;, amount=100000, position={game.player.position.x+x*7-7, game.player.position.y+y*7-7}})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or randomly without any collision:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local position=nil&lt;br /&gt;
for i=1,9 do&lt;br /&gt;
	position=game.player.surface.find_non_colliding_position(&amp;quot;crude-oil&amp;quot;, game.player.position, 0, i/2+1.5)&lt;br /&gt;
	if position then &lt;br /&gt;
		game.player.surface.create_entity({name=&amp;quot;crude-oil&amp;quot;, amount=100000, position=position})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create 10 fishes ===&lt;br /&gt;
This creates 10 fishes around of player. The player must be on the water edge.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local player = game.player&lt;br /&gt;
local surface = player.surface&lt;br /&gt;
for i = 1, 10 do&lt;br /&gt;
  local position = surface.find_non_colliding_position(&#039;fish&#039;, player.position, 10, 1)&lt;br /&gt;
  if not position then return end&lt;br /&gt;
  surface.create_entity {name = &#039;fish&#039;, position = position}&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Count entities ===&lt;br /&gt;
Counts all entities whose name includes the string in local entity.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local entity=&amp;quot;belt&amp;quot;&lt;br /&gt;
local surface=game.player.surface&lt;br /&gt;
local count=0&lt;br /&gt;
for key, ent in pairs(surface.find_entities_filtered({force=game.player.force})) do&lt;br /&gt;
	if string.find(ent.name,entity) then&lt;br /&gt;
		count=count+1&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
game.player.print(count)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Emptying all pipes, underground pipes and pumps ===&lt;br /&gt;
Useful when pipes contain a fluid you dont want.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local deleted=0&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=game.player.force})) do&lt;br /&gt;
	if string.find(entity.name, &amp;quot;pipe&amp;quot;) or &lt;br /&gt;
		string.find(entity.name, &amp;quot;pump&amp;quot;) &lt;br /&gt;
	then&lt;br /&gt;
		for i=1,#entity.fluidbox do&lt;br /&gt;
			deleted = deleted + 1&lt;br /&gt;
			entity.fluidbox[i] = nil;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
game.player.print(&amp;quot;Fluids removed from &amp;quot;..deleted ..&amp;quot; entities&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Turn off cliff generation ===&lt;br /&gt;
Sets size to &amp;quot;none&amp;quot;. Only effective on chunks that are generated after using this command. Use [[#Remove all cliffs]] to delete existing cliffs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local mgs = game.player.surface.map_gen_settings&lt;br /&gt;
mgs.cliff_settings.cliff_elevation_0 = 1024&lt;br /&gt;
game.player.surface.map_gen_settings = mgs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove all cliffs ===&lt;br /&gt;
Removes all cliffs existing cliffs from the world. Use [[#Turn off cliff generation]] to turn off cliff generation in new chunks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, v in pairs(game.player.surface.find_entities_filtered{type=&amp;quot;cliff&amp;quot;}) do&lt;br /&gt;
  v.destroy()&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete all decoratives ===&lt;br /&gt;
Delete the decoratives that can be found in the world.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.destroy_decoratives({})&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change map generation settings ===&lt;br /&gt;
This allows to change the map generation settings for new chunks; it does not alter already generated chunks. [[#Delete chunks|Deleted chunks]] are affected by the setting change because they are newly generated when they get explored again.&lt;br /&gt;
&lt;br /&gt;
To change resource generation settings, replace &amp;quot;iron-ore&amp;quot; with the [[Data.raw#resource|resource]] that should be changed and replace &amp;quot;very-high&amp;quot; with the desired [https://lua-api.factorio.com/latest/Concepts.html#MapGenSize MapGenSize] in the following command. Replace &amp;quot;iron-ore&amp;quot; with &amp;quot;enemy-base&amp;quot; to change the enemy base generation settings. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local resource = &amp;quot;iron-ore&amp;quot;&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.autoplace_controls[resource].size = &amp;quot;very-high&amp;quot;&lt;br /&gt;
mgs.autoplace_controls[resource].frequency = &amp;quot;very-high&amp;quot;&lt;br /&gt;
mgs.autoplace_controls[resource].richness = &amp;quot;very-high&amp;quot;&lt;br /&gt;
surface.map_gen_settings = mgs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change water generation settings, replace &amp;quot;very-high&amp;quot; with the desired [https://lua-api.factorio.com/latest/Concepts.html#MapGenSize MapGenSize] in the following command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.water = &amp;quot;very-high&amp;quot; --[[ size]]&lt;br /&gt;
mgs.terrain_segmentation  = &amp;quot;very-high&amp;quot; --[[ frequency]]&lt;br /&gt;
surface.map_gen_settings = mgs &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enemy/evolution scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Set evolution factor ===&lt;br /&gt;
Ranges from 0 (new game) to 1.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.forces[&amp;quot;enemy&amp;quot;].evolution_factor=X&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable time-based evolution &amp;amp; increases pollution-based evolution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.map_settings.enemy_evolution.time_factor=0&lt;br /&gt;
/c game.map_settings.enemy_evolution.pollution_factor=game.map_settings.enemy_evolution.pollution_factor*2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;2&amp;quot; at the end of the last command will double the default pollution factor. You can substitute another number to increase (or decrease) the pollution factor further.&lt;br /&gt;
&lt;br /&gt;
=== Kill all biters on the &amp;quot;enemy&amp;quot; force ===&lt;br /&gt;
Note that this will kill only mobile units, spawners will not be killed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.forces[&amp;quot;enemy&amp;quot;].kill_all_units()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill all enemies ===&lt;br /&gt;
This will kill all biters, bases and worms. Anything that is an enemy will be completely destroyed. This only affects enemies in the explored world, so any unexplored parts of the map which still need to be generated will still have enemies. You can [[#Prevent biters being on newly generated chunks|prevent biters being on newly generated chunks]] if desired.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=&amp;quot;enemy&amp;quot;})) do&lt;br /&gt;
	entity.destroy()&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill all nearby enemies ===&lt;br /&gt;
&lt;br /&gt;
This will kill all biters, bases and worms in a configurable radius. The default, 250 tiles, is about two zoomed-out screen widths on full HD. After destruction, it shows how many objects were destroyed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local pp = game.player.position&lt;br /&gt;
local cnt = 0&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=&amp;quot;enemy&amp;quot;, radius=250, position=pp })) do&lt;br /&gt;
	cnt = cnt+1&lt;br /&gt;
	entity.destroy()&lt;br /&gt;
 end	&lt;br /&gt;
game.player.print(cnt)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable peaceful mode ===&lt;br /&gt;
Enabling peaceful mode prevents biter attacks until provoked. Substitute true for false to disable. Already existing biters are not affected by this command so attacks could continue for a while after activating peaceful mode.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.peaceful_mode = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable biter expansion ===&lt;br /&gt;
Biter expansion allows biters to create new nests, it is enabled by default. Substitute true for false to disable.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.map_settings.enemy_expansion.enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prevent biters being on newly generated chunks ===&lt;br /&gt;
On newly generated chunks no biters will be present, however all current biters will remain unaffected. Equivalent of setting the Enemy Base Size to None under the Terrain settings during map generation but achieved mid game by [[#Change map generation settings|changing map generation settings]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.autoplace_controls[&amp;quot;enemy-base&amp;quot;].size = &amp;quot;none&amp;quot;&lt;br /&gt;
surface.map_gen_settings = mgs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Player character scripts ==&lt;br /&gt;
Commands concerning the player directly.&lt;br /&gt;
=== Get player position ===&lt;br /&gt;
Prints coordinates of your current position.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(game.player.position.x .. &amp;quot;, &amp;quot; .. game.player.position.y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Teleport player ===&lt;br /&gt;
Moves the player to the specified location. You should be able to teleport to a specific player if you obtain their coordinates via them executing the previous command and giving them to you.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.teleport({X, Y})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To teleport to the world&#039;s origin, use 0,0.&lt;br /&gt;
&lt;br /&gt;
=== Enable god mode ===&lt;br /&gt;
God mode removes your player character allowing you to fly over obstacles and take no damage.&lt;br /&gt;
&lt;br /&gt;
Disassociate your controls from the player:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.character=nil&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, hover the mouse over the useless player and destroy it by typing:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.selected.destroy()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To undo, spawn a player character. This will spawn a new player at the spawn point of the world, and connect your controls to it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.create_character()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable long reach ===&lt;br /&gt;
Enables long reach, which allows the player to build and interact with entities at a greater distance. The default reach is 10.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local reach = 10000&lt;br /&gt;
game.player.force.character_build_distance_bonus = reach&lt;br /&gt;
game.player.force.character_reach_distance_bonus = reach&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Find player corpses ===&lt;br /&gt;
Pings player corpses on the map.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local found_corpses = game.player.surface.find_entities_filtered{type=&amp;quot;character-corpse&amp;quot;}&lt;br /&gt;
for _,corpse in pairs(found_corpses) do&lt;br /&gt;
    local player = game.get_player(corpse.character_corpse_player_index)&lt;br /&gt;
    local name = player and player.name or &amp;quot;????&amp;quot;&lt;br /&gt;
    game.player.print(name .. &amp;quot; --&amp;gt; [gps=&amp;quot; .. corpse.position.x .. &amp;quot;,&amp;quot; .. corpse.position.y .. &amp;quot;]&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Research scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Enable Research Queue ===&lt;br /&gt;
Enable the research queue for the player&#039;s current team. Can be done after the game has started if it was forgotten during the map&#039;s setup.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.research_queue_enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable faster research ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.laboratory_speed_modifier=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
1 is normal speed, 2 is double speed 3 is triple etc.&lt;br /&gt;
&lt;br /&gt;
=== Research specific technologies ===&lt;br /&gt;
The internal technology names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.technologies[&#039;electric-energy-distribution-1&#039;].researched=true&lt;br /&gt;
/c game.player.force.technologies[&#039;steel-processing&#039;].researched=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unresearch specific technologies ===&lt;br /&gt;
The internal technology names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.technologies[&#039;electric-energy-distribution-1&#039;].researched=false; game.player.force.set_saved_technology_progress(&#039;electric-energy-distribution-1&#039;, 0)&lt;br /&gt;
/c game.player.force.technologies[&#039;steel-processing&#039;].researched=false; game.player.force.set_saved_technology_progress(&#039;steel-processing&#039;, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enabling specific recipes ===&lt;br /&gt;
The internal recipe/item names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;electric-energy-interface&amp;quot;].enabled=true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;rocket-silo&amp;quot;].enabled=true&lt;br /&gt;
/c game.player.force.recipes.loader.enabled=true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;fast-loader&amp;quot;].enabled = true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;express-loader&amp;quot;].enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable all recipes ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for name, recipe in pairs(game.player.force.recipes) do recipe.enabled = true end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modding tools ==&lt;br /&gt;
A list of the internal names of most things in the vanilla game can also be found on [[data.raw]].&lt;br /&gt;
&lt;br /&gt;
=== Access a mod&#039;s data ===&lt;br /&gt;
If the first word of the command is __mod-name__ it will run in the context of the mod with the same name. For instance, this command prints the data from Resource Spawner Overhaul:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c __rso-mod__ game.player.print(serpent.dump(global))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Print to console which tile are you have under the player position ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(game.player.surface.get_tile(game.player.position).name)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write all researched technologies to file ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local list = {}&lt;br /&gt;
for _, tech in pairs(game.player.force.technologies) do &lt;br /&gt;
	if tech.researched then&lt;br /&gt;
    list[#list+1] = tech.name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
game.write_file(&amp;quot;techs.lua&amp;quot;, serpent.block(list) .. &amp;quot;\n&amp;quot;, true)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write all enabled recipes to file ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local list = {}&lt;br /&gt;
for _, recipe in pairs(game.player.force.recipes) do &lt;br /&gt;
	if recipe.enabled then&lt;br /&gt;
    list[#list+1] = recipe.name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
game.write_file(&amp;quot;recipes.lua&amp;quot;, serpent.block(list) .. &amp;quot;\n&amp;quot;, true)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write mod list to file ===&lt;br /&gt;
Write all currently active mods and their version to the file script-output/mods.txt in the [[user data directory]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.write_file(&amp;quot;mods.txt&amp;quot;, serpent.block(game.active_mods))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Command line parameters]]&lt;br /&gt;
* http://lua-api.factorio.com/latest/ - Factorio API reference for latest version&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/SelectionTool&amp;diff=179237</id>
		<title>Prototype/SelectionTool</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/SelectionTool&amp;diff=179237"/>
		<updated>2020-05-03T21:46:34Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Mandatory properties */  selection_cursor_box_type - add default colors to values list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Prototype parent|Prototype/ItemWithLabel}}&lt;br /&gt;
Used in the base game as a base for the blueprint item and the deconstruction item.&lt;br /&gt;
&lt;br /&gt;
{{Prototype TOC|selection-tool}}&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
* [[Prototype/BlueprintItem]] &#039;&#039;&#039;blueprint&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/CopyPasteTool]] &#039;&#039;&#039;copy-paste-tool&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/DeconstructionItem]] &#039;&#039;&#039;deconstruction-item&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/UpgradeItem]] &#039;&#039;&#039;upgrade-item&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
This prototype inherits all the properties from [[Prototype/ItemWithLabel]].&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|selection_color|[[Types/Color|Color]]}}&lt;br /&gt;
The color of the rectangle used when standard selection is done in-game.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alt_selection_color|[[Types/Color|Color]]}}&lt;br /&gt;
The color of the rectangle used when alt-selection is done in-game.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|selection_mode|[[Types/table|table]] of [[Types/string|string]]}}&lt;br /&gt;
A list of selection mode flags that define how the selection tool selects things in-game.&lt;br /&gt;
&lt;br /&gt;
Possible values are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Flag !! meaning&lt;br /&gt;
|-&lt;br /&gt;
| blueprint  || The normal rules for acceptable entities in blueprints&lt;br /&gt;
|-&lt;br /&gt;
| deconstruct || The normal rules for acceptable entities for deconstruction&lt;br /&gt;
|-&lt;br /&gt;
| cancel-deconstruct || The normal rules for acceptable entities for cancel deconstruction&lt;br /&gt;
|-&lt;br /&gt;
| items || Item entities&lt;br /&gt;
|-&lt;br /&gt;
| trees || Trees&lt;br /&gt;
|-&lt;br /&gt;
| buildable-type || Buildable entities as defined by the game&lt;br /&gt;
|-&lt;br /&gt;
| nothing || Nothing&lt;br /&gt;
|-&lt;br /&gt;
| items-to-place || The entity has an item that builds the entity&lt;br /&gt;
|-&lt;br /&gt;
| any-entity || Any entity&lt;br /&gt;
|-&lt;br /&gt;
| any-tile || Any tile&lt;br /&gt;
|-&lt;br /&gt;
| same-force || The entity force matches that of the player doing the selection&lt;br /&gt;
|-&lt;br /&gt;
| not-same-force || The entity force does not match that of the player doing the selection&lt;br /&gt;
|-&lt;br /&gt;
| friend || The entity force is friend to that of the player doing the selection&lt;br /&gt;
|-&lt;br /&gt;
| enemy || The entity force is enemy to that of the player doing the selection&lt;br /&gt;
|-&lt;br /&gt;
| upgrade || The normal rules for acceptable entities in upgrade planners&lt;br /&gt;
|-&lt;br /&gt;
| cancel-upgrade || The normal rules for acceptable entities for cancel upgrade&lt;br /&gt;
|-&lt;br /&gt;
| entity-with-health ||&lt;br /&gt;
|-&lt;br /&gt;
| entity-with-force ||&lt;br /&gt;
|-&lt;br /&gt;
| entity-with-owner ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alt_selection_mode|[[Types/table|table]] of [[Types/string|string]]}}&lt;br /&gt;
A list of selection mode flags that define how the selection tool alt-selects things in-game. Possible values are identical to normal selection_mode.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|selection_cursor_box_type|[[Types/string|string]]}}&lt;br /&gt;
The type of cursor box used to render selection of entities/tiles when standard selecting.&lt;br /&gt;
&lt;br /&gt;
Possible values are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Flag !! meaning&lt;br /&gt;
|-&lt;br /&gt;
| entity  || The normal entity selection box. Yellow by default.&lt;br /&gt;
|-&lt;br /&gt;
| electricity || The selection box used to specify electric poles an entity is connected to. Light blue by default.&lt;br /&gt;
|-&lt;br /&gt;
| copy || The selection box used when doing entity copy-paste. Green by default.&lt;br /&gt;
|-&lt;br /&gt;
| not-allowed || The selection box used when specifying colliding entities. Red by default.&lt;br /&gt;
|-&lt;br /&gt;
| pair || Light Blue by default.&lt;br /&gt;
|-&lt;br /&gt;
| logistics || Light Blue by default.&lt;br /&gt;
|-&lt;br /&gt;
| train-visualization || White by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alt_selection_cursor_box_type|[[Types/string|string]]}}&lt;br /&gt;
The type of cursor box used to render selection of entities/tiles when alt selecting.  Possible values are identical to normal selection_cursor_box_type.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|always_include_tiles|[[Types/bool|bool]]|false|optional=true}}&lt;br /&gt;
If tiles should be included in the selection regardless of entities also being in the selection. This is a visual only setting.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|show_in_library|[[Types/bool|bool]]|false|optional=true}}&lt;br /&gt;
Whether this is shown in the blueprint library. Unused as of 0.18.13 as the ability to show any selection tools in the blueprint library was removed.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|mouse_cursor|[[Types/string|string]]|&amp;quot;selection-tool-cursor&amp;quot;|optional=true}}&lt;br /&gt;
Name of a [[Prototype/MouseCursor]].&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|entity_filters|[[Types/table|table]] of [[Types/string|string]]|optional=true}}&lt;br /&gt;
Array of [[Prototype/Entity]] names.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alt_entity_filters|[[Types/table|table]] of [[Types/string|string]]|optional=true}}&lt;br /&gt;
Array of [[Prototype/Entity]] names.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|entity_type_filters|[[Types/table|table]] of [[Types/string|string]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alt_entity_type_filters|[[Types/table|table]] of [[Types/string|string]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|tile_filters|[[Types/table|table]] of [[Types/string|string]]|optional=true}}&lt;br /&gt;
Array of [[Prototype/Tile]] names.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alt_tile_filters|[[Types/table|table]] of [[Types/string|string]]|optional=true}}&lt;br /&gt;
Array of [[Prototype/Tile]] names.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|entity_filter_mode|[[Types/string|string]]|&amp;quot;whitelist&amp;quot;|optional=true}}&lt;br /&gt;
One of &amp;quot;whitelist&amp;quot; and &amp;quot;blacklist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alt_entity_filter_mode|[[Types/string|string]]|&amp;quot;whitelist&amp;quot;|optional=true}}&lt;br /&gt;
One of &amp;quot;whitelist&amp;quot; and &amp;quot;blacklist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|tile_filter_mode|[[Types/string|string]]|&amp;quot;whitelist&amp;quot;|optional=true}}&lt;br /&gt;
One of &amp;quot;whitelist&amp;quot; and &amp;quot;blacklist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alt_tile_filter_mode|[[Types/string|string]]|&amp;quot;whitelist&amp;quot;|optional=true}}&lt;br /&gt;
One of &amp;quot;whitelist&amp;quot; and &amp;quot;blacklist&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/RenderLayer&amp;diff=176971</id>
		<title>Types/RenderLayer</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/RenderLayer&amp;diff=176971"/>
		<updated>2019-11-28T18:31:57Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: add missing string convertible render layer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The render layer specifies the order of the sprite when rendering, most of the objects have it hardcoded in the source, but some are configurable.&lt;br /&gt;
&lt;br /&gt;
The value is specified as [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
The order of acceptable values from lowest to highest:&lt;br /&gt;
* water-tile&lt;br /&gt;
* ground-tile&lt;br /&gt;
* tile-transition&lt;br /&gt;
* decals&lt;br /&gt;
* lower-radius-visualization&lt;br /&gt;
* radius-visualization&lt;br /&gt;
* transport-belt-integration&lt;br /&gt;
* resource&lt;br /&gt;
* building-smoke&lt;br /&gt;
* decorative&lt;br /&gt;
* ground-patch&lt;br /&gt;
* ground-patch-higher&lt;br /&gt;
* ground-patch-higher2&lt;br /&gt;
* remnants&lt;br /&gt;
* floor&lt;br /&gt;
* transport-belt&lt;br /&gt;
* transport-belt-endings&lt;br /&gt;
* corpse&lt;br /&gt;
* floor-mechanics&lt;br /&gt;
* item&lt;br /&gt;
* lower-object&lt;br /&gt;
* transport-belt-circuit-connector&lt;br /&gt;
* lower-object-above-shadow&lt;br /&gt;
* object&lt;br /&gt;
* higher-object-under&lt;br /&gt;
* higher-object-above&lt;br /&gt;
* item-in-inserter-hand&lt;br /&gt;
* wires&lt;br /&gt;
* wires-above&lt;br /&gt;
* entity-info-icon&lt;br /&gt;
* entity-info-icon-above&lt;br /&gt;
* explosion&lt;br /&gt;
* projectile&lt;br /&gt;
* smoke&lt;br /&gt;
* air-object&lt;br /&gt;
* air-entity-info-icon&lt;br /&gt;
* light-effect&lt;br /&gt;
* selection-box&lt;br /&gt;
* higher-selection-box&lt;br /&gt;
* collision-selection-box&lt;br /&gt;
* arrow&lt;br /&gt;
* cursor&lt;br /&gt;
&lt;br /&gt;
{{Prototype property type usage|{{FULLPAGENAME}}}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/Projectile&amp;diff=176961</id>
		<title>Prototype/Projectile</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/Projectile&amp;diff=176961"/>
		<updated>2019-11-23T16:06:32Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Optional properties */ add a note to hit_at_collision_position to elaborate on its effect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Prototype parent|Prototype/Entity}}&lt;br /&gt;
Entity with limited lifetime that can hit other entities and has triggers when this happens.&lt;br /&gt;
&lt;br /&gt;
{{Prototype TOC|projectile}}&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
This prototype inherits all the properties from [[Prototype/Entity]].&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|animation|[[Types/Animation|Animation]]}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|acceleration|[[Types/double|double]]}}&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|rotatable|[[Types/bool|bool]]|true|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|enable_drawing_with_mask|[[Types/bool|bool]]|false|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|direction_only|[[Types/bool|bool]]|false|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|hit_at_collision_position|[[Types/bool|bool]]|false|optional=true}}&lt;br /&gt;
When true the entity is hit at the position on its collision box the projectile first collides with. When false the entity is hit at its own position.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|force_condition|[[Types/ForceCondition|ForceCondition]]|&amp;quot;all&amp;quot;|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|piercing_damage|[[Types/float|float]]|0|optional=true}}&lt;br /&gt;
Whenever an entity is hit by the projectile, this number gets reduced by the health of the entity. If the number is then below 0, the &amp;lt;code&amp;gt;final_action&amp;lt;/code&amp;gt; is applied and the projectile destroyed. Otherwise, the projectile simply continues to its destination. &lt;br /&gt;
&lt;br /&gt;
{{Prototype property|max_speed|[[Types/double|double]]|MAX_DOUBLE|optional=true}}&lt;br /&gt;
Must be greater than or equal to 0.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|height|[[Types/double|double]]|1|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|action|[[Types/Trigger|Trigger]]|optional=true}}&lt;br /&gt;
Executed when the projectile hits something.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|final_action|[[Types/Trigger|Trigger]]|optional=true}}&lt;br /&gt;
Executed when the projectile hits something, after &amp;lt;code&amp;gt;action&amp;lt;/code&amp;gt; and only if the entity that was hit was destroyed. The projectile is destroyed right after the final_action.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|light|[[Types/LightDefinition|LightDefinition]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|smoke|Array of [[Types/SmokeSource|SmokeSource]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|hit_collision_mask|[[Types/CollisionMask|CollisionMask]]|&amp;lt;nowiki&amp;gt;{&amp;quot;player-layer&amp;quot;, &amp;quot;train-layer&amp;quot;}&amp;lt;/nowiki&amp;gt;|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|shadow|[[Types/Animation|Animation]]|optional=true}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/RollingStock&amp;diff=176758</id>
		<title>Prototype/RollingStock</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/RollingStock&amp;diff=176758"/>
		<updated>2019-11-04T22:13:22Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Mandatory properties */ add missing line after last change&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Prototype parent|Prototype/Vehicle}}&lt;br /&gt;
The abstract base of all rolling stock.&lt;br /&gt;
&lt;br /&gt;
{{Prototype TOC|&#039;&#039;abstract&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
* [[Prototype/ArtilleryWagon]] &#039;&#039;&#039;artillery-wagon&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/CargoWagon]] &#039;&#039;&#039;cargo-wagon&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/FluidWagon]] &#039;&#039;&#039;fluid-wagon&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Locomotive]] &#039;&#039;&#039;locomotive&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
This prototype inherits all the properties from [[Prototype/Vehicle]].&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|max_speed|[[Types/double|double]]}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|air_resistance|[[Types/double|double]]}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|joint_distance|[[Types/double|double]]}}&lt;br /&gt;
The length between this rolling stocks front and rear joints. Joints are the point where connection_distance is measured from when rolling stock are connected to one another. Wheels sprite are placed based on the joint position.&lt;br /&gt;
&lt;br /&gt;
Maximum joint distance is 15.&lt;br /&gt;
&lt;br /&gt;
Note: There needs to be border at least 0.2 between the bounding box edge and joint.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|connection_distance|[[Types/double|double]]}}&lt;br /&gt;
The distance between the joint of this rolling stock and its connected rolling stocks joint.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|pictures|[[Types/RotatedSprite|RotatedSprite]]}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|wheels|[[Types/RotatedSprite|RotatedSprite]]}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|vertical_selection_shift|[[Types/double|double]]}}&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|drive_over_tie_trigger|[[Types/TriggerEffect|TriggerEffect]]|optional=true}}&lt;br /&gt;
Usually a sound to play when the rolling stock drives over a tie.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|tie_distance|[[Types/double|double]]|10.0|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|back_light|[[Types/LightDefinition|LightDefinition]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|stand_by_light|[[Types/LightDefinition|LightDefinition]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|horizontal_doors|[[Types/Animation|Animation]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|vertical_doors|[[Types/Animation|Animation]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|color|[[Types/Color|Color]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|allow_manual_color|[[Types/bool|bool]]|true|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|allow_robot_dispatch_in_automatic_mode|[[Types/bool|bool]]|false|optional=true}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/RollingStock&amp;diff=176757</id>
		<title>Prototype/RollingStock</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/RollingStock&amp;diff=176757"/>
		<updated>2019-11-04T22:12:28Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Mandatory properties */  Add some information to joints and connection distances.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Prototype parent|Prototype/Vehicle}}&lt;br /&gt;
The abstract base of all rolling stock.&lt;br /&gt;
&lt;br /&gt;
{{Prototype TOC|&#039;&#039;abstract&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
* [[Prototype/ArtilleryWagon]] &#039;&#039;&#039;artillery-wagon&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/CargoWagon]] &#039;&#039;&#039;cargo-wagon&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/FluidWagon]] &#039;&#039;&#039;fluid-wagon&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Locomotive]] &#039;&#039;&#039;locomotive&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
This prototype inherits all the properties from [[Prototype/Vehicle]].&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|max_speed|[[Types/double|double]]}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|air_resistance|[[Types/double|double]]}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|joint_distance|[[Types/double|double]]}}&lt;br /&gt;
The length between this rolling stocks front and rear joints. Joints are the point where connection_distance is measured from when rolling stock are connected to one another. Wheels sprite are placed based on the joint position.&lt;br /&gt;
Maximum joint distance is 15.&lt;br /&gt;
&lt;br /&gt;
Note: There needs to be border at least 0.2 between the bounding box edge and joint.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|connection_distance|[[Types/double|double]]}}&lt;br /&gt;
The distance between the joint of this rolling stock and its connected rolling stocks joint.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|pictures|[[Types/RotatedSprite|RotatedSprite]]}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|wheels|[[Types/RotatedSprite|RotatedSprite]]}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|vertical_selection_shift|[[Types/double|double]]}}&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|drive_over_tie_trigger|[[Types/TriggerEffect|TriggerEffect]]|optional=true}}&lt;br /&gt;
Usually a sound to play when the rolling stock drives over a tie.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|tie_distance|[[Types/double|double]]|10.0|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|back_light|[[Types/LightDefinition|LightDefinition]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|stand_by_light|[[Types/LightDefinition|LightDefinition]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|horizontal_doors|[[Types/Animation|Animation]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|vertical_doors|[[Types/Animation|Animation]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|color|[[Types/Color|Color]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|allow_manual_color|[[Types/bool|bool]]|true|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|allow_robot_dispatch_in_automatic_mode|[[Types/bool|bool]]|false|optional=true}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Desynchronization&amp;diff=175617</id>
		<title>Desynchronization</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Desynchronization&amp;diff=175617"/>
		<updated>2019-08-10T23:12:09Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Comparing game state &amp;amp; save files */  clarify the less human readable numbers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
A desynchronization (desync) is when during multiplayer a player&#039;s game becomes desynchronized from the Factorio server. Their game has become different from the server&#039;s game.&lt;br /&gt;
&lt;br /&gt;
== What are desyncs ==&lt;br /&gt;
&lt;br /&gt;
Desyncs can be caused either by a bug in the core Factorio game code or by a bug in a mod/scenario. They should not occur during regular play.&lt;br /&gt;
&lt;br /&gt;
=== Factorio multiplayer architecture ===&lt;br /&gt;
Factorio multiplayer code uses deterministic lockstep to synchronize clients. This is a method of synchronizing a game from one computer to another by sending only the user inputs that control that game, rather than networking the state of the objects in the game itself. It means that all player&#039;s games need to simulate every single tick of the game identically. If any computer does something ever-so-slightly different, a desynchronization (desync) occurs. The game includes processes to ensure any issues with network traffic do not cause desyncs.&lt;br /&gt;
&lt;br /&gt;
=== Player experience of desyncs ===&lt;br /&gt;
Upon a player&#039;s game detecting a desync to the server, it immediately disconnects from the server and re-downloads the save game. This download isn&#039;t to allow the player to play the game, but to obtain the server&#039;s current copy of the save game (map and game state) to include in a desync report. After the download is complete and a desync report has been generated the player is offered the options to view the report, quit or reconnect to the server to play.&lt;br /&gt;
&lt;br /&gt;
[[File:Desync report notification.jpg]]&lt;br /&gt;
&lt;br /&gt;
The desync report can be provided to either the mod/scenario makers or the Factorio game developers to help them resolve the bug.&lt;br /&gt;
Depending upon the exact cause of the desync, the player&#039;s game may be able to reconnect to the server to play, or they may find it immediately desyncs on reconnection.&lt;br /&gt;
&lt;br /&gt;
=== Desync report ===&lt;br /&gt;
The desync report contains both the player&#039;s and server&#039;s copy of the save game (map and game state). The player&#039;s copy is from when the desync occurred and titled &#039;&#039;desynced-level&#039;&#039;. With the server&#039;s copy being from when the automatic reconnection was made and titled &#039;&#039;reference-level.zip&#039;&#039;. A copy of the players Factorio log file is included titled &#039;&#039;log.txt&#039;&#039;. As the report contains two copies of the save game it may have a large file size. Furthermore, the save files that are made for the desync report contain more data than normal save files, further increasing their size.&lt;br /&gt;
&lt;br /&gt;
The desync report does not state the cause of the desync but rather is a record of the game state at the time of the desync.&lt;br /&gt;
&lt;br /&gt;
=== Next Steps ===&lt;br /&gt;
The next steps after a desync occurs is to start a desync investigation. In many situations restarting the server will work around the desync in the short term and allow all players to rejoin until the conditions for the bug to occur are re-created. However, a server restart isn&#039;t guaranteed success and may lead to no players being able to rejoin the server without desyncing.&lt;br /&gt;
&lt;br /&gt;
== Desync Investigations ==&lt;br /&gt;
In most cases when desyncs occur and mods or scenarios are being used they are the cause and need to be handled first. If they are found to not be the cause then it should be reported as a [[#Desync_reporting_with_only_base_game|core Factorio desync error]]. In both cases identifying the activity that triggers the desync is an important step. For example, whether it is tied to a player&#039;s action or activity that happens in the game (i.e. a train arriving at a station) or is a time-related event. In some cases, the desync may not be reproducible and so only a code investigation can work towards a fix.&lt;br /&gt;
&lt;br /&gt;
When desyncs occur and mods/scenarios are in the use there are 2 different approaches that can be taken to help get the issue fixed. The code investigation approach requires you to be familiar with Factorio modding and its coding rules. The less technical method is to identify the mod and activity that causes the desync through trial and error so it can be reported to the mod author.&lt;br /&gt;
&lt;br /&gt;
=== Identifying desync causing mod through trial and error ===&lt;br /&gt;
This is a less technical method aiming to identify the mod and its activity that seems to cause the desync so it can be reported to the mod/scenario author. The activity that causes the desync should be established prior to these activities being done to confirm if they are having an impact. These steps may affect the gameplay and should be done on a test save. &lt;br /&gt;
* Removing any newly added mods and rolling back (returning to the previous version) any updated mods to see if the issue still occurs.&lt;br /&gt;
* Removing mods from the game to rule them out as the cause.&lt;br /&gt;
Once the desync can no longer be reproduced the suspected mod can be re-added/updated and the desync recreated to confirm the mod and activity are the cause of the desync. As these steps require the server to be restarted this may in itself fix any desyncs in the short term until the conditions for the bug to occur are re-created.&lt;br /&gt;
&lt;br /&gt;
=== Code investigations with mods/scenarios involved ===&lt;br /&gt;
The desync report is a useful reference for investigating desyncs but it does not state the cause of the desync. Comparing the desync files and use of heavy mode can assist in identifying which mods and activities to review initially. Ideally, it is supplemented by an account of what was occurring and being done by players at the point of the desync occurring to assist with narrowing down the activities of code to review. However in many complicated scenarios this may not be known prior to the investigation.&lt;br /&gt;
&lt;br /&gt;
==== Code that causes desyncs ====&lt;br /&gt;
There are a number of ways mod and scenario code can cause desyncs, such as due to incorrect variable scoping, requiring or API event handling. Examples of these can be found in [[Tutorial:Modding tutorial/Gangsir#Multiplayer_and_desyncs|Gangsir&#039;s modding tutorial multiplayer and desyncs section]], with the full technical definition of usage constraints for API events in the [https://lua-api.factorio.com/latest/Data-Lifecycle.html Factorio API data lifecycle]. Not all instances of non-compliance will lead to desyncs or errors, but most will. For this reason, it is recommended to always maintain compliance to avoid risk and time-consuming testing. Instances of non-compliance found should be raised to the code author.&lt;br /&gt;
&lt;br /&gt;
==== Comparing game state &amp;amp; save files ====&lt;br /&gt;
The desync report files and heavy mode dumps contain a number of files that can be compared by any text comparison tool to look for differences. These files are generally sequelized dumps of Lua tables or c++ game objects and so are only partially human readable. The less human readable items can include floating point numbers serilaised (0x.HEXp+HEX) and &#039;&#039;magic&#039;&#039; unique identifier numbers for prototype instances in the c++ game state. These numbers and reference ids should generally be the same between files as the in-game entity they reference normally won&#039;t have changed between the 2 save game states being obtained. &lt;br /&gt;
When the data differs between files the source code of that mod/scenario must be examined for all interactions with that data item for any instances of non-compliance.&lt;br /&gt;
&lt;br /&gt;
==== Examining the desync files ====&lt;br /&gt;
Within each savegame&#039;s zip in the desync report are a number of files that when compared can show data changes. As the server copy of the save is obtained after the desync there may be genuine differences between the files. So differences aren&#039;t hard evidence of the cause of a desync, but only a pointer on where to investigate further.&lt;br /&gt;
&lt;br /&gt;
* script.dat - contains the scenario and mods [https://lua-api.factorio.com/latest/Global.html Factorio global tables]. Generally, the save&#039;s persistent data should be the same between the 2 saves. On rare occasions, there can be a difference due to how the information is written out to the file. Should a mod causes a player&#039;s game to desync it can cause the player&#039;s game to stop processing other mod activity mid tick. This can lead those mod&#039;s global tables to have differences between the player and the server copies despite having no code defects themselves.&lt;br /&gt;
* level_with_tags_tick_XXXX.dat - contains the current game state together with additional saving tags to aid human readability. This can show if entity states or chat messages differ. &#039;&#039;level.dat&#039;&#039; is the same information, but without the descriptive tags for data values.&lt;br /&gt;
&lt;br /&gt;
==== Using heavy mode command ====&lt;br /&gt;
[[Console#Normal_commands|Heavy mode]] is an in-game option that can be enabled to make Factorio save and load the game every tick. This allows Factorio to highlight if there are any changes in the game state between the save and subsequent load. Should a state change occur, a message is shown in-game and the save and load game states recorded to a &#039;&#039;dumps&#039;&#039; folder in the players [[Application directory#User_data_directory|user data folder]].&lt;br /&gt;
Typically this process will trigger for incorrect changing of data as part of the on_load event or local/global variables being changed and not persisted. The recorded game state is a dump of the internal game state, including entities, but does not include the mod&#039;s global table. This allows the checking if an entity&#039;s state has become different between the load and save state.&lt;br /&gt;
&lt;br /&gt;
This process can be used to partially test a mod for multiplayer compliance without the need of multiple players or a server.&lt;br /&gt;
&lt;br /&gt;
=== Desync reporting of core Factorio game ===&lt;br /&gt;
If no mod or scenario were involved in the desync, the desync report and activity information should be posted to the [https://forums.factorio.com/53851 Factorio forums bug report section].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://www.factorio.com/blog/post/fff-63 FFF 63] - How heavy mode works&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Muppet9010&amp;diff=175104</id>
		<title>User:Muppet9010</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Muppet9010&amp;diff=175104"/>
		<updated>2019-07-30T15:58:02Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Command_line_parameters&amp;diff=174942</id>
		<title>Command line parameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Command_line_parameters&amp;diff=174942"/>
		<updated>2019-07-26T17:18:46Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: --benchmark-verbose &amp;amp; --output-perf-stats try to clarify which metrics are available for each&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Command line parameters can be used to set settings in the command line before the game launches, this is useful mainly for advanced users or server hosts. This page pertains to version 0.17.59.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+General options&lt;br /&gt;
|-&lt;br /&gt;
| -h, --help&lt;br /&gt;
| display help&lt;br /&gt;
|-&lt;br /&gt;
| --version&lt;br /&gt;
|show version information&lt;br /&gt;
|-&lt;br /&gt;
| -v, --verbose&lt;br /&gt;
|enable verbose logging&lt;br /&gt;
|-&lt;br /&gt;
| -c, --config PATH&lt;br /&gt;
|config file to use&lt;br /&gt;
|-&lt;br /&gt;
| --no-log-rotation&lt;br /&gt;
|don&#039;t rotate log file&lt;br /&gt;
|-&lt;br /&gt;
| --mod-directory PATH&lt;br /&gt;
|Mod directory to use&lt;br /&gt;
|-&lt;br /&gt;
| --check-unused-prototype-data&lt;br /&gt;
|Print a warning for all prototype values that were not accessed.&lt;br /&gt;
|-&lt;br /&gt;
| --executable-path PATH&lt;br /&gt;
|Override autodetected __PATH__executable. Usually not needed except on very weird systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Running options&lt;br /&gt;
|-&lt;br /&gt;
| -s, --map2scenario arg&lt;br /&gt;
|map to scenario conversion&lt;br /&gt;
|-&lt;br /&gt;
| -m, --scenario2map arg&lt;br /&gt;
|scenario to map conversion&lt;br /&gt;
|-&lt;br /&gt;
| --apply-update arg&lt;br /&gt;
|immediately apply update package&lt;br /&gt;
|-&lt;br /&gt;
| --create FILE&lt;br /&gt;
|create a new map&lt;br /&gt;
|-&lt;br /&gt;
| --map-gen-settings FILE&lt;br /&gt;
|Map generation settings for use with --create, --start-server-load-scenario or --generate-map-preview. See data/map-gen-settings.example.json&lt;br /&gt;
|-&lt;br /&gt;
| --map-gen-seed SEED&lt;br /&gt;
|Map generation seed for use with --create, --start-server-load-scenario or --generate-map-preview. Will override seed specified in map gen settings&lt;br /&gt;
|-&lt;br /&gt;
| --map-gen-seed-max SEED&lt;br /&gt;
|Map generation seed for use with --generate-map-preview to generate multiple previews using every second seed in the interval from map-gen-seed to map-gen-seed-max.&lt;br /&gt;
|-&lt;br /&gt;
| --map-settings FILE&lt;br /&gt;
|Map settings for use with --create or --start-server-load-scenario. See data/base/prototypes/map-settings.lua&lt;br /&gt;
|-&lt;br /&gt;
| --preset arg&lt;br /&gt;
|Name of the map generation preset to be used.&lt;br /&gt;
|-&lt;br /&gt;
| --enable-runtime-autoplace-modification&lt;br /&gt;
|Allows changing autoplace specifications runtime in non-multiplayer non-replay enabled games for debug purposes.&lt;br /&gt;
|-&lt;br /&gt;
| --generate-map-preview PATH&lt;br /&gt;
|Generate preview images of the map; PATH should name a PNG file or end with a &#039;/&#039; or &#039;\&#039; to indicate a directory.&lt;br /&gt;
|-&lt;br /&gt;
| --generate-map-preview-random COUNT&lt;br /&gt;
|Number of maps to generate with a random seed using --generate-map-preview.&lt;br /&gt;
|-&lt;br /&gt;
| --generate-tile-properties-csv CSVFILE&lt;br /&gt;
|Generate tile properties into a CSV file; can be used with --generate-map-preview&lt;br /&gt;
|-&lt;br /&gt;
| --map-preview-size SCALE&lt;br /&gt;
|Size (in pixels) of map preview (default: 1024)&lt;br /&gt;
|-&lt;br /&gt;
| --map-preview-scale SCALE&lt;br /&gt;
|Scale (meters per pixel) of map preview (default: 1)&lt;br /&gt;
|-&lt;br /&gt;
| --map-preview-offset X,Y&lt;br /&gt;
|Offset of the center of the map, in meters (default: 0,0)&lt;br /&gt;
|-&lt;br /&gt;
| --noise-outputs TAG,TAG...&lt;br /&gt;
|Indicate which variables of noise program to output&lt;br /&gt;
|-&lt;br /&gt;
| --slope-shading SHADEAMOUNT&lt;br /&gt;
|Apply elevation shading to map preview&lt;br /&gt;
|-&lt;br /&gt;
| --slope-shade-property SHADEPROP&lt;br /&gt;
|Property to apply slope shading to (default: elevation)&lt;br /&gt;
|-&lt;br /&gt;
| --report-quantities PROTOTYPE,...&lt;br /&gt;
|When generating map preview, report approximate quantities of the named entity prototypes&lt;br /&gt;
|-&lt;br /&gt;
| --threads THREADCOUNT&lt;br /&gt;
|Number of threads to use when generating map previews&lt;br /&gt;
|-&lt;br /&gt;
| --disable-migration-window&lt;br /&gt;
|Disables the gui that is shown when opening a save with migrated content&lt;br /&gt;
|-&lt;br /&gt;
| --start-server FILE&lt;br /&gt;
|start a multiplayer server&lt;br /&gt;
|-&lt;br /&gt;
| --start-server-load-scenario [MOD/]NAME&lt;br /&gt;
|start a multiplayer server and load the specified scenario. The scenario is looked for inside the given mod. If no mod is given, it is looked for in the top-level scenarios directory.&lt;br /&gt;
|-&lt;br /&gt;
| --start-server-load-latest&lt;br /&gt;
|start a multiplayer server and load the latest available save&lt;br /&gt;
|-&lt;br /&gt;
| --until-tick TICK&lt;br /&gt;
|run a save until given map tick&lt;br /&gt;
|-&lt;br /&gt;
| --benchmark FILE&lt;br /&gt;
|load save and run benchmark&lt;br /&gt;
|-&lt;br /&gt;
| --benchmark-ticks N&lt;br /&gt;
|number of ticks for benchmarking. Default is 1000 (default: 1000)&lt;br /&gt;
|-&lt;br /&gt;
| --benchmark-verbose LIST&lt;br /&gt;
|comma separated list of Update timings to output each tick. &amp;quot;all&amp;quot;, &amp;quot;timestamp&amp;quot; as well as all other values seen in the debug show-time-usage view&#039;s Update section are allowed here. An empty string disabled verbose benchmarking. (default: )&lt;br /&gt;
|-&lt;br /&gt;
| --output-perf-stats FILE&lt;br /&gt;
|path of file to which game engine performance statistics measurements should be saved. Special tags {api}, {hw}, {time} and {tag} will be replaced.&lt;br /&gt;
|-&lt;br /&gt;
| --mp-connect ADDRESS&lt;br /&gt;
|start factorio and connect to address&lt;br /&gt;
|-&lt;br /&gt;
| --heavy&lt;br /&gt;
|run the game in heavy mode&lt;br /&gt;
|-&lt;br /&gt;
| --load-game FILE&lt;br /&gt;
|start Factorio and load a game in singleplayer&lt;br /&gt;
|-&lt;br /&gt;
| --benchmark-graphics FILE&lt;br /&gt;
|load save and run it with graphics for benchmark-ticks number of ticks as normal game would&lt;br /&gt;
|-&lt;br /&gt;
| --benchmark-frame FILE&lt;br /&gt;
|load save and benchmark graphics rendering of single frame (prepare + render) without updating the game&lt;br /&gt;
|-&lt;br /&gt;
| --force-opengl&lt;br /&gt;
|use OpenGL for rendering&lt;br /&gt;
|-&lt;br /&gt;
| --force-d3d&lt;br /&gt;
|use Direct3D for rendering&lt;br /&gt;
|-&lt;br /&gt;
| --d3d-adapter ID&lt;br /&gt;
|adapter which should be used to initialized Direct3D&lt;br /&gt;
|-&lt;br /&gt;
| --d3d-feature-level&lt;br /&gt;
|override feature level (11, 10.1, 10)&lt;br /&gt;
|-&lt;br /&gt;
| --dxgi-blit-model&lt;br /&gt;
|force Blit presentation mode&lt;br /&gt;
|-&lt;br /&gt;
| --debug-graphics&lt;br /&gt;
|enables debugging layer for graphics API. If DirectX is used DirectX SDK needs to be installed for this to work.&lt;br /&gt;
|-&lt;br /&gt;
| --fullscreen&lt;br /&gt;
|start game in windowed mode (saved to configuration)&lt;br /&gt;
|-&lt;br /&gt;
| --max-texture-size N&lt;br /&gt;
|maximal size of texture that the game can use (saved to configuration). Should be power of two greater than 2048&lt;br /&gt;
|-&lt;br /&gt;
| --graphics-quality arg&lt;br /&gt;
|accepted values: normal, low, very-low&lt;br /&gt;
|-&lt;br /&gt;
| --video-memory-usage arg&lt;br /&gt;
|accepted values: all, high, medium, low&lt;br /&gt;
|-&lt;br /&gt;
| --force-graphics-preset arg&lt;br /&gt;
|accepted values: very-low, low, mac-with-low-ram, medium-with-low-vram, medium, high, very-high, extreme&lt;br /&gt;
|-&lt;br /&gt;
| --gfx-safe-mode&lt;br /&gt;
|resets some graphics settings to values that should work on most configurations&lt;br /&gt;
|-&lt;br /&gt;
| --low-vram&lt;br /&gt;
|sprites that are not put into sprite atlases won&#039;t be allocated as texture objects&lt;br /&gt;
|-&lt;br /&gt;
| --shader arg&lt;br /&gt;
|enable/disable shader postprocessing (saved to configuration)&lt;br /&gt;
|-&lt;br /&gt;
| --disable-audio&lt;br /&gt;
|Disable audio. Mainly for faster startup during development.&lt;br /&gt;
|-&lt;br /&gt;
| --disable-prototype-history bool&lt;br /&gt;
|Disables tracking which mod created/changed what prototype. Mainly for faster startup during development.&lt;br /&gt;
|-&lt;br /&gt;
| --window-size arg&lt;br /&gt;
|Desired window resolution. For example &amp;quot;1680x1050&amp;quot;. Or &amp;quot;maximized&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| --single-thread-loading&lt;br /&gt;
|Disables loading of sprites in multiple threads.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Server options&lt;br /&gt;
|-&lt;br /&gt;
| --port N&lt;br /&gt;
|network port to use&lt;br /&gt;
|-&lt;br /&gt;
| --bind ADDRESS[:PORT]&lt;br /&gt;
|IP address (and optionally port) to bind to&lt;br /&gt;
|-&lt;br /&gt;
| --rcon-port N&lt;br /&gt;
|Port to use for RCON&lt;br /&gt;
|-&lt;br /&gt;
| --rcon-password PASSWORD&lt;br /&gt;
|Password for RCON&lt;br /&gt;
|-&lt;br /&gt;
| --server-settings FILE&lt;br /&gt;
|Path to file with server settings. See data/server-settings.example.json&lt;br /&gt;
|-&lt;br /&gt;
| --use-server-whitelist&lt;br /&gt;
|If the whitelist should be used.&lt;br /&gt;
|-&lt;br /&gt;
| --server-whitelist FILE&lt;br /&gt;
|Path to file with server whitelist.&lt;br /&gt;
|-&lt;br /&gt;
| --server-banlist FILE&lt;br /&gt;
|Path to file with server banlist.&lt;br /&gt;
|-&lt;br /&gt;
| --server-adminlist FILE&lt;br /&gt;
|Path to file with server adminlist.&lt;br /&gt;
|-&lt;br /&gt;
| --console-log FILE&lt;br /&gt;
|Path to file where a copy of the server&#039;s log will be stored&lt;br /&gt;
|-&lt;br /&gt;
| --server-id FILE&lt;br /&gt;
|Path where server ID will be stored or read from&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Multiplayer ===&lt;br /&gt;
&lt;br /&gt;
  --start-server SAVE&lt;br /&gt;
&lt;br /&gt;
Will start a Headless (Dedicated) server, with no GUI.&lt;br /&gt;
&lt;br /&gt;
  --mp-connect ADDRESS&lt;br /&gt;
ADDRESS is the IP:port of the remote host. Port is optional.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
  ./factorio --mp-connect 192.168.1.101&lt;br /&gt;
  ./factorio --mp-connect 192.168.1.101:2345&lt;br /&gt;
&lt;br /&gt;
As above, port can be specified by placing the port number after a colon in the address.&lt;br /&gt;
&lt;br /&gt;
=== Creating a map from custom settings ===&lt;br /&gt;
&lt;br /&gt;
Sometimes it&#039;s useful to create a new game with map and/or map generator settings stored in a JSON file rather than going through the in-game map settings screen.&lt;br /&gt;
One reason is that by editing the settings directly it is possible to set settings outside the range normally available from the GUI.&lt;br /&gt;
&lt;br /&gt;
To do this, Factorio is run from the command-line, and a JSON file containing the map generator settings and a JSON file containing map settings (if customizing them) are needed.&lt;br /&gt;
&lt;br /&gt;
Example for custom generator settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;terrain_segmentation&amp;quot;: 0.5,&lt;br /&gt;
    &amp;quot;water&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
    &amp;quot;width&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;height&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;starting_area&amp;quot;: &amp;quot;normal&amp;quot;,&lt;br /&gt;
    &amp;quot;peaceful_mode&amp;quot;: false,&lt;br /&gt;
    &amp;quot;autoplace_controls&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;coal&amp;quot;: {&amp;quot;frequency&amp;quot;: 1, &amp;quot;size&amp;quot;: 2, &amp;quot;richness&amp;quot;: 0.5},&lt;br /&gt;
        &amp;quot;copper-ore&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;low&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;richness&amp;quot;: &amp;quot;high&amp;quot;},&lt;br /&gt;
        &amp;quot;crude-oil&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;richness&amp;quot;: &amp;quot;normal&amp;quot;},&lt;br /&gt;
        &amp;quot;enemy-base&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;richness&amp;quot;: &amp;quot;normal&amp;quot;},&lt;br /&gt;
        &amp;quot;iron-ore&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;richness&amp;quot;: &amp;quot;normal&amp;quot;},&lt;br /&gt;
        &amp;quot;stone&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;size&amp;quot;: 0, &amp;quot;richness&amp;quot;: &amp;quot;normal&amp;quot;},&lt;br /&gt;
        &amp;quot;uranium-ore&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;none&amp;quot;, &amp;quot;richness&amp;quot;: &amp;quot;normal&amp;quot;}&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;cliff_settings&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;cliff&amp;quot;,                &lt;br /&gt;
        &amp;quot;cliff_elevation_0&amp;quot;: 30,        &lt;br /&gt;
        &amp;quot;cliff_elevation_interval&amp;quot;: 20, &lt;br /&gt;
        &amp;quot;richness&amp;quot;: 1                   &lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;property_expression_names&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;elevation&amp;quot;: &amp;quot;0_16-elevation&amp;quot;,&lt;br /&gt;
        &amp;quot;temperature&amp;quot;: &amp;quot;35&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    &amp;quot;seed&amp;quot;: null&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is the same format as [https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings MapGenSettings] that are modifiable from Lua. Everything in the file is optional.&lt;br /&gt;
&lt;br /&gt;
Creating a custom save:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;C:\Program Files\Factorio\bin\x64\Factorio.exe&amp;quot; --create stuff-seed123.zip --map-gen-settings map-gen-settings.json --map-gen-seed 123&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generating a map preview:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;C:\Program Files\Factorio\bin\x64\Factorio.exe&amp;quot; --generate-map-preview preview-seed123.png --map-gen-settings map-gen-settings.json --map-gen-seed 123&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Console]]&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Debug_mode&amp;diff=174941</id>
		<title>Debug mode</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Debug_mode&amp;diff=174941"/>
		<updated>2019-07-26T17:12:37Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* List of debug-options and their function */ add notes on the time_usage metric sections as there was nothing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
The &#039;&#039;debug mode&#039;&#039; is used mainly by developers and modders to analyze the running state of the game. It can be enabled to show detailed information about the game world. The default key to enable debug mode is {{keybinding|F5}}.&lt;br /&gt;
&lt;br /&gt;
For example, one can:&lt;br /&gt;
* See the path the [[biter]]s are coming from and where they plan to target,&lt;br /&gt;
* See the position / coordinates of the cursor,&lt;br /&gt;
* See a grid-overlay for the [[map structure|tile]]s and [[chunk]]s,&lt;br /&gt;
* See the blocks in a railway network,&lt;br /&gt;
* See additional non-game related information, such as Updates Per Second and FPS.&lt;br /&gt;
&lt;br /&gt;
== Activate the debug mode ==&lt;br /&gt;
&lt;br /&gt;
There are 4 debug-levels:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Always&#039;&#039;&#039; - This is the default mode, if no mode is active. Keep very few things active here.&lt;br /&gt;
* &#039;&#039;&#039;Debug&#039;&#039;&#039; - Toggled by pressing {{keybinding|F5}}. Allows to toggle the debug overlays.&lt;br /&gt;
&lt;br /&gt;
== Configuring the debug mode ==&lt;br /&gt;
&lt;br /&gt;
To configure the 2 modes, press {{keybinding|F4}}. This opens up a menu with many options. You can move this menu with the mouse, if it hides some interesting underlying thing. You can switch between 2 folders, which reflects the option for that debug-mode (&amp;quot;always&amp;quot;, &amp;quot;debug&amp;quot;). The options are the same for each mode. Each mode can be configured to the user&#039;s liking, the different modes are only for convenience. A search function ({{Keybinding|ctrl|F}}) is available.&lt;br /&gt;
&lt;br /&gt;
== List of debug-options and their function ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option !! Description&lt;br /&gt;
|-&lt;br /&gt;
| show-fps || Will show the current frames-per-second and updates per second, short &amp;lt;abbr title=&amp;quot;Frames Per Second&amp;quot;&amp;gt;FPS&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Updates Per Second&amp;quot;&amp;gt;UPS&amp;lt;/abbr&amp;gt;. Should be normally about 60.&lt;br /&gt;
|-&lt;br /&gt;
| show-detailed-info ||&lt;br /&gt;
* Shows the cursor position in [[Tile (unit)|tile]]s (and subdivisions of that).&lt;br /&gt;
* Current resolution and zoom.&lt;br /&gt;
* How many objects are on the screen (painted by the graphic card).&lt;br /&gt;
* How many entities, chunks and paths are in the game and used.&lt;br /&gt;
|-&lt;br /&gt;
| show-time-usage ||&lt;br /&gt;
* Internal statistics about how long some calculations take, in milliseconds per [[Game-tick|tick]].&lt;br /&gt;
* Time is shown as average/min/max of the last 100 ticks, interval can be changed with /perf-avg-frames.&lt;br /&gt;
* Minimum values exclude zeroes (e.g. from ticks where no mod hooks were run).&lt;br /&gt;
* Overall calculation delays (some are parallel) must be under 16.6 ms to maintain normal framerate at 1x speed with 60 ticks per second.&lt;br /&gt;
* The Top section of metrics cover the wider game engines activities. The middle Update section relates to running the simulation for a tick. The bottom Map Generator section relates to the map generation activity.&lt;br /&gt;
|-&lt;br /&gt;
| show-gpu-time-usage ||&lt;br /&gt;
|-&lt;br /&gt;
| show-sprite-counts || The counts of each sprite rendered on screen.&lt;br /&gt;
|-&lt;br /&gt;
| show-lua-object-statistics ||&lt;br /&gt;
|-&lt;br /&gt;
| show-multiplayer-waiting-icon || When in a multiplayer game: if the game is currently waiting for the server to process.&lt;br /&gt;
|-&lt;br /&gt;
| show-multiplayer-statistics || The latency information when in multiplayer.&lt;br /&gt;
|-&lt;br /&gt;
| show-multiplayer-selection-rectangles || Allows to view selection rectangles of other players in multiplayer.&lt;br /&gt;
|-&lt;br /&gt;
| show-debug-info-in-tooltips || Shows additional information in the tooltips of entities, items, recipes, tiles etc. &lt;br /&gt;
|-&lt;br /&gt;
| show-tile-grid || Shows the borders of the [[Tile (unit)|tile]]s and [[chunk]]s.&lt;br /&gt;
|-&lt;br /&gt;
| show-collision-rectangles || Shows the collision boxes of each entity (red).&lt;br /&gt;
|-&lt;br /&gt;
| show-selection-rectangles || Shows the a blue box over each entity, if you hover over it, it will be selected.&lt;br /&gt;
|-&lt;br /&gt;
| show-entity-positions ||&lt;br /&gt;
|-&lt;br /&gt;
| show-entity-velocities ||&lt;br /&gt;
|-&lt;br /&gt;
| show-selected-entity-advanced-tiles ||&lt;br /&gt;
|-&lt;br /&gt;
| show-selected-input-transport-belts ||&lt;br /&gt;
|-&lt;br /&gt;
| show-paths || The calculated paths for the biters in different colors.&lt;br /&gt;
|-&lt;br /&gt;
| show-path-requests ||&lt;br /&gt;
|-&lt;br /&gt;
| show-next-waypoint-bb || Shows waypoints for biters (in green), nearly the same info as the next.&lt;br /&gt;
|-&lt;br /&gt;
| show-target || Shows the current target of the biters (red).&lt;br /&gt;
|-&lt;br /&gt;
| show-unit-group-info || Biter groups, which belong together (circles and lines belonging together)&lt;br /&gt;
|-&lt;br /&gt;
| show-unit-behavior-info ||&lt;br /&gt;
|-&lt;br /&gt;
| show-last-path-detail || The A*-algorithm at work, calculating new paths.&lt;br /&gt;
|-&lt;br /&gt;
| show-path-cache || The source-positions of a path and about the length (?)&lt;br /&gt;
|-&lt;br /&gt;
| show-path-cache-paths ||&lt;br /&gt;
|-&lt;br /&gt;
| show-rail-paths || Which path a train will follow.&lt;br /&gt;
|-&lt;br /&gt;
| show-rolling-stock-count || Shows inserter positions&lt;br /&gt;
|-&lt;br /&gt;
| show-rail-connections || Shows rail connections.&lt;br /&gt;
|-&lt;br /&gt;
| show-rail-joints ||&lt;br /&gt;
|-&lt;br /&gt;
| show-rail-signal-states || Shows signal color on map view. &lt;br /&gt;
|-&lt;br /&gt;
| show-train-stop-point || When a train slows down it shows the calculated point where it should halt&lt;br /&gt;
|-&lt;br /&gt;
| show-train-braking-distance || The distance a train will take to stop at its current speed&lt;br /&gt;
|-&lt;br /&gt;
| show-train-signals ||&lt;br /&gt;
|-&lt;br /&gt;
| show-network-connected-entities || Displays the network-id of the electric network that a pole is connected to&lt;br /&gt;
|-&lt;br /&gt;
| show-circuit-network-numbers || Shows the number (and color) of circuit networks&lt;br /&gt;
|-&lt;br /&gt;
| show-energy-sources-networks || Which network-id an entity is connected to.&lt;br /&gt;
|-&lt;br /&gt;
| show-active-state || Inserters, fish, turrets are turned to passive, if not used; Red = inactive, Purple = inactive when enemies aren&#039;t around (turrets etc), Green = inactive when player isn&#039;t around (fish). Passive entities consume less CPU power.&lt;br /&gt;
|-&lt;br /&gt;
| show-wakeup-lists || When an entity is sleeping in another entity it shows which entities it&#039;s sleeping in.&lt;br /&gt;
|-&lt;br /&gt;
| show-transport-lines ||&lt;br /&gt;
|-&lt;br /&gt;
| show-transport-line-gaps ||&lt;br /&gt;
|-&lt;br /&gt;
| show-pollution-values || Shows the numeric pollution amount on each chunk.&lt;br /&gt;
|-&lt;br /&gt;
| show-active-entities-on-chunk-counts ||&lt;br /&gt;
Shows counts of active entities per chunk. They are devided into three categories:&lt;br /&gt;
* Red = active (e.g. furnaces)&lt;br /&gt;
* Blue = active when a player is around (e.g. fish)&lt;br /&gt;
* Green = active when enemies are around (e.g. turrets)&lt;br /&gt;
|-&lt;br /&gt;
| show-active-chunks || Shows in the map view, which chunks are &amp;quot;on&amp;quot;, unmarked chunks are not calculated.&lt;br /&gt;
|-&lt;br /&gt;
| show-polluted-chunks || Shows which chunks have pollution.&lt;br /&gt;
|-&lt;br /&gt;
| show-enemy-expansion-candidate-chunks || Where is space left to spread the brood?. Goes from red (nearly no space) to green (space to expand).&lt;br /&gt;
|-&lt;br /&gt;
| show-enemy-expansion-candidate-chunk-values || Which chunks the enemies will try to expand into.&lt;br /&gt;
|-&lt;br /&gt;
| show-bad-attack-chunks ||&lt;br /&gt;
|-&lt;br /&gt;
| show-tile-variations || Shows, which tile-variation (1, 2 or 4 tile sized) is painted for which area of the map. Quite confusing, zoom in to see the meaning.&lt;br /&gt;
|-&lt;br /&gt;
| show-raw-tile-transitions || Turns connected textures for land and water off, so the distinction can easily be made.&lt;br /&gt;
|-&lt;br /&gt;
| show-fluid-box-fluid-info || How much fluid is in a pipe/storage tank, shows flow of liquid in pipes.&lt;br /&gt;
|-&lt;br /&gt;
| show-environment-sound-info || Displays which sound of which entity is played and how loud.&lt;br /&gt;
|-&lt;br /&gt;
| show-logistic-robot-targets ||&lt;br /&gt;
|-&lt;br /&gt;
| show-logistic-robots-on-map ||&lt;br /&gt;
|-&lt;br /&gt;
| show-player-robots ||&lt;br /&gt;
|-&lt;br /&gt;
| show-fire-info ||&lt;br /&gt;
|-&lt;br /&gt;
| show-sticker-info ||&lt;br /&gt;
|-&lt;br /&gt;
| show-map-generator-info ||&lt;br /&gt;
|-&lt;br /&gt;
| show-decorative-names ||&lt;br /&gt;
|-&lt;br /&gt;
| show-decorative-collision-rectangles ||&lt;br /&gt;
|-&lt;br /&gt;
| allow-increased-zoom ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Command_line_parameters&amp;diff=174930</id>
		<title>Command line parameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Command_line_parameters&amp;diff=174930"/>
		<updated>2019-07-26T16:33:32Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: correct --benchmark-verbose input expectation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Command line parameters can be used to set settings in the command line before the game launches, this is useful mainly for advanced users or server hosts. This page pertains to version 0.17.59.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+General options&lt;br /&gt;
|-&lt;br /&gt;
| -h, --help&lt;br /&gt;
| display help&lt;br /&gt;
|-&lt;br /&gt;
| --version&lt;br /&gt;
|show version information&lt;br /&gt;
|-&lt;br /&gt;
| -v, --verbose&lt;br /&gt;
|enable verbose logging&lt;br /&gt;
|-&lt;br /&gt;
| -c, --config PATH&lt;br /&gt;
|config file to use&lt;br /&gt;
|-&lt;br /&gt;
| --no-log-rotation&lt;br /&gt;
|don&#039;t rotate log file&lt;br /&gt;
|-&lt;br /&gt;
| --mod-directory PATH&lt;br /&gt;
|Mod directory to use&lt;br /&gt;
|-&lt;br /&gt;
| --check-unused-prototype-data&lt;br /&gt;
|Print a warning for all prototype values that were not accessed.&lt;br /&gt;
|-&lt;br /&gt;
| --executable-path PATH&lt;br /&gt;
|Override autodetected __PATH__executable. Usually not needed except on very weird systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Running options&lt;br /&gt;
|-&lt;br /&gt;
| -s, --map2scenario arg&lt;br /&gt;
|map to scenario conversion&lt;br /&gt;
|-&lt;br /&gt;
| -m, --scenario2map arg&lt;br /&gt;
|scenario to map conversion&lt;br /&gt;
|-&lt;br /&gt;
| --apply-update arg&lt;br /&gt;
|immediately apply update package&lt;br /&gt;
|-&lt;br /&gt;
| --create FILE&lt;br /&gt;
|create a new map&lt;br /&gt;
|-&lt;br /&gt;
| --map-gen-settings FILE&lt;br /&gt;
|Map generation settings for use with --create, --start-server-load-scenario or --generate-map-preview. See data/map-gen-settings.example.json&lt;br /&gt;
|-&lt;br /&gt;
| --map-gen-seed SEED&lt;br /&gt;
|Map generation seed for use with --create, --start-server-load-scenario or --generate-map-preview. Will override seed specified in map gen settings&lt;br /&gt;
|-&lt;br /&gt;
| --map-gen-seed-max SEED&lt;br /&gt;
|Map generation seed for use with --generate-map-preview to generate multiple previews using every second seed in the interval from map-gen-seed to map-gen-seed-max.&lt;br /&gt;
|-&lt;br /&gt;
| --map-settings FILE&lt;br /&gt;
|Map settings for use with --create or --start-server-load-scenario. See data/base/prototypes/map-settings.lua&lt;br /&gt;
|-&lt;br /&gt;
| --preset arg&lt;br /&gt;
|Name of the map generation preset to be used.&lt;br /&gt;
|-&lt;br /&gt;
| --enable-runtime-autoplace-modification&lt;br /&gt;
|Allows changing autoplace specifications runtime in non-multiplayer non-replay enabled games for debug purposes.&lt;br /&gt;
|-&lt;br /&gt;
| --generate-map-preview PATH&lt;br /&gt;
|Generate preview images of the map; PATH should name a PNG file or end with a &#039;/&#039; or &#039;\&#039; to indicate a directory.&lt;br /&gt;
|-&lt;br /&gt;
| --generate-map-preview-random COUNT&lt;br /&gt;
|Number of maps to generate with a random seed using --generate-map-preview.&lt;br /&gt;
|-&lt;br /&gt;
| --generate-tile-properties-csv CSVFILE&lt;br /&gt;
|Generate tile properties into a CSV file; can be used with --generate-map-preview&lt;br /&gt;
|-&lt;br /&gt;
| --map-preview-size SCALE&lt;br /&gt;
|Size (in pixels) of map preview (default: 1024)&lt;br /&gt;
|-&lt;br /&gt;
| --map-preview-scale SCALE&lt;br /&gt;
|Scale (meters per pixel) of map preview (default: 1)&lt;br /&gt;
|-&lt;br /&gt;
| --map-preview-offset X,Y&lt;br /&gt;
|Offset of the center of the map, in meters (default: 0,0)&lt;br /&gt;
|-&lt;br /&gt;
| --noise-outputs TAG,TAG...&lt;br /&gt;
|Indicate which variables of noise program to output&lt;br /&gt;
|-&lt;br /&gt;
| --slope-shading SHADEAMOUNT&lt;br /&gt;
|Apply elevation shading to map preview&lt;br /&gt;
|-&lt;br /&gt;
| --slope-shade-property SHADEPROP&lt;br /&gt;
|Property to apply slope shading to (default: elevation)&lt;br /&gt;
|-&lt;br /&gt;
| --report-quantities PROTOTYPE,...&lt;br /&gt;
|When generating map preview, report approximate quantities of the named entity prototypes&lt;br /&gt;
|-&lt;br /&gt;
| --threads THREADCOUNT&lt;br /&gt;
|Number of threads to use when generating map previews&lt;br /&gt;
|-&lt;br /&gt;
| --disable-migration-window&lt;br /&gt;
|Disables the gui that is shown when opening a save with migrated content&lt;br /&gt;
|-&lt;br /&gt;
| --start-server FILE&lt;br /&gt;
|start a multiplayer server&lt;br /&gt;
|-&lt;br /&gt;
| --start-server-load-scenario [MOD/]NAME&lt;br /&gt;
|start a multiplayer server and load the specified scenario. The scenario is looked for inside the given mod. If no mod is given, it is looked for in the top-level scenarios directory.&lt;br /&gt;
|-&lt;br /&gt;
| --start-server-load-latest&lt;br /&gt;
|start a multiplayer server and load the latest available save&lt;br /&gt;
|-&lt;br /&gt;
| --until-tick TICK&lt;br /&gt;
|run a save until given map tick&lt;br /&gt;
|-&lt;br /&gt;
| --benchmark FILE&lt;br /&gt;
|load save and run benchmark&lt;br /&gt;
|-&lt;br /&gt;
| --benchmark-ticks N&lt;br /&gt;
|number of ticks for benchmarking. Default is 1000 (default: 1000)&lt;br /&gt;
|-&lt;br /&gt;
| --benchmark-verbose LIST&lt;br /&gt;
|comma seperated list of timings to ouput each tick. &amp;quot;all&amp;quot;, &amp;quot;timestamp&amp;quot; as well as all other values seen in the debug view are allowed here. An empty string disabled verbose benchmarking. (default: )&lt;br /&gt;
|-&lt;br /&gt;
| --output-perf-stats FILE&lt;br /&gt;
|path of file to which performance statistics measurements should be saved. Special tags {api}, {hw}, {time} and {tag} will be replaced.&lt;br /&gt;
|-&lt;br /&gt;
| --mp-connect ADDRESS&lt;br /&gt;
|start factorio and connect to address&lt;br /&gt;
|-&lt;br /&gt;
| --heavy&lt;br /&gt;
|run the game in heavy mode&lt;br /&gt;
|-&lt;br /&gt;
| --load-game FILE&lt;br /&gt;
|start Factorio and load a game in singleplayer&lt;br /&gt;
|-&lt;br /&gt;
| --benchmark-graphics FILE&lt;br /&gt;
|load save and run it with graphics for benchmark-ticks number of ticks as normal game would&lt;br /&gt;
|-&lt;br /&gt;
| --benchmark-frame FILE&lt;br /&gt;
|load save and benchmark graphics rendering of single frame (prepare + render) without updating the game&lt;br /&gt;
|-&lt;br /&gt;
| --force-opengl&lt;br /&gt;
|use OpenGL for rendering&lt;br /&gt;
|-&lt;br /&gt;
| --force-d3d&lt;br /&gt;
|use Direct3D for rendering&lt;br /&gt;
|-&lt;br /&gt;
| --d3d-adapter ID&lt;br /&gt;
|adapter which should be used to initialized Direct3D&lt;br /&gt;
|-&lt;br /&gt;
| --d3d-feature-level&lt;br /&gt;
|override feature level (11, 10.1, 10)&lt;br /&gt;
|-&lt;br /&gt;
| --dxgi-blit-model&lt;br /&gt;
|force Blit presentation mode&lt;br /&gt;
|-&lt;br /&gt;
| --debug-graphics&lt;br /&gt;
|enables debugging layer for graphics API. If DirectX is used DirectX SDK needs to be installed for this to work.&lt;br /&gt;
|-&lt;br /&gt;
| --fullscreen&lt;br /&gt;
|start game in windowed mode (saved to configuration)&lt;br /&gt;
|-&lt;br /&gt;
| --max-texture-size N&lt;br /&gt;
|maximal size of texture that the game can use (saved to configuration). Should be power of two greater than 2048&lt;br /&gt;
|-&lt;br /&gt;
| --graphics-quality arg&lt;br /&gt;
|accepted values: normal, low, very-low&lt;br /&gt;
|-&lt;br /&gt;
| --video-memory-usage arg&lt;br /&gt;
|accepted values: all, high, medium, low&lt;br /&gt;
|-&lt;br /&gt;
| --force-graphics-preset arg&lt;br /&gt;
|accepted values: very-low, low, mac-with-low-ram, medium-with-low-vram, medium, high, very-high, extreme&lt;br /&gt;
|-&lt;br /&gt;
| --gfx-safe-mode&lt;br /&gt;
|resets some graphics settings to values that should work on most configurations&lt;br /&gt;
|-&lt;br /&gt;
| --low-vram&lt;br /&gt;
|sprites that are not put into sprite atlases won&#039;t be allocated as texture objects&lt;br /&gt;
|-&lt;br /&gt;
| --shader arg&lt;br /&gt;
|enable/disable shader postprocessing (saved to configuration)&lt;br /&gt;
|-&lt;br /&gt;
| --disable-audio&lt;br /&gt;
|Disable audio. Mainly for faster startup during development.&lt;br /&gt;
|-&lt;br /&gt;
| --disable-prototype-history bool&lt;br /&gt;
|Disables tracking which mod created/changed what prototype. Mainly for faster startup during development.&lt;br /&gt;
|-&lt;br /&gt;
| --window-size arg&lt;br /&gt;
|Desired window resolution. For example &amp;quot;1680x1050&amp;quot;. Or &amp;quot;maximized&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| --single-thread-loading&lt;br /&gt;
|Disables loading of sprites in multiple threads.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Server options&lt;br /&gt;
|-&lt;br /&gt;
| --port N&lt;br /&gt;
|network port to use&lt;br /&gt;
|-&lt;br /&gt;
| --bind ADDRESS[:PORT]&lt;br /&gt;
|IP address (and optionally port) to bind to&lt;br /&gt;
|-&lt;br /&gt;
| --rcon-port N&lt;br /&gt;
|Port to use for RCON&lt;br /&gt;
|-&lt;br /&gt;
| --rcon-password PASSWORD&lt;br /&gt;
|Password for RCON&lt;br /&gt;
|-&lt;br /&gt;
| --server-settings FILE&lt;br /&gt;
|Path to file with server settings. See data/server-settings.example.json&lt;br /&gt;
|-&lt;br /&gt;
| --use-server-whitelist&lt;br /&gt;
|If the whitelist should be used.&lt;br /&gt;
|-&lt;br /&gt;
| --server-whitelist FILE&lt;br /&gt;
|Path to file with server whitelist.&lt;br /&gt;
|-&lt;br /&gt;
| --server-banlist FILE&lt;br /&gt;
|Path to file with server banlist.&lt;br /&gt;
|-&lt;br /&gt;
| --server-adminlist FILE&lt;br /&gt;
|Path to file with server adminlist.&lt;br /&gt;
|-&lt;br /&gt;
| --console-log FILE&lt;br /&gt;
|Path to file where a copy of the server&#039;s log will be stored&lt;br /&gt;
|-&lt;br /&gt;
| --server-id FILE&lt;br /&gt;
|Path where server ID will be stored or read from&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Multiplayer ===&lt;br /&gt;
&lt;br /&gt;
  --start-server SAVE&lt;br /&gt;
&lt;br /&gt;
Will start a Headless (Dedicated) server, with no GUI.&lt;br /&gt;
&lt;br /&gt;
  --mp-connect ADDRESS&lt;br /&gt;
ADDRESS is the IP:port of the remote host. Port is optional.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
  ./factorio --mp-connect 192.168.1.101&lt;br /&gt;
  ./factorio --mp-connect 192.168.1.101:2345&lt;br /&gt;
&lt;br /&gt;
As above, port can be specified by placing the port number after a colon in the address.&lt;br /&gt;
&lt;br /&gt;
=== Creating a map from custom settings ===&lt;br /&gt;
&lt;br /&gt;
Sometimes it&#039;s useful to create a new game with map and/or map generator settings stored in a JSON file rather than going through the in-game map settings screen.&lt;br /&gt;
One reason is that by editing the settings directly it is possible to set settings outside the range normally available from the GUI.&lt;br /&gt;
&lt;br /&gt;
To do this, Factorio is run from the command-line, and a JSON file containing the map generator settings and a JSON file containing map settings (if customizing them) are needed.&lt;br /&gt;
&lt;br /&gt;
Example for custom generator settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;terrain_segmentation&amp;quot;: 0.5,&lt;br /&gt;
    &amp;quot;water&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
    &amp;quot;width&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;height&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;starting_area&amp;quot;: &amp;quot;normal&amp;quot;,&lt;br /&gt;
    &amp;quot;peaceful_mode&amp;quot;: false,&lt;br /&gt;
    &amp;quot;autoplace_controls&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;coal&amp;quot;: {&amp;quot;frequency&amp;quot;: 1, &amp;quot;size&amp;quot;: 2, &amp;quot;richness&amp;quot;: 0.5},&lt;br /&gt;
        &amp;quot;copper-ore&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;low&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;richness&amp;quot;: &amp;quot;high&amp;quot;},&lt;br /&gt;
        &amp;quot;crude-oil&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;richness&amp;quot;: &amp;quot;normal&amp;quot;},&lt;br /&gt;
        &amp;quot;enemy-base&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;richness&amp;quot;: &amp;quot;normal&amp;quot;},&lt;br /&gt;
        &amp;quot;iron-ore&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;richness&amp;quot;: &amp;quot;normal&amp;quot;},&lt;br /&gt;
        &amp;quot;stone&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;size&amp;quot;: 0, &amp;quot;richness&amp;quot;: &amp;quot;normal&amp;quot;},&lt;br /&gt;
        &amp;quot;uranium-ore&amp;quot;: {&amp;quot;frequency&amp;quot;: &amp;quot;normal&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;none&amp;quot;, &amp;quot;richness&amp;quot;: &amp;quot;normal&amp;quot;}&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;cliff_settings&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;cliff&amp;quot;,                &lt;br /&gt;
        &amp;quot;cliff_elevation_0&amp;quot;: 30,        &lt;br /&gt;
        &amp;quot;cliff_elevation_interval&amp;quot;: 20, &lt;br /&gt;
        &amp;quot;richness&amp;quot;: 1                   &lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;property_expression_names&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;elevation&amp;quot;: &amp;quot;0_16-elevation&amp;quot;,&lt;br /&gt;
        &amp;quot;temperature&amp;quot;: &amp;quot;35&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    &amp;quot;seed&amp;quot;: null&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is the same format as [https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings MapGenSettings] that are modifiable from Lua. Everything in the file is optional.&lt;br /&gt;
&lt;br /&gt;
Creating a custom save:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;C:\Program Files\Factorio\bin\x64\Factorio.exe&amp;quot; --create stuff-seed123.zip --map-gen-settings map-gen-settings.json --map-gen-seed 123&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generating a map preview:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;C:\Program Files\Factorio\bin\x64\Factorio.exe&amp;quot; --generate-map-preview preview-seed123.png --map-gen-settings map-gen-settings.json --map-gen-seed 123&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Console]]&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Console&amp;diff=174467</id>
		<title>Console</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Console&amp;diff=174467"/>
		<updated>2019-07-22T21:48:42Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* World manipulation scripts */ add map charting commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
The &#039;&#039;&#039;console&#039;&#039;&#039; is Factorio&#039;s in-game command-line interface. See [[command line parameters]] for the command line interface of the Factorio executable.&lt;br /&gt;
&lt;br /&gt;
The in-game console can be used used for:&lt;br /&gt;
&lt;br /&gt;
* Chatting with other players&lt;br /&gt;
* Occasional status updates&lt;br /&gt;
* Running commands / scripts / cheats&lt;br /&gt;
&lt;br /&gt;
There are three types of commands:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[#Normal commands|Normal]]&#039;&#039;&#039; - Display information about the game and customize your experience.&lt;br /&gt;
* &#039;&#039;&#039;[[#Multiplayer commands|Multiplayer]]&#039;&#039;&#039; - Message filtering, banning users, etc.&lt;br /&gt;
* &#039;&#039;&#039;[[#Scripting and cheat commands|Scripting/Cheating]]&#039;&#039;&#039; - Run small Lua scripts (but they &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;disable achievements for the save game&amp;lt;/span&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== Using the console ===&lt;br /&gt;
The console display can be toggled with the {{keybinding|/}} (slash) or {{keybinding|~}} (tilde) keys.&lt;br /&gt;
&lt;br /&gt;
You can customize the keys via &#039;&#039;&#039;Options Menu → Keyboard → Toggle Lua console&#039;&#039;&#039;.&lt;br /&gt;
When the console is open, you&#039;ll see a blinking cursor at the bottom of the screen; type your message or command and hit &#039;&#039;&#039;Return&#039;&#039;&#039; to send it (this will also close the console).&lt;br /&gt;
Documentation about message and command prefixes can be found further down this page.&lt;br /&gt;
&lt;br /&gt;
The console supports [[rich text]] tags. These tags are useful for sharing blueprints, marking map locations in chat or adding icons to map markers and train stations. Ctrl + alt clicking the map or ground will automatically insert a gps tag and post it into the console. Shift clicking most things with the console open will insert a tag for that thing into chat. &lt;br /&gt;
&lt;br /&gt;
When console is closed, only the most recent messages/commands will be displayed, but they will gradually fade away (opening the console will immediately re-display all recent messages).&lt;br /&gt;
Note that by default, all executed commands are made visible to all users. You can set the fade out time via &#039;&#039;&#039;Options Menu → Other Settings → Message Delay&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you want to immediately hide the console, open the console and then press &#039;&#039;&#039;Escape&#039;&#039;&#039; key (or press &#039;&#039;&#039;Return&#039;&#039;&#039; without entering any message/command).&lt;br /&gt;
This not only closes the console, but it also hides all the recent messages/commands.&lt;br /&gt;
The console can be cleared with the &#039;&#039;&#039;/clear&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Use the {{keybinding|&amp;amp;uarr;}} and {{keybinding|&amp;amp;darr;}} keys to scroll through the console history. The {{keybinding|Tab}} key will auto-complete commands and player names.&lt;br /&gt;
&lt;br /&gt;
== Normal commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Command&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Example&lt;br /&gt;
! style=&amp;quot;width:46%&amp;quot;| Description&lt;br /&gt;
! style=&amp;quot;width:4%&amp;quot;| Admin only&lt;br /&gt;
|-&lt;br /&gt;
| /alerts &amp;lt;enable/disable/mute/unmute&amp;gt; &amp;lt;alert&amp;gt;&lt;br /&gt;
| /alerts disable turret_fire&lt;br /&gt;
| Enables, disables, mutes, or unmutes the given  [[alerts|alert]] type. Available alerts: entity_destroyed, entity_under_attack, not_enough_construction_robots, no_material_for_construction, not_enough_repair packs, turret_fire, custom, no_storage, train_out_of_fuel, fluid_mixing.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /clear&lt;br /&gt;
| /clear&lt;br /&gt;
| Clears the console.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /color &amp;lt;color&amp;gt;&lt;br /&gt;
| /color 20 255 255 100&lt;br /&gt;
| Changes your color. Can either be one of the pre-defined colors or [[:Wikipedia:RGBA_color_space|RGBA value]] in the format of “# # # #”. Available colors: default, red, green, blue, orange, yellow, pink, purple, white, black, gray, brown, cyan, acid.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /evolution&lt;br /&gt;
| /evolution&lt;br /&gt;
| Prints info about the alien evolution factor.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /help [command]&lt;br /&gt;
| /help&lt;br /&gt;
| Prints a list of available commands, the optional argument can specify the command that should be described.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /h [command]&lt;br /&gt;
| /h&lt;br /&gt;
| Same as /help.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /mute-programmable-speaker &amp;lt;mute/unmute&amp;gt; &amp;lt;local/everyone&amp;gt;&lt;br /&gt;
| /mute-programmable-speaker mute local&lt;br /&gt;
| Mutes or unmutes the global sounds created by the Programmable Speaker. Use “local” to mute just the local client. Admins can use “everyone” to mute the sounds for everyone on the server.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /perf-avg-frames &amp;lt;number&amp;gt;&lt;br /&gt;
| /perf-avg-frames 100&lt;br /&gt;
| Number of ticks/updates used to average performance counters. Default is 100. Value of 5-10 is recommended for fast convergence, but numbers will jitter more rapidly.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /permissions&lt;br /&gt;
| /permissions&lt;br /&gt;
| Opens the permissions GUI.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /screenshot [x resolution] [y resolution] [zoom]&lt;br /&gt;
| /screenshot&lt;br /&gt;
| Takes a screenshot with the GUI hidden, centered on the player. It is saved in the &amp;quot;script-output&amp;quot; subfolder of your [[User data directory]].  Resolution is optional and defaults to the current window size. Zoom is optional and defaults to 1.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /seed&lt;br /&gt;
| /seed&lt;br /&gt;
| Prints the starting map seed.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /time&lt;br /&gt;
| /time&lt;br /&gt;
| Prints info about how old the map is.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-action-logging&lt;br /&gt;
| /toggle-action-logging&lt;br /&gt;
| Toggles logging all input actions performed by the game. This value isn’t persisted between game restarts and only affects your local game in multiplayer sessions.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-heavy-mode&lt;br /&gt;
| /toggle-heavy-mode&lt;br /&gt;
| Used to investigate [[Desynchronization#Using_heavy_mode_command|desyncs]]. Will slow down the game and make multiplayer unplayable.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-rockets-sent-gui&lt;br /&gt;
| /toggle-rockets-sent-gui&lt;br /&gt;
| Toggles if the rockets sent button is shown in the upper left corner of the screen.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /unlock-shortcut-bar&lt;br /&gt;
| /unlock-shortcut-bar&lt;br /&gt;
| Unlocks all shortcut bar items.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /version&lt;br /&gt;
| /version&lt;br /&gt;
| Prints the current game version.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multiplayer commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Command&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Example&lt;br /&gt;
! style=&amp;quot;width:46%&amp;quot;| Description&lt;br /&gt;
! style=&amp;quot;width:4%&amp;quot;| Admin only&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;message&amp;gt;&lt;br /&gt;
| Hello team!&lt;br /&gt;
| Console input that does not start with {{keybinding|/}} is shown as a chat message to your team.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /admin&lt;br /&gt;
| /admin&lt;br /&gt;
| Opens the player management GUI.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /admins&lt;br /&gt;
| /admins&lt;br /&gt;
| Prints a list of game admins.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /ban &amp;lt;player&amp;gt; &amp;lt;reason&amp;gt;&lt;br /&gt;
| /ban xTROLLx Throwing grenades in base&lt;br /&gt;
| Bans the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /banlist &amp;lt;add/remove/get/clear&amp;gt; &amp;lt;player&amp;gt;&lt;br /&gt;
| /banlist get&lt;br /&gt;
| Adds or removes a player from the banlist. Same as /ban or /unban.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /config &amp;lt;get/set&amp;gt; &amp;lt;option&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
| /config set password hunter2&lt;br /&gt;
| Gets or sets various multiplayer game settings. Available configs are: afk-auto-kick, allow-commands, allow-debug-settings, autosave-interval, autosave-only-on-server, ignore-player-limit-for-returning-players, max-players, max-upload-speed, only-admins-can-pause, password, require-user-verification, visibility-lan, visibility-public.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /delete-blueprint-library &amp;lt;player&amp;gt;&lt;br /&gt;
| /delete-blueprint-library everybody confirm&lt;br /&gt;
| Deletes the blueprint library storage for the given offline player from the save file. Enter “everybody confirm” to delete the storage of all offline players.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /demote &amp;lt;player&amp;gt;&lt;br /&gt;
| /demote AzureDiamond&lt;br /&gt;
| Demotes the player from admin.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /ignore &amp;lt;player&amp;gt;&lt;br /&gt;
| /ignore Cthon98&lt;br /&gt;
| Prevents the chat from showing messages from this player. Admin messages are still shown.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /ignores&lt;br /&gt;
| /ignores&lt;br /&gt;
| Prints a list of ignored players.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /kick &amp;lt;player&amp;gt; &amp;lt;reason&amp;gt;&lt;br /&gt;
| /kick xTROLLx Throwing grenades in base&lt;br /&gt;
| Kicks the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /mute &amp;lt;player&amp;gt;&lt;br /&gt;
| /mute Cthon98&lt;br /&gt;
| Prevents the player from saying anything in chat.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /mutes&lt;br /&gt;
| /mutes&lt;br /&gt;
| All players that are muted (can’t talk in chat).&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /open &amp;lt;player&amp;gt;&lt;br /&gt;
| /open AzureDiamond&lt;br /&gt;
| Opens another player’s inventory.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /o &amp;lt;player&amp;gt;&lt;br /&gt;
| /o AzureDiamond&lt;br /&gt;
| Same as /open.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /players [online/o/count/c]&lt;br /&gt;
| /players&lt;br /&gt;
| Prints a list of players in the game. (parameter online/o, it prints only players that are online, count/c prints only count)&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /promote &amp;lt;player&amp;gt;&lt;br /&gt;
| /promote AzureDiamond&lt;br /&gt;
| Promotes the player to admin.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /purge &amp;lt;player&amp;gt;&lt;br /&gt;
| /purge Cthon98&lt;br /&gt;
| Clears all the messages from this player from the chat log.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /reply &amp;lt;message&amp;gt;&lt;br /&gt;
| /reply oh, really?&lt;br /&gt;
| Replies to the last player that whispered to you.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /r &amp;lt;message&amp;gt;&lt;br /&gt;
| /r oh, really?&lt;br /&gt;
| Same as /reply.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /server-save&lt;br /&gt;
| /server-save&lt;br /&gt;
| Saves the game on the server in a multiplayer game.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /shout &amp;lt;message&amp;gt;&lt;br /&gt;
| /shout Hello world!&lt;br /&gt;
| Sends a message to all players including other forces.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /s &amp;lt;message&amp;gt;&lt;br /&gt;
| /s Hello world!&lt;br /&gt;
| Same as /shout.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /swap-players &amp;lt;player&amp;gt; [player]&lt;br /&gt;
| /swap-players AzureDiamond&lt;br /&gt;
| Swaps your character with the given player’s character, or if two players are given swaps the two player characters.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /unban &amp;lt;player&amp;gt;&lt;br /&gt;
| /unban xTROLLx&lt;br /&gt;
| Unbans the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /unignore &amp;lt;player&amp;gt;&lt;br /&gt;
| /unignore Cthon98&lt;br /&gt;
| Allows the chat to show messages from this player.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /unmute &amp;lt;player&amp;gt;&lt;br /&gt;
| /unmute Cthon98&lt;br /&gt;
| Allows the player to talk in chat again.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /whisper &amp;lt;player&amp;gt; &amp;lt;message&amp;gt;&lt;br /&gt;
| /whisper AzureDiamond thats what I see&lt;br /&gt;
| Sends a message to the specified player.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /w &amp;lt;player&amp;gt; &amp;lt;message&amp;gt;&lt;br /&gt;
| /w AzureDiamond thats what I see&lt;br /&gt;
| Same as /whisper.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /whitelist &amp;lt;add/remove/get/clear&amp;gt; [player]&lt;br /&gt;
| /whitelist get&lt;br /&gt;
| Adds or removes a player from the whitelist, where only whitelisted players can join the game. Enter nothing for “player” when using “get” to print a list of all whitelisted players. An empty whitelist disables the whitelist functionality allowing anyone to join.&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Scripting and cheat commands ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| /cheat &amp;lt;all&amp;gt;&lt;br /&gt;
| Researches all technologies and enables cheat mode. Using the &#039;&#039;&#039;all&#039;&#039;&#039; option also gives the player some additional items.&lt;br /&gt;
|-&lt;br /&gt;
| /command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command.&lt;br /&gt;
|-&lt;br /&gt;
| /c &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command.&lt;br /&gt;
|-&lt;br /&gt;
| /editor&lt;br /&gt;
| Toggles the map editor.&lt;br /&gt;
|-&lt;br /&gt;
| /measured-command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command and measures time it took.&lt;br /&gt;
|-&lt;br /&gt;
| /silent-command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command without printing it to the console.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is a very powerful feature, which also allows cheating, and as such &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;achievements will be permanently disabled for the save&amp;lt;/span&amp;gt; as soon as you use a script command.&lt;br /&gt;
&lt;br /&gt;
== Basic example scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Use it as calculator ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(1234*5678)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zoom beyond normal bounds ===&lt;br /&gt;
Note that zooming too far out can cause performance hits. Be careful.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.zoom=0.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mine faster ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.manual_mining_speed_modifier=1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Craft faster ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.manual_crafting_speed_modifier=1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unlock and research all technologies ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.research_all_technologies()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Undo this with the command in the next section.&lt;br /&gt;
&lt;br /&gt;
=== Unresearch all technologies ===&lt;br /&gt;
This does not reset manually applied bonuses&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, tech in pairs(game.player.force.technologies) do &lt;br /&gt;
	tech.researched=false&lt;br /&gt;
	game.player.force.set_saved_technology_progress(tech, 0)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reset your force ===&lt;br /&gt;
This resets all data for your force, including kill and production statistics, technologies, bonuses and charting status.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.reset()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Always show rail block visualization ===&lt;br /&gt;
Permanently show the rail block visualization instead of only when holding a rail signal. Disable by replacing true with false.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.game_view_settings.show_rail_block_visualisation = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inventory manipulation scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Cheat mode ===&lt;br /&gt;
Allows for infinite free crafting. Disable by replacing true with false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.cheat_mode=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Refill resources (refill oil, iron etc.) ===&lt;br /&gt;
While holding the cursor over a resource tile in-game&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.selected.amount=7500&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively you can refill all resources in the map with the following command. Change ore.amount to the desired value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c surface = game.player.surface&lt;br /&gt;
for _, ore in pairs(surface.find_entities_filtered({type=&amp;quot;resource&amp;quot;})) do&lt;br /&gt;
    ore.amount = 10000&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add items to the player&#039;s inventory ===&lt;br /&gt;
Replace iron-plate with the [[data.raw|internal name]] of the item desired.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.insert{name=&amp;quot;iron-plate&amp;quot;, count=100}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For instance, here&#039;s a stack of the god-mode energy system interface:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.insert{name=&amp;quot;electric-energy-interface&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a powerful armor with equipment and some tools for construction:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c	local player = game.player&lt;br /&gt;
player.insert{name=&amp;quot;power-armor-mk2&amp;quot;, count = 1}&lt;br /&gt;
local p_armor = player.get_inventory(5)[1].grid&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;energy-shield-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;energy-shield-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;personal-roboport-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;night-vision-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;battery-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;battery-mk2-equipment&amp;quot;})&lt;br /&gt;
player.insert{name=&amp;quot;construction-robot&amp;quot;, count = 25}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== World manipulation scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Reveal the map around the player ===&lt;br /&gt;
&lt;br /&gt;
Reveals the map around the player, similar to a [[radar]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local radius=150&lt;br /&gt;
game.player.force.chart(game.player.surface, {{game.player.position.x-radius, game.player.position.y-radius}, {game.player.position.x+radius, game.player.position.y+radius}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or from start position&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local radius=150&lt;br /&gt;
game.player.force.chart(game.player.surface, {{x = -radius, y = -radius}, {x = radius, y = radius}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Change 150 to the desired radius, higher values take longer.&lt;br /&gt;
&lt;br /&gt;
=== Hide revealed map ===&lt;br /&gt;
&lt;br /&gt;
Hides all revealed chunks, inverted map revealing.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local force = game.player.force&lt;br /&gt;
for chunk in surface.get_chunks() do&lt;br /&gt;
  force.unchart_chunk({x = chunk.x, y = chunk.y}, surface)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reveal all generated map ===&lt;br /&gt;
&lt;br /&gt;
Revels all of the generated map to the player&#039;s team.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.chart_all()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reveal all explored map ===&lt;br /&gt;
&lt;br /&gt;
Revels all of the player&#039;s team&#039;s explored map.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.rechart()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete chunks ===&lt;br /&gt;
If much of the map is revealed, it increases the size of the save file. The following command cancels the generation of all chunks that are currently queued for generation and removes chunks outside a 32 chunks radius around 0,0. Note that this will remove player entities if there are any on these chunks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface;&lt;br /&gt;
game.player.force.cancel_charting(surface); &lt;br /&gt;
local chunk_radius = 32;&lt;br /&gt;
for chunk in surface.get_chunks() do&lt;br /&gt;
  if (chunk.x &amp;lt; -chunk_radius or chunk.x &amp;gt; chunk_radius or chunk.y &amp;lt; -chunk_radius or chunk.y &amp;gt; chunk_radius) then&lt;br /&gt;
    surface.delete_chunk(chunk)&lt;br /&gt;
  end&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Turn off night ===&lt;br /&gt;
Enables eternal day.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.always_day=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change game speed ===&lt;br /&gt;
0.5 is half speed, 1 is default, 2 is double speed, etc. Minimum is 0.01. This can be used for a lot of things like when you know you will have to wait for long periods of time for something to complete. Increasing will decrease performance, be careful.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.speed=X&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Expensive (marathon) or normal mode ===&lt;br /&gt;
To change from normal to expensive mode preset (this changes the research cost and intermediate product cost):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.difficulty_settings.recipe_difficulty=1&lt;br /&gt;
game.difficulty_settings.technology_difficulty=1&lt;br /&gt;
game.difficulty_settings.technology_price_multiplier=4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change back to normal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.difficulty_settings.recipe_difficulty=0&lt;br /&gt;
game.difficulty_settings.technology_difficulty=0&lt;br /&gt;
game.difficulty_settings.technology_price_multiplier=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Freeze time ===&lt;br /&gt;
Stops the advancement of the time if you replace &amp;quot;BOOL&amp;quot; with &amp;quot;true&amp;quot; or unfreezes it if you replace it with &amp;quot;false&amp;quot;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.freeze_daytime=BOOL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove all pollution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.clear_pollution()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Completely turn off pollution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, surface in pairs(game.surfaces) do&lt;br /&gt;
  surface.clear_pollution()&lt;br /&gt;
end&lt;br /&gt;
game.map_settings.pollution.enabled = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add a lot of pollution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.pollute(game.player.position, 1000000)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where speakers are, by who ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c speakers = game.player.surface.find_entities_filtered{force = game.player.force, type=&amp;quot;programmable-speaker&amp;quot;}&lt;br /&gt;
for key, speaker in pairs(speakers) do&lt;br /&gt;
    game.player.print(speaker.last_user.name .. &amp;quot; placed a speaker at X=&amp;quot; .. speaker.position.x .. &amp;quot;, Y=&amp;quot; .. speaker.position.y)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable friendly fire for your force ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.friendly_fire = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add new resource patch ===&lt;br /&gt;
This creates a new 11×11 patch of resources, centered on the player character, where the ground is not water.&lt;br /&gt;
The patch it creates is perfectly square but it randomizes the amount similar to natural generation, with fewer ore at the edges and more ore in the center.&lt;br /&gt;
The default numbers result in a patch with 2500-3000 ore.&lt;br /&gt;
&lt;br /&gt;
If you want a larger patch, change &amp;quot;local size = 5&amp;quot; to a larger number.&lt;br /&gt;
A larger patch will have exponentially more ore.&lt;br /&gt;
Entering a number above 30 is not recommended.&lt;br /&gt;
&lt;br /&gt;
If you want a richer patch, change &amp;quot;local density = 10&amp;quot; to a larger number.&lt;br /&gt;
Entering a very large number shouldn&#039;t hurt anything but you probably don&#039;t need to go above 100.&lt;br /&gt;
&lt;br /&gt;
To choose which resource is spawned, change &amp;quot;stone&amp;quot; near the bottom to &amp;quot;iron-ore&amp;quot;, &amp;quot;copper-ore&amp;quot;, &amp;quot;coal&amp;quot;, or &amp;quot;uranium-ore&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local ore=nil&lt;br /&gt;
local size=5&lt;br /&gt;
local density=10&lt;br /&gt;
for y=-size, size do&lt;br /&gt;
	for x=-size, size do&lt;br /&gt;
		a=(size+1-math.abs(x))*10&lt;br /&gt;
		b=(size+1-math.abs(y))*10&lt;br /&gt;
		if a&amp;lt;b then&lt;br /&gt;
			ore=math.random(a*density-a*(density-8), a*density+a*(density-8))&lt;br /&gt;
		end&lt;br /&gt;
		if b&amp;lt;a then&lt;br /&gt;
			ore=math.random(b*density-b*(density-8), b*density+b*(density-8))&lt;br /&gt;
		end&lt;br /&gt;
		if surface.get_tile(game.player.position.x+x, game.player.position.y+y).collides_with(&amp;quot;ground-tile&amp;quot;) then&lt;br /&gt;
			surface.create_entity({name=&amp;quot;stone&amp;quot;, amount=ore, position={game.player.position.x+x, game.player.position.y+y}})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove resources around the player ===&lt;br /&gt;
Removes all resource patches from the ground in a 50 x 50 area around the player.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local size=50&lt;br /&gt;
local pos=game.player.position&lt;br /&gt;
&lt;br /&gt;
for _, e in pairs(surface.find_entities_filtered{area={{pos.x-size, pos.y-size},{pos.x+size, pos.y+size}}, type=&amp;quot;resource&amp;quot;}) &lt;br /&gt;
	do e.destroy() &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add new oil patch ===&lt;br /&gt;
This creates 9 crude oil patches in a 3×3 square.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for y=0,2 do&lt;br /&gt;
	for x=0,2 do&lt;br /&gt;
		game.player.surface.create_entity({name=&amp;quot;crude-oil&amp;quot;, amount=100000, position={game.player.position.x+x*7-7, game.player.position.y+y*7-7}})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or randomly without any collision:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local position=nil&lt;br /&gt;
for i=1,9 do&lt;br /&gt;
	position=game.player.surface.find_non_colliding_position(&amp;quot;crude-oil&amp;quot;, game.player.position, 0, i/2+1.5)&lt;br /&gt;
	if position then &lt;br /&gt;
		game.player.surface.create_entity({name=&amp;quot;crude-oil&amp;quot;, amount=100000, position=position})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create 10 fishes ===&lt;br /&gt;
This creates 10 fishes around of player. The player must be on the water edge.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local player = game.player&lt;br /&gt;
local surface = player.surface&lt;br /&gt;
for i = 1, 10 do&lt;br /&gt;
  local position = surface.find_non_colliding_position(&#039;fish&#039;, player.position, 10, 1)&lt;br /&gt;
  if not position then return end&lt;br /&gt;
  surface.create_entity {name = &#039;fish&#039;, position = position}&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Count entities ===&lt;br /&gt;
Counts all entities whose name includes the string in local entity.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local entity=&amp;quot;belt&amp;quot;&lt;br /&gt;
local surface=game.player.surface&lt;br /&gt;
local count=0&lt;br /&gt;
for key, ent in pairs(surface.find_entities_filtered({force=game.player.force})) do&lt;br /&gt;
	if string.find(ent.name,entity) then&lt;br /&gt;
		count=count+1&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
game.player.print(count)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Emptying all pipes, underground pipes and pumps ===&lt;br /&gt;
Useful when pipes contain a fluid you dont want.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local deleted=0&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=game.player.force})) do&lt;br /&gt;
	if string.find(entity.name, &amp;quot;pipe&amp;quot;) or &lt;br /&gt;
		string.find(entity.name, &amp;quot;pump&amp;quot;) &lt;br /&gt;
	then&lt;br /&gt;
		for i=1,#entity.fluidbox do&lt;br /&gt;
			deleted = deleted + 1&lt;br /&gt;
			entity.fluidbox[i] = nil;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
game.player.print(&amp;quot;Fluids removed from &amp;quot;..deleted ..&amp;quot; entities&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Turn off cliff generation ===&lt;br /&gt;
Sets size to &amp;quot;none&amp;quot;. Only effective on chunks that are generated after using this command. Use [[#Remove all cliffs]] to delete existing cliffs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local mgs = game.player.surface.map_gen_settings&lt;br /&gt;
mgs.cliff_settings.cliff_elevation_0 = 1024&lt;br /&gt;
game.player.surface.map_gen_settings = mgs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove all cliffs ===&lt;br /&gt;
Removes all cliffs existing cliffs from the world. Use [[#Turn off cliff generation]] to turn off cliff generation in new chunks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, v in pairs(game.player.surface.find_entities_filtered{type=&amp;quot;cliff&amp;quot;}) do&lt;br /&gt;
  v.destroy()&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete all decoratives ===&lt;br /&gt;
Delete the decoratives that can be found in the world.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.destroy_decoratives({})/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change map generation settings ===&lt;br /&gt;
This allows to change the map generation settings for new chunks; it does not alter already generated chunks. [[#Delete chunks|Deleted chunks]] are affected by the setting change because they are newly generated when they get explored again.&lt;br /&gt;
&lt;br /&gt;
To change resource generation settings, replace &amp;quot;iron-ore&amp;quot; with the [[Data.raw#resource|resource]] that should be changed and replace &amp;quot;very-high&amp;quot; with the desired [https://lua-api.factorio.com/latest/Concepts.html#MapGenSize MapGenSize] in the following command. Replace &amp;quot;iron-ore&amp;quot; with &amp;quot;enemy-base&amp;quot; to change the enemy base generation settings. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local resource = &amp;quot;iron-ore&amp;quot;&lt;br /&gt;
local autoplace = surface.map_gen_settings.autoplace_controls&lt;br /&gt;
autoplace[resource].size = &amp;quot;very-high&amp;quot;&lt;br /&gt;
autoplace[resource].frequency = &amp;quot;very-high&amp;quot;&lt;br /&gt;
autoplace[resource].richness = &amp;quot;very-high&amp;quot;&lt;br /&gt;
surface.map_gen_settings.autoplace_controls = autoplace&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change water generation settings, replace &amp;quot;very-high&amp;quot; with the desired [https://lua-api.factorio.com/latest/Concepts.html#MapGenSize MapGenSize] in the following command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.water = &amp;quot;very-high&amp;quot; --[[ size]]&lt;br /&gt;
mgs.terrain_segmentation  = &amp;quot;very-high&amp;quot; --[[ frequency]]&lt;br /&gt;
surface.map_gen_settings = mgs &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enemy/evolution scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Set evolution factor ===&lt;br /&gt;
Ranges from 0 (new game) to 1.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.forces[&amp;quot;enemy&amp;quot;].evolution_factor=X&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable time-based evolution &amp;amp; increases pollution-based evolution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.map_settings.enemy_evolution.time_factor=0&lt;br /&gt;
/c game.map_settings.enemy_evolution.pollution_factor=game.map_settings.enemy_evolution.pollution_factor*2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;2&amp;quot; at the end of the last command will double the default pollution factor. You can substitute another number to increase (or decrease) the pollution factor further.&lt;br /&gt;
&lt;br /&gt;
=== Kill all biters on the &amp;quot;enemy&amp;quot; force ===&lt;br /&gt;
Note that this will kill only mobile units, spawners will not be killed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.forces[&amp;quot;enemy&amp;quot;].kill_all_units()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill all enemies ===&lt;br /&gt;
This will kill all biters, bases and worms. Anything that is an enemy will be completely destroyed. This only affects enemies in the explored world, so any unexplored parts of the map which still need to be generated will still have enemies. You can [[#Prevent biters being on newly generated chunks|prevent biters being on newly generated chunks]] if desired.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=&amp;quot;enemy&amp;quot;})) do&lt;br /&gt;
	entity.destroy()&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill all nearby enemies ===&lt;br /&gt;
&lt;br /&gt;
This will kill all biters, bases and worms in a configurable radius. The default, 250 tiles, is about two zoomed-out screen widths on full HD. After destruction, it shows how many objects were destroyed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local radius = 250&lt;br /&gt;
local surface=game.player.surface&lt;br /&gt;
local pp = game.player.position&lt;br /&gt;
local cnt = 0&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=&amp;quot;enemy&amp;quot;})) do&lt;br /&gt;
    if entity.position.x &amp;gt; pp.x - radius and entity.position.x &amp;lt; pp.x + radius&lt;br /&gt;
        and entity.position.y &amp;gt; pp.y - radius and entity.position.y &amp;lt; pp.y + radius then&lt;br /&gt;
        cnt = cnt+1&lt;br /&gt;
        entity.destroy()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
game.player.print(cnt)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable peaceful mode ===&lt;br /&gt;
Enabling peaceful mode prevents biter attacks until provoked. Substitute true for false to disable. Already existing biters are not affected by this command so attacks could continue for a while after activating peaceful mode.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.peaceful_mode = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable biter expansion ===&lt;br /&gt;
Biter expansion allows biters to create new nests, it is enabled by default. Substitute true for false to disable.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.map_settings.enemy_expansion.enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prevent biters being on newly generated chunks ===&lt;br /&gt;
On newly generated chunks no biters will be present, however all current biters will remain unaffected. Equivalent of setting the Enemy Base Size to None under the Terrain settings during map generation but achieved mid game by [[#Change map generation settings|changing map generation settings]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.autoplace_controls[&amp;quot;enemy-base&amp;quot;].size = &amp;quot;none&amp;quot;&lt;br /&gt;
surface.map_gen_settings = mgs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Player character scripts ==&lt;br /&gt;
Commands concerning the player directly.&lt;br /&gt;
=== Get player position ===&lt;br /&gt;
Prints coordinates of your current position.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(game.player.position.x .. &amp;quot;, &amp;quot; .. game.player.position.y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Teleport player ===&lt;br /&gt;
Moves the player to the specified location. You should be able to teleport to a specific player if you obtain their coordinates via them executing the previous command and giving them to you.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.teleport({X, Y})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To teleport to the world&#039;s origin, use 0,0.&lt;br /&gt;
&lt;br /&gt;
=== Enable god mode ===&lt;br /&gt;
God mode removes your player character allowing you to fly over obstacles and take no damage.&lt;br /&gt;
&lt;br /&gt;
Disassociate your controls from the player:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.character=nil&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, hover the mouse over the useless player and destroy it by typing:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.selected.destroy()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To undo, spawn a player character. This will spawn a new player at the spawn point of the world, and connect your controls to it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.create_character()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable long reach ===&lt;br /&gt;
Enables long reach, which allows the player to build and interact with entities at a greater distance. The default reach is 10.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local reach = 10000&lt;br /&gt;
game.player.force.character_build_distance_bonus = reach&lt;br /&gt;
game.player.force.character_reach_distance_bonus = reach&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Research scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Enable Research Queue ===&lt;br /&gt;
Enable the research queue for the players current team. Can be done after the game has started if it was forgotten during the map&#039;s setup.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.research_queue_enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable faster research ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.laboratory_speed_modifier=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
1 is normal speed, 2 is double speed 3 is triple etc.&lt;br /&gt;
&lt;br /&gt;
=== Research specific technologies ===&lt;br /&gt;
The internal technology names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.technologies[&#039;electric-energy-distribution-1&#039;].researched=true&lt;br /&gt;
/c game.player.force.technologies[&#039;steel-processing&#039;].researched=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unresearch specific technologies ===&lt;br /&gt;
The internal technology names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.technologies[&#039;electric-energy-distribution-1&#039;].researched=false; game.player.force.set_saved_technology_progress(&#039;electric-energy-distribution-1&#039;, 0)&lt;br /&gt;
/c game.player.force.technologies[&#039;steel-processing&#039;].researched=false; game.player.force.set_saved_technology_progress(&#039;steel-processing&#039;, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enabling specific recipes ===&lt;br /&gt;
The internal recipe/item names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;electric-energy-interface&amp;quot;].enabled=true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;rocket-silo&amp;quot;].enabled=true&lt;br /&gt;
/c game.player.force.recipes.loader.enabled=true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;fast-loader&amp;quot;].enabled = true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;express-loader&amp;quot;].enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable all recipes ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for name, recipe in pairs(game.player.force.recipes) do recipe.enabled = true end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modding tools ==&lt;br /&gt;
A list of the internal names of most things in the vanilla game can also be found on [[data.raw]].&lt;br /&gt;
&lt;br /&gt;
=== Print to console which tile are you have under the player position ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(game.player.surface.get_tile(game.player.position.x, game.player.position.y).name)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write all researched technologies to file ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local list = {}&lt;br /&gt;
for _, tech in pairs(game.player.force.technologies) do &lt;br /&gt;
	if tech.researched then&lt;br /&gt;
    list[#list+1] = tech.name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
game.write_file(&amp;quot;techs.lua&amp;quot;, serpent.block(list) .. &amp;quot;\n&amp;quot;, true)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write all enabled recipes to file ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local list = {}&lt;br /&gt;
for _, recipe in pairs(game.player.force.recipes) do &lt;br /&gt;
	if recipe.enabled then&lt;br /&gt;
    list[#list+1] = recipe.name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
game.write_file(&amp;quot;recipes.lua&amp;quot;, serpent.block(list) .. &amp;quot;\n&amp;quot;, true)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Command line parameters]]&lt;br /&gt;
* http://lua-api.factorio.com/latest/ - Factorio API reference for latest version&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/EntityPrototypeFlags&amp;diff=174401</id>
		<title>Types/EntityPrototypeFlags</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/EntityPrototypeFlags&amp;diff=174401"/>
		<updated>2019-07-17T10:57:55Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* &amp;quot;hidden&amp;quot; */  add removed from filter list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Array ([[Types/table]]) of strings. The possible strings are listed below.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-rotatable&amp;quot; ==&lt;br /&gt;
Can&#039;t be rotated before or after placing.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;placeable-[force]&amp;quot; ==&lt;br /&gt;
*&amp;quot;placeable-player&amp;quot;&lt;br /&gt;
*&amp;quot;placeable-neutral&amp;quot;&lt;br /&gt;
*&amp;quot;placeable-enemy&amp;quot;&lt;br /&gt;
placeable neutral/player/enemy determine the default force when placing entities in the map editor and using the *AUTO* option for the force.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;placeable-off-grid&amp;quot; ==&lt;br /&gt;
placeable-off-grid refers to the fact that most entities are placed on an invisible &#039;grid&#039; within the world, entities with the placeable-off-grid flag do not have to line up with this grid (like trees and land-mines)&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;player-creation&amp;quot; ==&lt;br /&gt;
Makes it possible for the biter AI to target the entity as a distraction. Makes it possible to blueprint, deconstruct, and repair the entity (can be turned off again using the specific flags). Enables smoke to be created automatically when building the entity.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;building-direction-8-way&amp;quot; ==&lt;br /&gt;
Uses 45 degree angle increments when selecting direction.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;filter-directions&amp;quot; ==&lt;br /&gt;
Used to automatically detect the proper direction, if possible. Used by base with the pump, train stop, and train signal.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;fast-replaceable-no-build-while-moving&amp;quot; ==&lt;br /&gt;
Fast replace will not apply when building while moving.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;breaths-air&amp;quot; ==&lt;br /&gt;
This is used to specify that the entity breaths air, and so is affected by poison (currently [[Poison_capsule|Poison Capsules]] are the only source).&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-repairable&amp;quot; ==&lt;br /&gt;
Used to specify that the entity can not be &#039;healed&#039; by repair-packs (or construction robots with repair packs)&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-on-map&amp;quot; ==&lt;br /&gt;
The entity does not get drawn on the map.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-blueprintable&amp;quot; ==&lt;br /&gt;
The entity can&#039;t be used in blueprints.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-deconstructable&amp;quot; ==&lt;br /&gt;
The entity can&#039;t be deconstructed.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;hidden&amp;quot; ==&lt;br /&gt;
Hides the entity from the bonus GUI (button above the map), from the made in property of recipe tooltips and from filter lists.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;hide-alt-info&amp;quot; ==&lt;br /&gt;
Hides the alt-info of an entity in alt-mode, for example the recipe icon.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;fast-replaceable-no-cross-type-while-moving&amp;quot; ==&lt;br /&gt;
Do not fast replace over other entity types when building while moving.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;no-gap-fill-while-building&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-flammable&amp;quot; ==&lt;br /&gt;
Do not apply fire stickers to the entity.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;no-automated-item-removal&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Prevents inserters and loaders from taking items from this entity.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;no-automated-item-insertion&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Prevents inserters and loaders from inserting items into this entity.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;no-copy-paste&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-selectable-in-game&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;not-upgradable&amp;quot; == &lt;br /&gt;
The entity can&#039;t be selected by the Upgrade Planner tool.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
    flags = {&amp;quot;placeable-neutral&amp;quot;, &amp;quot;player-creation&amp;quot;}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/CollisionMask&amp;diff=174218</id>
		<title>Types/CollisionMask</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/CollisionMask&amp;diff=174218"/>
		<updated>2019-07-08T22:43:15Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* &amp;quot;consider-tile-transitions&amp;quot; */ add an explanation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The collision mask is specified as an Array ([[Types/table]]) of strings. Every entry is a specification of one layer the object collides with or a special collision option.&lt;br /&gt;
&lt;br /&gt;
== Layers ==&lt;br /&gt;
* ground-tile&lt;br /&gt;
* water-tile&lt;br /&gt;
* resource-layer&lt;br /&gt;
* doodad-layer&lt;br /&gt;
* floor-layer&lt;br /&gt;
* item-layer&lt;br /&gt;
* ghost-layer&lt;br /&gt;
* object-layer&lt;br /&gt;
* player-layer&lt;br /&gt;
* train-layer&lt;br /&gt;
* layer-11&lt;br /&gt;
* layer-12&lt;br /&gt;
* layer-13&lt;br /&gt;
* layer-14&lt;br /&gt;
* layer-15&lt;br /&gt;
&lt;br /&gt;
Layer-11 through layer-15 are currently unused by the core game.&lt;br /&gt;
&lt;br /&gt;
== Collision options ==&lt;br /&gt;
These are not collision masks, instead they control other aspects of collision, but they are still specified here.&lt;br /&gt;
=== &amp;quot;not-colliding-with-itself&amp;quot; ===&lt;br /&gt;
Any 2 entities that both have this option enabled on their prototype and have an identical collision mask layers list will not collide. Other collision mask options are not included in the identical layer list check. This does mean that 2 different prototypes with the same collision mask layers and this option enabled will not collide.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;consider-tile-transitions&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Uses the prototypes position rather than its collision box when doing collision checks with tile prototypes. Allows the prototype to overlap colliding tiles up until its center point.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;colliding-with-tiles-only&amp;quot; ===&lt;br /&gt;
Any prototype with this collision option will only be checked for collision with other prototype&#039;s collision masks if they are a tile.&lt;br /&gt;
&lt;br /&gt;
== Default collision masks ==&lt;br /&gt;
The default collision masks of all entity types can be found [[Prototype/Entity#collision_mask|here]].&lt;br /&gt;
&lt;br /&gt;
Example (Most common collision mask of buildings):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;collision_mask = { &amp;quot;item-layer&amp;quot;, &amp;quot;object-layer&amp;quot;, &amp;quot;player-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/Explosion&amp;diff=174178</id>
		<title>Prototype/Explosion</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/Explosion&amp;diff=174178"/>
		<updated>2019-07-05T22:53:30Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: animation is mandatory and the game errors on startup for an explosion without one&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;explosion&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Extends [[Prototype/Entity]].&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
* [[Prototype/FlameThrowerExplosion]] &#039;&#039;&#039;flame-thrower-explosion&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
This prototype inherits all the properties from [[Prototype/Entity]].&lt;br /&gt;
&lt;br /&gt;
=== animations ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/AnimationVariations]]&lt;br /&gt;
&lt;br /&gt;
Must have at least 1 animation frame.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
=== sound ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sound]]&lt;br /&gt;
&lt;br /&gt;
=== rotate ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== beam ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== height ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== correct_rotation ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== smoke ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Name of a trivial-smoke prototype. Mandatory if &amp;lt;code&amp;gt;smoke_count&amp;lt;/code&amp;gt; &amp;gt; 0.&lt;br /&gt;
&lt;br /&gt;
=== smoke_count ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint16]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
=== smoke_slow_down_factor ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
=== light ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/LightDefinition]]&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/Explosion&amp;diff=174177</id>
		<title>Prototype/Explosion</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/Explosion&amp;diff=174177"/>
		<updated>2019-07-05T22:51:51Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: sound isn&amp;#039;t a mandatory property&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;explosion&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Extends [[Prototype/Entity]].&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
* [[Prototype/FlameThrowerExplosion]] &#039;&#039;&#039;flame-thrower-explosion&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
This prototype inherits all the properties from [[Prototype/Entity]].&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
=== sound ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sound]]&lt;br /&gt;
&lt;br /&gt;
=== animations ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/AnimationVariations]]&lt;br /&gt;
&lt;br /&gt;
Must have at least 1 animation frame.&lt;br /&gt;
&lt;br /&gt;
=== rotate ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== beam ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== height ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== correct_rotation ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== smoke ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Name of a trivial-smoke prototype. Mandatory if &amp;lt;code&amp;gt;smoke_count&amp;lt;/code&amp;gt; &amp;gt; 0.&lt;br /&gt;
&lt;br /&gt;
=== smoke_count ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint16]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
=== smoke_slow_down_factor ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
=== light ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/LightDefinition]]&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/Shortcut&amp;diff=174067</id>
		<title>Prototype/Shortcut</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/Shortcut&amp;diff=174067"/>
		<updated>2019-07-01T14:47:57Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* toggleable */ add hint on how this is actually used&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;shortcut&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Definition for a shortcut in the shortcut bar of tools.&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
Inherits all properties from [[Prototype]].&lt;br /&gt;
&lt;br /&gt;
=== action ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
One of &amp;quot;toggle-alt-mode&amp;quot;, &amp;quot;undo&amp;quot;, &amp;quot;copy&amp;quot;, &amp;quot;cut&amp;quot;, &amp;quot;paste&amp;quot;, &amp;quot;import-string&amp;quot;, &amp;quot;toggle-personal-roboport&amp;quot;, &amp;quot;toggle-equipment-movement-bonus&amp;quot;, &amp;quot;create-blueprint-item&amp;quot; and &amp;quot;lua&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== icon ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite]]&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
=== item_to_create ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Name of a [[Prototype/Item]]. The item to create when clicking on a shortcut with the action set to &amp;quot;create-blueprint-item&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== technology_to_unlock ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Name of a [[Prototype/Technology]]. The technology that must be researched before this shortcut can be used.&lt;br /&gt;
&lt;br /&gt;
=== toggleable ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Must be enabled for the Factorio API to be able to set the toggled state on the shortcut button, see [https://lua-api.factorio.com/latest/LuaPlayer.html#LuaPlayer.set_shortcut_toggled LuaPlayer.set_shortcut_toggled].&lt;br /&gt;
&lt;br /&gt;
=== associated_control_input ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Name of a custom input or vanilla control. Used to show the keybind in the tooltip of the shortcut.&lt;br /&gt;
&lt;br /&gt;
=== small_icon ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite]]&lt;br /&gt;
&lt;br /&gt;
=== disabled_icon ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite]]&lt;br /&gt;
&lt;br /&gt;
=== disabled_small_icon ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite]]&lt;br /&gt;
&lt;br /&gt;
=== style ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;default&amp;quot;&lt;br /&gt;
&lt;br /&gt;
One of &amp;quot;default&amp;quot;, &amp;quot;blue&amp;quot;, &amp;quot;red&amp;quot; and &amp;quot;green&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;{&lt;br /&gt;
    type = &amp;quot;shortcut&amp;quot;,&lt;br /&gt;
    name = &amp;quot;give-deconstruction-planner&amp;quot;,&lt;br /&gt;
    order = &amp;quot;b[blueprints]-g[deconstruction-planner]&amp;quot;,&lt;br /&gt;
    action = &amp;quot;create-blueprint-item&amp;quot;,&lt;br /&gt;
    localised_name = {&amp;quot;shortcut.make-deconstruction-planner&amp;quot;},&lt;br /&gt;
    technology_to_unlock = &amp;quot;construction-robotics&amp;quot;,&lt;br /&gt;
    item_to_create = &amp;quot;deconstruction-planner&amp;quot;,&lt;br /&gt;
    style = &amp;quot;red&amp;quot;,&lt;br /&gt;
    icon =&lt;br /&gt;
    {&lt;br /&gt;
      filename = &amp;quot;__base__/graphics/icons/shortcut-toolbar/new-deconstruction-planner-x32-white.png&amp;quot;,&lt;br /&gt;
      priority = &amp;quot;extra-high-no-scale&amp;quot;,&lt;br /&gt;
      size = 32,&lt;br /&gt;
      scale = 1,&lt;br /&gt;
      flags = {&amp;quot;icon&amp;quot;}&lt;br /&gt;
    },&lt;br /&gt;
    small_icon =&lt;br /&gt;
    {&lt;br /&gt;
      filename = &amp;quot;__base__/graphics/icons/shortcut-toolbar/new-deconstruction-planner-x24.png&amp;quot;,&lt;br /&gt;
      priority = &amp;quot;extra-high-no-scale&amp;quot;,&lt;br /&gt;
      size = 24,&lt;br /&gt;
      scale = 1,&lt;br /&gt;
      flags = {&amp;quot;icon&amp;quot;}&lt;br /&gt;
    },&lt;br /&gt;
    disabled_small_icon =&lt;br /&gt;
    {&lt;br /&gt;
      filename = &amp;quot;__base__/graphics/icons/shortcut-toolbar/new-deconstruction-planner-x24-white.png&amp;quot;,&lt;br /&gt;
      priority = &amp;quot;extra-high-no-scale&amp;quot;,&lt;br /&gt;
      size = 24,&lt;br /&gt;
      scale = 1,&lt;br /&gt;
      flags = {&amp;quot;icon&amp;quot;}&lt;br /&gt;
    },&lt;br /&gt;
  }&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/CollisionMask&amp;diff=173997</id>
		<title>Types/CollisionMask</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/CollisionMask&amp;diff=173997"/>
		<updated>2019-06-22T16:38:18Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* &amp;quot;colliding-with-tiles-only&amp;quot; */ add simple explanation to confirm behaviour.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The collision mask is specified as an Array ([[Types/table]]) of strings. Every entry is a specification of one layer the object collides with or a special collision option.&lt;br /&gt;
&lt;br /&gt;
== Layers ==&lt;br /&gt;
* ground-tile&lt;br /&gt;
* water-tile&lt;br /&gt;
* resource-layer&lt;br /&gt;
* doodad-layer&lt;br /&gt;
* floor-layer&lt;br /&gt;
* item-layer&lt;br /&gt;
* ghost-layer&lt;br /&gt;
* object-layer&lt;br /&gt;
* player-layer&lt;br /&gt;
* train-layer&lt;br /&gt;
* layer-11&lt;br /&gt;
* layer-12&lt;br /&gt;
* layer-13&lt;br /&gt;
* layer-14&lt;br /&gt;
* layer-15&lt;br /&gt;
&lt;br /&gt;
Layer-11 through layer-15 are currently unused by the core game.&lt;br /&gt;
&lt;br /&gt;
== Collision options ==&lt;br /&gt;
These are not collision masks, instead they control other aspects of collision, but they are still specified here.&lt;br /&gt;
=== &amp;quot;not-colliding-with-itself&amp;quot; ===&lt;br /&gt;
Any 2 entities that both have this option enabled on their prototype and have an identical collision mask layers list will not collide. Other collision mask options are not included in the identical layer list check. This does mean that 2 different prototypes with the same collision mask layers and this option enabled will not collide.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;consider-tile-transitions&amp;quot; ===&lt;br /&gt;
=== &amp;quot;colliding-with-tiles-only&amp;quot; ===&lt;br /&gt;
Any prototype with this collision option will only be checked for collision with other prototype&#039;s collision masks if they are a tile.&lt;br /&gt;
&lt;br /&gt;
== Default collision masks ==&lt;br /&gt;
The default collision masks of all entity types can be found [[Prototype/Entity#collision_mask|here]].&lt;br /&gt;
&lt;br /&gt;
Example (Most common collision mask of buildings):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;collision_mask = { &amp;quot;item-layer&amp;quot;, &amp;quot;object-layer&amp;quot;, &amp;quot;player-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/AssemblingMachine&amp;diff=173995</id>
		<title>Prototype/AssemblingMachine</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/AssemblingMachine&amp;diff=173995"/>
		<updated>2019-06-21T18:12:29Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: ingredient_count isn&amp;#039;t mandatory any more&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;assembling-machine&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An assembling machine - like the assembling machines 1/2/3 in the game, but you can use your own recipe categories. Based on [[Prototype/CraftingMachine]].&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
* [[Prototype/RocketSilo]] &#039;&#039;&#039;rocket-silo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
This prototype inherits all the properties from [[Prototype/CraftingMachine]].&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
=== fixed_recipe ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The preset recipe of this machine. This machine does not show a recipe selection if this is set. The base game uses this for the [[rocket silo]].&lt;br /&gt;
&lt;br /&gt;
=== gui_title_key ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The locale key of the title of the GUI that is shown when the player opens the assembling machine.&lt;br /&gt;
&lt;br /&gt;
=== ingredient_count ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 255&lt;br /&gt;
&lt;br /&gt;
Sets the maximum number of ingredients this machine can craft with. Any recipe with more ingredients than this will be unavailable in this machine.&lt;br /&gt;
&lt;br /&gt;
This only counts item ingredients, not fluid ingredients! This means if ingredient count is 2, and the recipe has 2 item ingredients and 1 fluid ingredient, it can still be crafted in the machine.&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/Technology&amp;diff=173016</id>
		<title>Prototype/Technology</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/Technology&amp;diff=173016"/>
		<updated>2019-05-03T23:08:30Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* unit */ add SPACE character&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;technology&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
More in [[Research]]&lt;br /&gt;
&lt;br /&gt;
== General properties ==&lt;br /&gt;
Inherits all properties from [[Prototype]].&lt;br /&gt;
&lt;br /&gt;
=== icons, icon,  icon_size (IconSpecification) ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/IconSpecification]]&lt;br /&gt;
&lt;br /&gt;
=== name ===&lt;br /&gt;
:&#039;&#039;See [[Prototype#name ]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inherited from [[Prototype]]. If the name ends with &amp;lt;code&amp;gt;-number&amp;lt;/code&amp;gt;, the number is ignored for localization purposes. E. g. if the name is &amp;lt;code&amp;gt;whatever-name-3&amp;lt;/code&amp;gt;, the game looks for the &amp;lt;code&amp;gt;technology-name.whatever-name&amp;lt;/code&amp;gt; localization. The technology tree will also show the number on the technology icon.&lt;br /&gt;
&lt;br /&gt;
== Technology data ==&lt;br /&gt;
If the technology does not have a difficulty, this is located directly in the prototype. Otherwise, if the &amp;quot;normal&amp;quot; or &amp;quot;expensive&amp;quot; property exists, the technology has difficulty. Then, the technology data has to be specified for each difficulty instead of directly in the prototype. If at least one difficulty has technology data defined, the other difficulty can be set to false. This will give it the exact same properties as the difficulty that is defined.&lt;br /&gt;
&lt;br /&gt;
=== upgrade ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
When set to true, and the technology contains several levels, only the relevant one is displayed in the technology screen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;  {&lt;br /&gt;
    type = &amp;quot;technology&amp;quot;,&lt;br /&gt;
    name = &amp;quot;physical-projectile-damage-2&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    upgrade = &amp;quot;true&amp;quot;&lt;br /&gt;
  }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== enabled ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: true&lt;br /&gt;
&lt;br /&gt;
=== hidden ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Hides the technology from the tech screen.&lt;br /&gt;
&lt;br /&gt;
=== unit ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of properties:&lt;br /&gt;
* count — [[Types/double]] — How many units are needed. Must be positive. May not be specified if count_formula is specified.&lt;br /&gt;
* count_formula — [[Types/string]] — Formula that specifies how many units are needed per level of the infinite technology. May not be specified if count is specified. The formula is executed following the BODMAS order.&lt;br /&gt;
: Supported operators &amp;amp; characters:&lt;br /&gt;
: {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator !! meaning&lt;br /&gt;
|-&lt;br /&gt;
| +  || Addition&lt;br /&gt;
|-&lt;br /&gt;
| -  || Subtraction&lt;br /&gt;
|-&lt;br /&gt;
| * || Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| ^ || Power, raise the preceding base number by the following exponent number&lt;br /&gt;
|-&lt;br /&gt;
| () || Brackets for order, supported nested brackets&lt;br /&gt;
|-&lt;br /&gt;
| l or L || The current level of the technology&lt;br /&gt;
|-&lt;br /&gt;
| Digits || Are treated as numbers&lt;br /&gt;
|-&lt;br /&gt;
| . || Decimal point in number&lt;br /&gt;
|-&lt;br /&gt;
| SPACE || Space characters are ignored&lt;br /&gt;
|}&lt;br /&gt;
* time — [[Types/double]] — How much time is needed per one unit, in lab with crafting speed 1 it is the number of seconds.&lt;br /&gt;
* ingredients — [[Types/table]] of [[Types/IngredientPrototype]] — list of ingredients needed for one units&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
unit =&lt;br /&gt;
{&lt;br /&gt;
  count_formula = &amp;quot;2^(L-6)*1000&amp;quot;,&lt;br /&gt;
  ingredients =&lt;br /&gt;
  {&lt;br /&gt;
    {&amp;quot;automation-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;logistic-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;chemical-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;production-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;utility-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;space-science-pack&amp;quot;, 1}&lt;br /&gt;
  },&lt;br /&gt;
  time = 60&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== max_level ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]] or [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: Same as the level of the technology, which is 0 for non-upgrades, and the level of the upgrade for upgrades.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;infinite&amp;quot; for infinite technologies, otherwise uint.&lt;br /&gt;
&lt;br /&gt;
=== prerequisites ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
List of technologies needed to be researched before this one can be researched.&lt;br /&gt;
  prerequisites = {&amp;quot;explosives&amp;quot;, &amp;quot;military-2&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== effects ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [http://lua-api.factorio.com/latest/Concepts.html#Modifier Modifier]&lt;br /&gt;
&lt;br /&gt;
List of effects of the technology (applied when the technology is researched).&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    {&lt;br /&gt;
      type  = &amp;quot;unlock-recipe&amp;quot;,&lt;br /&gt;
      recipe = &amp;quot;land-mine&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/Technology&amp;diff=173015</id>
		<title>Prototype/Technology</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/Technology&amp;diff=173015"/>
		<updated>2019-05-03T23:00:07Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* unit */ correct current technology characters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;technology&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
More in [[Research]]&lt;br /&gt;
&lt;br /&gt;
== General properties ==&lt;br /&gt;
Inherits all properties from [[Prototype]].&lt;br /&gt;
&lt;br /&gt;
=== icons, icon,  icon_size (IconSpecification) ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/IconSpecification]]&lt;br /&gt;
&lt;br /&gt;
=== name ===&lt;br /&gt;
:&#039;&#039;See [[Prototype#name ]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inherited from [[Prototype]]. If the name ends with &amp;lt;code&amp;gt;-number&amp;lt;/code&amp;gt;, the number is ignored for localization purposes. E. g. if the name is &amp;lt;code&amp;gt;whatever-name-3&amp;lt;/code&amp;gt;, the game looks for the &amp;lt;code&amp;gt;technology-name.whatever-name&amp;lt;/code&amp;gt; localization. The technology tree will also show the number on the technology icon.&lt;br /&gt;
&lt;br /&gt;
== Technology data ==&lt;br /&gt;
If the technology does not have a difficulty, this is located directly in the prototype. Otherwise, if the &amp;quot;normal&amp;quot; or &amp;quot;expensive&amp;quot; property exists, the technology has difficulty. Then, the technology data has to be specified for each difficulty instead of directly in the prototype. If at least one difficulty has technology data defined, the other difficulty can be set to false. This will give it the exact same properties as the difficulty that is defined.&lt;br /&gt;
&lt;br /&gt;
=== upgrade ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
When set to true, and the technology contains several levels, only the relevant one is displayed in the technology screen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;  {&lt;br /&gt;
    type = &amp;quot;technology&amp;quot;,&lt;br /&gt;
    name = &amp;quot;physical-projectile-damage-2&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    upgrade = &amp;quot;true&amp;quot;&lt;br /&gt;
  }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== enabled ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: true&lt;br /&gt;
&lt;br /&gt;
=== hidden ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Hides the technology from the tech screen.&lt;br /&gt;
&lt;br /&gt;
=== unit ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of properties:&lt;br /&gt;
* count — [[Types/double]] — How many units are needed. Must be positive. May not be specified if count_formula is specified.&lt;br /&gt;
* count_formula — [[Types/string]] — Formula that specifies how many units are needed per level of the infinite technology. May not be specified if count is specified. The formula is executed following the BODMAS order.&lt;br /&gt;
: Supported operators:&lt;br /&gt;
: {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator !! meaning&lt;br /&gt;
|-&lt;br /&gt;
| +  || Addition&lt;br /&gt;
|-&lt;br /&gt;
| -  || Subtraction&lt;br /&gt;
|-&lt;br /&gt;
| * || Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| ^ || Power, raise the preceding base number by the following exponent number&lt;br /&gt;
|-&lt;br /&gt;
| () || Brackets for order, supported nested brackets&lt;br /&gt;
|-&lt;br /&gt;
| l or L || The current level of the technology&lt;br /&gt;
|-&lt;br /&gt;
| Digits || Are treated as numbers&lt;br /&gt;
|-&lt;br /&gt;
| . || Decimal point in number&lt;br /&gt;
|}&lt;br /&gt;
* time — [[Types/double]] — How much time is needed per one unit, in lab with crafting speed 1 it is the number of seconds.&lt;br /&gt;
* ingredients — [[Types/table]] of [[Types/IngredientPrototype]] — list of ingredients needed for one units&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
unit =&lt;br /&gt;
{&lt;br /&gt;
  count_formula = &amp;quot;2^(L-6)*1000&amp;quot;,&lt;br /&gt;
  ingredients =&lt;br /&gt;
  {&lt;br /&gt;
    {&amp;quot;automation-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;logistic-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;chemical-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;production-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;utility-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;space-science-pack&amp;quot;, 1}&lt;br /&gt;
  },&lt;br /&gt;
  time = 60&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== max_level ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]] or [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: Same as the level of the technology, which is 0 for non-upgrades, and the level of the upgrade for upgrades.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;infinite&amp;quot; for infinite technologies, otherwise uint.&lt;br /&gt;
&lt;br /&gt;
=== prerequisites ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
List of technologies needed to be researched before this one can be researched.&lt;br /&gt;
  prerequisites = {&amp;quot;explosives&amp;quot;, &amp;quot;military-2&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== effects ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [http://lua-api.factorio.com/latest/Concepts.html#Modifier Modifier]&lt;br /&gt;
&lt;br /&gt;
List of effects of the technology (applied when the technology is researched).&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    {&lt;br /&gt;
      type  = &amp;quot;unlock-recipe&amp;quot;,&lt;br /&gt;
      recipe = &amp;quot;land-mine&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/Technology&amp;diff=173014</id>
		<title>Prototype/Technology</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/Technology&amp;diff=173014"/>
		<updated>2019-05-03T22:54:05Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* unit */ added count_formula operators table, added misc other details and fuller unit example using existing format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;technology&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
More in [[Research]]&lt;br /&gt;
&lt;br /&gt;
== General properties ==&lt;br /&gt;
Inherits all properties from [[Prototype]].&lt;br /&gt;
&lt;br /&gt;
=== icons, icon,  icon_size (IconSpecification) ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/IconSpecification]]&lt;br /&gt;
&lt;br /&gt;
=== name ===&lt;br /&gt;
:&#039;&#039;See [[Prototype#name ]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inherited from [[Prototype]]. If the name ends with &amp;lt;code&amp;gt;-number&amp;lt;/code&amp;gt;, the number is ignored for localization purposes. E. g. if the name is &amp;lt;code&amp;gt;whatever-name-3&amp;lt;/code&amp;gt;, the game looks for the &amp;lt;code&amp;gt;technology-name.whatever-name&amp;lt;/code&amp;gt; localization. The technology tree will also show the number on the technology icon.&lt;br /&gt;
&lt;br /&gt;
== Technology data ==&lt;br /&gt;
If the technology does not have a difficulty, this is located directly in the prototype. Otherwise, if the &amp;quot;normal&amp;quot; or &amp;quot;expensive&amp;quot; property exists, the technology has difficulty. Then, the technology data has to be specified for each difficulty instead of directly in the prototype. If at least one difficulty has technology data defined, the other difficulty can be set to false. This will give it the exact same properties as the difficulty that is defined.&lt;br /&gt;
&lt;br /&gt;
=== upgrade ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
When set to true, and the technology contains several levels, only the relevant one is displayed in the technology screen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;  {&lt;br /&gt;
    type = &amp;quot;technology&amp;quot;,&lt;br /&gt;
    name = &amp;quot;physical-projectile-damage-2&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    upgrade = &amp;quot;true&amp;quot;&lt;br /&gt;
  }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== enabled ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: true&lt;br /&gt;
&lt;br /&gt;
=== hidden ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
Hides the technology from the tech screen.&lt;br /&gt;
&lt;br /&gt;
=== unit ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of properties:&lt;br /&gt;
* count — [[Types/double]] — How many units are needed. Must be positive. May not be specified if count_formula is specified.&lt;br /&gt;
* count_formula — [[Types/string]] — Formula that specifies how many units are needed per level of the infinite technology. May not be specified if count is specified. The formula is executed following the BODMAS order.&lt;br /&gt;
: Supported operators:&lt;br /&gt;
: {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator !! meaning&lt;br /&gt;
|-&lt;br /&gt;
| +  || Addition&lt;br /&gt;
|-&lt;br /&gt;
| -  || Subtraction&lt;br /&gt;
|-&lt;br /&gt;
| * || Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| ^ || Power, raise the preceding base number by the following exponent number&lt;br /&gt;
|-&lt;br /&gt;
| () || Brackets for order, supported nested brackets&lt;br /&gt;
|-&lt;br /&gt;
| a-z A-Z || The current level of the technology, any characters within the range can be used&lt;br /&gt;
|-&lt;br /&gt;
| Digits || Are treated as numbers&lt;br /&gt;
|-&lt;br /&gt;
| . || Decimal point in number&lt;br /&gt;
|}&lt;br /&gt;
* time — [[Types/double]] — How much time is needed per one unit, in lab with crafting speed 1 it is the number of seconds.&lt;br /&gt;
* ingredients — [[Types/table]] of [[Types/IngredientPrototype]] — list of ingredients needed for one units&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
unit =&lt;br /&gt;
{&lt;br /&gt;
  count_formula = &amp;quot;2^(L-6)*1000&amp;quot;,&lt;br /&gt;
  ingredients =&lt;br /&gt;
  {&lt;br /&gt;
    {&amp;quot;automation-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;logistic-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;chemical-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;production-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;utility-science-pack&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;space-science-pack&amp;quot;, 1}&lt;br /&gt;
  },&lt;br /&gt;
  time = 60&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== max_level ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]] or [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: Same as the level of the technology, which is 0 for non-upgrades, and the level of the upgrade for upgrades.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;infinite&amp;quot; for infinite technologies, otherwise uint.&lt;br /&gt;
&lt;br /&gt;
=== prerequisites ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
List of technologies needed to be researched before this one can be researched.&lt;br /&gt;
  prerequisites = {&amp;quot;explosives&amp;quot;, &amp;quot;military-2&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== effects ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [http://lua-api.factorio.com/latest/Concepts.html#Modifier Modifier]&lt;br /&gt;
&lt;br /&gt;
List of effects of the technology (applied when the technology is researched).&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    {&lt;br /&gt;
      type  = &amp;quot;unlock-recipe&amp;quot;,&lt;br /&gt;
      recipe = &amp;quot;land-mine&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Version_history/0.17.0&amp;diff=173013</id>
		<title>Version history/0.17.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Version_history/0.17.0&amp;diff=173013"/>
		<updated>2019-05-03T21:55:12Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: added version 0.17.16&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== 0.17.16 ==&lt;br /&gt;
Date: 19.03.2019&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
&lt;br /&gt;
* Disabled vanilla pollution attacks in the NPE until after the final wave.&lt;br /&gt;
* Changing teams in PvP will try to preserve the current character. ([https://forums.factorio.com/68018 more])&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed alerts showing for trees and rocks in the NPE ([https://forums.factorio.com/65370 more])&lt;br /&gt;
* Fixed solid fuel not triggering &amp;quot;fuel furnace&amp;quot; quest item ([https://forums.factorio.com/67941 more])&lt;br /&gt;
* Potentially fixed scrap metal crash bug again ([https://forums.factorio.com/67821 more])&lt;br /&gt;
* Fixed that a fluid furnace revived from a ghost would not work. ([https://forums.factorio.com/67372 more])&lt;br /&gt;
* Fixed that launching tutorials could leave the running game in a broken state. ([https://forums.factorio.com/68046 more])&lt;br /&gt;
* Fixed that clearing the ghost cursor did not clear the hand in the quickbar. ([https://forums.factorio.com/68062 more])&lt;br /&gt;
* Fixed Compilatron blocking placement of burner inserter in NPE ([https://forums.factorio.com/68063 more])&lt;br /&gt;
* Fixing a bug from last version that allowed fluid mixing by setting a recipe in assembler. ([https://forums.factorio.com/68074 more])&lt;br /&gt;
* Different alert when unable to revive ghost due to fluid mixing by hand vs. by robot. ([https://forums.factorio.com/68074 more])&lt;br /&gt;
* Fixed spitters would not properly target construction robots that are blocked from fulfilling their task. ([https://forums.factorio.com/67886 more])&lt;br /&gt;
* Fixed a crash when joining Steam game invites while a multiplayer connection is in progress.&lt;br /&gt;
* Fixed that the &amp;quot;research finished&amp;quot; indicator would display the wrong technology level. ([https://forums.factorio.com/67864 more])&lt;br /&gt;
* Fixed a crash when removing the end rail of a temporary train order. ([https://forums.factorio.com/67926 more])&lt;br /&gt;
* Fixed that cargo wagon filters wouldn&#039;t get preserved in blueprint strings. ([https://forums.factorio.com/67641 more])&lt;br /&gt;
&lt;br /&gt;
=== Scripting ===&lt;br /&gt;
&lt;br /&gt;
* Fixed that printing the output of LuaProfiler anywhere except log(...) would cause a desync. Note: this means if the results are shown in things like player.print() they won&#039;t persist through save/load (but won&#039;t cause desyncs).&lt;br /&gt;
* Fixed Electric Pole smart coverage placement not building over other pole ghosts. ([https://forums.factorio.com/68083 more])&lt;br /&gt;
&lt;br /&gt;
== 0.17.15 ==&lt;br /&gt;
Date: 18.03.2019&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed that trains wouldn&#039;t depart for temporary stops when waiting at a station. ([https://forums.factorio.com/67811 more])&lt;br /&gt;
* Fixed that two headed train running out of fuel didn&#039;t trigger the out of fuel alert in one of the directions. ([https://forums.factorio.com/67820 more])&lt;br /&gt;
* Improved Compilatron&#039;s ability to select a free space when indicating structures by a factor of 16.6.&lt;br /&gt;
* The player must now wait for Compilatron to follow before being allowed to evacuate the first area of the NPE.&lt;br /&gt;
* The player must collect at least some of their structures before evacuating the first area of the NPE.&lt;br /&gt;
* Updated the player spawn after big biter attack in case the player wants to check how aggressive the biters are.&lt;br /&gt;
* Compilatron now has its own icon.&lt;br /&gt;
* Biters and worms in the NPE will now be aggressive except in special situations.&lt;br /&gt;
&lt;br /&gt;
=== Gui ===&lt;br /&gt;
&lt;br /&gt;
* It is now possible to scroll horizontally with a touch pad in the tech tree view. ([https://forums.factorio.com/66874 more])&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed bugged Compilatron speech in NPE when showing blocked miner.&lt;br /&gt;
* Turrets placed in the starting area will now be detected during the entrench step of the NPE. ([https://forums.factorio.com/67772 more])&lt;br /&gt;
* Fixed flamethrower turret range visualization was rendered in wrong layer. ([https://forums.factorio.com/67903 more])&lt;br /&gt;
* Fixed editing map gen settings in the map editor would crash the game. ([https://forums.factorio.com/67839 more])&lt;br /&gt;
* Fixed that robots would still try to deconstruct trains that left their network. ([https://forums.factorio.com/67916 more])&lt;br /&gt;
* Reduced screen tearing on Windows 7 when Aero is disabled. ([https://forums.factorio.com/67158 more])&lt;br /&gt;
* Fixed that converting games to scenarios and back could corrupt script global data. ([https://forums.factorio.com/66812 more])&lt;br /&gt;
* Fixed that disabling friendly fire prevented fish from healing. ([https://forums.factorio.com/67953 more])&lt;br /&gt;
* Fixed that LuaEntity::destroy({do_cliff_correction=true}) was ignored. ([https://forums.factorio.com/67837 more])&lt;br /&gt;
* Fixed toggle state of item selection buttons when clicked with item to fast-select. ([https://forums.factorio.com/67465 more])&lt;br /&gt;
* Fixed that the Q that cancels wire dragging also removed the hand from the quickbar. ([https://forums.factorio.com/67192 more])&lt;br /&gt;
* Fixed that selecting quickbar slot while dragging wire only cancelled the dragging, but had to be pressed again to select the slot. ([https://forums.factorio.com/67192 more])&lt;br /&gt;
* Fixed that modded fluid streams could crash the game in some situations. ([https://forums.factorio.com/67999 more])&lt;br /&gt;
* Fixed that keys blocked by textfield didn&#039;t include CONTROL + A (to select all), the same way as it is doing for (CONTROL + C/V/X). ([https://forums.factorio.com/67047 more])&lt;br /&gt;
* Fixed the double-click to clear functionality of number text field. ([https://forums.factorio.com/67949 more])&lt;br /&gt;
* Fixed a crash when migrating mods related to assembling machines and fluids. ([https://forums.factorio.com/67118 more])&lt;br /&gt;
* Fixed that exporting a blueprint to the library could crash the game. ([https://forums.factorio.com/67987 more])&lt;br /&gt;
* Fixed a crash when a modded assembler is built over a ghost of assembler with different rotation. ([https://forums.factorio.com/67732 more])&lt;br /&gt;
* Fixed damage technology migrations not migrating infinite technologies properly. ([https://forums.factorio.com/67731 more])&lt;br /&gt;
* Potentially fixed a Linux-specific bug where the game would react to key presses not intended for it. ([https://forums.factorio.com/66402 more])&lt;br /&gt;
&lt;br /&gt;
=== Scripting ===&lt;br /&gt;
&lt;br /&gt;
* Added LuaGameScript::create_profiler() which can be used to measure script performance.&lt;br /&gt;
&lt;br /&gt;
== 0.17.14 ==&lt;br /&gt;
Date: 15.03.2019&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed that research queue setting in the New Map GUI wouldn&#039;t remember its value. ([https://forums.factorio.com/67370 more])&lt;br /&gt;
* Fixed a crash when hand replacing an assembler ghost with fluid mixing. ([https://forums.factorio.com/67732 more])&lt;br /&gt;
* Fixed migration of fluid-using modded mining drill.&lt;br /&gt;
* Fixed ten_minutes modifier bug in NPE.&lt;br /&gt;
* Fixed broken resetting of scenario context.&lt;br /&gt;
&lt;br /&gt;
== 0.17.13 ==&lt;br /&gt;
Date: 15.03.2019&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
&lt;br /&gt;
* Modified NPE quest structure to give the player more notice of impending attacks&lt;br /&gt;
* Added missing Steel plate recipe to NPE tech tree ([https://forums.factorio.com/67504 more])&lt;br /&gt;
* Removed unneeded Iron stick recipe from NPE&lt;br /&gt;
* Fast replacing between rail signal and rail chain signal will preserve circuit wire connection and relevant settings. ([https://forums.factorio.com/67682 more])&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed that the evolution pollution factor wasn&#039;t migrated properly. (pollution was increasing evolution 16.6 times faster than it should for existing saves).&lt;br /&gt;
* Fixed a crash when trying to assign invalid things to LuaPlayer::game_view_settings. ([https://forums.factorio.com/67682 more])&lt;br /&gt;
* Fixed that replays could trigger autosaves and take screenshots. ([https://forums.factorio.com/65901 more])&lt;br /&gt;
* Fixed that changing mod settings through Lua commands wouldn&#039;t trigger the settings-changed event. ([https://forums.factorio.com/66395 more])&lt;br /&gt;
* Fixed that /config didn&#039;t support name, description, or tags. ([https://forums.factorio.com/67463 more])&lt;br /&gt;
* Fixed a crash when using temporary stations. ([https://forums.factorio.com/67700 more])&lt;br /&gt;
* Fixed that drop-item into vehicles didn&#039;t work. ([https://forums.factorio.com/65948 more])&lt;br /&gt;
* Fixed that resizing the window while loading on 4k screens would cause the progress bar to not render. ([https://forums.factorio.com/65987 more])&lt;br /&gt;
* Fixed that the crafting queue GUI wouldn&#039;t show correctly when loading a save with crafting in progress. ([https://forums.factorio.com/66220 more])&lt;br /&gt;
* Fixed text box line wrapping didn&#039;t work correctly in most cases. ([https://forums.factorio.com/65437 more])&lt;br /&gt;
* Fixed a crash when re-joining a multiplayer game while the tips-and-tricks window is visible.&lt;br /&gt;
* Fixed a crash when opening the set-filter GUI on the ammo inventory of other player using the /open command.&lt;br /&gt;
* Fixed that the pollution generation of steel furnace wasn&#039;t what it was supposed compared to 0.16.&lt;br /&gt;
* Fixed that you could die during a cutscene and become a ghost when it ended. ([https://forums.factorio.com/67651 more])&lt;br /&gt;
* Fixed that you could die with required items in your inventory and make the NPE unwinnable. ([https://forums.factorio.com/65829 more])&lt;br /&gt;
* Fixed that some turrets wouldn&#039;t be detected by the quest objectives in the NPE. ([https://forums.factorio.com/66013 more])&lt;br /&gt;
* Fixed issue with detecting Steam engine on network in NPE ([https://forums.factorio.com/66717 more])&lt;br /&gt;
* Fixed biters getting stuck in massive clumps in NPE ([https://forums.factorio.com/66226 more])&lt;br /&gt;
* Fixed biters becoming frozen after arriving at target destination in NPE ([https://forums.factorio.com/66494 more])&lt;br /&gt;
* Fixed crash when mining scrap metal in NPE ([https://forums.factorio.com/65512 more])&lt;br /&gt;
* Fixed biters losing aggression after save/load during NPE ([https://forums.factorio.com/66410 more])&lt;br /&gt;
* Fixed some windows in the NPE having inconsistent header draggable textures ([https://forums.factorio.com/66295 more])&lt;br /&gt;
* Fixed build order for Compilatron in NPE so it is more successful ([https://forums.factorio.com/66703 more])&lt;br /&gt;
* Fixed set_active_quick_bar_page not updating the GUI. ([https://forums.factorio.com/66142 more])&lt;br /&gt;
* Fixed that waiting on temporary stop was reset every time other station was added. ([https://forums.factorio.com/6034 more])&lt;br /&gt;
* Fixed that blueprints with trains and rails still could snap the trains to different rails. ([https://forums.factorio.com/67384 more])&lt;br /&gt;
* Fixed LuaGameScript::take_screenshot with anti_alias = true would produce bad screenshots ([https://forums.factorio.com/67685 more])&lt;br /&gt;
* Fixed that snapping to position while building ghost didn&#039;t update the ghost position properly, leading to invisible entities in rare cases. ([https://forums.factorio.com/66908 more])&lt;br /&gt;
* Fixed a crash when destroying trains while in the paused map editor state. ([https://forums.factorio.com/67734 more])&lt;br /&gt;
* Fixed that recipes could be setup to produce &amp;gt; 1 count of items that are never meant to be stacked. ([https://forums.factorio.com/67736 more])&lt;br /&gt;
* Fixed that creating a new blueprint and pressing Q after it was setup removes it instead of putting it into inventory. ([https://forums.factorio.com/67737 more])&lt;br /&gt;
* Fixed LuaGameScript::take_screenshot with anti_alias = true would produce bad screenshots. ([https://forums.factorio.com/67685 more])&lt;br /&gt;
* Fixed Artillery targeting remote not showing the correct ability count in the quickbar. ([https://forums.factorio.com/65310 more])&lt;br /&gt;
* Fixed scrolling through blueprint book with Shift+mouse wheel on macOS. ([https://forums.factorio.com/67225 more])&lt;br /&gt;
* Fixed Artillery targeting remote not showing the correct ability count in the qickbar. ([https://forums.factorio.com/65310 more])&lt;br /&gt;
* Fixed that blueprint shortcuts in quickbar linked to the library wouldn&#039;t remember their orientation. ([https://forums.factorio.com/65716 more])&lt;br /&gt;
&lt;br /&gt;
== 0.17.12 ==&lt;br /&gt;
Date: 14.03.2019&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
* Added pollution tab to the production statistics.&lt;br /&gt;
&lt;br /&gt;
=== Minor Features ===&lt;br /&gt;
&lt;br /&gt;
* Spawner tooltip (including the pollution statistics), shows distribution of biters spawn for the current evolution factor with the pollution costs.&lt;br /&gt;
* Added attack modifier setting into the pollution section in the map generator. This modifies how much pollution is consumed by biters attacking. (default is 50% for deathworld presets)&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
&lt;br /&gt;
* Pollution generation is now shown in the x/s format both on the entity and in the item/crafting slot.&lt;br /&gt;
* All statistics graphs apart from electricity use smoothing now.&lt;br /&gt;
* The Install Mods GUI will now automatically install required dependencies.&lt;br /&gt;
* Added graphics option &amp;quot;Render in native screen resolution&amp;quot; on macOS to workaround performance issues due to rendering on Retina displays. ([https://forums.factorio.com/66870 more])&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Added another fixing migration of consistency related to undo.&lt;br /&gt;
* Fixed that inserters wouldn&#039;t copy the white list/black list setting during fast-replace. ([https://forums.factorio.com/67501 more])&lt;br /&gt;
* Fixed that building/removing signals forced train in disabled station to move from it. ([https://forums.factorio.com/67365 more])&lt;br /&gt;
* Fixed that the name of the &amp;quot;Undo&amp;quot; shortcut wouldn&#039;t show up in the shortcut selection list. ([https://forums.factorio.com/67464 more])&lt;br /&gt;
* Fixed that the blueprint book shortcut&#039;s tooltip wouldn&#039;t show the assigned key combination. ([https://forums.factorio.com/67447 more])&lt;br /&gt;
* Fixed search bar focus being lost when binding it to extra mouse buttons. ([https://forums.factorio.com/67517 more])&lt;br /&gt;
* Fixed that shortcut bar keyboard shortcuts would appear twice in the control settings if certain mods were installed. ([https://forums.factorio.com/67433 more])&lt;br /&gt;
* Fixed that backspacing text covered by unclosed rich text tags could leave them at the end of the string. ([https://forums.factorio.com/67376 more])&lt;br /&gt;
* Fixed that technology tooltip would show &amp;quot;unknown key&amp;quot; for technologies with no description. ([https://forums.factorio.com/67489 more])&lt;br /&gt;
* Fixed unable to close the menu when rebinding toggle menu from ESC. ([https://forums.factorio.com/67535 more])&lt;br /&gt;
* Fixed that modded GUI window frames always contained header filler. ([https://forums.factorio.com/66295 more])&lt;br /&gt;
* Fixed save file would contain two preview screenshots. ([https://forums.factorio.com/67543 more])&lt;br /&gt;
* Fixed typo in decoratives.lua. ([https://forums.factorio.com/67594 more])&lt;br /&gt;
* Fixed that cloning assembling machines wouldn&#039;t preserve the direction for some recipes. ([https://forums.factorio.com/67583 more])&lt;br /&gt;
* Fixed bug with typing certain characters on alternative keyboard layouts on windows. ([https://forums.factorio.com/67552 more])&lt;br /&gt;
* Fixed a crash of generators whose prototype changes to not use fluid anymore. ([https://forums.factorio.com/66595 more])&lt;br /&gt;
* Fixed some crashes related to changes of modded fluid recipes. ([https://forums.factorio.com/67277 more])&lt;br /&gt;
* Fixed NPE bug when Compilatron walks over the iron patch when he&#039;s about to build miners. ([https://forums.factorio.com/67553 more])&lt;br /&gt;
* Fixed switching to map view when holding placeable item in cursor would make the item icon invisible. ([https://forums.factorio.com/66180 more])&lt;br /&gt;
* Fixed cloning rocket silos with rockets wouldn&#039;t work correctly. ([https://forums.factorio.com/67635 more])&lt;br /&gt;
* Fixed broken and missing support of modded underground pipe connections. ([https://forums.factorio.com/65824 more])&lt;br /&gt;
* Fixed not being able to use the same key for some actions. ([https://forums.factorio.com/65128 more])&lt;br /&gt;
* Fixed that releasing Alt before D when pressing Alt+D would cause the character to walk.&lt;br /&gt;
* Fixed that order of items in the circuit network did not respect group and subgroups. ([https://forums.factorio.com/67548 more])&lt;br /&gt;
&lt;br /&gt;
=== Modding ===&lt;br /&gt;
&lt;br /&gt;
* Internal pollution values have been normalized, and they are now roughly 60 times less compared to what they were.&lt;br /&gt;
&lt;br /&gt;
=== Scripting ===&lt;br /&gt;
&lt;br /&gt;
* LuaPlayer::get_active_quick_bar_page now returns 1 based index.&lt;br /&gt;
&lt;br /&gt;
== 0.17.11 ==&lt;br /&gt;
Date: 11. 03. 2019&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed that the process name was set to &amp;quot;Main&amp;quot; on Linux. ([https://forums.factorio.com/67355 more])&lt;br /&gt;
* Fixed a crash when closing GUIs with escape in some cases. ([https://forums.factorio.com/67428 more])&lt;br /&gt;
* Fixed a crash when mods set repair pack speeds or entity repair speed modifiers to negative values.&lt;br /&gt;
* Fixed that focus-search wouldn&#039;t work in the Recipe GUI or Map Editor. ([https://forums.factorio.com/67437 more])&lt;br /&gt;
&lt;br /&gt;
== 0.17.10 ==&lt;br /&gt;
Date: 11. 03. 2019&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
&lt;br /&gt;
* Terrain generator options are preserved by the map generator GUI unless explicitly changed.&lt;br /&gt;
* Changed landfilling result to be tile called &amp;quot;landfill&amp;quot; instead of tile called &amp;quot;grass-1&amp;quot;. It looks the same for now, but it solves some unexpected behaviour. We might give it a custom graphics later on. ([https://forums.factorio.com/67282 more]) Existing blueprints containing &amp;quot;grass-1&amp;quot; will be migrated to the &amp;quot;landfill&amp;quot; tile.&lt;br /&gt;
* The game will load without an error when non-essential shaders fail to compile. ([https://forums.factorio.com/65107 more])&lt;br /&gt;
* When a player dies in the Wave defense, the free equipment will be removed from the corpse.&lt;br /&gt;
&lt;br /&gt;
=== Minor Features ===&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Make Blueprint&amp;quot;, &amp;quot;Make Blueprint Book&amp;quot;, &amp;quot;Make Deconstruction Planner&amp;quot;, &amp;quot;Make Upgrade Planner&amp;quot;, &amp;quot;Toggle Personal Roboport&amp;quot;, and &amp;quot;Toggle Exoskeleton&amp;quot; functions are now accessible via keyboard shortcuts.&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed references to nonexistent noise expressions in map gen settings would crash the game.&lt;br /&gt;
* Fixed a crash when trying to read Lua drop-down font style names. ([https://forums.factorio.com/67379 more])&lt;br /&gt;
* Fixed a crash when trying to join a Steam game fails in some cases. ([https://forums.factorio.com/67366 more])&lt;br /&gt;
* Fixed crash related to latency hiding and undo.&lt;br /&gt;
* Fixed that map generation wouldn&#039;t always update to reflect modded noise expressions.&lt;br /&gt;
* Fixed a crash when the open GUI target would become invalidated during the same tick as autosave starting.&lt;br /&gt;
* Fixed that the repaired lab showed in the bonus GUI. ([https://forums.factorio.com/67320 more])&lt;br /&gt;
* Fixed NPE crash when Compilatron tried to place his chest. ([https://forums.factorio.com/67153 more])&lt;br /&gt;
* Fixed that Control+F didn&#039;t work in the trains GUI. ([https://forums.factorio.com/66253 more])&lt;br /&gt;
* Probably fixed GUI not responding to user input in some situations. ([https://forums.factorio.com/66210 more])&lt;br /&gt;
* Fixed scaling of some of the debug info text overlay. ([https://forums.factorio.com/67172 more])&lt;br /&gt;
* Fixed headless server would be stuck in reset loop when trying to apply an update. ([https://forums.factorio.com/67231 more])&lt;br /&gt;
&lt;br /&gt;
=== Scripting ===&lt;br /&gt;
&lt;br /&gt;
* Added LuaGuiElement::select_all and select methods that work for textfield and textbox.&lt;br /&gt;
&lt;br /&gt;
== 0.17.9 ==&lt;br /&gt;
Date: 08. 03. 2019&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
&lt;br /&gt;
* Disabling station with train waiting in it doesn&#039;t force the train to departure anymore so it works as it worked in 0.16. It looked like a useful change for 0.17, but we can control train conditions by circuit network and there are some nice and simple use cases were ruined by trains being forced to departure when the stop is disabled. ([https://forums.factorio.com/65109 more])&lt;br /&gt;
* Changed expensive version of assembling machine 2 recipe to match the normal version better. ([https://forums.factorio.com/65570 more])&lt;br /&gt;
&lt;br /&gt;
=== Minor Features ===&lt;br /&gt;
&lt;br /&gt;
* Added map editor support to delete items.&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed pipette making error sound in latency state even though you have enough items. ([https://forums.factorio.com/67002 more])&lt;br /&gt;
* Fixed that technologies would sometimes disappear from the technology list when added to the research queue. ([https://forums.factorio.com/65879 more])&lt;br /&gt;
* Fixed problems related to circuit network connection inconsistency related to undo. ([https://forums.factorio.com/67071 more])&lt;br /&gt;
* Fixed NPE issue where Compilatron could destroy essential buildings. ([https://forums.factorio.com/67031 more])&lt;br /&gt;
* Fixed NPE crash when Compilatron tells you to pick up scrap. ([https://forums.factorio.com/66241 more])&lt;br /&gt;
* Fixed that he bonus GUI wouldn&#039;t show personal equipment. ([https://forums.factorio.com/65618 more])&lt;br /&gt;
* Fixed using special-item tags would cause desyncs. ([https://forums.factorio.com/66311 more])&lt;br /&gt;
* Fixed NPE crash when Compilatron tries to point at an object that doesn&#039;t exist any more. ([https://forums.factorio.com/65162 more])&lt;br /&gt;
* Fixed Local errors in scenarios would crash the game when viewing scenarios in the GUI. ([https://forums.factorio.com/66716 more])&lt;br /&gt;
* Fixed that reviving and underground belt could sometimes change it&#039;s direction. ([https://forums.factorio.com/67026 more])&lt;br /&gt;
* Fixed a crash when using modded recipes in furnaces with fluids. ([https://forums.factorio.com/66271 more])&lt;br /&gt;
* Fixed that the active-version selector in the mods GUI didn&#039;t work. ([https://forums.factorio.com/66941 more])&lt;br /&gt;
* Fixed that randomizing map seed didn&#039;t have any effect after an exchange string was loaded. ([https://forums.factorio.com/65555 more])&lt;br /&gt;
* Fixed that resources wouldn&#039;t be rendered correctly in the map preview. ([https://forums.factorio.com/66525 more])&lt;br /&gt;
* Fixed miscalculation of peak influence in autoplace specifications with more than 2 peaks. ([https://forums.factorio.com/67040 more])&lt;br /&gt;
* Layout fix related to technology gui. ([https://forums.factorio.com/66868 more])&lt;br /&gt;
* Fixed crash when running out of space in physical texture used for streaming. High detail textures will be evicted instead. ([https://forums.factorio.com/66563 more])&lt;br /&gt;
* Fixed that mod settings could get scrambled/reset when adding removing or changing mods. ([https://forums.factorio.com/66669 more])&lt;br /&gt;
* Fixed that you could open blueprint books/armor multiple times. ([https://forums.factorio.com/67096 more])&lt;br /&gt;
* Fixed that the train inactivity wait condition time was limited to 120 seconds. ([https://forums.factorio.com/66974 more])&lt;br /&gt;
* Fixed a crash when exiting the game through the &amp;quot;X&amp;quot; button from a tutorial. ([https://forums.factorio.com/65270 more])&lt;br /&gt;
* Fixed the shadows of some GUIs when circuit network window is shown. ([https://forums.factorio.com/67119 more])&lt;br /&gt;
* Fixed menu background image would be scaled with poor quality. ([https://forums.factorio.com/67109 more])&lt;br /&gt;
* Fixed crash related to beam creation when the source or target is removed in the process. ([https://forums.factorio.com/67110 more])&lt;br /&gt;
* Fixed a hand logic related to loading a save with different mod settings which results in to the cursor being item removed.&lt;br /&gt;
* Fixed being unable to clear &amp;quot;X&amp;quot;(missing blueprint) icon from the quickbar. ([https://forums.factorio.com/67114 more])&lt;br /&gt;
* Fixed that train two stations of the same name in the train schedule could crash the game. ([https://forums.factorio.com/67066 more])&lt;br /&gt;
* Fixed consistency check for signal state of train on the way. ([https://forums.factorio.com/67052 more])&lt;br /&gt;
* Fixed issues with pipes disconnected w/o reason. Added stricter checks for new occurrences. ([https://forums.factorio.com/67057 more])&lt;br /&gt;
&lt;br /&gt;
=== Scripting ===&lt;br /&gt;
&lt;br /&gt;
* Added LuaSurface::min_brightness read/write.&lt;br /&gt;
* Added LuaEntity::get_connected_rails(), get_rail_segment_entity(), get_rail_segment_end(), get_rail_segment_length(), and get_rail_segment_overlaps().&lt;br /&gt;
&lt;br /&gt;
== 0.17.8 ==&lt;br /&gt;
Date: 07. 03. 2019&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed modded multiplayer games would incorrectly show a mod-mismatch error (again). ([https://forums.factorio.com/66957 more])&lt;br /&gt;
* Fixed queued GUIs didn&#039;t work correctly. ([https://forums.factorio.com/66963 more])&lt;br /&gt;
* Fixed that terrain selectors other than &#039;elevation&#039; messed with the water/island controls ([https://forums.factorio.com/66932 more])&lt;br /&gt;
* Fixed PvP running on_init when it was already initialised. ([https://forums.factorio.com/66970 more])&lt;br /&gt;
* Fixed that replacing an underground pipe by a pipe could cause fluid mixing in a special situation. ([https://forums.factorio.com/66888 more])&lt;br /&gt;
* Fixed that upgrading entities with the upgrade planner would erase the last-user. ([https://forums.factorio.com/67019 more])&lt;br /&gt;
* Fixed a crash in the update mods GUI.&lt;br /&gt;
* Fixed incorrect styling in the update mods GUI in some cases.&lt;br /&gt;
* Fixed crash when loading a save during a cutscene when following a unit. ([https://forums.factorio.com/67022 more])&lt;br /&gt;
&lt;br /&gt;
== 0.17.7 ==&lt;br /&gt;
Date: 06. 03. 2019&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed game.players[#] would be treated as game.players[tostring(#)].&lt;br /&gt;
* Fixed inserter/mining drill interaction indications would still render for mined-in-latency-state entities.&lt;br /&gt;
* Fixed inserter/mining drill interaction indications wouldn&#039;t render in some cases and would ignore ghosts in some but not all cases.&lt;br /&gt;
* Fixed that the game would incorrectly think some mods wouldn&#039;t be required when joining multiplayer games even though they are.&lt;br /&gt;
* Fixed some key bindings not working correctly until game restart. ([https://forums.factorio.com/66631 more])&lt;br /&gt;
* Fixed a crash when changing entity ghosts with wire connections through the upgrade planner. ([https://forums.factorio.com/66861 more])&lt;br /&gt;
* Fixed that the prevent-robots-from-working-because-i-am-driving-too-fast logic still wouldn&#039;t work in some cases. ([https://forums.factorio.com/66190 more])&lt;br /&gt;
* Fixed that highly nested recipes would freeze the game. ([https://forums.factorio.com/66626 more])&lt;br /&gt;
* Fixed a crash when loading saves that contain connected cliffs that will be removed due to mod migrations/removals. ([https://forums.factorio.com/66637 more])&lt;br /&gt;
* Fixed statistics graphs crashing when releasing shift with a tooltip active. ([https://forums.factorio.com/66910 more])&lt;br /&gt;
* Fixed rendering of tile transitions on Sandy Bridge iGPUs for real this time. ([https://forums.factorio.com/65628 more])&lt;br /&gt;
* Fixed that it was possible to add a blueprint to other player&#039;s shared blueprints. ([https://forums.factorio.com/66438 more])&lt;br /&gt;
* Fixed that undo was not preserving ghost entity module requests. ([https://forums.factorio.com/66638 more])&lt;br /&gt;
* Fixed that undo was not preserving circuit connections. ([https://forums.factorio.com/66419 more])&lt;br /&gt;
* Fixed that un-researching technology wouldn&#039;t update GUIs correctly. ([https://forums.factorio.com/66522 more])&lt;br /&gt;
* Fixed PvP scenarios created in 0.16 and loaded in 0.17. ([https://forums.factorio.com/66420 more])&lt;br /&gt;
* Fixed PvP script error from bad migration data checking. ([https://forums.factorio.com/66876 more])&lt;br /&gt;
* Fixed that blueprint that was meant to disappear on Q did not after selecting and cancelling selection. ([https://forums.factorio.com/66004 more])&lt;br /&gt;
* Fixed persisting tooltips in the technology gui. ([https://forums.factorio.com/66176 more])&lt;br /&gt;
* Fixed set_quick_bar_slot not refreshing item counts in the quickbar. ([https://forums.factorio.com/66150 more])&lt;br /&gt;
* Fixed layouting in train configure gui with very long station names. ([https://forums.factorio.com/66841 more])&lt;br /&gt;
* Fixed layouting in train configure gui with too long condition translations. ([https://forums.factorio.com/66654 more])&lt;br /&gt;
* Squashed labels get a tooltip with the full text in a similar fashion as buttons.&lt;br /&gt;
* Fixed that research queue setting wouldn&#039;t export to map exchange string properly. ([https://forums.factorio.com/65417 more])&lt;br /&gt;
* Fixed incorrect primary screen index in graphics options GUI.&lt;br /&gt;
* Fixed some cases of fluid mixing related to underground pipes.&lt;br /&gt;
* Fixed crash related to productivity bonus and a catalyst. (When the catalyst count covers all the ingredient count). ([https://forums.factorio.com/66882 more])&lt;br /&gt;
* Fixed that the reset button wouldn&#039;t update after importing a map exchange string. ([https://forums.factorio.com/66608 more])&lt;br /&gt;
* Fixed messed up research in the NPE ([https://forums.factorio.com/66871 more])&lt;br /&gt;
&lt;br /&gt;
=== Scripting ===&lt;br /&gt;
&lt;br /&gt;
* Added LuaControl::ghost_cursor read/write.&lt;br /&gt;
&lt;br /&gt;
== 0.17.6 ==&lt;br /&gt;
Date: 05. 03. 2019&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
&lt;br /&gt;
* Updated map-gen-settings.example.json to use numeric multipliers, include cliff richness, and demonstrate expression overrides. ([https://forums.factorio.com/66694 more])&lt;br /&gt;
* It is not possible to fast-replace pipe to ground by another that is in an orthogonal direction.&lt;br /&gt;
* Changed mining productivity cost to 2500 increase per level to fix that the last change was actually making it 5 times less expensive towards infinity. Lower levels are cheaper on the other hand.&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed of loading of saves before 0.17.&lt;br /&gt;
* Fixed crash related to conflicting undo in multiplayer. ([https://forums.factorio.com/65656 more])&lt;br /&gt;
* Fixed crash related to temporary stops and destroyed rails on the path that were already passed by the train. ([https://forums.factorio.com/65540 more])&lt;br /&gt;
* Fixed yet another train pathing crash. ([https://forums.factorio.com/65545 more])&lt;br /&gt;
* Fixed the hand logic for god-mode controller. ([https://forums.factorio.com/66619 more])&lt;br /&gt;
* Fixed, that the hand logic could force an item to filtered slot that doesn&#039;t match it. ([https://forums.factorio.com/66610 more])&lt;br /&gt;
* Fixed, that filtered inventory could ignore the hand when sorting or transferring in some cases. ([https://forums.factorio.com/65612 more])&lt;br /&gt;
* Fixed overly generous migration of mining productivity research. ([https://forums.factorio.com/66708 more])&lt;br /&gt;
* Right panel sizing fixes.&lt;br /&gt;
* starting_area (size multiplier) in map gen settings JSON can be represented by a number.&lt;br /&gt;
* Fixed crash related to removing technology from the research queue. ([https://forums.factorio.com/66790 more])&lt;br /&gt;
* Fixed that driving backwards in vehicles wouldn&#039;t trigger the prevent-robots-from-working-because-i-am-driving-too-fast logic. ([https://forums.factorio.com/66777 more])&lt;br /&gt;
* Fixed crash during startup on macOS 10.12 or older with GeForce GPU. ([https://forums.factorio.com/65145 more])&lt;br /&gt;
* Attempt to fix tile transition rendering on Sandy Bridge iGPUs. ([https://forums.factorio.com/66035 more])&lt;br /&gt;
* Fixed a performance problem related to undo in multiplayer. ([https://forums.factorio.com/66235 more])&lt;br /&gt;
* Fixed upgrading ghost splitters wouldn&#039;t copy the splitter settings. ([https://forums.factorio.com/65346 more])&lt;br /&gt;
* Fixed a couple of situations where fast replacing underground pipe could cause fluid mixing. ([https://forums.factorio.com/66085 more])&lt;br /&gt;
* Fixed align in the blueprint library. ([https://forums.factorio.com/66789 more])&lt;br /&gt;
* Fixed a crash when loading modded saves related to fluidbox removal in assembling machines.&lt;br /&gt;
* Fixed blueprint preview would be drawn out of its bounds. ([https://forums.factorio.com/66050 more])&lt;br /&gt;
* Fixed the featured technology cost for upgrade technologies when the research queue is not enabled. ([https://forums.factorio.com/66713 more]).&lt;br /&gt;
* Fixed that search in the technology GUI would be cancelled by selecting a new research. ([https://forums.factorio.com/66775 more])&lt;br /&gt;
* Fixed a crash on destroying an entity with fluid energy source. ([https://forums.factorio.com/66517 more])&lt;br /&gt;
* Fixed a crash when deconstructing trains with inserters trying to put into them. ([https://forums.factorio.com/66614 more])&lt;br /&gt;
* Fixed layout of circuit and logistic control windows. ([https://forums.factorio.com/66531 more])&lt;br /&gt;
* Fixed that trying to join a multiplayer game too quickly would lead to a mods-mismatch error. ([https://forums.factorio.com66834 more])&lt;br /&gt;
* Fixed that behemoth biters didn&#039;t have resistance to acid (as all other biters have).&lt;br /&gt;
* Fixed NPE saves technologies were messed up by a migration in 0.17.5. ([https://forums.factorio.com/66714 more])&lt;br /&gt;
* Fixed NPE issue where compi smashing a building would lead to a crash in migrated saves. ([https://forums.factorio.com/66767 more])&lt;br /&gt;
* Fixed that it wasn&#039;t possible to access the game menu when the game was paused in multiplayer with the technology screen open. ([https://forums.factorio.com/65223 more])&lt;br /&gt;
&lt;br /&gt;
=== Scripting ===&lt;br /&gt;
&lt;br /&gt;
* Added LuaItemPrototype::mapper_count read.&lt;br /&gt;
&lt;br /&gt;
== 0.17.5 ==&lt;br /&gt;
Date: 04. 03. 2019&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed crash related to train waypoints and very short train paths. ([https://forums.factorio.com/66095 more])&lt;br /&gt;
* Fixed wrong entity info positioning when all other things in the right container are disabled. ([https://forums.factorio.com/65088 more])&lt;br /&gt;
* Fixed Wave defense victory not being triggered in some cases.&lt;br /&gt;
* Fixed Wave defense victory message being printed on every rocket launch.&lt;br /&gt;
* Fixed restarting the game after sync-mods-with-save would fail to auto-load some saves on Windows. ([https://forums.factorio.com/66338 more])&lt;br /&gt;
* Fixed PvP error when loading 0.16 versions of the scenario. ([https://forums.factorio.com/66108 more])&lt;br /&gt;
* Fixed selection in blueprint preview would have an offset if UI scale was not 100%. ([https://forums.factorio.com/65557 more])&lt;br /&gt;
* Fixed pie slice used as progress indicator in crafting queue wasn&#039;t rendering for small angles. ([https://forums.factorio.com/66079 more])&lt;br /&gt;
* Fixed that the /time command would give back the wrong time played.&lt;br /&gt;
* Fixed rendered terrain would increasingly get corrupted during movement when using 16bit rendering mode on some OpenGL drivers. ([https://forums.factorio.com/65691 more])&lt;br /&gt;
* Fixed player.get_quick_bar_slot causing a crash for some values. ([https://forums.factorio.com/65917 more])&lt;br /&gt;
* Fixed controls were lagging when application window was receiving lot of events it didn&#039;t recognize on macOS or Linux. ([https://forums.factorio.com/65179 more])&lt;br /&gt;
* Fixed &amp;quot;Wait for V-Sync&amp;quot; graphics option was not working on macOS 10.14 Mojave.&lt;br /&gt;
* Fixed crash logs were missing stack traces on macOS.&lt;br /&gt;
* Adjusted the Supply Challenge requirements to make sense. ([https://forums.factorio.com/66291 more])&lt;br /&gt;
* Fixed a crash when reviving entities through the Lua API.&lt;br /&gt;
* Fixed NPE crash on biter commands during rebuild quest. ([https://forums.factorio.com/66586 more])&lt;br /&gt;
* Fixed NPE crash during cutscene if player left entity ghosts in the starting area. ([https://forums.factorio.com/66424 more])&lt;br /&gt;
* Fixed NPE crash on sending biters if you plaster half the map with furnaces (yes, seriously). ([https://forums.factorio.com/66369 more])&lt;br /&gt;
* Fixed NPE bug where Compilatron would sometimes not continue after players put the required items in his chest. ([https://forums.factorio.com/66528 more])&lt;br /&gt;
* Fixed that technology slot tooltip didn&#039;t reflect the cost of the selected technology in the queue.&lt;br /&gt;
* Fixed NPE confusing flying text at startup. ([https://forums.factorio.com/66317 more])&lt;br /&gt;
* Fixed that the train passed wait condition time was limited to 120 seconds. ([https://forums.factorio.com/66043 more])&lt;br /&gt;
* Fixed hand not disappearing from the quickbar in some situations. ([https://forums.factorio.com/66019 more])&lt;br /&gt;
* Fixed a crash related to the research queue. ([https://forums.factorio.com/66172 more])&lt;br /&gt;
* Fixed that the research queue could show incorrect research levels. ([https://forums.factorio.com/66144 more])&lt;br /&gt;
* Horizontal layouting fix of the mods gui. ([https://forums.factorio.com/66217 more])&lt;br /&gt;
* Fixed that the island related changes in the terrain settings in map generator gui weren&#039;t updated if the island preset was preselected. ([https://forums.factorio.com/65722 more])&lt;br /&gt;
* Fixed that custom Lua-defined shortcuts would desync the game. ([https://forums.factorio.com/66556 more])&lt;br /&gt;
* Fixed a crash when player is not given when using surface.deconstruct_area(). ([https://forums.factorio.com/66426 more])&lt;br /&gt;
* Fixed loading of blueprints containing rail temporary stations.&lt;br /&gt;
&lt;br /&gt;
=== Modding ===&lt;br /&gt;
&lt;br /&gt;
* Added SelectionToolPrototype flag &amp;quot;nothing&amp;quot;.&lt;br /&gt;
* Made resource autoplace helper functions usable from mods. ([https://forums.factorio.com/66584 more])&lt;br /&gt;
* Added LogisticContainerPrototype::landing_location_offset.&lt;br /&gt;
&lt;br /&gt;
=== Balancing ===&lt;br /&gt;
&lt;br /&gt;
* Changed mining productivity technology to add 10% in one level instead of 2%, increased the formula from 100 * level to 500 * level and removed some of the low level intermediate levels.&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
&lt;br /&gt;
* Blueprinting tools are no longer shown in the quickbar filter selection. ([https://forums.factorio.com/66088 more])&lt;br /&gt;
&lt;br /&gt;
== 0.17.4 ==&lt;br /&gt;
Date: 01. 03. 2019&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed crashes related to Lua errors. ([https://forums.factorio.com/66007 more])&lt;br /&gt;
* Fixed a crash when opening the fluid wagon GUI in the map editor. ([https://forums.factorio.com/66067 more])&lt;br /&gt;
* Fixed that pressing &amp;quot;back&amp;quot; on the login prompt in the other settings GUI would exit the other settings GUI. ([https://forums.factorio.com/65643 more])&lt;br /&gt;
* Fixed that robots could get stuck when trying to upgrade in some cases. ([https://forums.factorio.com/65816 more])&lt;br /&gt;
* Fixed that the tooltips for tooltip times where backwards. ([https://forums.factorio.com/65085 more])&lt;br /&gt;
* Fixed Lua commands wouldn&#039;t work show help correctly. ([https://forums.factorio.com/66022 more])&lt;br /&gt;
* Fixed portable fusion reactor and rocketry tech pre-requisites - added military science pack. ([https://forums.factorio.com/66080 more])&lt;br /&gt;
* Fixed uranium processing tech pre-requisites - added sulfur processing. ([https://forums.factorio.com/66060 more])&lt;br /&gt;
* Removed ghost buildability consistency check until we properly integrate building of ghosts into the fluid mixing prevention logic.&lt;br /&gt;
* Fixed crash related to train pathfinding. ([https://forums.factorio.com/65950 more])&lt;br /&gt;
* Fixed layouting of Map Generator gui when the preview is shown. ([https://forums.factorio.com/65959 more])&lt;br /&gt;
* Fixed issues with rich text tags referencing entities that have no icon.&lt;br /&gt;
* Fixed crash related to moving blueprints from game blueprints to player blueprints. ([https://forums.factorio.com/66091 more])&lt;br /&gt;
* Fixed crash related listing all players while while processing event of player being removed.&lt;br /&gt;
* Fixed a crash related to research that would continue even though the research queue is empty. ([https://forums.factorio.com/66057 more])&lt;br /&gt;
* Fixed Compilatron placing a chest on top of things. ([https://forums.factorio.com/65924 more])&lt;br /&gt;
* Fixed crash during quest to reactivate assembler in NPE. ([https://forums.factorio.com/66122 more])&lt;br /&gt;
* Fixed that script render text would scale with GUI scale. ([https://forums.factorio.com/65982 more])&lt;br /&gt;
&lt;br /&gt;
=== Modding ===&lt;br /&gt;
* Made MiningDrillPrototype::radius_visualisation_picture tintable.&lt;br /&gt;
&lt;br /&gt;
== 0.17.3 ==&lt;br /&gt;
Date: 28. 02. 2019&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
* Disabled target leading for flamethrower turrets until it can be made better. ([https://forums.factorio.com/65152 more])&lt;br /&gt;
* Changed train pathfinding in a way, that it can find path that ends in the same segment where it started. This worked only for the trivial case of all path of one segment before.&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed possible crash related to browsing in the mods gui.&lt;br /&gt;
* Fixed that turning off exoskeletons didn&#039;t work correctly in multiplayer.&lt;br /&gt;
* Fixed shaking of blueprint preview in blueprint book tooltip. ([https://forums.factorio.com/65594 more])&lt;br /&gt;
* Fixed the wrong detection of changed autosave interval in other settings. ([https://forums.factorio.com/65626 more])&lt;br /&gt;
* Fixed /help *command* would print a number instead of the help message. ([https://forums.factorio.com/65695 more])&lt;br /&gt;
* Fixed a crash when dying with the locomotive GUI open. ([https://forums.factorio.com/65705 more])&lt;br /&gt;
* Fixed a crash when using sprite variation sheets with mismatched frame counts. ([https://forums.factorio.com/65634 more])&lt;br /&gt;
* Fixed that the admin-only portions of the whitelist command where not localised correctly. ([https://forums.factorio.com/65792 more])&lt;br /&gt;
* Fixed building underground pipe between pipes with different fluids. ([https://forums.factorio.com/65607 more])&lt;br /&gt;
* Fixed visual direction of fluid flow. ([https://forums.factorio.com/65486 more])&lt;br /&gt;
* Fixed dead-dry-hairy-tree and dry-hairy sprite shifting in normal resolution. ([https://forums.factorio.com/65593 more])&lt;br /&gt;
* Fixed PvP error when changing enabled mods. ([https://forums.factorio.com/65652 more])&lt;br /&gt;
* Fixed number pad Enter key-bindings would be converted to normal Enter when restarting the game. ([https://forums.factorio.com/65568 more])&lt;br /&gt;
* Fixed small worms having fluid consumption. ([https://forums.factorio.com/65870 more])&lt;br /&gt;
* Fixed that copy-paste of fluid recipes would sometimes not reset fluid box contents. ([https://forums.factorio.com/65609 more])&lt;br /&gt;
* Fixed that double-clicking a technology in the tree view wouldn&#039;t start research. ([https://forums.factorio.com/65335 more])&lt;br /&gt;
* Fixed pipes that would sometimes be too noisy. ([https://forums.factorio.com/65670 more])&lt;br /&gt;
* Fixed that you could build multiple underground belts on top of each-other. ([https://forums.factorio.com/65828 more])&lt;br /&gt;
* Fixed tightspot level 5 was unbeatable. ([https://forums.factorio.com/65629 more])&lt;br /&gt;
* Added workaround for GPU accelerated texture compression producing corrupted textures. ([https://forums.factorio.com/65336 more])&lt;br /&gt;
* Fixed that the technology window scroll position would keep getting reset. ([https://forums.factorio.com/65160 more])&lt;br /&gt;
* Fixed that the current research panel would not update in multiplayer if some other player changed the research. ([https://forums.factorio.com/65185 more])&lt;br /&gt;
* Fixed terrain not being rendered when using OpenGL and any game overlay was enabled. ([https://forums.factorio.com/65096 more])&lt;br /&gt;
&lt;br /&gt;
=== Modding ===&lt;br /&gt;
* Added LoaderPrototype::structure_render_layer with default value &amp;quot;lower-object&amp;quot;. ([https://forums.factorio.com/65627 more])&lt;br /&gt;
&lt;br /&gt;
== 0.17.2 ==&lt;br /&gt;
Date: 27. 02. 2019&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
* Reverted default renderer on Windows to Direct3D on all configurations.&lt;br /&gt;
* All infinite technologies have Space science pack as a pre-requisite.&lt;br /&gt;
* Added textual error message when player tries to clean cursor but it isn&#039;t possible as inventory is full.&lt;br /&gt;
* Added /unlock-shortcut-bar console command to unlock all shortcuts at once. This command does not disable achievements.&lt;br /&gt;
* Keyboard shortcut for in-game undo feature will default to Ctrl+W on AZERTY keyboard layouts. ([https://forums.factorio.com/65083 more])&lt;br /&gt;
* Control settings will revert to defaults when starting the game with pre-0.17.2 config with AZERTY keyboard layout.&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed Join Game through Steam Friend would fail to connect to a game with an error saying Steam Networking is disabled.&lt;br /&gt;
* Fixed LuaGameScript::take_technology_screenshot() would crash the game.&lt;br /&gt;
* Fixed a crash when trying to use async-saving when hosting multiplayer games on Windows. ([https://forums.factorio.com/65146 more])&lt;br /&gt;
* Fixed electric mining drill coverage area visualization was not drawn correctly. ([https://forums.factorio.com/65249 more])&lt;br /&gt;
* Fixed missing sprites on DirectX on GPUs supporting only feature level 10.0. ([https://forums.factorio.com/65263 more])&lt;br /&gt;
* Fixed that the GUI would be hidden if the game was saved and loaded while the technology GUI was open. ([https://forums.factorio.com/65274 more])&lt;br /&gt;
* Fixed a crash related to non gun/weapon items getting into the gun/weapon inventories. ([https://forums.factorio.com/65339 more])&lt;br /&gt;
* Fixed a crash when bringing up the escape menu in multiplayer while in the middle of using blueprints/deconstruction. ([https://forums.factorio.com/65256 more])&lt;br /&gt;
* Fixed a crash when mining ghosts built in the latency state. ([https://forums.factorio.com/65361 more])&lt;br /&gt;
* Fixed every incremental change of sound volume would save the full config file. ([https://forums.factorio.com/65318 more])&lt;br /&gt;
* Fixed that the category dropdown in the install mods GUI would only work the first time it was used. ([https://forums.factorio.com/65398 more])&lt;br /&gt;
* Fixed that mod thumbnails in zipped mods wouldn&#039;t show in the mods GUI. ([https://forums.factorio.com/65419 more])&lt;br /&gt;
* Fixed pre-requisites for the first tier of all upgrade technologies so that the required science packs are unlocked first. ([https://forums.factorio.com/65379 more])&lt;br /&gt;
* Fixed electric inserter technology description in the tutorial. ([https://forums.factorio.com/65229 more])&lt;br /&gt;
* Fixed that the undo shortcut tooltip didn&#039;t reflect latency hiding values and invalid entries filtering.&lt;br /&gt;
* Fixed a desync when deconstructing item request proxies in the latency state. ([https://forums.factorio.com/65420 more])&lt;br /&gt;
* Fixed crash related to the hand logic and switching controllers. ([https://forums.factorio.com/65330 more])&lt;br /&gt;
* Fixed a crash when lamp with non-electrical energy source (modded) is viewed in the blueprint preview/tooltip.&lt;br /&gt;
* Fixed that read-only multi-line text boxes wouldn&#039;t wrap text. ([https://forums.factorio.com/65413 more])&lt;br /&gt;
* Fixed that the fast and express loader entity icons had the wrong colors. ([https://forums.factorio.com/65347 more])&lt;br /&gt;
* Fixed that the autosave interval setting was off by one. ([https://forums.factorio.com/65373 more])&lt;br /&gt;
* Fixed map preview would not be cleared to black before preview is generated on some PCs. ([https://forums.factorio.com/65423 more])&lt;br /&gt;
* Fixed that active blueprint in a book was not preserved when using the book directly from the blueprint library. ([https://forums.factorio.com/65258 more])&lt;br /&gt;
* Fixed that the tutorial specific assembler was shown in the &amp;quot;made in in&amp;quot; row in the crafting queue tooltip. ([https://forums.factorio.com/65447 more])&lt;br /&gt;
* Fixed that the map type selection changed done by reset or changing the preset didn&#039;t update the sliders properly. ([https://forums.factorio.com/65077 more])&lt;br /&gt;
* Fixed a rare issue with migration of fluid mixing in a modded save. ([https://forums.factorio.com/65137 more])&lt;br /&gt;
* Fixed that the provided map-gen-settings.example.json contained invalid settings. ([https://forums.factorio.com/65311 more])&lt;br /&gt;
* Fixed that checking for updates could crash the game. ([https://forums.factorio.com/65264 more])&lt;br /&gt;
* Solved, that blueprint library link from quickbar appeared as an empty slot when the target blueprint wasn&#039;t available anymore and it wasn&#039;t possible to assign a new item to it.&lt;br /&gt;
* Fixed PvP scenario error when updating space race frame with no silos present. ([https://forums.factorio.com/65492 more])&lt;br /&gt;
* Fixed drawing of some wires and wire shadows ([https://forums.factorio.com/65469 more])&lt;br /&gt;
* Fixed a possibility to mix fluid through fast replacing / upgrading a pipe with underground pipe. ([https://forums.factorio.com/65298 more])&lt;br /&gt;
* Fixed drawing of some wires and wire shadows. ([https://forums.factorio.com/65469 more])&lt;br /&gt;
* Fixed crash when opening the map generator preview for the first time with invalid settings. ([https://forums.factorio.com/65434 more])&lt;br /&gt;
&lt;br /&gt;
=== Modding ===&lt;br /&gt;
* Renamed EntityPrototypeFlag &amp;quot;hide-from-bonus-gui&amp;quot; to &amp;quot;hidden&amp;quot; and made it also hide entities from the made in property of recipe tooltips.&lt;br /&gt;
&lt;br /&gt;
== 0.17.1 ==&lt;br /&gt;
Date: 26. 02. 2019&lt;br /&gt;
=== Modding === &lt;br /&gt;
* Added shortcut bar shortcut type that fires Lua events, for use in mods&lt;br /&gt;
=== Scripting === &lt;br /&gt;
* Added LuaPlayer::is_shortcut_toggled, LuaPlayer::is_shortcut_available, LuaPlayer::set_shortcut_toggled, LuaPlayer::set_shortcut_available&lt;br /&gt;
* Added on_lua_shortcut event.&lt;br /&gt;
=== Bugfixes === &lt;br /&gt;
* Missing description.json in the campaign folder results into the folder being ignored instead of a crash.&lt;br /&gt;
* Fixed crash when trying to rotate quickbars with a controller that doesn&#039;t have it.&lt;br /&gt;
* Fixed crash when trying to open surface map generation settings.&lt;br /&gt;
* Fixed possible crash related to copy paste and multiplayer.&lt;br /&gt;
* Fixed it wasn&#039;t possible to use capital &#039;Z&#039; in save name. ([https://forums.factorio.com/65075 more])&lt;br /&gt;
* Fixed the infinity chest graphics.&lt;br /&gt;
* Fixed that the boiler didn&#039;t rotate in blueprints.&lt;br /&gt;
* Fixed that the bait chest showed in the upgrade planner.&lt;br /&gt;
* Fixed high CPU usage when using steam networking.&lt;br /&gt;
&lt;br /&gt;
== 0.17.0 ==&lt;br /&gt;
Date: 26. 02. 2019&lt;br /&gt;
=== Major Features ===&lt;br /&gt;
* New quickbar (more in Gui section)&lt;br /&gt;
* Added shortcut bar that allows quick access to certain game features, such as toggling alt mode, creating blueprints, or turning off personal roboport&lt;br /&gt;
* New gui style with final version of some parts of the GUI (More in Gui section)&lt;br /&gt;
* Added clipboard functionality. (Control + C, Control + X, Control + V activate appropriate tools) Shift + mouse wheel allows to cycle the clipboard history.&lt;br /&gt;
* Added undo functionality (Control + Z). Supports manual entity building and by blueprints and manual mining and usage of deconstruction planner.&lt;br /&gt;
* Reworked the Map Editor so it&#039;s now part of the standard game and can be toggled at will using the &#039;/editor&#039; command.&lt;br /&gt;
* Support for mod synchronisation when joining multiplayer game. Works as long as the used mods are on the mod portal.&lt;br /&gt;
* Fight changes. Enemy projectiles are dodgeable and slowdown/damage the target over time. They also leave splashes on ground that have the same effect.&lt;br /&gt;
* Rich text tags. These tags can be used almost anywhere: Chat, station names, save names, custom ui and probably a few places we didn&#039;t think of.&lt;br /&gt;
** They allow changing color, font, images and location/blueprint/armor/station/locomotive linking through chat. (More in features)&lt;br /&gt;
* Fluid mixing prevention. Actions that fail as they would lead to fluid mixing (like building a pipe, changing recipe, rotating etc.) produce an error message as flying text.&lt;br /&gt;
* Replaced First steps campaign with Introduction campaign, available from the Start campaign menu.&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Trains can be blueprinted and deconstructed.&lt;br /&gt;
* Trains can be given temporary stations (by Control+clicking the map). Temporary station is automatically removed once the train departures from it.&lt;br /&gt;
* Train stops without conditions work as waypoints. (the train doesn&#039;t stop at those)&lt;br /&gt;
* Added Passenger present and Passenger not present wait condition to the train conditions.&lt;br /&gt;
* If building of entity/blueprint fails, the reason of it is pinged as flying text.&lt;br /&gt;
* Map pings. Ctrl+Alt+click on the map to show a ping in all players maps at that location.&lt;br /&gt;
* Basic image tags format is [img=&amp;lt;image path&amp;gt;] where image path can use item, entity, technology, recipe, item-group, fluid tile, virtual signal achievement or utility icon.&lt;br /&gt;
** For example [img=item/iron-plate] or [img=item.iron-plate]. The &amp;quot;.&amp;quot; instead of &amp;quot;/&amp;quot; usage is to make it usable in save names.&lt;br /&gt;
** Additionally, items/entities/technologies/recipe/item-group/fluid/tile/virtual signal or achievement can be linked directly by [item=iron-plate], [recipe=iron-plate], or [entity=small-biter] to provide tooltip for the appropriate object.&lt;br /&gt;
* Blueprint/special item tags.&lt;br /&gt;
** Shift clicking the icon in chat will create an item and place it in the cursor.&lt;br /&gt;
** Format is [special-item=blueprint string], eg: [special-item=0eNp1jtEKwjAMRX9l5rnCxkShvyIi3YxboU1Lm4lj9N9N54sv5iFwL/eeZIPBLRiTJQa9gR0DZdDXDbKdyLjq8RoRNFhGDwrI+Ko4GcoxJD4O6BiKAksPfIPuyk0BElu2+CXtYr3T4gdMEvjHUBBDllqgelVQrYJVdqnE/br+eVaBM1ITb0bnQvNMwTc8YzPOhiZ0YTpI5oUp78BL33YnmbY/l/IBb4pSQQ==].&lt;br /&gt;
** These tags also work with deconstruction and upgrade planners.&lt;br /&gt;
* Map ping tags: Created by shift-clicking the ground/map when the chat is open. Format is [gps=x,y], eg [gps=10,30] will show a map ping in all players maps at location 10,30.&lt;br /&gt;
** Clicking the icon in chat will open the map on the specified location.&lt;br /&gt;
* Font tags: Format is [font=debug-mono]mono text[/font].&lt;br /&gt;
* Color tags: Format is [color=1,0,0]red text[/font]&lt;br /&gt;
* Fast replacing pipes by pipes to ground similar to underground belts.&lt;br /&gt;
* When multiple versions of the same mod are installed you can select which version you want to use.&lt;br /&gt;
* The sync mods with save/multiplayer game feature can now sync mod startup settings as well as mods.&lt;br /&gt;
* Added support to import and export permissions.&lt;br /&gt;
* Closing opened items (blueprint books/armor) now remembers what GUI you previously had open.&lt;br /&gt;
* Filter inserters can be set to whitelist or blacklist filters.&lt;br /&gt;
* Added belt immunity equipment.&lt;br /&gt;
* Added upgrade planner.&lt;br /&gt;
* Added steam networking support for steam users.&lt;br /&gt;
* Added RGB support for Logitech hardware.&lt;br /&gt;
* Robots can blow up cliffs.&lt;br /&gt;
* Wave defense scenario has been reworked to support multiple rounds and a procedurally generated map.&lt;br /&gt;
* Added a research queue that becomes available after the player has finished the game by launching a rocket with satellite.&lt;br /&gt;
=== Minor Features ===&lt;br /&gt;
* Warning icon for automated trains that are out of fuel.&lt;br /&gt;
* Added 250 and 1000 hours precision intervals into statistics.&lt;br /&gt;
* Using deconstruction planner is incorporated in the latency hiding.&lt;br /&gt;
* Changed personal roboports so they won&#039;t send construction robots if you&#039;re driving in a vehicle that they can&#039;t keep up with or if in a train in automatic mode.&lt;br /&gt;
* Added an option to ignore mouse events when using accessibility zoom feature on macOS.&lt;br /&gt;
* Added support to change multiplayer config settings runtime.&lt;br /&gt;
* Added support to edit the whitelist, banlist, and admin list when hosting a multiplayer game.&lt;br /&gt;
* Added the Admin GUI (openable through /admin in the console) to manage multiplayer players.&lt;br /&gt;
* Landfill can be built by robots and be included in blueprints.&lt;br /&gt;
* Blueprint items taken from blueprint library will not move to player inventory when Q is pressed, but can be moved to any slot explicitly. (Same as with clipboard items)&lt;br /&gt;
* When selecting any item to the cursor from some of the player inventories. As long as the item is being held, hand icon is shown on the slot it was taken from. The hand prevents any other item to be inserted into the slot as long as the player cursor isn&#039;t cleared.&lt;br /&gt;
* When holding radar in cursor, area covered by existing radars is also highlighted on minimap.&lt;br /&gt;
* Configurable (in gui), the count of rolling stocks shown in the train visualization.&lt;br /&gt;
* Added two levels of shallow water tiles (only placed by map editor, not generated). Enemies and vehicles can travel over shallow water.&lt;br /&gt;
=== Graphics ===&lt;br /&gt;
* New graphics for:&lt;br /&gt;
** accumulator&lt;br /&gt;
** biters, spitters, worms, spawners&lt;br /&gt;
** chests&lt;br /&gt;
** electric poles and substation&lt;br /&gt;
** map edge transitions&lt;br /&gt;
** rocket silo&lt;br /&gt;
** transport belts, underground belts, splitters and transport belt circuit connector&lt;br /&gt;
** trees&lt;br /&gt;
** turrets (gun, flamethrower and laser)&lt;br /&gt;
** walls and gates&lt;br /&gt;
* laser turrets, personal laser defense and distractor robots now use new laser beams.&lt;br /&gt;
* Highlighting inserters that would interact with selected/previewed entity.&lt;br /&gt;
* Showing shield bars above health bar for relevant entities.&lt;br /&gt;
* Single vertical pipe is shorter.&lt;br /&gt;
=== Gui ===&lt;br /&gt;
* New final versions of several important GUI screens (Quick bar, Train Schedule, Load/Save Game, Settings, Map Generator, Research, Mods)&lt;br /&gt;
** Other screens than the mentioned ones (more than 100) have inconsistencies and will be updated in future minor updates.&lt;br /&gt;
* The quickbar is no longer an inventory, instead it can only hold shortcuts it items in inventory or blueprint library.&lt;br /&gt;
** The quickbar now has 10 pages of shortcuts.&lt;br /&gt;
** Player inventory increased by 20 slots to compensate. Toolbelt research further increases the player inventory.&lt;br /&gt;
* In the map, station and tag selection is now visualized by the standard Factorio selection box graphics instead of highlighting.&lt;br /&gt;
* Added interface option: When selecting a buildable item from the quickbar or when using the pipette tool, if you have no items of that type, a ghost will be placed in the cursor instead.&lt;br /&gt;
* When something is not buildable (manual or blueprint building), the reason of why it isn&#039;t buildable is shown as flying text over the cursor when the build is attempted.&lt;br /&gt;
* Only compatible results of a furnace are manually placeable in the result slot. (Mainly to avoid confusion of new players)&lt;br /&gt;
=== Optimisations ===&lt;br /&gt;
* Modernized and optimized rendering backend. The game now uses DirectX 11 or OpenGL 3.3 Core and requires DirectX 10 class graphics card.&lt;br /&gt;
* DirectX backend doesn&#039;t keep backup of all sprites in RAM anymore.&lt;br /&gt;
* Added high quality texture compression to reduce amount of video memory consumed by the game and increase overall rendering performance.&lt;br /&gt;
* Added texture streaming so that adding more sprites does not necessarily increase GPU requirements.&lt;br /&gt;
* Improved game startup performance when using a large amount of technologies with deep dependency trees (it&#039;s now 67,000 times faster).&lt;br /&gt;
* Optimized rendering of logistic overlay when zoomed in to map. ([https://forums.factorio.com/60659 more])&lt;br /&gt;
* Optimized rendering of turret ranges when zoomed in to map. ([https://forums.factorio.com/58991 more])&lt;br /&gt;
=== Changes ===&lt;br /&gt;
* Resource generation changed significantly:&lt;br /&gt;
** The starting area contains only iron, copper, coal and stone, in very predictable amounts. Uranium and oil are excluded from the starting area.&lt;br /&gt;
** Resource generation settings now have a much more dramatic effect. Increased the number of steps for each setting.&lt;br /&gt;
** Ore patches are slightly less frequent but richer.&lt;br /&gt;
** There will be a more balanced amount of resources within a large enough region.&lt;br /&gt;
** Many other small tweaks.&lt;br /&gt;
* Biter generation changed significantly:&lt;br /&gt;
** Biter richness slider removed, biter placement is only configured by size and frequency settings.&lt;br /&gt;
** Biter generation settings now have a much more dramatic effect. Increased the number of steps for each setting.&lt;br /&gt;
** Biter bases will increase in size, frequency and number of worms depending on the distance from player spawn.&lt;br /&gt;
** Worm size increases depending on the distance from player spawn.&lt;br /&gt;
** Small biter bases are now closer to the player spawn.&lt;br /&gt;
** At large distances from player spawn, biter base frequency is lower than before but biter bases are larger.&lt;br /&gt;
** Other small tweaks.&lt;br /&gt;
* Terrain generation changed significantly:&lt;br /&gt;
** Water is generated as large lakes instead of swamps.&lt;br /&gt;
** Tile generation improved. Tile placement respects biomes better.&lt;br /&gt;
** More predictable cliff placement.&lt;br /&gt;
** Better controls in the map generator GUI for water, tiles and cliffs.&lt;br /&gt;
* New map terrain type selectable: Island. Launch the rocket with only a limited amount of resources available on the map.&lt;br /&gt;
* Default resolution of the game is now 1920x1080.&lt;br /&gt;
* Increased player reach from 6 to 10.&lt;br /&gt;
* Inserters are putting science packs to the lab even when there is no research in progress or when the research doesn&#039;t need that particular pack.&lt;br /&gt;
* Default_request_amount removed in all places where it was used. Default logistic request is 1 stack, unless changed by the setting &amp;quot;Default request is 1&amp;quot;.&lt;br /&gt;
* All personal equipment stack sizes changed to 20.&lt;br /&gt;
* Placing a tile will now clear any tile ghosts at that position. ([https://forums.factorio.com/59721 more])&lt;br /&gt;
* It is allowed to use unicode characters in save names.&lt;br /&gt;
* Recipes that have more ingredients than the assembling machine allows are now shown as red instead of not present when selecting the recipe.&lt;br /&gt;
* When the &amp;quot;Made in&amp;quot; row is shown in the recipe tooltip, player icon is added to the list when it is craftable by player.&lt;br /&gt;
* Increased ghost time to live of ghosts from 1 hour to 1 week.&lt;br /&gt;
* Since the catalysts have been tweaked, the kovarex enrichment process can now be used together with productivity module.&lt;br /&gt;
* Tile construction jobs are being handled by robots separately from entity building jobs, to prevent entity ghosts not being built due to large number of tile ghosts.&lt;br /&gt;
* Switched key bindings from key codes to scan codes. This solves an issue with bad default key bindings on layouts that are not similar to US QWERTY (ie. AZERTY).&lt;br /&gt;
* Armor no longer uses durability and all armor now has a stack size of 1.&lt;br /&gt;
* Manually putting modules into machines that are requesting modules from the logistic network will reduce the modules requested.&lt;br /&gt;
* Increased maximum train stop length from 50 to 100 characters so it can fit at least 3 tags in most cases.&lt;br /&gt;
* Items consumed by hand crafting are counted in item production statistics.&lt;br /&gt;
* Added --disable-migration-window command-line option to disable the &amp;quot;migrated content&amp;quot; gui.&lt;br /&gt;
* Removed tile properties debug overlay.&lt;br /&gt;
* Command-line map preview generator now shows biter nests.&lt;br /&gt;
* Items sent in a rocket are counted in item production statistics. ([https://forums.factorio.com/62606 more])&lt;br /&gt;
* Removed pickaxes and replaced them with research effects.&lt;br /&gt;
* Removed Wood from the game (And raw wood renamed to Wood).&lt;br /&gt;
* Added rotation smoothing to biters.&lt;br /&gt;
* Chests and wooden power poles are no longer usable as fuel.&lt;br /&gt;
* Burner efficiency is set to 100% for all entities and fuel value is halved to simplify calculations. This should not change game balance.&lt;br /&gt;
* Removed the hardness/mining power mechanics, we just have a mining speed and mining time now.&lt;br /&gt;
* Manual mining speed times of various entities will differ a bit, but probably not in a noticeable way.&lt;br /&gt;
* Stone and other ore mining speed has been unified to be 1 (apart uranium ore, which is 2 and shown as 200% mining time)&lt;br /&gt;
* Mining drill speed is now shown in the form of &amp;lt;x&amp;gt;/s (0.25/s for burner mining drill, 0.5/s for electric mining drill), the relative mining speeds of the mining machines have been decreased a little so the numbers are rounded nicely (0.28 -&amp;gt; 0.25 and 0.525 -&amp;gt; 0.5).&lt;br /&gt;
* Renamed the whitelist and banlist to server-whitelist and server-banlist.&lt;br /&gt;
* Added server-adminlist that&#039;s used to determine which people are admins when hosting any multiplayer game. This is synced both ways when hosting any game.&lt;br /&gt;
* Removed &amp;quot;admins&amp;quot; from the multiplayer server-settings file - they&#039;re now handled through server-adminlist.&lt;br /&gt;
* &amp;quot;Z&amp;quot; (drop item) will drop single items into what ever entity is selected instead of only dropping on the ground.&lt;br /&gt;
* Stickers can by applied onto cars and tanks now.&lt;br /&gt;
* Changed the chat gray-out mechanism. It always greyed-out after 5 seconds to 70% alpha, and then stayed depending on the setting. Now it stays 100% and only greys out away in the last 2 seconds.&lt;br /&gt;
* Placing entities or paths removes tree stumps and biter corpses.&lt;br /&gt;
* Removed New Hope campaign.&lt;br /&gt;
=== Balancing ===&lt;br /&gt;
* Technology pre-requisites tweaked so the unlocked item(s) always have all the ingredients already unlocked as well. This means many small changes.&lt;br /&gt;
* Science pack names changed:&lt;br /&gt;
** Science pack -&amp;gt; Automation science pack&lt;br /&gt;
** Science pack 2 -&amp;gt; Logistic science pack&lt;br /&gt;
** Science pack 3 -&amp;gt; Chemical science pack&lt;br /&gt;
** High-tech science pack -&amp;gt; Utility science pack&lt;br /&gt;
** Military, Production and Space science pack names remain the same.&lt;br /&gt;
* Science pack recipes changed:&lt;br /&gt;
** Military science pack now requires 1x Piercing rounds magazine, 1x Grenade, 2x Wall.&lt;br /&gt;
** Chemical science pack now requires 3x Advanced circuit, 2x Engine unit, 1x Solid fuel.&lt;br /&gt;
** Chemical science pack now crafts in pairs.&lt;br /&gt;
** Production science pack now requires 1x Electric furnace, 1x Productivity module, 30x Rail.&lt;br /&gt;
** Production science pack now produces in groups of 3. Crafting time rescaled to match.&lt;br /&gt;
** Utility science pack now requires 2x Processing unit, 1x Flying robot frame, 3x Low density structure.&lt;br /&gt;
** Utility science pack now produces in groups of 3. Crafting time rescaled to match.&lt;br /&gt;
* Some technologies more clearly split between Production and Utility science packs:&lt;br /&gt;
** Production science pack:&lt;br /&gt;
*** Effect transmission&lt;br /&gt;
*** All level 3 modules&lt;br /&gt;
*** Kovarex enrichment process &amp;amp; Nuclear fuel reprocessing&lt;br /&gt;
*** Worker robot capacity 2&lt;br /&gt;
** Utility science pack:&lt;br /&gt;
*** Logistic system&lt;br /&gt;
*** Worker robot speed 3&lt;br /&gt;
*** Military 4 and weapon unlocks/upgrades&lt;br /&gt;
*** Power armor mk2 and Portable fusion reactor&lt;br /&gt;
** Both Production and Utility science packs are required only for Rocket silo, Atomic bomb and some high-tier upgrades.&lt;br /&gt;
* Every science pack now has a technology to unlock it. Some technology prerequisites changed slightly. Space science pack technology unlocks the Satellite.&lt;br /&gt;
* Rocket fuel, Low density structure and Rocket control unit are unlocked by their own technologies.&lt;br /&gt;
* The game is won by launching a rocket, the Satellite is only for getting Space science packs.&lt;br /&gt;
* Swapped sorting order of Military science pack and Chemical science packs because Military science pack does not need oil.&lt;br /&gt;
* Nuclear power technology split to Uranium processing and Nuclear power.&lt;br /&gt;
* Nuclear fuel reprocessing technology cost reduced from 1500 to 50.&lt;br /&gt;
* Lubricant technology added (pre-requisite for Electric engine and Logistics 3)&lt;br /&gt;
* Fast and Filter inserters are unlocked by their own technology with a pre-requisite of Electronics.&lt;br /&gt;
* Automation 2 is a pre-requisite for Fluid handling. (Assembling machine 1 can&#039;t handle fluids)&lt;br /&gt;
* Engine is a pre-requisite for Fluid handling. (Pump needs Engines to craft it)&lt;br /&gt;
* Pump is now unlocked by Fluid handling. (was Engine)&lt;br /&gt;
* Fluid handling is a pre-requisite for Oil processing.&lt;br /&gt;
* Item spacing on transport belts changed from 0.28 tiles to 0.25 tiles, giving a transport belts throughput of 15/30/45 (basic/fast/express) items per second.&lt;br /&gt;
* Iron plate, copper plate and stone brick crafting time reduced from 3.5 to 3.2, steel plate crafting time reduced from 17.5 to 16.&lt;br /&gt;
* Coal liquefaction now produces 90 Heavy oil, 20 Light oil and 10 Petroleum gas, consuming 25 Heavy oil, 10 Coal and 50 Steam. (Gaining much more Heavy oil, less Light oil and Petroleum gas)&lt;br /&gt;
* Low density structure now requires 2x Steel plate, 20x Copper plate, 5x Plastic bar.&lt;br /&gt;
* Low density structure crafting time reduced from 30 to 20.&lt;br /&gt;
* Medium and Big power pole recipes now use iron sticks.&lt;br /&gt;
* Train stop recipe now uses iron sticks.&lt;br /&gt;
* Programmable speaker recipe now uses iron sticks.&lt;br /&gt;
* Lamp recipe iron sticks ingredient changed to copper cables.&lt;br /&gt;
* Defender capsule recipe now requires flying robot frames.&lt;br /&gt;
* Rebalanced assembling machine 1,2 and 3 power consumption and pollution - higher tiers eat more power, but produce less pollution.&lt;br /&gt;
* Assembling machine 2 recipe changed to require 2x Steel plate instead of 9x Iron plate.&lt;br /&gt;
* Automation 2 now requires Automation and Logistic science packs.&lt;br /&gt;
* Chemical plant crafting speed has been changed to 1. Some chemical plant recipes now take less time.&lt;br /&gt;
* Centrifuge crafting speed changed to 1.&lt;br /&gt;
* Portable solar panels have Modular armor as pre-requisite.&lt;br /&gt;
* Portable solar panel power output changed from 10kW to 30kW, recipe tweaked to require less Solar panels but more Advanced circuits.&lt;br /&gt;
* Low-tier personal equipment has Portable solar panels as a pre-requisite so you could possibly utilize the equipment when it is unlocked.&lt;br /&gt;
* Some high tier personal equipment (Energy shield mk2, Battery mk2, Personal laser defense and Discharge defense) have Power armor technology as pre-requisite.&lt;br /&gt;
* Some high tier equipment recipes now require Low Density Structures. (Energy shield mk2, Battery mk2, Roboport mk2, Portable fusion reactor, Power armor mk2, Personal laser defense)&lt;br /&gt;
* Locomotive fuel consumption doubled.&lt;br /&gt;
* Relative fuel value of nuclear fuel doubled.&lt;br /&gt;
* Relative fuel value of rocket fuel decreased by 10.6%, relative value of solid fuel decreased by 4%.&lt;br /&gt;
=== Combat Balancing ===&lt;br /&gt;
* All military damage/shooting speed upgrade technologies merged into 7 technologies:&lt;br /&gt;
** Physical projectile damage 1-6 + infinite&lt;br /&gt;
*** level 1-4: bullets, gun turrets, shotgun shells&lt;br /&gt;
*** level 5+: previous levels and cannon shells&lt;br /&gt;
** Refined flammables 1-6 + infinite&lt;br /&gt;
*** flamethrower turret, handheld flamethrower&lt;br /&gt;
** Stronger explosives 1-6 + infinite&lt;br /&gt;
*** level 1: grenades&lt;br /&gt;
*** level 2: previous level and land mines&lt;br /&gt;
*** level 3: previous levels and rockets&lt;br /&gt;
** Energy weapons damage 1-6 + infinite&lt;br /&gt;
*** level 1-3: laser turrets, personal laser defense&lt;br /&gt;
*** level 4: previous level and distractor robots&lt;br /&gt;
*** level 5+: previous levels and destroyer robots&lt;br /&gt;
** Weapon shooting speed 1-7&lt;br /&gt;
*** affecting: bullets, gun turrets, shotgun shells, tank cannon shells, rockets&lt;br /&gt;
** Laser turret shooting speed&lt;br /&gt;
** Artillery shell shooting speed&lt;br /&gt;
** Artillery shell range&lt;br /&gt;
* Personal laser defense damage reduced, power consumption reduced and it is now influenced by Laser and electric beam intensity upgrades.&lt;br /&gt;
* Modular Armor technology pre-requisite changed from Modules to Advanced Electronics.&lt;br /&gt;
* Power Armor Mk2 technology pre-requisite changed from modules to Military 4.&lt;br /&gt;
* Power Armor Mk2 recipe changed from 5x level 3 to 25x level 2 modules (to avoid requiring Production science pack) and added electric engine units.&lt;br /&gt;
* From the start maximum follower count is 5 instead of 1. Level 3 of maximum follower count gives +5 instead of +10 to compensate.&lt;br /&gt;
* Atomic bomb recipe now requires Rocket control units instead of Processing units.&lt;br /&gt;
* Behemoth worm added.&lt;br /&gt;
* Worms and spitters use new &amp;quot;stream&amp;quot; attack now.&lt;br /&gt;
** Attacks predict target position and shoot there.&lt;br /&gt;
** Flamethrower turret now predicts target position as well.&lt;br /&gt;
** Acid splashes are created on the ground, dealing damage and slowing.&lt;br /&gt;
** Slow effect received from different spitter/worm tiers stacks.&lt;br /&gt;
** Worm shooting range is generally longer.&lt;br /&gt;
** Rocket launcher range increased from 22 to 36 to outrange medium worms.&lt;br /&gt;
** Worm and behemoth spitter attacks are large enough to damage neighbouring buildings.&lt;br /&gt;
** All enemies have 100% acid resistance.&lt;br /&gt;
* Changed spawner pollution absorption logic so that all the pollution on a chunk doesn&#039;t build up un-spent in a single spawner.&lt;br /&gt;
* Removed damage bonus of tank machine gun.&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed that canceling production in assembling machine did return the products in progress.&lt;br /&gt;
* Fixed biters were unable to run against movement of belts.&lt;br /&gt;
* Tutorial GUI updates correctly after finishing a tutorial. ([https://forums.factorio.com/55010 more])&lt;br /&gt;
* Chest GUI updates correctly when changed indirectly. ([https://forums.factorio.com/55194 more])&lt;br /&gt;
* Changing train mode by a script updates the train GUI. ([https://forums.factorio.com/20316 more])&lt;br /&gt;
* Fixed that tertiary was spelled &amp;quot;terciary&amp;quot; in the usage_priority. ([https://forums.factorio.com/58317 more])&lt;br /&gt;
* Fixed construction robots would not give up module delivery when they didn&#039;t manage to get any modules. ([https://forums.factorio.com/59483 more])&lt;br /&gt;
* Fixed issues with syncing mods to saves, when you don&#039;t already have the mod downloaded. ([https://forums.factorio.com/59271 more])&lt;br /&gt;
* Entities affected by beacons now only show effect sources/receivers that have an effect. ([https://forums.factorio.com/60064 more])&lt;br /&gt;
* Fixed furnaces wouldn&#039;t respect recipe module limitations correctly. ([https://forums.factorio.com/60975 more])&lt;br /&gt;
* Fixed a crash when migrating blueprint book inventory sizes while they&#039;re in assembling machines that are being removed due to migration. ([https://forums.factorio.com/61001 more])&lt;br /&gt;
* Fixed character.direction read didn&#039;t work correctly. ([https://forums.factorio.com/61039 more])&lt;br /&gt;
* Fixed a crash when removing mods that add/change rolling stock entities. ([https://forums.factorio.com/61048 more])&lt;br /&gt;
* Fixed script error in construction bot tutorial when deconstructing area. ([https://forums.factorio.com/61045 more])&lt;br /&gt;
* Fixed Lua API methods to insert items didn&#039;t work correctly for entities that can hold items above the stack limit. ([https://forums.factorio.com/59872 more])&lt;br /&gt;
* Fixed that the closing sound of other GUIs was too loud when the technology GUI popped up when a research finished. ([https://forums.factorio.com/61049 more])&lt;br /&gt;
* Fixed that layered icons using shift wouldn&#039;t render correctly. ([https://forums.factorio.com/60327 more])&lt;br /&gt;
* Fixed that running out of disk space could crash the game in some cases. ([https://forums.factorio.com/61161 more])&lt;br /&gt;
* Fixed burner energy sources wouldn&#039;t always be able to output the full energy amount. ([https://forums.factorio.com/61174 more])&lt;br /&gt;
* Fixed that transport belt circuit conditions wouldn&#039;t copy correctly in blueprints sometimes. ([https://forums.factorio.com/61218 more])&lt;br /&gt;
* Fixed that limited/limiting upload speed could lead to an exponential soft lock in the upload process. ([https://forums.factorio.com/61281 more])&lt;br /&gt;
* Fixed a desync related to cars on belts. ([https://forums.factorio.com/61304 more])&lt;br /&gt;
* Fixed that crafting machines could be rotated diagonally using scripts. ([https://forums.factorio.com/61717 more])&lt;br /&gt;
* Fixed that tooltips of unlocked recipes in technology preview didn&#039;t have the &amp;quot;made in&amp;quot; info even if it is not craftable by the player.&lt;br /&gt;
* Fixed recipes that consumed or produced &amp;gt; stack size of some item didn&#039;t work correctly.&lt;br /&gt;
* Fixed that game.reload_script() could cause desyncs when used in multiplayer.&lt;br /&gt;
* Fixed LuaScript::get_event_handler() didn&#039;t handle large numbers correctly. ([https://forums.factorio.com/61752 more])&lt;br /&gt;
* Fixed AutoplaceSettings map_gen_settings didn&#039;t always work when defined through script. ([https://forums.factorio.com/61754 more])&lt;br /&gt;
* Fixed a crash when using LuaEntity::get_train_stop_trains(). ([https://forums.factorio.com/61743 more])&lt;br /&gt;
* Fixed a crash when using LuaGameScript::create_entity() related to making ghosts of ghosts. ([https://forums.factorio.com/61605 more])&lt;br /&gt;
* Fixed setting entity healing_per_tick negative resulted in invincible entities. ([https://forums.factorio.com/61492 more])&lt;br /&gt;
* Fixed that shadows wouldn&#039;t always render in the train camera. ([https://forums.factorio.com/61286 more])&lt;br /&gt;
* Fixed health bars on large entities wouldn&#039;t render correctly. ([https://forums.factorio.com/61495 more])&lt;br /&gt;
* Fixed trains would collide with item-requester-proxy. ([https://forums.factorio.com/61842 more])&lt;br /&gt;
* Fixed train GUI buttons would lose too much quality graphics quality was set to Extra low. ([https://forums.factorio.com/61618 more])&lt;br /&gt;
* Fixed a bug related to mining drills with &amp;gt; 100% productivity. ([https://forums.factorio.com/61440 more])&lt;br /&gt;
* Fixed invalid optional dependencies wouldn&#039;t be highlighted correctly. ([https://forums.factorio.com/61951 more])&lt;br /&gt;
* Fixed a crash when reading player.vehicle during the driving driving changed state event when triggered by the vehicle dying. ([https://forums.factorio.com/61942 more])&lt;br /&gt;
* Fixed that beams would render 1 tile above their location when using a position source. ([https://forums.factorio.com/62471 more])&lt;br /&gt;
* Fixed furnaces with input items and output fluids could get deadlocked. ([https://forums.factorio.com/62434 more])&lt;br /&gt;
* Fixed when player teleported, renderer would draw all tiles between old and new position. ([https://forums.factorio.com/62635 more])&lt;br /&gt;
* Fixed that frame count limits weren&#039;t enforced and would lead to a crash in several places. ([https://forums.factorio.com/62648 more])&lt;br /&gt;
* Fixed a crash when the player port respawned a character without a connected player ([https://forums.factorio.com/62707 more])&lt;br /&gt;
* Fixed that the market did not show the prices for some offers ([https://forums.factorio.com/62682 more])&lt;br /&gt;
* Fixed that the &amp;quot;save replay&amp;quot; button would always show on the game finished screen even when it wouldn&#039;t work. ([https://forums.factorio.com/62733 more])&lt;br /&gt;
* Fixed that filters would get copied between storage chests and requester chests. ([https://forums.factorio.com/61219 more])&lt;br /&gt;
* Fixed error message given when loader entity prototype was defined with too many filters. ([https://forums.factorio.com/62839 more])&lt;br /&gt;
* Fixed that fast replacing a train stop did not copy the name or color. ([https://forums.factorio.com/62966 more])&lt;br /&gt;
* Ghost rails are now also considered when auto-selecting rail signal direction. ([https://forums.factorio.com/58655 more])&lt;br /&gt;
* Fixed that the high-resolution car animation would shake. ([https://forums.factorio.com/62454 more])&lt;br /&gt;
* Fixed errors in the mod settings stage wouldn&#039;t prompt to disable the erroring mod(s). ([https://forums.factorio.com/62447 more])&lt;br /&gt;
* Fixed that crafting machines didn&#039;t work correctly with non-square bounding boxes. ([https://forums.factorio.com/63027 more])&lt;br /&gt;
* Fixed that pasting train schedules did not dispatch trains waiting at a station that is not part of the new schedule. ([https://forums.factorio.com/61143 more])&lt;br /&gt;
* Fixed possible crash when rendering a fish due to bad migration on fish prototype change. ([https://forums.factorio.com/63515 more])&lt;br /&gt;
* Fixed that LuaGuiElement::zoom on minimaps would be rendered as zoom * 32.&lt;br /&gt;
* Fixed crash when detecting VRAM size on macOS. ([https://forums.factorio.com/63770 more])&lt;br /&gt;
* Fixed LuaEntity::infinity_filters write didn&#039;t work. ([https://forums.factorio.com/63954 more])&lt;br /&gt;
* Fixed that setting active on combinators would lead to desyncs. ([https://forums.factorio.com/63335 more])&lt;br /&gt;
* Fixed that shift+click building blueprints didn&#039;t work correctly regarding tiles. ([https://forums.factorio.com/63849 more])&lt;br /&gt;
* Fixed that construction robots could get stuck trying to repair things. ([https://forums.factorio.com/63800 more])&lt;br /&gt;
* Fixed inventory highlights didn&#039;t work correctly when the game was paused while active. ([https://forums.factorio.com/64047 more])&lt;br /&gt;
* Fixed a crash related to trains being forced to re-path when a stop is disabled. ([https://forums.factorio.com/63900 more])&lt;br /&gt;
* Fixed that wire distance was ignored in some cases when connecting non-electric-pole entities. ([https://forums.factorio.com/62146 more])&lt;br /&gt;
* Fixed that equipment grids wouldn&#039;t fit on screen if too large. ([https://forums.factorio.com/61662 more])&lt;br /&gt;
* Fixed that the SelectSignal GUI wouldn&#039;t sort mixed-type signals correctly. ([https://forums.factorio.com/62463 more])&lt;br /&gt;
* Fixed map generator would align entities to grid differently than manual building. ([https://forums.factorio.com/63408 more])&lt;br /&gt;
* Fixed sprites in 16-bit depth per channel PNG would load as empty images on macOS. ([https://forums.factorio.com/64105 more])&lt;br /&gt;
* Fixed that furnaces with mixed input could get stuck. ([https://forums.factorio.com/61406 more])&lt;br /&gt;
* Fixed text duplication on research completion in the bonus GUI. ([https://forums.factorio.com/64608 more])&lt;br /&gt;
* Fixed that LuaSurface::find_entities_filtered{position} wouldn&#039;t find entities with zero-sized bounding boxes. ([https://forums.factorio.com/63270 more])&lt;br /&gt;
* Fixed that mod console commands would treat every command with the same help key as aliasing each other. ([https://forums.factorio.com/64581 more])&lt;br /&gt;
* Fixed LuaGameScript::remove_path would log an error if path didn&#039;t exist. ([https://forums.factorio.com/64873 more])&lt;br /&gt;
* Fixed cars and tanks had a slightly smaller collision box when not facing north. ([https://forums.factorio.com/63842 more])&lt;br /&gt;
* Fixed inserter interaction with cars depended on rotation and on distance from map origin. ([https://forums.factorio.com/62854 more])&lt;br /&gt;
* Fixed &amp;quot;InRangePredicate only accepts direction without diagonals&amp;quot; error. ([https://forums.factorio.com/62375 more])&lt;br /&gt;
* Fixed when teleporting all tiles between old and new position would be rendered, causing performance problems. ([https://forums.factorio.com/62635 more])&lt;br /&gt;
* Force space between spawners and worms in biter bases so they don&#039;t get stuck so much.&lt;br /&gt;
* Fixed trivial-smoke would be rendered for some time after its lifetime ended.&lt;br /&gt;
=== Modding ===&lt;br /&gt;
* Added a new entity type &amp;quot;infinity-pipe&amp;quot; that automatically adds/removes fluid from itself; similar to the infinity-chest.&lt;br /&gt;
* Added a new entity type &amp;quot;heat-interface&amp;quot; that automatically sets its own temperature.&lt;br /&gt;
* Added &amp;quot;void&amp;quot; energy_source type which makes any entity using the type not require power.&lt;br /&gt;
* Added CraftingMachinePrototype::show_recipe_icon which changes if the recipe icon is shown in alt-mode.&lt;br /&gt;
* Added &amp;quot;stop&amp;quot; AI command, which tells the unit to just stop moving where it is. Takes a &amp;quot;ticks_to_wait&amp;quot; parameter, after which it returns to normal.&lt;br /&gt;
* Added LuaGuiElement type &amp;quot;list-box&amp;quot;.&lt;br /&gt;
* Added Entity prototype flags &amp;quot;no-automated-item-removal&amp;quot; and &amp;quot;no-automated-item-insertion&amp;quot;.&lt;br /&gt;
* Added support for hidden optional dependencies via &#039;(?) mod-name&#039;.&lt;br /&gt;
* Added SelectionToolPrototype flags &amp;quot;not-same-force&amp;quot;, &amp;quot;friend&amp;quot;, and &amp;quot;enemy&amp;quot;.&lt;br /&gt;
* Added SelectionToolPrototype optional filters: entity_filters, entity_type_filters, tile_filters, entity_filter_mode, and tile_filter_mode.&lt;br /&gt;
* Added SelectionToolPrototype optional filters: alt_entity_filters, alt_entity_type_filters, alt_tile_filters, alt_entity_filter_mode, and alt_tile_filter_mode.&lt;br /&gt;
* Added support to set wire_count on wires to define how many items are needed to connect 2 entities.&lt;br /&gt;
* Added UnitPrototype::ai_settings, which allows overriding default biter behavior.&lt;br /&gt;
* Added a spectator controller type that can view anything but can&#039;t change anything.&lt;br /&gt;
* Added GeneratorPrototype::burner to allow making an entity that burns fuel and produces power.&lt;br /&gt;
* Added ticks_to_wait parameter to wander ai command.&lt;br /&gt;
* Added Entity prototype property &amp;quot;next_upgrade&amp;quot;.&lt;br /&gt;
* Added support to set draw_copper_wires and draw_circuit_wires for any entity that uses wires.&lt;br /&gt;
* Added optional &amp;quot;min_working_temperature&amp;quot; and &amp;quot;default_temperature&amp;quot; to heat buffer prototype.&lt;br /&gt;
* Added optional technology prototype property &amp;quot;hidden&amp;quot;.&lt;br /&gt;
* Added optional fluid prototype property &amp;quot;hidden&amp;quot;.&lt;br /&gt;
* Added &amp;quot;fluid&amp;quot; energy_source type can be used for both fuel-value based fluids, and heat capacity based fluids configured the same was as the generator entity.&lt;br /&gt;
* Added ReactorPrototype::scale_energy_usage to allow making a heat source that stops consuming fuel when max temperature is reached.&lt;br /&gt;
* Added EnemySpawnerPrototype::min_darkness_to_spawn and max_darkness_to_spawn.&lt;br /&gt;
* Added optional beam prototype properties random_end_animation_rotation and transparent_start_end_animations.&lt;br /&gt;
* Added rotation_speed value to Unit prototype.&lt;br /&gt;
* Added support for arbitrary non-circular references to named noise expressions.&lt;br /&gt;
* Added &amp;quot;spot-noise&amp;quot; noise function.&lt;br /&gt;
* Added &amp;quot;if-else-chain&amp;quot; and &amp;quot;literal-boolean&amp;quot; noise expression types.&lt;br /&gt;
* Added &amp;quot;cutscene&amp;quot; controller.&lt;br /&gt;
* Added &amp;quot;speech-bubble&amp;quot; entity.&lt;br /&gt;
* Added ResourceEntityPrototype::randomize_visual_position.&lt;br /&gt;
* Added EquipmentGridPrototype::locked.&lt;br /&gt;
* Added DamageType::hidden.&lt;br /&gt;
* Added optional draw_cargo property to construction robot and logistic robot prototypes.&lt;br /&gt;
* Added optional fluid_product to production achievement prototypes.&lt;br /&gt;
* Added UnitPrototype::affected_by_tiles.&lt;br /&gt;
* Added LuaStyle::stretch_image_to_widget_size, only applies to &amp;quot;sprite&amp;quot; widget styles.&lt;br /&gt;
* Added optional EntityPrototype::map_generator_bounding_box.&lt;br /&gt;
* Added EntityPrototypeFlag &amp;quot;not-upgradable&amp;quot;.&lt;br /&gt;
* Added EntityPrototypeFlags &amp;quot;no-copy-paste&amp;quot; and &amp;quot;not-selectable-in-game&amp;quot;.&lt;br /&gt;
* Added ItemPrototypeFlags &amp;quot;only-in-cursor&amp;quot;, &amp;quot;not-stackable&amp;quot;, &amp;quot;can-extend-inventory&amp;quot;, &amp;quot;primary-place-result&amp;quot; and &amp;quot;mod-openable&amp;quot;.&lt;br /&gt;
* Added BeamPrototype::target_offset and random_target_offset.&lt;br /&gt;
* Added TilePrototype::tint. Tile tint is packed to RGB 565 without alpha.&lt;br /&gt;
* Added &amp;quot;mouse-cursor&amp;quot; definitions for overriding system mouse cursor in selection tools.&lt;br /&gt;
* Changed radars so they support dynamic energy source types.&lt;br /&gt;
* Changed ItemWithInventoryPrototype flag &amp;quot;when_manually_filtered&amp;quot; to &amp;quot;when-manually-filtered&amp;quot;.&lt;br /&gt;
* Changed SelectionToolPrototype flag &amp;quot;matches-force&amp;quot; to &amp;quot;same-force&amp;quot;.&lt;br /&gt;
* Changed the maximum number of surfaces from 255 to 4,294,967,295.&lt;br /&gt;
* Changed migration scripts so they run in the context of the mod that created them.&lt;br /&gt;
* Changed TilePrototype::decorative_removal_probability default value to 0 (it was 1).&lt;br /&gt;
* Changed ReactorPrototype::burner to ReactorPrototype::energy_source to allow heat sources with alternate energy types.&lt;br /&gt;
* Changed ElectricEnergyInterfacePrototype::enable_gui to gui_mode.&lt;br /&gt;
* Changed EnemySpawnerPrototype::result_units to support any type of entity.&lt;br /&gt;
* Changed recipes to support having no results by setting results = {}.&lt;br /&gt;
* Lua scripts can now use require(&amp;quot;__mod-name__.file&amp;quot;) syntax.&lt;br /&gt;
* AutoplaceSpecifications can now be defined in terms of probability_expression and richness_expression as an alternative to peaks.&lt;br /&gt;
* property_expression_name values can be numeric constants.&lt;br /&gt;
* All autoplace controls are now available as noise expression variables.&lt;br /&gt;
* energy_per_movement and energy_per_rotation of inserter is now specified in energy format (aka &amp;quot;5KJ&amp;quot;) instead of just a number.&lt;br /&gt;
* Increased limit for size of spritesheet to 8196px (regardless of sprite resolution settings). Maximal size of single sprite is 2048px in normal resolution and 4096px in high resolution. Smaller spritesheets can utilize parallel decompression better.&lt;br /&gt;
* Removed the &amp;quot;default-&amp;quot; prefix from core NamedNoiseExpressions; property_expression_names in MapGenSettings simply override the expression named by the key.&lt;br /&gt;
* Removed ItemPrototypeFlags &amp;quot;goes-to-main-inventory&amp;quot; and &amp;quot;goes-to-quickbar&amp;quot;.&lt;br /&gt;
=== Scripting ===&lt;br /&gt;
* Added LuaRendering accessed via the lua global &amp;quot;rendering&amp;quot;.&lt;br /&gt;
* Added LuaEntity::get_infinity_pipe_filter() and set_infinity_pipe_filter().&lt;br /&gt;
* Added LuaEntity::recipe_locked read/write for assembling machines.&lt;br /&gt;
* Added LuaRailPath.&lt;br /&gt;
* Added LuaTrain::path read.&lt;br /&gt;
* Added LuaEntity::connected_rail read.&lt;br /&gt;
* Added previous_direction to the on_player_rotated_entity event.&lt;br /&gt;
* Added LuaItemStack::deconstruct_area() and cancel_deconstruct_area().&lt;br /&gt;
* Added LuaSurface::deconstruct/cancel_deconstruct optional parameters skip_fog_of_war and item.&lt;br /&gt;
* Added LuaEntity::clone().&lt;br /&gt;
* Added LuaSurface::clone_area().&lt;br /&gt;
* Added LuaSurface::clone_entities().&lt;br /&gt;
* Added LuaGameScript::auto_save().&lt;br /&gt;
* Added LuaEntity::neighbours support for power switches, wall-connectable entities, and reactors.&lt;br /&gt;
* Added LuaFluidBoxPrototype.&lt;br /&gt;
* Added LuaEntityPrototype::fluidbox_prototypes read.&lt;br /&gt;
* Added LuaGameScript::take_technology_screenshot().&lt;br /&gt;
* Added LuaSurface::clear().&lt;br /&gt;
* Added LuaSurface::solar_power_multiplier read/write.&lt;br /&gt;
* Added on_pre_surface_cleared and on_surface_cleared events.&lt;br /&gt;
* Added on_pre_chunk_deleted and on_chunk_deleted events.&lt;br /&gt;
* Added on_chart_tag_added, on_chart_tag_modified, and on_chart_tag_removed events.&lt;br /&gt;
* Added LuaGameScript::styles read.&lt;br /&gt;
* Added LuaEntity::crafting_speed read.&lt;br /&gt;
* Added LuaTrain::max_forward_speed and max_backward_speed read.&lt;br /&gt;
* Added on_train_schedule_changed event.&lt;br /&gt;
* Added LuaForce::previous_research read/write.&lt;br /&gt;
* Added LuaSurface::find_decoratives_filtered().&lt;br /&gt;
* Added LuaEntity::inserter_filter_mode read/write.&lt;br /&gt;
* Added LuaEntity::neighbour_bonus read.&lt;br /&gt;
* Added LuaEntityPrototype::neighbour_bonus and neighbour_collision_increase read.&lt;br /&gt;
* Added LuaEntityPrototype::container_distance, belt_distance and belt_length read.&lt;br /&gt;
* Added LuaGameScript::table_to_json() and LuaGameScript::json_to_table().&lt;br /&gt;
* Added events on_player_banned, on_player_kicked, and on_player_unbanned.&lt;br /&gt;
* Added event on_rocket_launch_ordered.&lt;br /&gt;
* Added LuaItemPrototype::wire_count read.&lt;br /&gt;
* Added LuaRecipePrototype::main_product read.&lt;br /&gt;
* Added LuaEntity::get_fluid_count(), get_fluid_contents(), remove_fluid(), insert_fluid(), and clear_fluid_inside().&lt;br /&gt;
* Added LuaEntity::silent_revive().&lt;br /&gt;
* Added LuaFluidBox::get_prototype().&lt;br /&gt;
* Added LuaSurface::request_path().&lt;br /&gt;
* Added LuaGameScript::reload_mods().&lt;br /&gt;
* Added on_player_toggled_alt_mode, on_player_repaired_entity, and on_player_fast_transferred events.&lt;br /&gt;
* Added on_game_created_from_scenario event.&lt;br /&gt;
* Added on_surface_renamed event.&lt;br /&gt;
* Added on_ai_command_completed event, which can be used to detect command completion and failure/success.&lt;br /&gt;
* Added &amp;quot;pathfind_flags&amp;quot; parameter to &amp;quot;go_to_location&amp;quot; AI command.&lt;br /&gt;
* Added &amp;quot;radius&amp;quot; and &amp;quot;wander_in_group&amp;quot; parameters to &amp;quot;wander&amp;quot; AI command.&lt;br /&gt;
* Added &amp;quot;radius&amp;quot; parameter to &amp;quot;go_to_location&amp;quot; AI command.&lt;br /&gt;
* Added support for mods to change their own mod settings runtime.&lt;br /&gt;
* Added LuaEntityPrototype::next_upgrade read.&lt;br /&gt;
* Added optional parameters to LuaSurface::create_entity, LuaEntity::destroy and LuaEntity::revive to raise the associated script events.&lt;br /&gt;
* Added support to run console commands in a specific mod context via: /c __mod-name__ *command*.&lt;br /&gt;
* Added LuaTechnologyPrototype::hidden read.&lt;br /&gt;
* Added LuaFluidPrototype::hidden read.&lt;br /&gt;
* Added LuaSurface::get_map_exchange_string().&lt;br /&gt;
* Added LuaGameScript::get_map_exchange_string().&lt;br /&gt;
* Added LuaFlowStatistics::get_flow_count().&lt;br /&gt;
* Added LuaEntity::trains_in_block read.&lt;br /&gt;
* Added LuaGameScript::get_player().&lt;br /&gt;
* Added LuaGameScript::get_surface().&lt;br /&gt;
* Added LuaGameScript::set_wait_for_screenshots_to_finish().&lt;br /&gt;
* Added LuaGuiElement::resize_to_sprite (read/write).&lt;br /&gt;
* Added LuaGroup::localised_name read.&lt;br /&gt;
* Added SpritePath::equipment.&lt;br /&gt;
* Added LuaEquipmentGridPrototype::background_color read.&lt;br /&gt;
* Added LuaItemPrototype::reload_time read.&lt;br /&gt;
* Added highlight-box entity that can be passed a &amp;quot;bounding_box&amp;quot; or &amp;quot;source&amp;quot; entity parameter to display a highlight box around an area or entity.&lt;br /&gt;
* Added LuaEntityPrototype::is_building read.&lt;br /&gt;
* Added LuaEntityPrototype::automated_ammo_count read.&lt;br /&gt;
* Added LuaEntity::get_beam_source(), set_beam_source(), get_beam_target() and set_beam_target().&lt;br /&gt;
* Added LuaSurface::get_closest().&lt;br /&gt;
* Added LuaSurface::get_total_pollution().&lt;br /&gt;
* Added LuaPlayer::create_local_flying_text().&lt;br /&gt;
* Added LuaEntityPrototype::darkness_for_all_lamps_on and darkness_for_all_lamps_off read.&lt;br /&gt;
* Added LuaEntity::status read.&lt;br /&gt;
* Added LuaLogisticNetwork::robots, construction_robots, logistic_robots read.&lt;br /&gt;
* Added LuaGameScript::get_train_stops(), LuaSurface::get_train_stops(), and LuaForce::get_train_stops().&lt;br /&gt;
* Added LuaEntityPrototype::min_darkness_to_spawn and max_darkness_to_spawn read.&lt;br /&gt;
* Added &amp;quot;loot&amp;quot; to the on_entity_died event.&lt;br /&gt;
* Added LuaTrain::go_to_station().&lt;br /&gt;
* Added support to set quality when using LuaGameScript::take_screenshot.&lt;br /&gt;
* Added LuaForce::evolution_factor_by_pollution, evolution_factor_by_time, and evolution_factor_by_killing_spawners read/write.&lt;br /&gt;
* Added optional create_build_effect_smoke parameter to LuaSurface::create_entity.&lt;br /&gt;
* Added LuaEntity::drop_target/pickup_target write.&lt;br /&gt;
* Added LuaEntity::ghost_has_flag().&lt;br /&gt;
* Added runtime editable speed attribute to Unit.&lt;br /&gt;
* Added LuaSurface::get_starting_area_radius().&lt;br /&gt;
* Added LuaItemPrototype::robot_action read.&lt;br /&gt;
* Added LuaEntity::enable_logistics_while_moving read/write.&lt;br /&gt;
* Added optional render_player_index parameter for flying-text and simple-entities to LuaSurface::create_entity.&lt;br /&gt;
* Added LuaEntity::render_player read/write.&lt;br /&gt;
* Added LuaEntity::render_to_forces read/write.&lt;br /&gt;
* Added LuaGameScript::disable_tutorial_triggers().&lt;br /&gt;
* Added LuaEntity::get_radius() and LuaEntityPrototype::radius read.&lt;br /&gt;
* Added LuaEntity::get_health_ratio().&lt;br /&gt;
* Added LuaSurface::find_units().&lt;br /&gt;
* Added LuaTransportLine::output_lines read.&lt;br /&gt;
* Added LuaEntity::pump_rail_target read.&lt;br /&gt;
* Added LuaTrain::get_rails().&lt;br /&gt;
* Added LuaEquipmentGridPrototype::locked read.&lt;br /&gt;
* Added LuaForce::index read.&lt;br /&gt;
* Added direction to LuaSurface::count/find_entities_filtered.&lt;br /&gt;
* Added collision_mask to LuaSurface::count/find_entities_filtered.&lt;br /&gt;
* Added LuaEntity::clear_market_items().&lt;br /&gt;
* Added LuaEntityPrototype::cliff_explosive_prototype read.&lt;br /&gt;
* Added LuaDamagePrototype::hidden read.&lt;br /&gt;
* Added LuaControl::character_running_speed read.&lt;br /&gt;
* Added LuaEntityPrototype::draw_cargo read.&lt;br /&gt;
* Added LuaPlayer::use_from_cursor().&lt;br /&gt;
* Added LuaGameScript::autosave_enabled variable, that can be used to disable autosaving.&lt;br /&gt;
* Added LuaEntity::ai_settings read.&lt;br /&gt;
* Added LuaAISettings::destroy_when_commands_fail. When true, units will be destroyed when repeatedly failing to execute commands.&lt;br /&gt;
* Added LuaAISettings::allow_try_return_to_spawner. When true, units will try to return to a spawner when they are idle.&lt;br /&gt;
* Added LuaAISettings::do_separation. When true, units will try to separate themselves from nearby friendly units.&lt;br /&gt;
* Added LuaEntity::moving. Returns true if the unit is moving.&lt;br /&gt;
* Added on_unit_group_created, on_unit_added_to_group, and on_unit_removed_from_group events.&lt;br /&gt;
* Added LuaEntity::create_build_effect_smoke.&lt;br /&gt;
* Added LuaEntityPrototype::vision_distance read.&lt;br /&gt;
* Added LuaPlayer::open_map(), zoom_to_world() and close_map().&lt;br /&gt;
* Added LuaPlayer::render_mode read.&lt;br /&gt;
* Added LuaPlayer::map_view_settings write.&lt;br /&gt;
* Added LuaStyle::top_margin, right_margin, bottom_margin and left_margin read/write.&lt;br /&gt;
* Added LuaStyle::use_header_filler, natural_width and natural_height read/write.&lt;br /&gt;
* Added LuaStyle::extra_padding_when_activated read/write.&lt;br /&gt;
* Added LuaStyle::extra_top_margin_when_activated, extra_bottom_margin_when_activated, extra_left_margin_when_activated and extra_right_margin_when_activated read/write.&lt;br /&gt;
* Added LuaEntity::electric_network_id read.&lt;br /&gt;
* Added LuaControl::character_additional_mining_categories read/write.&lt;br /&gt;
* Added LuaGameScript::draw_resource_selection read/write.&lt;br /&gt;
* Added LuaForce::get_hand_crafting_disabled_for_recipe() and set_hand_crafting_disabled_for_recipe().&lt;br /&gt;
* Added LuaEntityPrototype::map_generator_bounding_box read.&lt;br /&gt;
* Added LuaEntity::release_from_spawner().&lt;br /&gt;
* Added on_cutscene_waypoint_reached, on_entity_cloned, on_area_cloned, on_marked_for_upgrade, on_cancelled_upgrade, on_post_entity_died, on_pre_player_removed, on_pre_robot_exploded_cliff, on_robot_exploded_cliff, on_script_path_request_finished, on_surface_imported, on_player_toggled_map_editor events.&lt;br /&gt;
* Added LuaEntity::timeout read/write.&lt;br /&gt;
* Added LuaEntity::highlight_box_type and highlight_box_blink_interval read/write.&lt;br /&gt;
* Added LuaEntity::order_upgrade(), cancel_upgrade() and to_be_upgraded().&lt;br /&gt;
* Added LuaEntity::research_queue_enabled read/write.&lt;br /&gt;
* Added LuaGameScript::get_active_entities_count().&lt;br /&gt;
* Added LuaGameScript::ticks_played read.&lt;br /&gt;
* Added LuaGameScript::tick_paused and ticks_to_run read/write.&lt;br /&gt;
* Added LuaItemPrototype::infinite read.&lt;br /&gt;
* Added LuaItemStack::clear_upgrade_item(), get_mapper(), set_mapper().&lt;br /&gt;
* Added LuaItemStack::is_upgrade_item read.&lt;br /&gt;
* Added LuaLogisticCell::logistics_connection_distance read.&lt;br /&gt;
* Added LuaLogisticNetwork::select_pickup_point() and select_drop_point().&lt;br /&gt;
* Added LuaPlayer::jump_to_cutscene_waypoint().&lt;br /&gt;
* Added LuaUnitGroup::group_number read.&lt;br /&gt;
* Changed LuaEntity::destroy() to accept a table of arguments.&lt;br /&gt;
* Changed LuaEntity::revive() to accept a table of arguments.&lt;br /&gt;
* Changed the player_used_capsule event so it&#039;s fired after the capsule item is consumed from the cursor.&lt;br /&gt;
* Changed LuaEntity::splitter_filter, splitter_input_priority, and splitter_output_priority so they also work on ghosts.&lt;br /&gt;
* Changed LuaSurface::destroy_decoratives() to take filters similar to find_entities_filtered.&lt;br /&gt;
* Changed LuaEntityPrototype::items_to_place_this and LuaTilePrototype::items_to_place_this to return an array of SimpleItemStack.&lt;br /&gt;
* Changed most LuaEntity properties/functions to also work on ghosts.&lt;br /&gt;
* Changed on_player_crafted_item item_stack to allow editing the stack before it&#039;s put into the player inventory.&lt;br /&gt;
* Changed LuaSurface::regenerate_entity()/regenerate_decorative() to treat &amp;quot;nil&amp;quot; as &amp;quot;all&amp;quot; for the autoplace list.&lt;br /&gt;
* Changed LuaEquipmentPrototype::energy_source to return a LuaElectricEnergySourcePrototype.&lt;br /&gt;
* Changed sound definition, so it can contain &amp;quot;aggregation&amp;quot; even when it doesn&#039;t contain &amp;quot;variations&amp;quot;.&lt;br /&gt;
* Renamed LuaEntity::get_infinity_filter(), set_infinity_filter(), and infinity_filters to get_infinity_container_filter(), set_infinity_container_filter(), and infinity_container_filters.&lt;br /&gt;
* Renamed on_canceled_deconstruction event to on_cancelled_deconstruction.&lt;br /&gt;
* Fixed the spelling of LuaForce::max_successful_attempts_per_tick_per_construction_queue.&lt;br /&gt;
* LuaSurface::find_entities/filtered now accepts a zero sized bounding box as &amp;quot;find everything that collides with this point&amp;quot;.&lt;br /&gt;
* CustomSprite now scales to the size of the sprite if a manual size isn&#039;t defined.&lt;br /&gt;
* It&#039;s possible to specify &amp;quot;frame_sequence&amp;quot; in animation definition as array of frame numbers that should be played in given order.&lt;br /&gt;
* Removed LuaStyle::visible, LuaGuiElement::visible is used instead.&lt;br /&gt;
* Removed LuaSurface::get_tile_properties().&lt;br /&gt;
* Removed LuaCustomChartTag::orientation and target.&lt;br /&gt;
* Removed LuaFluidPrototype::pressure_to_speed_ratio and flow_to_energy_ratio.&lt;br /&gt;
&lt;br /&gt;
{{VersionNav}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/EntityWithHealth&amp;diff=172855</id>
		<title>Prototype/EntityWithHealth</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/EntityWithHealth&amp;diff=172855"/>
		<updated>2019-05-02T19:24:08Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* max_health */ add that must be greater than 0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
This type is abstract and cannot be created directly.&lt;br /&gt;
&lt;br /&gt;
The common properties of all entities with health in the game.&lt;br /&gt;
Extends the [[Prototype/Entity]]&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;factorio-list&amp;quot;&amp;gt;&lt;br /&gt;
* [[Prototype/Accumulator]] &#039;&#039;&#039;accumulator&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ArtilleryTurret]] &#039;&#039;&#039;artillery-turret&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Beacon]] &#039;&#039;&#039;beacon&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Boiler]] &#039;&#039;&#039;boiler&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Character]] &#039;&#039;&#039;character&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Combinator]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
** [[Prototype/ArithmeticCombinator]] &#039;&#039;&#039;arithmetic-combinator&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/DeciderCombinator]] &#039;&#039;&#039;decider-combinator&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ConstantCombinator]] &#039;&#039;&#039;constant-combinator&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Container]] &#039;&#039;&#039;container&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/LogisticContainer]] &#039;&#039;&#039;logistic-container&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/InfinityContainer]] &#039;&#039;&#039;infinity-container&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/CraftingMachine]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
** [[Prototype/AssemblingMachine]] &#039;&#039;&#039;assembling-machine&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/RocketSilo]] &#039;&#039;&#039;rocket-silo&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Furnace]] &#039;&#039;&#039;furnace&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ElectricEnergyInterface]] &#039;&#039;&#039;electric-energy-interface&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ElectricPole]] &#039;&#039;&#039;electric-pole&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/EnemySpawner]] &#039;&#039;&#039;unit-spawner&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Fish]] &#039;&#039;&#039;fish&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/FlyingRobot]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
** [[Prototype/CombatRobot]] &#039;&#039;&#039;combat-robot&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/RobotWithLogisticInterface]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/ConstructionRobot]] &#039;&#039;&#039;construction-robot&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/LogisticRobot]] &#039;&#039;&#039;logistic-robot&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Gate]] &#039;&#039;&#039;gate&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Generator]] &#039;&#039;&#039;generator&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/HeatInterface]] &#039;&#039;&#039;heat-interface&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/HeatPipe]] &#039;&#039;&#039;heat-pipe&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Inserter]] &#039;&#039;&#039;inserter&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Lab]] &#039;&#039;&#039;lab&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Lamp]] &#039;&#039;&#039;lamp&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/LandMine]] &#039;&#039;&#039;land-mine&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Market]] &#039;&#039;&#039;market&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/MiningDrill]] &#039;&#039;&#039;mining-drill&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/OffshorePump]] &#039;&#039;&#039;offshore-pump&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Pipe]] &#039;&#039;&#039;pipe&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/InfinityPipe]] &#039;&#039;&#039;infinity-pipe&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/PipeToGround]] &#039;&#039;&#039;pipe-to-ground&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/PlayerPort]] &#039;&#039;&#039;player-port&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/PowerSwitch]] &#039;&#039;&#039;power-switch&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ProgrammableSpeaker]] &#039;&#039;&#039;programmable-speaker&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Pump]] &#039;&#039;&#039;pump&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Radar]] &#039;&#039;&#039;radar&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Rail]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
** [[Prototype/CurvedRail]] &#039;&#039;&#039;curved-rail&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/StraightRail]] &#039;&#039;&#039;straight-rail&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/RailSignalBase]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
** [[Prototype/RailChainSignal]] &#039;&#039;&#039;rail-chain-signal&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/RailSignal]] &#039;&#039;&#039;rail-signal&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Reactor]] &#039;&#039;&#039;reactor&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Roboport]] &#039;&#039;&#039;roboport&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/SimpleEntity]] &#039;&#039;&#039;simple-entity&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/SimpleEntityWithOwner]] &#039;&#039;&#039;simple-entity-with-owner&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/SimpleEntityWithForce]] &#039;&#039;&#039;simple-entity-with-force&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/SolarPanel]] &#039;&#039;&#039;solar-panel&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/StorageTank]] &#039;&#039;&#039;storage-tank&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/TrainStop]] &#039;&#039;&#039;train-stop&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/TransportBeltConnectable]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
** [[Prototype/Loader]] &#039;&#039;&#039;loader&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Splitter]] &#039;&#039;&#039;splitter&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/TransportBelt]] &#039;&#039;&#039;transport-belt&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/UndergroundBelt]] &#039;&#039;&#039;underground-belt&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Tree]] &#039;&#039;&#039;tree&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Turret]] &#039;&#039;&#039;turret&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/AmmoTurret]] &#039;&#039;&#039;ammo-turret&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/ElectricTurret]] &#039;&#039;&#039;electric-turret&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/FluidTurret]] &#039;&#039;&#039;fluid-turret&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Unit]] &#039;&#039;&#039;unit&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Vehicle]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
** [[Prototype/Car]] &#039;&#039;&#039;car&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/RollingStock]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/ArtilleryWagon]] &#039;&#039;&#039;artillery-wagon&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/CargoWagon]] &#039;&#039;&#039;cargo-wagon&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/FluidWagon]] &#039;&#039;&#039;fluid-wagon&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/Locomotive]] &#039;&#039;&#039;locomotive&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Wall]] &#039;&#039;&#039;wall&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
=== max_health ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
The unit health can never go over the maxmum. Default health of units on creation is set to max. Must be greater than 0.&lt;br /&gt;
    max_health = 50&lt;br /&gt;
&lt;br /&gt;
=== healing_per_tick ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
The amount of health cured by tick naturally.&lt;br /&gt;
Works only on active entities. (Todo explain)&lt;br /&gt;
   healing_per_tick = 0.01&lt;br /&gt;
&lt;br /&gt;
=== repair_speed_modifier ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== dying_explosion ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
The entity that is spawned in place of this one when it dies.&lt;br /&gt;
&lt;br /&gt;
=== dying_trigger_effect ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/TriggerEffect]]&lt;br /&gt;
&lt;br /&gt;
=== loot ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Loot]]&lt;br /&gt;
&lt;br /&gt;
The loot is dropped on the ground when the entity is killed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;loot =&lt;br /&gt;
{&lt;br /&gt;
  {&lt;br /&gt;
    count_max = 10,&lt;br /&gt;
    count_min = 2,&lt;br /&gt;
    item = &amp;quot;stone&amp;quot;,&lt;br /&gt;
    probability = 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== resistances ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Resistances]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See&#039;&#039;&#039;: [[Damage]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;resistances = &lt;br /&gt;
{&lt;br /&gt;
  {&lt;br /&gt;
    type = &amp;quot;fire&amp;quot;,&lt;br /&gt;
    percent = 80&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    type = &amp;quot;explosion&amp;quot;,&lt;br /&gt;
    percent = 30&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== attack_reaction ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/AttackReaction]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: Empty&lt;br /&gt;
&lt;br /&gt;
=== repair_sound ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sound]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: Utility sound (defaultManualRepair)&lt;br /&gt;
&lt;br /&gt;
=== alert_when_damaged ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: true&lt;br /&gt;
&lt;br /&gt;
=== hide_resistances ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: true&lt;br /&gt;
&lt;br /&gt;
=== create_ghost_on_death ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: true&lt;br /&gt;
&lt;br /&gt;
=== corpse ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]] or [[Types/table]] of [[Types/string]]s&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: Empty&lt;br /&gt;
&lt;br /&gt;
Specifies the name(s) of the [[Prototype/Corpse]] entity to be used when this entity dies.&lt;br /&gt;
&lt;br /&gt;
=== integration_patch ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite4Way]]&lt;br /&gt;
&lt;br /&gt;
Sprite drawn on ground under the entity to make it feel more integrated into the ground.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;{&lt;br /&gt;
    type = &amp;quot;container&amp;quot;,&lt;br /&gt;
    name = &amp;quot;wooden-chest&amp;quot;,&lt;br /&gt;
    icon = &amp;quot;__base__/graphics/icons/wooden-chest.png&amp;quot;,&lt;br /&gt;
    flags = {&amp;quot;placeable-neutral&amp;quot;, &amp;quot;player-creation&amp;quot;},&lt;br /&gt;
    minable = {mining_time = 1, result = &amp;quot;wooden-chest&amp;quot;},&lt;br /&gt;
    max_health = 100,&lt;br /&gt;
    corpse = &amp;quot;small-remnants&amp;quot;,&lt;br /&gt;
    collision_box = {{-0.35, -0.35}, {0.35, 0.35}},&lt;br /&gt;
    fast_replaceable_group = &amp;quot;container&amp;quot;,&lt;br /&gt;
    selection_box = {{-0.5, -0.5}, {0.5, 0.5}},&lt;br /&gt;
    inventory_size = 16,&lt;br /&gt;
    open_sound = { filename = &amp;quot;__base__/sound/wooden-chest-open.ogg&amp;quot; },&lt;br /&gt;
    close_sound = { filename = &amp;quot;__base__/sound/wooden-chest-close.ogg&amp;quot; },&lt;br /&gt;
    vehicle_impact_sound =  { filename = &amp;quot;__base__/sound/car-wood-impact.ogg&amp;quot;, volume = 1.0 },&lt;br /&gt;
    picture =&lt;br /&gt;
    {&lt;br /&gt;
      filename = &amp;quot;__base__/graphics/entity/wooden-chest/wooden-chest.png&amp;quot;,&lt;br /&gt;
      priority = &amp;quot;extra-high&amp;quot;,&lt;br /&gt;
      width = 46,&lt;br /&gt;
      height = 33,&lt;br /&gt;
      shift = {0.25, 0.015625}&lt;br /&gt;
    },&lt;br /&gt;
    circuit_wire_connection_point =&lt;br /&gt;
    {&lt;br /&gt;
      shadow =&lt;br /&gt;
      {&lt;br /&gt;
        red = {0.734375, 0.453125},&lt;br /&gt;
        green = {0.609375, 0.515625},&lt;br /&gt;
      },&lt;br /&gt;
      wire =&lt;br /&gt;
      {&lt;br /&gt;
        red = {0.40625, 0.21875},&lt;br /&gt;
        green = {0.40625, 0.375},&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    circuit_connector_sprites = get_circuit_connector_sprites({0.1875, 0.15625}, nil, 18),&lt;br /&gt;
    circuit_wire_max_distance = 9&lt;br /&gt;
  }&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Flamethrower_turret&amp;diff=172824</id>
		<title>Flamethrower turret</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Flamethrower_turret&amp;diff=172824"/>
		<updated>2019-04-30T18:01:05Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: add reference to target priority as it is unique compared to other turrets&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Flamethrower turret}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flamethrower turrets&#039;&#039;&#039; work similarly to the [[Flamethrower]], setting [[enemies]] and the ground on fire and doing damage over time. Unlike gun and laser turrets, they have a limited firing arc, and should therefore should be placed at choke points or behind walls. They can use crude, heavy, or light oil as ammunition, which must be provided via a pipe connected to the turret. Flamethrower turrets gain a damage bonus depending on the type of oil supplied to them. This bonus is multiplicative, it stacks with the bonus damage from research.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ammunition !! Effect&lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Crude oil}} ||100% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Heavy oil}} ||105% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Light oil}} ||110% Damage &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unlike the laser and gun turrets, flamethrower turrets do not have a instantaneously hitting projectile, instead firing a stream of flame directly at where the target was at the time of firing. This means that they have a tendency to miss the targeted biter in an attacking group, instead hitting the ones behind. &lt;br /&gt;
&lt;br /&gt;
Flamethrower turrets are very powerful because biters and spitters do not have fire resistance and the total 3000 damage dealt to ignited enemies is a guaranteed death sentence for anything in the game. An enemy unit is ignited if it is hit directly by a flame stream. Flamethrower turrets will target the closest non ignited enemy and then once all enemies within range are ignited they will target the closest enemy.&lt;br /&gt;
&lt;br /&gt;
The bonus technologies and fuel damage bonus for the flamethrower turret improve the contact damage and damage dealt by fire on the ground. However, they do not affect the damage dealt to ignited enemies, which always lasts 30 seconds and deals 100 damage per second. &lt;br /&gt;
&lt;br /&gt;
Flamethrower turrets create fire on the ground which lasts 2 seconds by default. If the turret keeps firing at that spot, the fire will last up to 30 seconds and its damage is increased up to 6 times, depending on how long the turret keeps firing at that spot.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
{{history|0.13.0|&lt;br /&gt;
*Introduced.&lt;br /&gt;
*Damage upgrade technology introduced.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Gun turret]]&lt;br /&gt;
* [[Laser turret]]&lt;br /&gt;
&lt;br /&gt;
{{CombatNav}}&lt;br /&gt;
{{C|Defense}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/BaseAttackParameters&amp;diff=172823</id>
		<title>Types/BaseAttackParameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/BaseAttackParameters&amp;diff=172823"/>
		<updated>2019-04-30T17:51:03Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* min_attack_distance */ add description from API doc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The abstract base of all attack parameters.&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
* [[Types/ProjectileAttackParameters]]&lt;br /&gt;
* [[Types/BeamAttackParameters]]&lt;br /&gt;
* [[Types/StreamAttackParameters]]&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
=== range ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
=== cooldown ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
Number of ticks in which it will be possible to shoot again. If &amp;lt; 1, multiple shots can be performed in one tick.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
=== min_range ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
=== turn_range ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
If this is &amp;lt;= 0, it is set to 1.&lt;br /&gt;
&lt;br /&gt;
=== fire_penalty ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Used when searching for the nearest enemy, when this is &amp;gt; 0, enemies that aren&#039;t burning are preferred over burning enemies. Definition of &amp;quot;burning&amp;quot; for this: Entity has sticker attached to it, and the sticker has a [[Prototype/Sticker#spread_fire_entity|fire_spread_entity]] set.&lt;br /&gt;
&lt;br /&gt;
=== min_attack_distance ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If less than &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt;, the entity will choose a random distance between &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;min_attack_distance&amp;lt;/code&amp;gt; and attack from that distance.&lt;br /&gt;
&lt;br /&gt;
=== damage_modifier ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== warmup ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint32]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Number of ticks it takes for the weapon to actually shoot after the order for shooting has been made. This also allows to &amp;quot;adjust&amp;quot; the shooting animation to the effect of shooting.&lt;br /&gt;
&lt;br /&gt;
=== movement_slow_down_factor ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== movement_slow_down_cooldown ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;lt;code&amp;gt;cooldown&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ammo_type ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/AmmoType]]&lt;br /&gt;
&lt;br /&gt;
Can be mandatory.&lt;br /&gt;
&lt;br /&gt;
=== ammo_category ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
The name of a [[Prototype/AmmoCategory]]. Mandatory if &amp;lt;code&amp;gt;ammo_type&amp;lt;/code&amp;gt; is not given, otherwise ignored.&lt;br /&gt;
&lt;br /&gt;
=== sound ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sound]]&lt;br /&gt;
&lt;br /&gt;
=== animation ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/RotatedAnimation]]&lt;br /&gt;
&lt;br /&gt;
=== cyclic_sound ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/CyclicSound]]&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Flamethrower_turret&amp;diff=172822</id>
		<title>Flamethrower turret</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Flamethrower_turret&amp;diff=172822"/>
		<updated>2019-04-30T17:24:16Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: clarify wording across page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Flamethrower turret}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flamethrower turrets&#039;&#039;&#039; work similarly to the [[Flamethrower]], setting [[enemies]] and the ground on fire and doing damage over time. Unlike gun and laser turrets, they have a limited firing arc, and should therefore should be placed at choke points or behind walls. They can use crude, heavy, or light oil as ammunition, which must be provided via a pipe connected to the turret. Flamethrower turrets gain a damage bonus depending on the type of oil supplied to them. This bonus is multiplicative, it stacks with the bonus damage from research.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ammunition !! Effect&lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Crude oil}} ||100% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Heavy oil}} ||105% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Light oil}} ||110% Damage &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unlike the laser and gun turrets, flamethrower turrets do not have a instantaneously hitting projectile, instead firing a stream of flame directly at where the target was at the time of firing. This means that they have a tendency to miss the targeted biter in an attacking group, instead hitting the ones behind.&lt;br /&gt;
&lt;br /&gt;
Flamethrower turrets are very powerful because biters and spitters do not have fire resistance and the total 3000 damage dealt to ignited enemies is a guaranteed death sentence for anything in the game. An enemy unit is ignited if it is hit directly by a flame stream.&lt;br /&gt;
&lt;br /&gt;
The bonus technologies and fuel damage bonus for the flamethrower turret improve the contact damage and damage dealt by fire on the ground. However, they do not affect the damage dealt to ignited enemies, which always lasts 30 seconds and deals 100 damage per second. &lt;br /&gt;
&lt;br /&gt;
Flamethrower turrets create fire on the ground which lasts 2 seconds by default. If the turret keeps firing at that spot, the fire will last up to 30 seconds and its damage is increased up to 6 times, depending on how long the turret keeps firing at that spot.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
{{history|0.13.0|&lt;br /&gt;
*Introduced.&lt;br /&gt;
*Damage upgrade technology introduced.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Gun turret]]&lt;br /&gt;
* [[Laser turret]]&lt;br /&gt;
&lt;br /&gt;
{{CombatNav}}&lt;br /&gt;
{{C|Defense}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Muppet9010&amp;diff=172821</id>
		<title>User:Muppet9010</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Muppet9010&amp;diff=172821"/>
		<updated>2019-04-30T17:10:58Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: word tweak&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Flamethrower turret}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flamethrower turrets&#039;&#039;&#039; work similarly to the [[Flamethrower]], setting [[enemies]] and the ground on fire and doing damage over time. Unlike gun and laser turrets, they have a limited firing arc, and should therefore should be placed at choke points or behind walls. They can use crude, heavy, or light oil as ammunition, which must be provided via a pipe connected to the turret. Flamethrower turrets gain a damage bonus depending on the type of oil supplied to them. This bonus is multiplicative, it stacks with the bonus damage from research.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ammunition !! Effect&lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Crude oil}} ||100% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Heavy oil}} ||105% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Light oil}} ||110% Damage &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unlike the laser and gun turrets, flamethrower turrets do not have a instantaneously hitting projectile, instead firing a stream of flame directly at where the target was at the time of firing. This means that they have a tendency to miss the targeted biter in an attacking group, instead hitting the ones behind.&lt;br /&gt;
&lt;br /&gt;
Flamethrower turrets are very powerful because biters and spitters do not have fire resistance and the total 3000 damage dealt to ignited enemies is a guaranteed death sentence for anything in the game. An enemy unit is ignited if it is hit directly by a flame stream.&lt;br /&gt;
&lt;br /&gt;
The bonus technologies and fuel damage bonus for the flamethrower turret improve the contact damage and damage dealt by fire on the ground. However, they do not affect the damage dealt to ignited enemies, which always lasts 30 seconds and deals 100 damage per second. &lt;br /&gt;
&lt;br /&gt;
Flamethrower turrets create fire on the ground which lasts 2 seconds by default. If the turret keeps firing at that spot, the fire will last up to 30 seconds and its damage is increased up to 6 times, depending on how long the turret keeps firing at that spot.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
{{history|0.13.0|&lt;br /&gt;
*Introduced.&lt;br /&gt;
*Damage upgrade technology introduced.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Gun turret]]&lt;br /&gt;
* [[Laser turret]]&lt;br /&gt;
&lt;br /&gt;
{{CombatNav}}&lt;br /&gt;
{{C|Defense}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Muppet9010&amp;diff=172820</id>
		<title>User:Muppet9010</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Muppet9010&amp;diff=172820"/>
		<updated>2019-04-30T17:08:55Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: tweaks and additions to clarify some points and behaviour.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Flamethrower turret}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flamethrower turrets&#039;&#039;&#039; work similarly to the [[Flamethrower]], setting [[enemies]] and the ground on fire and doing damage over time. Unlike gun and laser turrets, they have a limited firing arc, and should therefore should be placed at choke points or behind walls. They can use crude, heavy, or light oil as ammunition, which must be provided via a pipe connected to the turret. Flamethrower turrets gain a damage bonus depending on the type of oil supplied to them. This bonus is multiplicative, it stacks with the bonus damage from research.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ammunition !! Effect&lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Crude oil}} ||100% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Heavy oil}} ||105% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Light oil}} ||110% Damage &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unlike the laser and gun turrets, flamethrower turrets do not have a instantaneously seeking projectile, instead firing a stream of flame directly at where the target was at the point of firing. This means that they have a tendency to miss the targeted biter in an attacking group, instead hitting the ones behind.&lt;br /&gt;
&lt;br /&gt;
Flamethrower turrets are very powerful because biters and spitters do not have fire resistance and the total 3000 damage dealt to ignited enemies is a guaranteed death sentence for anything in the game. An enemy unit is ignited if it is hit directly by a flame stream.&lt;br /&gt;
&lt;br /&gt;
The bonus technologies and fuel damage bonus for the flamethrower turret improve the contact damage and damage dealt by fire on the ground. However, they do not affect the damage dealt to ignited enemies, which always lasts 30 seconds and deals 100 damage per second. &lt;br /&gt;
&lt;br /&gt;
Flamethrower turrets create fire on the ground which lasts 2 seconds by default. If the turret keeps firing at that spot, the fire will last up to 30 seconds and its damage is increased up to 6 times, depending on how long the turret keeps firing at that spot.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
{{history|0.13.0|&lt;br /&gt;
*Introduced.&lt;br /&gt;
*Damage upgrade technology introduced.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Gun turret]]&lt;br /&gt;
* [[Laser turret]]&lt;br /&gt;
&lt;br /&gt;
{{CombatNav}}&lt;br /&gt;
{{C|Defense}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Muppet9010&amp;diff=172819</id>
		<title>User:Muppet9010</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Muppet9010&amp;diff=172819"/>
		<updated>2019-04-30T16:54:16Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: current flamethrower page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Flamethrower turret}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flamethrower turrets&#039;&#039;&#039; work similarly to the [[Flamethrower]], setting [[enemies]] on fire and doing damage over time. Unlike gun and laser turrets, they have a limited firing arc, and should therefore should be placed at choke points or behind walls. They can use crude, heavy, or light oil as ammunition, which must be provided via a pipe connected to the turret. Flamethrower turrets gain a damage bonus depending on the type of oil supplied to them. This bonus is multiplicative, it stacks with the bonus damage from research.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ammunition !! Effect&lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Crude oil}} ||100% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Heavy oil}} ||105% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Light oil}} ||110% Damage &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unlike the laser and gun turrets, flamethrower turrets do not have a seeking projectile, instead firing directly at where the biters was at the point of firing. This means that they have a tendency to miss the first row of biters. Flamethrower turrets are very powerful because biters and spitters do not have fire resistance and the total 3000 dealt to ignited enemies is a guaranteed death sentence for anything in the game.&lt;br /&gt;
&lt;br /&gt;
The bonus technologies and fuel damage bonus for the flamethrower turret improve the contact damage and damage dealt by fire on the ground. However, they do not affect the damage dealt to ignited enemies, this fire always lasts 30 seconds and always deals 100 damage per second.&lt;br /&gt;
&lt;br /&gt;
Flamethrower turrets create fire on the ground which lasts 2 seconds by default. If the turret keeps firing at that spot, the fire will last up to 30 seconds and its damage is increased up to 6 times, depending on how long the turret keeps firing at that spot.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
{{history|0.13.0|&lt;br /&gt;
*Introduced.&lt;br /&gt;
*Damage upgrade technology introduced.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Gun turret]]&lt;br /&gt;
* [[Laser turret]]&lt;br /&gt;
&lt;br /&gt;
{{CombatNav}}&lt;br /&gt;
{{C|Defense}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Flamethrower_turret&amp;diff=172817</id>
		<title>Flamethrower turret</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Flamethrower_turret&amp;diff=172817"/>
		<updated>2019-04-30T16:25:19Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: correct maths: 30 * 100 = 30,000, not 3,000&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Flamethrower turret}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flamethrower turrets&#039;&#039;&#039; work similarly to the [[Flamethrower]], setting [[enemies]] on fire and doing damage over time. Unlike gun and laser turrets, they have a limited firing arc, and should therefore should be placed at choke points or behind walls. They can use crude, heavy, or light oil as ammunition, which must be provided via a pipe connected to the turret. Flamethrower turrets gain a damage bonus depending on the type of oil supplied to them. This bonus is multiplicative, it stacks with the bonus damage from research.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ammunition !! Effect&lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Crude oil}} ||100% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Heavy oil}} ||105% Damage &lt;br /&gt;
|-&lt;br /&gt;
|{{IconLink|Light oil}} ||110% Damage &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unlike the laser and gun turrets, flamethrower turrets do not have a seeking projectile, instead firing directly at where the biters was at the point of firing. This means that they have a tendency to miss the first row of biters. Flamethrower turrets are very powerful because biters and spitters do not have fire resistance and the total 30,000 dealt to ignited enemies is a guaranteed death sentence for anything in the game.&lt;br /&gt;
&lt;br /&gt;
The bonus technologies and fuel damage bonus for the flamethrower turret improve the contact damage and damage dealt by fire on the ground. However, they do not affect the damage dealt to ignited enemies, this fire always lasts 30 seconds and always deals 100 damage per second.&lt;br /&gt;
&lt;br /&gt;
Flamethrower turrets create fire on the ground which lasts 2 seconds by default. If the turret keeps firing at that spot, the fire will last up to 30 seconds and its damage is increased up to 6 times, depending on how long the turret keeps firing at that spot.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
{{history|0.13.0|&lt;br /&gt;
*Introduced.&lt;br /&gt;
*Damage upgrade technology introduced.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Gun turret]]&lt;br /&gt;
* [[Laser turret]]&lt;br /&gt;
&lt;br /&gt;
{{CombatNav}}&lt;br /&gt;
{{C|Defense}}&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Railway&amp;diff=172658</id>
		<title>Railway</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Railway&amp;diff=172658"/>
		<updated>2019-04-23T16:38:40Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Connection to OpenTTD */ typos and grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
:&#039;&#039;For the research see [[Railway (research)]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Railway&#039;&#039;&#039; is one of the main transport methods in Factorio. Although the installation of such a network can be complicated, and requires a large amount of resource and space, it is faster and more efficient than [[Belt transport system|belts]] and [[Logistic network|robot logistics]], especially over large distances.&lt;br /&gt;
&lt;br /&gt;
Railway construction, however, is not understood instantly. It takes some time to learn the basics, such as automating transportation. Learning how to manage and maintain upkeep of a larger train network takes time and experience.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
To build a railway, tracks (also called rails) must be built for the train to ride on. Typically, this is done via the [[rail planner]], but can also be done manually. Bear in mind that rails are placed on a two-tile grid, so a rail cannot be moved by only one tile.&lt;br /&gt;
&lt;br /&gt;
=== Minimum manually operated railway ===&lt;br /&gt;
As a minimum a manually operated railway has to consist of:&lt;br /&gt;
* [[Rail]]s (tracks)&lt;br /&gt;
* [[Locomotive]]s&lt;br /&gt;
&lt;br /&gt;
Locomotives can be entered and then manually operated by standing next to them and pressing the {{Key|ENTER}} button.&lt;br /&gt;
&lt;br /&gt;
=== Switches ===&lt;br /&gt;
* There is no visual representation of a working switch, however the rails will appear to merge. Using the rail planner, the player must place a [[rail]] overlapping an existing rail to form a switch. Switches are forks in tracks that allow a train to pick between two directional options.&lt;br /&gt;
* The crossing of two straight tracks is not usable as switch, as trains have a limited turning radius. They do, however, connect [[Rail signal| signal blocks]] which helps prevent collisions.&lt;br /&gt;
* Parallel tracks do not interact with each other. However, switching from one track to the other can require extra resources if they are too close together; the track must turn away from the other parallel track and then turn back to it. This can create complicated networks of signals and, as such, one should generally not build parallel tracks unless they are spaced adequately. (Generally, 2 track widths apart works well)&lt;br /&gt;
&lt;br /&gt;
[[File:fff-140-controlled-gates.gif|thumb|An example of a safe railway crossing.]]&lt;br /&gt;
=== Crossing tracks ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be careful when crossing tracks! Trains are one of the highest damaging entities in the game, and will kill most players instantly on contact.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A checklist of proper track crossing etiquette:&lt;br /&gt;
&lt;br /&gt;
# Zoom out, so that you can see a train coming.&lt;br /&gt;
# Look left, then right.&lt;br /&gt;
# Check for signals nearby: If a [[rail signal]] suddenly jumps from green to red or green to yellow, a train is coming. Do not cross.&lt;br /&gt;
# Avoid walking near the tracks, as you do not need to be fully on the tracks to get hit.&lt;br /&gt;
# While it is possible to get into/out of a train while it is moving, a miss can cost your life. The sides of the train can still deal damage, as well as the player being able to slip between two rail cars.&lt;br /&gt;
# Heavy [[Energy shield|shields]] can be used to reduce the damage taken. In extreme cases, it is possible to stop a train with your body. This will require several shield modules to not be instantly killed, and will drain a large amount of the suit&#039;s energy.&lt;br /&gt;
# All entities with health will take damage getting hit by a train, so take care not to leave a [[car]] or [[tank]] on the tracks. However, this includes hostile forces!&lt;br /&gt;
# Trains far from a [[train stop]] will be traveling at (near) max speed, so take extra precaution when crossing and zoom out further. Trains near a [[train stop]] or signal will slow down to stop, and will be traveling slower. Trains of different configurations will also move slower or faster.&lt;br /&gt;
&lt;br /&gt;
A safe railroad crossing like the example shown in the picture can be built. This works by restricting access to the tracks when an oncoming train has the rails reserved. When the player is on the rails, the signals are reserved by the [[circuit network]], and the train must stop and wait until the player leaves the tracks. When a player is inside the area crossing the tracks, the train gates are closed so the player can&#039;t get on the tracks outside the crossing. This is to completely ensure a safe crossing, and is often used on servers.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Trains ==&lt;br /&gt;
Train components:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|{{Imagelink|Locomotive}} || {{Imagelink|Cargo wagon}} || {{Imagelink|Fluid wagon}} || {{Imagelink|Artillery wagon}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Railway-assemble-train.png|thumb|left|300px|Placing a [[Cargo wagon]] so it is attached to the train.]]&lt;br /&gt;
&lt;br /&gt;
* A train consists of at least one locomotive.&lt;br /&gt;
* Trains can have more than one locomotive, and any number of [[wagon]]s.&lt;br /&gt;
* Locomotives can be &#039;&#039;&#039;manually&#039;&#039;&#039; driven forwards or backwards, however, they are generally slower going backwards. The left and right movement keys are used to change direction at switches.&lt;br /&gt;
* Trains can only drive forwards automatically. An automatic train can drive forwards and backwards when two locomotives facing different directions are connected to the train.&lt;br /&gt;
* A train needs [[fuel]] to drive. Fuel can be added by inserters when the train is in manual mode or parked at a station, not when waiting at a signal or standing on automatic mode.&lt;br /&gt;
&lt;br /&gt;
The locomotives&#039; inventory is only used for [[fuel]]. To transport items or fluids [[cargo wagon]]s and/or [[fluid wagon]]s have to be attached to the train. To attach rolling stock, whether a wagon or a locomotive, the player may either prepare to place one near an existing train, where a green graphic will show the player that the stock will be attached, showing a connection between the train and the new stock. Alternatively, the player may manually connect rolling stock to trains with the rolling stock connect key, if the cargo wagon was placed far away from a train. Rolling stock can likewise be disconnected with the rolling stock disconnect key. The cargo wagons can be filled or emptied manually or by up to twelve adjacent [[Inserters]] (six on each side), while fluid wagons can be filled or emptied with up to three [[pump]]s, which will automatically connect to the nipples on top.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Stations ==&lt;br /&gt;
[[File:station-example-1.png|thumb|right|256px|A very minimal train station.]]&lt;br /&gt;
Station Components:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|{{Imagelink|Train stop}} || {{Imagelink|Straight rail|Rail|Rails}} || {{Imagelink|Inserter|Inserters}} or {{Imagelink|pump|pump|Pumps}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;train station&#039;&#039;&#039; is a combination of at least one [[train stop]] plus a [[storage]] and/or distribution system, used to fill or empty [[cargo wagon]]s and/or [[fluid wagon]]s, load [[fuel]] into the [[Locomotive|locomotive(s)]], load ammunition into [[artillery wagon]]s, or repair trains.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Don&#039;t mix up &#039;&#039;train stations&#039;&#039; with &#039;&#039;train stops&#039;&#039;.&#039;&#039;&#039; A train station is a concept, whereas a [[train stop]] is an item.&lt;br /&gt;
&lt;br /&gt;
[[Inserter]]s placed next to train tracks are used to load/unload trains at train stops. Inserters are the only way to automatically get items out of and into cargo and artillery wagons; pumps are the only way to automatically get fluids into and out of fluid wagons.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Signals ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| {{Imagelink|Rail signal}} || {{Imagelink|Rail chain signal}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rail signals are used to employ multiple trains automatically without the danger of trains crashing into each other. Rail signals split the network into blocks and ensure that only one train can be in every block at any time. Note that driving a train manually ignores all signals; so it is possible for automatic trains to crash into the player if the player ignores red/yellow signals. Always beware of automatic trains and give them the right of way.&lt;br /&gt;
&lt;br /&gt;
The [[Tutorial:Train signals|train signals tutorial]] contains an in-depth explanation of rail signals, blocks and deadlocks.&lt;br /&gt;
&lt;br /&gt;
=== Basic Signaling Rules ===&lt;br /&gt;
* There can only be one train in a block at any time. A train spanning multiple blocks occupies them all.&lt;br /&gt;
* A red signal means that the following block is occupied by a train.&lt;br /&gt;
* A yellow signal means that a train is approaching and already has the approval to enter the following block.&lt;br /&gt;
* [[Rail signal]]s separate a new block and reflect its state: green - free, yellow - reserved, red - occupied&lt;br /&gt;
* [[Rail chain signal]]s separate a new block and reflect the state of the next [[rail signal]](s): see above, blue - at least one of the paths is blocked, but not all&lt;br /&gt;
* A train can only pass a signal on the right of the track, or if there is a signal on both sides on the same rail segment. Of course, manual driving overrides this.&lt;br /&gt;
&lt;br /&gt;
== Automated transport ==&lt;br /&gt;
[[File:locomotive_gui.png|thumb|300px|The wait condition tab in the locomotive&#039;s GUI.]]&lt;br /&gt;
&lt;br /&gt;
Trains set on &amp;quot;Automatic&amp;quot; choose their destination stop and route on departure, and after waiting at a chain signal for five seconds, and when their destination stop disables itself by circuit condition. They choose the shortest route using a [[Railway/Train_path_finding|path finding algorithm]] that will get them to an enabled train stop with the right name, taking penalties for any apparent-at-the-time delays into account. If no such train stop exists they will skip the stop and go on to the next.&lt;br /&gt;
&lt;br /&gt;
This section covers items used to make trains automatically transport items between stations. The player should be familiar with creating a rail system.&lt;br /&gt;
&lt;br /&gt;
First, the player has to setup a rail system with at least two train stops, which are placed in the right-hand side of the  expected train arrival direction. By hovering over the train stop with the mouse you see the positions of the vehicles for better setting up the train station (including (un)loading machinery, refueling/repair installations).&lt;br /&gt;
&lt;br /&gt;
When you set up the train schedule (see below) and fuel the train, you can start the train on it&#039;s schedule by switching from manual to automatic driving mode.&lt;br /&gt;
&lt;br /&gt;
=== Train schedule ===&lt;br /&gt;
The player can set up a list of train stations in the upper window. The train will route to stops in the given order, if it&#039;s at the end it will continue with the first. Currently, it&#039;s not possible to make a one-time schedule. Stations can be added by clicking button 2 (see picture). A pop-up appears with a list of all stop names. If you select one, another pop-up appears for you to select a wait condition.&lt;br /&gt;
&lt;br /&gt;
Wait conditions are used to tell the train when to leave the station. There are 7 types of wait conditions:&lt;br /&gt;
* &#039;&#039;&#039;Time passed&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Inventory full&#039;&#039;&#039; – All inventories of the train are full.&lt;br /&gt;
* &#039;&#039;&#039;Inventory empty&#039;&#039;&#039; – Same as above, but empty.&lt;br /&gt;
* &#039;&#039;&#039;Item count&#039;&#039;&#039; – The train (all cargoes summed) contains a specific amount of a certain item.&lt;br /&gt;
* &#039;&#039;&#039;Circuit condition&#039;&#039;&#039; – The train stop is connectable to the [[circuit network]], so the signals can used for wait conditions.&lt;br /&gt;
* &#039;&#039;&#039;Inactivity&#039;&#039;&#039; – No items were added or removed for the specified amount of seconds.&lt;br /&gt;
* &#039;&#039;&#039;Fluid count&#039;&#039;&#039; – The train (all fluid wagons summed) contains a specific amount of a certain fluid.&lt;br /&gt;
* &#039;&#039;&#039;Passenger present&#039;&#039;&#039; - At least one [[player]] is inside any part of the train.&lt;br /&gt;
* &#039;&#039;&#039;Passenger not present&#039;&#039;&#039; - No players are inside any part of the train.&lt;br /&gt;
&lt;br /&gt;
Hereafter the word &amp;quot;term&amp;quot; is used to describe &#039;&#039;one&#039;&#039; type of wait condition, and the words &amp;quot;wait condition&amp;quot; are used to describe the whole set of terms (it turns a bit into maths).&lt;br /&gt;
&lt;br /&gt;
If you add more than one term, you can change the connection of those using the logical operators AND and OR (button 7). An AND condition will result in true if all terms are true. An OR condition will return true if at least one of the terms is true.&lt;br /&gt;
&lt;br /&gt;
When mixing AND and OR terms, the logic is grouped by the OR terms. When evaluating the wait condition, the first term is evaluated along with all AND terms immediately following up to but excluding the next occurring OR term. If they all evaluate true, the wait condition evaluates true. Otherwise, evaluation continues with that next occurring OR term and all AND terms immediately following it, up to the next OR term. This continues until either an OR group evaluates true and the wait condition is satisfied, or all terms have been checked.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:800px&amp;quot;&amp;gt;&lt;br /&gt;
Expand for examples&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
Wait until full, up to 30 seconds:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Full cargo inventory&lt;br /&gt;
OR 30 seconds passed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait until cargo full, &#039;&#039;or&#039;&#039; circuit condition Oil &amp;gt; 3000:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Full cargo inventory&lt;br /&gt;
OR Circuit condition - Oil &amp;gt; 3000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait until empty, &#039;&#039;and&#039;&#039; 30 seconds passed, &#039;&#039;and&#039;&#039; 5 seconds of inactivity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Empty cargo inventory&lt;br /&gt;
AND 30 seconds passed&lt;br /&gt;
AND 5 seconds of inactivity&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait until iron ore is low, &#039;&#039;or&#039;&#039; copper ore is low &#039;&#039;and&#039;&#039; at least 30 seconds passed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Cargo: Iron ore &amp;lt; 500&lt;br /&gt;
AND 30 seconds passed&lt;br /&gt;
OR Cargo: Copper ore &amp;lt; 500&lt;br /&gt;
AND 30 seconds passed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Factorio&#039;s wait condition logic is read as disjunctive normal form ([https://en.wikipedia.org/wiki/Disjunctive_normal_form DNF]), and so this last example is processed as (note the parenthesis):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;((Cargo: Iron ore &amp;lt; 500 AND 30 seconds passed) OR (Cargo: Copper ore &amp;lt; 500 AND 30 seconds passed))&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which is the same as this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;((Cargo: Iron ore &amp;lt; 500 OR Cargo: Copper ore &amp;lt; 500) AND 30 seconds passed)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is no way to write that shorter form in the current UI.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
Below are some things to verify if a rail system or train is not working.&lt;br /&gt;
&lt;br /&gt;
* Is the train fueled? Ensure that the locomotive has [[fuel]] of some kind.&lt;br /&gt;
* Misplaced or non-functional switches? Ensure that the train can plan a path through the switches.&lt;br /&gt;
* Another train on the same [[Railway#Block|block]]? Make sure the path of the train is unobstructed.&lt;br /&gt;
* Train stops placed correctly? Make sure that the yellow arrows when hovering on the stop point towards the end or exit of the stop.&lt;br /&gt;
* Is the train allowed to enter signals from the right direction? Are the signals set correctly?&lt;br /&gt;
* If a track is supposed to be two-way, the rail signals should be opposite each other. You can verify they match up by hovering the cursor over one. For a matched pair, it will show the other.&lt;br /&gt;
&lt;br /&gt;
==== No path ====&lt;br /&gt;
When trains cannot reach the target, a &amp;quot;no path&amp;quot; symbol pops up over the locomotive. Check:&lt;br /&gt;
* Can the train reach its current destination by &#039;&#039;&#039;only driving forward&#039;&#039;&#039;? Build turning slopes or place a locomotive at both ends of a train!&lt;br /&gt;
* Are the train stops standing in the right direction? Train stops must be on the right hand side of the track.&lt;br /&gt;
* If you use rail signals, check that the signals are all allowing traffic in the correct direction.&lt;br /&gt;
* Check for interruptions in the train tracks, drive to the station manually to check there are no rail parts missing. Especially near junctions these can be hard to spot if missing.&lt;br /&gt;
&lt;br /&gt;
If you are still having problems, consider:&lt;br /&gt;
* Driving the train manually, and as you pass each switch, try switching to automatic. When it works, you will know the rough area of the problem.&lt;br /&gt;
[http://imgur.com/a/Nq2Yk A pictorial summary of typical problems].&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
{{Achievement|trans-factorio-express}}&lt;br /&gt;
&lt;br /&gt;
== Connection to [https://www.openttd.org/ OpenTTD] ==&lt;br /&gt;
Factorio&#039;s railway system offers the same type of advanced railway design as [https://wiki.openttd.org/Signals#Pre-signals≈ block entry pre-signals and block exit pre-signals do in Open Transport Tycoon Deluxe].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Tutorial:Train signals]]&lt;br /&gt;
* [[Railway/Train_path_finding]]&lt;br /&gt;
* [[Locomotive]]&lt;br /&gt;
* [[Cargo wagon]]&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Railway&amp;diff=172657</id>
		<title>Railway</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Railway&amp;diff=172657"/>
		<updated>2019-04-23T16:36:35Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Connection to OpenTTD */ correct to OTTD pre-signals reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
:&#039;&#039;For the research see [[Railway (research)]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Railway&#039;&#039;&#039; is one of the main transport methods in Factorio. Although the installation of such a network can be complicated, and requires a large amount of resource and space, it is faster and more efficient than [[Belt transport system|belts]] and [[Logistic network|robot logistics]], especially over large distances.&lt;br /&gt;
&lt;br /&gt;
Railway construction, however, is not understood instantly. It takes some time to learn the basics, such as automating transportation. Learning how to manage and maintain upkeep of a larger train network takes time and experience.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
To build a railway, tracks (also called rails) must be built for the train to ride on. Typically, this is done via the [[rail planner]], but can also be done manually. Bear in mind that rails are placed on a two-tile grid, so a rail cannot be moved by only one tile.&lt;br /&gt;
&lt;br /&gt;
=== Minimum manually operated railway ===&lt;br /&gt;
As a minimum a manually operated railway has to consist of:&lt;br /&gt;
* [[Rail]]s (tracks)&lt;br /&gt;
* [[Locomotive]]s&lt;br /&gt;
&lt;br /&gt;
Locomotives can be entered and then manually operated by standing next to them and pressing the {{Key|ENTER}} button.&lt;br /&gt;
&lt;br /&gt;
=== Switches ===&lt;br /&gt;
* There is no visual representation of a working switch, however the rails will appear to merge. Using the rail planner, the player must place a [[rail]] overlapping an existing rail to form a switch. Switches are forks in tracks that allow a train to pick between two directional options.&lt;br /&gt;
* The crossing of two straight tracks is not usable as switch, as trains have a limited turning radius. They do, however, connect [[Rail signal| signal blocks]] which helps prevent collisions.&lt;br /&gt;
* Parallel tracks do not interact with each other. However, switching from one track to the other can require extra resources if they are too close together; the track must turn away from the other parallel track and then turn back to it. This can create complicated networks of signals and, as such, one should generally not build parallel tracks unless they are spaced adequately. (Generally, 2 track widths apart works well)&lt;br /&gt;
&lt;br /&gt;
[[File:fff-140-controlled-gates.gif|thumb|An example of a safe railway crossing.]]&lt;br /&gt;
=== Crossing tracks ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be careful when crossing tracks! Trains are one of the highest damaging entities in the game, and will kill most players instantly on contact.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A checklist of proper track crossing etiquette:&lt;br /&gt;
&lt;br /&gt;
# Zoom out, so that you can see a train coming.&lt;br /&gt;
# Look left, then right.&lt;br /&gt;
# Check for signals nearby: If a [[rail signal]] suddenly jumps from green to red or green to yellow, a train is coming. Do not cross.&lt;br /&gt;
# Avoid walking near the tracks, as you do not need to be fully on the tracks to get hit.&lt;br /&gt;
# While it is possible to get into/out of a train while it is moving, a miss can cost your life. The sides of the train can still deal damage, as well as the player being able to slip between two rail cars.&lt;br /&gt;
# Heavy [[Energy shield|shields]] can be used to reduce the damage taken. In extreme cases, it is possible to stop a train with your body. This will require several shield modules to not be instantly killed, and will drain a large amount of the suit&#039;s energy.&lt;br /&gt;
# All entities with health will take damage getting hit by a train, so take care not to leave a [[car]] or [[tank]] on the tracks. However, this includes hostile forces!&lt;br /&gt;
# Trains far from a [[train stop]] will be traveling at (near) max speed, so take extra precaution when crossing and zoom out further. Trains near a [[train stop]] or signal will slow down to stop, and will be traveling slower. Trains of different configurations will also move slower or faster.&lt;br /&gt;
&lt;br /&gt;
A safe railroad crossing like the example shown in the picture can be built. This works by restricting access to the tracks when an oncoming train has the rails reserved. When the player is on the rails, the signals are reserved by the [[circuit network]], and the train must stop and wait until the player leaves the tracks. When a player is inside the area crossing the tracks, the train gates are closed so the player can&#039;t get on the tracks outside the crossing. This is to completely ensure a safe crossing, and is often used on servers.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Trains ==&lt;br /&gt;
Train components:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|{{Imagelink|Locomotive}} || {{Imagelink|Cargo wagon}} || {{Imagelink|Fluid wagon}} || {{Imagelink|Artillery wagon}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Railway-assemble-train.png|thumb|left|300px|Placing a [[Cargo wagon]] so it is attached to the train.]]&lt;br /&gt;
&lt;br /&gt;
* A train consists of at least one locomotive.&lt;br /&gt;
* Trains can have more than one locomotive, and any number of [[wagon]]s.&lt;br /&gt;
* Locomotives can be &#039;&#039;&#039;manually&#039;&#039;&#039; driven forwards or backwards, however, they are generally slower going backwards. The left and right movement keys are used to change direction at switches.&lt;br /&gt;
* Trains can only drive forwards automatically. An automatic train can drive forwards and backwards when two locomotives facing different directions are connected to the train.&lt;br /&gt;
* A train needs [[fuel]] to drive. Fuel can be added by inserters when the train is in manual mode or parked at a station, not when waiting at a signal or standing on automatic mode.&lt;br /&gt;
&lt;br /&gt;
The locomotives&#039; inventory is only used for [[fuel]]. To transport items or fluids [[cargo wagon]]s and/or [[fluid wagon]]s have to be attached to the train. To attach rolling stock, whether a wagon or a locomotive, the player may either prepare to place one near an existing train, where a green graphic will show the player that the stock will be attached, showing a connection between the train and the new stock. Alternatively, the player may manually connect rolling stock to trains with the rolling stock connect key, if the cargo wagon was placed far away from a train. Rolling stock can likewise be disconnected with the rolling stock disconnect key. The cargo wagons can be filled or emptied manually or by up to twelve adjacent [[Inserters]] (six on each side), while fluid wagons can be filled or emptied with up to three [[pump]]s, which will automatically connect to the nipples on top.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Stations ==&lt;br /&gt;
[[File:station-example-1.png|thumb|right|256px|A very minimal train station.]]&lt;br /&gt;
Station Components:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|{{Imagelink|Train stop}} || {{Imagelink|Straight rail|Rail|Rails}} || {{Imagelink|Inserter|Inserters}} or {{Imagelink|pump|pump|Pumps}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;train station&#039;&#039;&#039; is a combination of at least one [[train stop]] plus a [[storage]] and/or distribution system, used to fill or empty [[cargo wagon]]s and/or [[fluid wagon]]s, load [[fuel]] into the [[Locomotive|locomotive(s)]], load ammunition into [[artillery wagon]]s, or repair trains.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Don&#039;t mix up &#039;&#039;train stations&#039;&#039; with &#039;&#039;train stops&#039;&#039;.&#039;&#039;&#039; A train station is a concept, whereas a [[train stop]] is an item.&lt;br /&gt;
&lt;br /&gt;
[[Inserter]]s placed next to train tracks are used to load/unload trains at train stops. Inserters are the only way to automatically get items out of and into cargo and artillery wagons; pumps are the only way to automatically get fluids into and out of fluid wagons.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Signals ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| {{Imagelink|Rail signal}} || {{Imagelink|Rail chain signal}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rail signals are used to employ multiple trains automatically without the danger of trains crashing into each other. Rail signals split the network into blocks and ensure that only one train can be in every block at any time. Note that driving a train manually ignores all signals; so it is possible for automatic trains to crash into the player if the player ignores red/yellow signals. Always beware of automatic trains and give them the right of way.&lt;br /&gt;
&lt;br /&gt;
The [[Tutorial:Train signals|train signals tutorial]] contains an in-depth explanation of rail signals, blocks and deadlocks.&lt;br /&gt;
&lt;br /&gt;
=== Basic Signaling Rules ===&lt;br /&gt;
* There can only be one train in a block at any time. A train spanning multiple blocks occupies them all.&lt;br /&gt;
* A red signal means that the following block is occupied by a train.&lt;br /&gt;
* A yellow signal means that a train is approaching and already has the approval to enter the following block.&lt;br /&gt;
* [[Rail signal]]s separate a new block and reflect its state: green - free, yellow - reserved, red - occupied&lt;br /&gt;
* [[Rail chain signal]]s separate a new block and reflect the state of the next [[rail signal]](s): see above, blue - at least one of the paths is blocked, but not all&lt;br /&gt;
* A train can only pass a signal on the right of the track, or if there is a signal on both sides on the same rail segment. Of course, manual driving overrides this.&lt;br /&gt;
&lt;br /&gt;
== Automated transport ==&lt;br /&gt;
[[File:locomotive_gui.png|thumb|300px|The wait condition tab in the locomotive&#039;s GUI.]]&lt;br /&gt;
&lt;br /&gt;
Trains set on &amp;quot;Automatic&amp;quot; choose their destination stop and route on departure, and after waiting at a chain signal for five seconds, and when their destination stop disables itself by circuit condition. They choose the shortest route using a [[Railway/Train_path_finding|path finding algorithm]] that will get them to an enabled train stop with the right name, taking penalties for any apparent-at-the-time delays into account. If no such train stop exists they will skip the stop and go on to the next.&lt;br /&gt;
&lt;br /&gt;
This section covers items used to make trains automatically transport items between stations. The player should be familiar with creating a rail system.&lt;br /&gt;
&lt;br /&gt;
First, the player has to setup a rail system with at least two train stops, which are placed in the right-hand side of the  expected train arrival direction. By hovering over the train stop with the mouse you see the positions of the vehicles for better setting up the train station (including (un)loading machinery, refueling/repair installations).&lt;br /&gt;
&lt;br /&gt;
When you set up the train schedule (see below) and fuel the train, you can start the train on it&#039;s schedule by switching from manual to automatic driving mode.&lt;br /&gt;
&lt;br /&gt;
=== Train schedule ===&lt;br /&gt;
The player can set up a list of train stations in the upper window. The train will route to stops in the given order, if it&#039;s at the end it will continue with the first. Currently, it&#039;s not possible to make a one-time schedule. Stations can be added by clicking button 2 (see picture). A pop-up appears with a list of all stop names. If you select one, another pop-up appears for you to select a wait condition.&lt;br /&gt;
&lt;br /&gt;
Wait conditions are used to tell the train when to leave the station. There are 7 types of wait conditions:&lt;br /&gt;
* &#039;&#039;&#039;Time passed&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Inventory full&#039;&#039;&#039; – All inventories of the train are full.&lt;br /&gt;
* &#039;&#039;&#039;Inventory empty&#039;&#039;&#039; – Same as above, but empty.&lt;br /&gt;
* &#039;&#039;&#039;Item count&#039;&#039;&#039; – The train (all cargoes summed) contains a specific amount of a certain item.&lt;br /&gt;
* &#039;&#039;&#039;Circuit condition&#039;&#039;&#039; – The train stop is connectable to the [[circuit network]], so the signals can used for wait conditions.&lt;br /&gt;
* &#039;&#039;&#039;Inactivity&#039;&#039;&#039; – No items were added or removed for the specified amount of seconds.&lt;br /&gt;
* &#039;&#039;&#039;Fluid count&#039;&#039;&#039; – The train (all fluid wagons summed) contains a specific amount of a certain fluid.&lt;br /&gt;
* &#039;&#039;&#039;Passenger present&#039;&#039;&#039; - At least one [[player]] is inside any part of the train.&lt;br /&gt;
* &#039;&#039;&#039;Passenger not present&#039;&#039;&#039; - No players are inside any part of the train.&lt;br /&gt;
&lt;br /&gt;
Hereafter the word &amp;quot;term&amp;quot; is used to describe &#039;&#039;one&#039;&#039; type of wait condition, and the words &amp;quot;wait condition&amp;quot; are used to describe the whole set of terms (it turns a bit into maths).&lt;br /&gt;
&lt;br /&gt;
If you add more than one term, you can change the connection of those using the logical operators AND and OR (button 7). An AND condition will result in true if all terms are true. An OR condition will return true if at least one of the terms is true.&lt;br /&gt;
&lt;br /&gt;
When mixing AND and OR terms, the logic is grouped by the OR terms. When evaluating the wait condition, the first term is evaluated along with all AND terms immediately following up to but excluding the next occurring OR term. If they all evaluate true, the wait condition evaluates true. Otherwise, evaluation continues with that next occurring OR term and all AND terms immediately following it, up to the next OR term. This continues until either an OR group evaluates true and the wait condition is satisfied, or all terms have been checked.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:800px&amp;quot;&amp;gt;&lt;br /&gt;
Expand for examples&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
Wait until full, up to 30 seconds:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Full cargo inventory&lt;br /&gt;
OR 30 seconds passed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait until cargo full, &#039;&#039;or&#039;&#039; circuit condition Oil &amp;gt; 3000:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Full cargo inventory&lt;br /&gt;
OR Circuit condition - Oil &amp;gt; 3000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait until empty, &#039;&#039;and&#039;&#039; 30 seconds passed, &#039;&#039;and&#039;&#039; 5 seconds of inactivity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Empty cargo inventory&lt;br /&gt;
AND 30 seconds passed&lt;br /&gt;
AND 5 seconds of inactivity&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait until iron ore is low, &#039;&#039;or&#039;&#039; copper ore is low &#039;&#039;and&#039;&#039; at least 30 seconds passed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Cargo: Iron ore &amp;lt; 500&lt;br /&gt;
AND 30 seconds passed&lt;br /&gt;
OR Cargo: Copper ore &amp;lt; 500&lt;br /&gt;
AND 30 seconds passed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Factorio&#039;s wait condition logic is read as disjunctive normal form ([https://en.wikipedia.org/wiki/Disjunctive_normal_form DNF]), and so this last example is processed as (note the parenthesis):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;((Cargo: Iron ore &amp;lt; 500 AND 30 seconds passed) OR (Cargo: Copper ore &amp;lt; 500 AND 30 seconds passed))&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which is the same as this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;((Cargo: Iron ore &amp;lt; 500 OR Cargo: Copper ore &amp;lt; 500) AND 30 seconds passed)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is no way to write that shorter form in the current UI.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
Below are some things to verify if a rail system or train is not working.&lt;br /&gt;
&lt;br /&gt;
* Is the train fueled? Ensure that the locomotive has [[fuel]] of some kind.&lt;br /&gt;
* Misplaced or non-functional switches? Ensure that the train can plan a path through the switches.&lt;br /&gt;
* Another train on the same [[Railway#Block|block]]? Make sure the path of the train is unobstructed.&lt;br /&gt;
* Train stops placed correctly? Make sure that the yellow arrows when hovering on the stop point towards the end or exit of the stop.&lt;br /&gt;
* Is the train allowed to enter signals from the right direction? Are the signals set correctly?&lt;br /&gt;
* If a track is supposed to be two-way, the rail signals should be opposite each other. You can verify they match up by hovering the cursor over one. For a matched pair, it will show the other.&lt;br /&gt;
&lt;br /&gt;
==== No path ====&lt;br /&gt;
When trains cannot reach the target, a &amp;quot;no path&amp;quot; symbol pops up over the locomotive. Check:&lt;br /&gt;
* Can the train reach its current destination by &#039;&#039;&#039;only driving forward&#039;&#039;&#039;? Build turning slopes or place a locomotive at both ends of a train!&lt;br /&gt;
* Are the train stops standing in the right direction? Train stops must be on the right hand side of the track.&lt;br /&gt;
* If you use rail signals, check that the signals are all allowing traffic in the correct direction.&lt;br /&gt;
* Check for interruptions in the train tracks, drive to the station manually to check there are no rail parts missing. Especially near junctions these can be hard to spot if missing.&lt;br /&gt;
&lt;br /&gt;
If you are still having problems, consider:&lt;br /&gt;
* Driving the train manually, and as you pass each switch, try switching to automatic. When it works, you will know the rough area of the problem.&lt;br /&gt;
[http://imgur.com/a/Nq2Yk A pictorial summary of typical problems].&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
{{Achievement|trans-factorio-express}}&lt;br /&gt;
&lt;br /&gt;
== Connection to [https://www.openttd.org/ OpenTTD] ==&lt;br /&gt;
Factorio&#039;s railway system offers the same type of advanced railway design as [https://wiki.openttd.org/Signals#Pre-signals≈ Block Entry Pre-signal and Block Exit pre-signal pre-singals in Open Transport Tycoon Deluxe].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Tutorial:Train signals]]&lt;br /&gt;
* [[Railway/Train_path_finding]]&lt;br /&gt;
* [[Locomotive]]&lt;br /&gt;
* [[Cargo wagon]]&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/MapGenPresets&amp;diff=172591</id>
		<title>Prototype/MapGenPresets</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/MapGenPresets&amp;diff=172591"/>
		<updated>2019-04-20T21:50:22Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: move example to own header to avoid confusion on its scope. added min/max counts to presets and prototype&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;map-gen-presets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The available map gen presets. Only 1 instance of this prototype can exist.&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
&lt;br /&gt;
=== type ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Must be &amp;quot;map-gen-presets&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== name ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Name of the map-gen-presets. Must be &amp;quot;default&amp;quot; since only one instances of this prototype can be defined.&lt;br /&gt;
&lt;br /&gt;
== Presets ==&lt;br /&gt;
Presets are defined as uniquely named properties of the prototype with a value of [[Types/MapGenPreset]]. 0 or more named presets can be specified within the prototype.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Example full prototype.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  type = &amp;quot;map-gen-presets&amp;quot;,&lt;br /&gt;
  name = &amp;quot;default&amp;quot;,&lt;br /&gt;
  [&amp;quot;marathon&amp;quot;] =&lt;br /&gt;
  {&lt;br /&gt;
    order = &amp;quot;c&amp;quot;,&lt;br /&gt;
    basic_settings =&lt;br /&gt;
    {&lt;br /&gt;
      property_expression_names = {},&lt;br /&gt;
    },&lt;br /&gt;
    advanced_settings =&lt;br /&gt;
    {&lt;br /&gt;
      difficulty_settings =&lt;br /&gt;
      {&lt;br /&gt;
        recipe_difficulty = defines.difficulty_settings.recipe_difficulty.expensive,&lt;br /&gt;
        technology_difficulty = defines.difficulty_settings.technology_difficulty.expensive,&lt;br /&gt;
        technology_price_multiplier = 4&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  [&amp;quot;island&amp;quot;] =&lt;br /&gt;
  {&lt;br /&gt;
    order = &amp;quot;g&amp;quot;,&lt;br /&gt;
    basic_settings =&lt;br /&gt;
    {&lt;br /&gt;
      property_expression_names =&lt;br /&gt;
      {&lt;br /&gt;
        elevation = &amp;quot;0_17-island&amp;quot;,&lt;br /&gt;
      },&lt;br /&gt;
      autoplace_controls = {},&lt;br /&gt;
      terrain_segmentation = 1,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/DontUseEntityInEnergyProductionAchievement&amp;diff=172590</id>
		<title>Prototype/DontUseEntityInEnergyProductionAchievement</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/DontUseEntityInEnergyProductionAchievement&amp;diff=172590"/>
		<updated>2019-04-20T21:23:54Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: excluded and include both support a string or a table of strings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;dont-use-entity-in-energy-production-achievement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This prototype definition is used for receiving an achievement when the player finishes the game without receiving energy from a specific energy source. This is an extension of [[Prototype/Achievement]].&lt;br /&gt;
== Properties ==&lt;br /&gt;
=== last_hour_only ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== minimum_energy_produced ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0W&lt;br /&gt;
&lt;br /&gt;
=== excluded ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]] or [[Types/table]] of [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
This will &#039;&#039;&#039;not&#039;&#039;&#039; disable the achievement, if this entity is placed, and you have received any amount of power from it.&lt;br /&gt;
&lt;br /&gt;
  excluded = {&amp;quot;steam-engine&amp;quot;, &amp;quot;steam-turbine&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
=== included ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]] or [[Types/table]] of [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
This will disable the achievement, if this entity is placed, and you have received any amount of power from it. If you finish the game without receiving power from this entity, you receive the achievement.&lt;br /&gt;
&lt;br /&gt;
  included = &amp;quot;solar-panels&amp;quot;,&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/MapGenPresets&amp;diff=172589</id>
		<title>Prototype/MapGenPresets</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/MapGenPresets&amp;diff=172589"/>
		<updated>2019-04-20T21:01:06Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Presets */ updated example to be from base game as per Bilka&amp;#039;s request&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;map-gen-presets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The available map gen presets.&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
&lt;br /&gt;
=== type ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Must be &amp;quot;map-gen-presets&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== name ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Name of the map-gen-presets. Must be &amp;quot;default&amp;quot; since only one instances of this prototype can be defined.&lt;br /&gt;
&lt;br /&gt;
== Presets ==&lt;br /&gt;
Presets are defined as uniquely named properties of the prototype with a value of [[Types/MapGenPreset]].&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  type = &amp;quot;map-gen-presets&amp;quot;,&lt;br /&gt;
  name = &amp;quot;default&amp;quot;,&lt;br /&gt;
  [&amp;quot;marathon&amp;quot;] =&lt;br /&gt;
  {&lt;br /&gt;
    order = &amp;quot;c&amp;quot;,&lt;br /&gt;
    basic_settings =&lt;br /&gt;
    {&lt;br /&gt;
      property_expression_names = {},&lt;br /&gt;
    },&lt;br /&gt;
    advanced_settings =&lt;br /&gt;
    {&lt;br /&gt;
      difficulty_settings =&lt;br /&gt;
      {&lt;br /&gt;
        recipe_difficulty = defines.difficulty_settings.recipe_difficulty.expensive,&lt;br /&gt;
        technology_difficulty = defines.difficulty_settings.technology_difficulty.expensive,&lt;br /&gt;
        technology_price_multiplier = 4&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  [&amp;quot;island&amp;quot;] =&lt;br /&gt;
  {&lt;br /&gt;
    order = &amp;quot;g&amp;quot;,&lt;br /&gt;
    basic_settings =&lt;br /&gt;
    {&lt;br /&gt;
      property_expression_names =&lt;br /&gt;
      {&lt;br /&gt;
        elevation = &amp;quot;0_17-island&amp;quot;,&lt;br /&gt;
      },&lt;br /&gt;
      autoplace_controls = {},&lt;br /&gt;
      terrain_segmentation = 1,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/MapGenPresets&amp;diff=172588</id>
		<title>Prototype/MapGenPresets</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/MapGenPresets&amp;diff=172588"/>
		<updated>2019-04-20T20:49:56Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* Presets */ add Example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;map-gen-presets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The available map gen presets.&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
&lt;br /&gt;
=== type ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Must be &amp;quot;map-gen-presets&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== name ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Name of the map-gen-presets. Must be &amp;quot;default&amp;quot; since only one instances of this prototype can be defined.&lt;br /&gt;
&lt;br /&gt;
== Presets ==&lt;br /&gt;
Presets are defined as uniquely named properties of the prototype with a value of [[Types/MapGenPreset]].&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  type = &amp;quot;map-gen-presets&amp;quot;,&lt;br /&gt;
  name = &amp;quot;default&amp;quot;,&lt;br /&gt;
  [&amp;quot;PRESET NAME 1&amp;quot;] = {&lt;br /&gt;
    order = &amp;quot;a&amp;quot;,&lt;br /&gt;
    water = &amp;quot;none&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  [&amp;quot;PRESET NAME 2&amp;quot;] = {&lt;br /&gt;
    order = &amp;quot;b&amp;quot;,&lt;br /&gt;
    water = &amp;quot;high&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/MapGenPresets&amp;diff=172587</id>
		<title>Prototype/MapGenPresets</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/MapGenPresets&amp;diff=172587"/>
		<updated>2019-04-20T20:48:18Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: clarify presets as a special thing as they are defined so differently to all other prototype properties.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Prototype type: &#039;&#039;&#039;map-gen-presets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The available map gen presets.&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
&lt;br /&gt;
=== type ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Must be &amp;quot;map-gen-presets&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== name ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Name of the map-gen-presets. Must be &amp;quot;default&amp;quot; since only one instances of this prototype can be defined.&lt;br /&gt;
&lt;br /&gt;
== Presets ==&lt;br /&gt;
Presets are defined as uniquely named properties of the prototype with a value of [[Types/MapGenPreset]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  type = &amp;quot;map-gen-presets&amp;quot;,&lt;br /&gt;
  name = &amp;quot;default&amp;quot;,&lt;br /&gt;
  [&amp;quot;PRESET NAME 1&amp;quot;] = {&lt;br /&gt;
    order = &amp;quot;a&amp;quot;,&lt;br /&gt;
    water = &amp;quot;none&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  [&amp;quot;PRESET NAME 2&amp;quot;] = {&lt;br /&gt;
    order = &amp;quot;b&amp;quot;,&lt;br /&gt;
    water = &amp;quot;high&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/CollisionMask&amp;diff=172516</id>
		<title>Types/CollisionMask</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/CollisionMask&amp;diff=172516"/>
		<updated>2019-04-14T12:51:34Z</updated>

		<summary type="html">&lt;p&gt;Muppet9010: /* &amp;quot;not-colliding-with-itself&amp;quot; */ clarify after developer response and further testing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The collision mask is specified as an Array ([[Types/table]]) of strings. Every entry is a specification of one layer the object collides with or a special collision option.&lt;br /&gt;
&lt;br /&gt;
== Layers ==&lt;br /&gt;
* ground-tile&lt;br /&gt;
* water-tile&lt;br /&gt;
* resource-layer&lt;br /&gt;
* doodad-layer&lt;br /&gt;
* floor-layer&lt;br /&gt;
* item-layer&lt;br /&gt;
* ghost-layer&lt;br /&gt;
* object-layer&lt;br /&gt;
* player-layer&lt;br /&gt;
* train-layer&lt;br /&gt;
* layer-11&lt;br /&gt;
* layer-12&lt;br /&gt;
* layer-13&lt;br /&gt;
* layer-14&lt;br /&gt;
* layer-15&lt;br /&gt;
&lt;br /&gt;
Layer-11 through layer-15 are currently unused by the core game.&lt;br /&gt;
&lt;br /&gt;
== Collision options ==&lt;br /&gt;
These are not collision masks, instead they control other aspects of collision, but they are still specified here.&lt;br /&gt;
=== &amp;quot;not-colliding-with-itself&amp;quot; ===&lt;br /&gt;
Any 2 entities that both have this option enabled on their prototype and have an identical collision mask layers list will not collide. Other collision mask options are not included in the identical layer list check. This does mean that 2 different prototypes with the same collision mask layers and this option enabled will not collide.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;consider-tile-transitions&amp;quot; ===&lt;br /&gt;
=== &amp;quot;colliding-with-tiles-only&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
== Default collision masks ==&lt;br /&gt;
The default collision masks of all entity types can be found [[Prototype/Entity#collision_mask|here]].&lt;br /&gt;
&lt;br /&gt;
Example (Most common collision mask of buildings):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;collision_mask = { &amp;quot;item-layer&amp;quot;, &amp;quot;object-layer&amp;quot;, &amp;quot;player-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Muppet9010</name></author>
	</entry>
</feed>