Merge branches '6.0' and 'master' of https://github.com/Anuken/Mindustry into 6.0

# Conflicts:
#	core/assets/sprites/block_colors.png
#	core/assets/sprites/sprites.atlas
#	core/assets/sprites/sprites.png
#	core/assets/sprites/sprites3.png
#	core/assets/sprites/sprites5.png
#	core/src/io/anuke/mindustry/graphics/Shaders.java
#	gradle.properties
This commit is contained in:
Anuken
2019-12-01 17:42:56 -05:00
178 changed files with 4412 additions and 1699 deletions

85
.github/Mindustry-CodeStyle-IJ.xml vendored Normal file
View File

@@ -0,0 +1,85 @@
<code_scheme name="Default" version="173">
<option name="AUTODETECT_INDENTS" value="false" />
<option name="RIGHT_MARGIN" value="300" />
<GroovyCodeStyleSettings>
<option name="SPACE_BEFORE_CLOSURE_LBRACE" value="false" />
</GroovyCodeStyleSettings>
<JavaCodeStyleSettings>
<option name="SPACE_AROUND_TYPE_BOUNDS_IN_TYPE_PARAMETERS" value="false" />
<option name="INSERT_INNER_CLASS_IMPORTS" value="true" />
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="1" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="2" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value>
<package name="java.awt" withSubpackages="false" static="false" />
<package name="io.anuke.mindustry" withSubpackages="false" static="true" />
<package name="javax.swing" withSubpackages="false" static="false" />
</value>
</option>
<option name="JD_ALIGN_PARAM_COMMENTS" value="false" />
<option name="JD_ALIGN_EXCEPTION_COMMENTS" value="false" />
<option name="JD_ADD_BLANK_AFTER_DESCRIPTION" value="false" />
<option name="JD_DO_NOT_WRAP_ONE_LINE_COMMENTS" value="true" />
<option name="JD_KEEP_EMPTY_PARAMETER" value="false" />
<option name="JD_KEEP_EMPTY_EXCEPTION" value="false" />
<option name="JD_KEEP_EMPTY_RETURN" value="false" />
</JavaCodeStyleSettings>
<Properties>
<option name="SPACES_AROUND_KEY_VALUE_DELIMITER" value="true" />
<option name="KEEP_BLANK_LINES" value="true" />
</Properties>
<codeStyleSettings language="Groovy">
<option name="SPACE_BEFORE_IF_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_WHILE_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_FOR_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_TRY_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_CATCH_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_SWITCH_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_SYNCHRONIZED_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_CLASS_LBRACE" value="false" />
<option name="SPACE_BEFORE_METHOD_LBRACE" value="false" />
<option name="SPACE_BEFORE_IF_LBRACE" value="false" />
<option name="SPACE_BEFORE_ELSE_LBRACE" value="false" />
<option name="SPACE_BEFORE_WHILE_LBRACE" value="false" />
<option name="SPACE_BEFORE_FOR_LBRACE" value="false" />
<option name="SPACE_BEFORE_DO_LBRACE" value="false" />
<option name="SPACE_BEFORE_SWITCH_LBRACE" value="false" />
<option name="SPACE_BEFORE_TRY_LBRACE" value="false" />
<option name="SPACE_BEFORE_CATCH_LBRACE" value="false" />
<option name="SPACE_BEFORE_FINALLY_LBRACE" value="false" />
<option name="SPACE_BEFORE_SYNCHRONIZED_LBRACE" value="false" />
<option name="SPACE_BEFORE_ELSE_KEYWORD" value="false" />
<option name="SPACE_BEFORE_WHILE_KEYWORD" value="false" />
<option name="SPACE_BEFORE_CATCH_KEYWORD" value="false" />
<option name="SPACE_BEFORE_FINALLY_KEYWORD" value="false" />
</codeStyleSettings>
<codeStyleSettings language="JAVA">
<option name="SPACE_AFTER_TYPE_CAST" value="false" />
<option name="SPACE_BEFORE_IF_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_WHILE_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_FOR_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_TRY_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_CATCH_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_SWITCH_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_SYNCHRONIZED_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_CLASS_LBRACE" value="false" />
<option name="SPACE_BEFORE_METHOD_LBRACE" value="false" />
<option name="SPACE_BEFORE_IF_LBRACE" value="false" />
<option name="SPACE_BEFORE_ELSE_LBRACE" value="false" />
<option name="SPACE_BEFORE_WHILE_LBRACE" value="false" />
<option name="SPACE_BEFORE_FOR_LBRACE" value="false" />
<option name="SPACE_BEFORE_DO_LBRACE" value="false" />
<option name="SPACE_BEFORE_SWITCH_LBRACE" value="false" />
<option name="SPACE_BEFORE_TRY_LBRACE" value="false" />
<option name="SPACE_BEFORE_CATCH_LBRACE" value="false" />
<option name="SPACE_BEFORE_FINALLY_LBRACE" value="false" />
<option name="SPACE_BEFORE_SYNCHRONIZED_LBRACE" value="false" />
<option name="SPACE_BEFORE_ELSE_KEYWORD" value="false" />
<option name="SPACE_BEFORE_WHILE_KEYWORD" value="false" />
<option name="SPACE_BEFORE_CATCH_KEYWORD" value="false" />
<option name="SPACE_BEFORE_FINALLY_KEYWORD" value="false" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="0" />
</indentOptions>
</codeStyleSettings>
</code_scheme>

69
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,69 @@
# Contributing
This is for code contributions. For translations, see [TRANSLATING](TRANSLATING.md).
## Basic Guidelines
#### Use an IDE.
Specifically, IntelliJ IDEA. Download the (free) Community Edition of it [here](https://www.jetbrains.com/idea/download/). Some people use other tools, like VS Code, but I would personally not recommend them for Java development.
#### Always test your changes.
Do not submit something without at least running the game to see if it compiles.
If you are submitting a new block, make sure it has a name and description, and that it works correctly in-game. If you are changing existing block mechanics, test them out first.
#### Do not make large changes before discussing them first.
If you are interested in adding a large mechanic/feature or changing large amounts of code, first contact me (Anuken) via [Discord](https://discord.gg/mindustry) (preferred method) or via e-mail (*anukendev@gmail.com*).
For most changes, this should not be necessary. I just want to know if you're doing something big so I can offer advice and/or make sure you're not wasting your time on it.
## Style Guidelines
#### Follow the formatting guidelines.
This means:
- No spaces around parentheses: `if(condition){`, `SomeType s = (SomeType)object`
- Same-line braces.
- 4 spaces indentation
- `camelCase`, **even for constants or enums**. Why? Because `SCREAMING_CASE` is ugly, annoying to type and does not achieve anything useful. Constants are *less* dangerous than variables, not more.
- No underscores for anything. (Yes, I know `Bindings` violates this principle, but that's for legacy reasons and really should be cleaned up some day)
Import [this style file](.github/Mindustry-CodeStyle-IJ.xml) into IntelliJ to get correct formatting when developing Mindustry.
#### Do not use incompatible Java features (java.util.function, java.awt).
Android [does not support](https://developer.android.com/studio/write/java8-support#supported_features) many of Java 8's features, such as the packages `java.util.function`, `java.util.stream` or `forEach` in collections. Do not use these in your code.
If you need to use functional interfaces, use the ones in `io.anuke.arc.func`, which are more or less the same with different naming schemes.
The same applies to any class *outside* of the standard `java.[n]io` / `java.net` / `java.util` packages: Most of them are not supported.
`java.awt` is one of these packages: do not use it, ever. It is not supported on any platform, even desktop - the entire package is removed during JRE minimization.
In general, if you are using IntelliJ, you should be warned about platform incompatiblities.
#### Use `arc` collections and classes when possible.
Instead of using `java.util.List`, `java.util.HashMap`, and other standard Java collections, use `Array`, `ObjectMap` and other equivalents from `io.anuke.arc.collection`.
Why? Because that's what the rest of the codebase uses, and the standard collections have a lot of cruft and usability issues associated with them.
In the rare case that concurrency is required, you may use the standard Java classes for that purpose (e.g. `CopyOnWriteArrayList`).
What you'll usually need to change:
- `HashSet` -> `ObjectSet`
- `HashMap` -> `ObjectMap`
- `List` / `ArrayList` / `Stack` -> `Array`
- `java.util.Queue` -> `io.anuke.arc.collection.Queue`
- *Many others*
#### Avoid boxed types (Integer, Boolean)
Never create variables or collections with boxed types `Array<Integer>` or `ObjectMap<Integer, ...>`. Use the collections specialized for this task, e.g. `IntArray` and `IntMap`.
#### Do not allocate anything if possible.
Never allocate `new` objects in the main loop. If you absolutely require new objects, use `Pools` to obtain and free object instances.
Otherwise, use the `Tmp` variables for things like vector/shape operations, or create `static` variables for re-use.
If using a list, make it a static variable and clear it every time it is used. Re-use as much as possible.
#### Avoid bloated code and unnecessary getters/setters.
This is situational, but in essence what it means is to avoid using any sort of getters and setters unless absolutely necessary. Public or protected fields should suffice for most things.
If something needs to be encapsulated in the future, IntelliJ can handle it with a few clicks.
#### Do not create methods unless necessary.
Unless a block of code is very large or used in more than 1-2 places, don't split it up into a separate method. Making unnecessary methods only creates confusion, and may slightly decrease performance.

View File

@@ -1,4 +1,4 @@
![Logo](core/assets/sprites/logo.png) ![Logo](core/assets-raw/sprites/ui/logo.png)
[![Build Status](https://travis-ci.org/Anuken/Mindustry.svg?branch=master)](https://travis-ci.org/Anuken/Mindustry) [![Build Status](https://travis-ci.org/Anuken/Mindustry.svg?branch=master)](https://travis-ci.org/Anuken/Mindustry)
[![Discord](https://img.shields.io/discord/391020510269669376.svg)](https://discord.gg/mindustry) [![Discord](https://img.shields.io/discord/391020510269669376.svg)](https://discord.gg/mindustry)
@@ -8,6 +8,10 @@ A sandbox tower defense game written in Java.
_[Trello Board](https://trello.com/b/aE2tcUwF/mindustry-40-plans)_ _[Trello Board](https://trello.com/b/aE2tcUwF/mindustry-40-plans)_
_[Wiki](https://mindustrygame.github.io/wiki)_ _[Wiki](https://mindustrygame.github.io/wiki)_
### Contributing
See [CONTRIBUTING](CONTRIBUTING.md).
### Building ### Building
Bleeding-edge live builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases). Old builds might still be on [jenkins](https://jenkins.hellomouse.net/job/mindustry/). Bleeding-edge live builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases). Old builds might still be on [jenkins](https://jenkins.hellomouse.net/job/mindustry/).

View File

@@ -8,7 +8,7 @@ buildscript{
} }
dependencies{ dependencies{
classpath 'com.android.tools.build:gradle:3.5.2' classpath 'com.android.tools.build:gradle:3.4.1'
} }
} }
@@ -69,7 +69,7 @@ android{
} }
defaultConfig{ defaultConfig{
Properties props = new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p } Properties props = loadVersionProps()
Integer vcode = props['androidBuildCode']?.toInteger() ?: 1 Integer vcode = props['androidBuildCode']?.toInteger() ?: 1
def versionNameResult = "$versionNumber-$versionType-${getBuildVersion().replace(" ", "-")}" def versionNameResult = "$versionNumber-$versionType-${getBuildVersion().replace(" ", "-")}"

View File

@@ -9,7 +9,7 @@ buildscript{
} }
dependencies{ dependencies{
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.8-SNAPSHOT' classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.8'
classpath "com.badlogicgames.gdx:gdx-tools:1.9.10" classpath "com.badlogicgames.gdx:gdx-tools:1.9.10"
classpath "com.github.anuken:packr:-SNAPSHOT" classpath "com.github.anuken:packr:-SNAPSHOT"
} }
@@ -17,7 +17,7 @@ buildscript{
allprojects{ allprojects{
version = 'release' version = 'release'
apply plugin: 'maven-publish' apply plugin: 'maven'
group = 'com.github.Anuken' group = 'com.github.Anuken'
ext{ ext{
@@ -26,10 +26,14 @@ allprojects{
if(!project.hasProperty("versionType")) versionType = 'official' if(!project.hasProperty("versionType")) versionType = 'official'
appName = 'Mindustry' appName = 'Mindustry'
gdxVersion = '1.9.10' gdxVersion = '1.9.10'
roboVMVersion = '2.3.8-SNAPSHOT' roboVMVersion = '2.3.8'
steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256' steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256'
arcHash = null arcHash = null
loadVersionProps = {
return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p }
}
debugged = { debugged = {
return new File(projectDir.parent, '../Mindustry-Debug').exists() && !project.hasProperty("release") && project.hasProperty("args") return new File(projectDir.parent, '../Mindustry-Debug').exists() && !project.hasProperty("release") && project.hasProperty("args")
} }
@@ -200,6 +204,27 @@ project(":core"){
writeVersion() writeVersion()
} }
task copyChangelog{
doLast{
def props = loadVersionProps()
def androidVersion = props['androidBuildCode'].toInteger() - 2
def buildVersion = props["build"]
def loglines = file("../changelog").text.split("\n")
def maxLength = 460
def androidLogList = loglines.findAll{ line -> !line.endsWith("]") || line.endsWith("[Mobile]") || line.endsWith("[Android]")}
def result = ""
androidLogList.forEach({line ->
if(result.length() + line.length() + 1 < maxLength){
result += line + "\n"
}
})
def changelogs = file("../fastlane/metadata/android/en-US/changelogs/")
new File(changelogs, buildVersion + ".txt").text = (result)
new File(changelogs, androidVersion + ".txt").text = (result)
}
}
dependencies{ dependencies{
if(System.properties["user.name"] == "anuke"){ if(System.properties["user.name"] == "anuke"){
task cleanGen{ task cleanGen{

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -10,6 +10,7 @@ link.dev-builds.description = Unstable development builds
link.trello.description = Official Trello board for planned features link.trello.description = Official Trello board for planned features
link.itch.io.description = itch.io page with PC downloads link.itch.io.description = itch.io page with PC downloads
link.google-play.description = Google Play store listing link.google-play.description = Google Play store listing
link.f-droid.description = F-Droid catalogue listing
link.wiki.description = Official Mindustry wiki link.wiki.description = Official Mindustry wiki
linkfail = Failed to open link!\nThe URL has been copied to your clipboard. linkfail = Failed to open link!\nThe URL has been copied to your clipboard.
screenshot = Screenshot saved to {0} screenshot = Screenshot saved to {0}
@@ -78,6 +79,7 @@ maps.browse = Browse Maps
continue = Continue continue = Continue
maps.none = [lightgray]No maps found! maps.none = [lightgray]No maps found!
invalid = Invalid invalid = Invalid
pickcolor = Pick Color
preparingconfig = Preparing Config preparingconfig = Preparing Config
preparingcontent = Preparing Content preparingcontent = Preparing Content
uploadingcontent = Uploading Content uploadingcontent = Uploading Content
@@ -97,6 +99,7 @@ mod.enabled = [lightgray]Enabled
mod.disabled = [scarlet]Disabled mod.disabled = [scarlet]Disabled
mod.disable = Disable mod.disable = Disable
mod.delete.error = Unable to delete mod. File may be in use. mod.delete.error = Unable to delete mod. File may be in use.
mod.requiresversion = [scarlet]Requires game version: [accent]{0}
mod.missingdependencies = [scarlet]Missing dependencies: {0} mod.missingdependencies = [scarlet]Missing dependencies: {0}
mod.nowdisabled = [scarlet]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled. mod.nowdisabled = [scarlet]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled.
mod.enable = Enable mod.enable = Enable
@@ -497,6 +500,7 @@ settings.language = Language
settings.data = Game Data settings.data = Game Data
settings.reset = Reset to Defaults settings.reset = Reset to Defaults
settings.rebind = Rebind settings.rebind = Rebind
settings.resetKey = Reset
settings.controls = Controls settings.controls = Controls
settings.game = Game settings.game = Game
settings.sound = Sound settings.sound = Sound
@@ -590,6 +594,8 @@ unit.persecond = /sec
unit.timesspeed = x speed unit.timesspeed = x speed
unit.percent = % unit.percent = %
unit.items = items unit.items = items
unit.thousands = k
unit.millions = mil
category.general = General category.general = General
category.power = Power category.power = Power
category.liquids = Liquids category.liquids = Liquids
@@ -628,9 +634,12 @@ setting.conveyorpathfinding.name = Conveyor Placement Pathfinding
setting.sensitivity.name = Controller Sensitivity setting.sensitivity.name = Controller Sensitivity
setting.saveinterval.name = Save Interval setting.saveinterval.name = Save Interval
setting.seconds = {0} seconds setting.seconds = {0} seconds
setting.blockselecttimeout.name = Block Select Timeout
setting.milliseconds = {0} milliseconds
setting.fullscreen.name = Fullscreen setting.fullscreen.name = Fullscreen
setting.borderlesswindow.name = Borderless Window[lightgray] (may require restart) setting.borderlesswindow.name = Borderless Window[lightgray] (may require restart)
setting.fps.name = Show FPS & Ping setting.fps.name = Show FPS & Ping
setting.blockselectkeys.name = Show Block Select Keys
setting.vsync.name = VSync setting.vsync.name = VSync
setting.pixelate.name = Pixelate[lightgray] (disables animations) setting.pixelate.name = Pixelate[lightgray] (disables animations)
setting.minimap.name = Show Minimap setting.minimap.name = Show Minimap
@@ -659,17 +668,36 @@ category.multiplayer.name = Multiplayer
command.attack = Attack command.attack = Attack
command.rally = Rally command.rally = Rally
command.retreat = Retreat command.retreat = Retreat
placement.blockselectkeys = \n[lightgray]Key: [{0},
keybind.clear_building.name = Clear Building keybind.clear_building.name = Clear Building
keybind.press = Press a key... keybind.press = Press a key...
keybind.press.axis = Press an axis or key... keybind.press.axis = Press an axis or key...
keybind.screenshot.name = Map Screenshot keybind.screenshot.name = Map Screenshot
keybind.toggle_power_lines.name = Toggle Power Lasers
keybind.move_x.name = Move X keybind.move_x.name = Move X
keybind.move_y.name = Move Y keybind.move_y.name = Move Y
keybind.mouse_move.name = Follow Mouse keybind.mouse_move.name = Follow Mouse
keybind.dash.name = Dash
keybind.schematic_select.name = Select Region keybind.schematic_select.name = Select Region
keybind.schematic_menu.name = Schematic Menu keybind.schematic_menu.name = Schematic Menu
keybind.schematic_flip_x.name = Flip Schematic X keybind.schematic_flip_x.name = Flip Schematic X
keybind.schematic_flip_y.name = Flip Schematic Y keybind.schematic_flip_y.name = Flip Schematic Y
keybind.category_prev.name = Previous Category
keybind.category_next.name = Next Category
keybind.block_select_left.name = Block Select Left
keybind.block_select_right.name = Block Select Right
keybind.block_select_up.name = Block Select Up
keybind.block_select_down.name = Block Select Down
keybind.block_select_01.name = Category/Block Select 1
keybind.block_select_02.name = Category/Block Select 2
keybind.block_select_03.name = Category/Block Select 3
keybind.block_select_04.name = Category/Block Select 4
keybind.block_select_05.name = Category/Block Select 5
keybind.block_select_06.name = Category/Block Select 6
keybind.block_select_07.name = Category/Block Select 7
keybind.block_select_08.name = Category/Block Select 8
keybind.block_select_09.name = Category/Block Select 9
keybind.block_select_10.name = Category/Block Select 10
keybind.fullscreen.name = Toggle Fullscreen keybind.fullscreen.name = Toggle Fullscreen
keybind.select.name = Select/Shoot keybind.select.name = Select/Shoot
keybind.diagonal_placement.name = Diagonal Placement keybind.diagonal_placement.name = Diagonal Placement
@@ -683,7 +711,6 @@ keybind.menu.name = Menu
keybind.pause.name = Pause keybind.pause.name = Pause
keybind.pause_building.name = Pause/Resume Building keybind.pause_building.name = Pause/Resume Building
keybind.minimap.name = Minimap keybind.minimap.name = Minimap
keybind.dash.name = Dash
keybind.chat.name = Chat keybind.chat.name = Chat
keybind.player_list.name = Player List keybind.player_list.name = Player List
keybind.console.name = Console keybind.console.name = Console
@@ -708,6 +735,7 @@ mode.attack.description = Destroy the enemy's base. No waves.\n[gray]Requires a
mode.custom = Custom Rules mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources rules.infiniteresources = Infinite Resources
rules.reactorexplosions = Reactor Explosions
rules.wavetimer = Wave Timer rules.wavetimer = Wave Timer
rules.waves = Waves rules.waves = Waves
rules.attack = Attack Mode rules.attack = Attack Mode
@@ -733,6 +761,9 @@ rules.title.resourcesbuilding = Resources & Building
rules.title.player = Players rules.title.player = Players
rules.title.enemy = Enemies rules.title.enemy = Enemies
rules.title.unit = Units rules.title.unit = Units
rules.title.experimental = Experimental
rules.lighting = Lighting
rules.ambientlight = Ambient Light
content.item.name = Items content.item.name = Items
content.liquid.name = Liquids content.liquid.name = Liquids
@@ -780,6 +811,7 @@ mech.trident-ship.name = Trident
mech.trident-ship.weapon = Bomb Bay mech.trident-ship.weapon = Bomb Bay
mech.glaive-ship.name = Glaive mech.glaive-ship.name = Glaive
mech.glaive-ship.weapon = Flame Repeater mech.glaive-ship.weapon = Flame Repeater
item.corestorable = [lightgray]Storable in Core: {0}
item.explosiveness = [lightgray]Explosiveness: {0}% item.explosiveness = [lightgray]Explosiveness: {0}%
item.flammability = [lightgray]Flammability: {0}% item.flammability = [lightgray]Flammability: {0}%
item.radioactivity = [lightgray]Radioactivity: {0}% item.radioactivity = [lightgray]Radioactivity: {0}%
@@ -895,6 +927,8 @@ block.distributor.name = Distributor
block.sorter.name = Sorter block.sorter.name = Sorter
block.inverted-sorter.name = Inverted Sorter block.inverted-sorter.name = Inverted Sorter
block.message.name = Message block.message.name = Message
block.illuminator.name = Illuminator
block.illuminator.description = A small, compact, configurable light source. Requires power to function.
block.overflow-gate.name = Overflow Gate block.overflow-gate.name = Overflow Gate
block.silicon-smelter.name = Silicon Smelter block.silicon-smelter.name = Silicon Smelter
block.phase-weaver.name = Phase Weaver block.phase-weaver.name = Phase Weaver
@@ -961,6 +995,7 @@ block.fortress-factory.name = Fortress Mech Factory
block.revenant-factory.name = Revenant Fighter Factory block.revenant-factory.name = Revenant Fighter Factory
block.repair-point.name = Repair Point block.repair-point.name = Repair Point
block.pulse-conduit.name = Pulse Conduit block.pulse-conduit.name = Pulse Conduit
block.plated-conduit.name = Plated Conduit
block.phase-conduit.name = Phase Conduit block.phase-conduit.name = Phase Conduit
block.liquid-router.name = Liquid Router block.liquid-router.name = Liquid Router
block.liquid-tank.name = Liquid Tank block.liquid-tank.name = Liquid Tank
@@ -1014,7 +1049,7 @@ unit.reaper.name = Reaper
tutorial.next = [lightgray]<Tap to continue> tutorial.next = [lightgray]<Tap to continue>
tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nUse [accent][[WASD][] to move.\n[accent]Hold [[Ctrl] while scrolling[] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nUse [accent][[WASD][] to move.\n[accent]Hold [[Ctrl] while scrolling[] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper
tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers[] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers[] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper
tutorial.drill = Mining manually is inefficient.\n[accent]Drills[] can mine automatically.\nClick the drill tab in the bottom right.\nSelect the[accent] mechanical drill[]. Place it on a copper vein by clicking.\n[accent]Right-click[] to stop building. tutorial.drill = Mining manually is inefficient.\n[accent]Drills[] can mine automatically.\nClick the drill tab in the bottom right.\nSelect the[accent] mechanical drill[]. Place it on a copper vein by clicking.\nYou can also select the drill by tapping [accent][[2][] then [accent][[1][] quickly, regardless of which tab is open.\n[accent]Right-click[] to stop building.
tutorial.drill.mobile = Mining manually is inefficient.\n[accent]Drills[] can mine automatically.\nTap the drill tab in the bottom right.\nSelect the[accent] mechanical drill[].\nPlace it on a copper vein by tapping, then press the[accent] checkmark[] below to confirm your selection.\nPress the[accent] X button[] to cancel placement. tutorial.drill.mobile = Mining manually is inefficient.\n[accent]Drills[] can mine automatically.\nTap the drill tab in the bottom right.\nSelect the[accent] mechanical drill[].\nPlace it on a copper vein by tapping, then press the[accent] checkmark[] below to confirm your selection.\nPress the[accent] X button[] to cancel placement.
tutorial.blockinfo = Each block has different stats. Each drill can only mine certain ores.\nTo check a block's info and stats,[accent] tap the "?" button while selecting it in the build menu.[]\n\n[accent]Access the Mechanical Drill's stats now.[] tutorial.blockinfo = Each block has different stats. Each drill can only mine certain ores.\nTo check a block's info and stats,[accent] tap the "?" button while selecting it in the build menu.[]\n\n[accent]Access the Mechanical Drill's stats now.[]
tutorial.conveyor = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent]Hold down the mouse to place in a line.[]\nHold[accent] CTRL[] while selecting a line to place diagonally.\nUse the scrollwheel to rotate blocks before placing them.\n[accent]Place 2 conveyors with the line tool, then deliver an item into the core. tutorial.conveyor = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent]Hold down the mouse to place in a line.[]\nHold[accent] CTRL[] while selecting a line to place diagonally.\nUse the scrollwheel to rotate blocks before placing them.\n[accent]Place 2 conveyors with the line tool, then deliver an item into the core.
@@ -1057,7 +1092,7 @@ mech.alpha-mech.description = The standard control mech. Based on a Dagger unit,
mech.delta-mech.description = A fast, lightly-armored mech made for hit-and-run attacks. Does little damage against structures, but can kill large groups of enemy units very quickly with its arc lightning weapons. mech.delta-mech.description = A fast, lightly-armored mech made for hit-and-run attacks. Does little damage against structures, but can kill large groups of enemy units very quickly with its arc lightning weapons.
mech.tau-mech.description = The support mech. Heals allied blocks by shooting at them. Can heal allies in a radius with its repair ability. mech.tau-mech.description = The support mech. Heals allied blocks by shooting at them. Can heal allies in a radius with its repair ability.
mech.omega-mech.description = A bulky and well-armored mech, made for front-line assaults. Its armor can block up to 90% of incoming damage. mech.omega-mech.description = A bulky and well-armored mech, made for front-line assaults. Its armor can block up to 90% of incoming damage.
mech.dart-ship.description = The standard control ship. Reasonably fast and light, but has little offensive capability and low mining speed. mech.dart-ship.description = The standard control ship. Fast mining speed. Reasonably fast and light, but has little offensive capability.
mech.javelin-ship.description = A hit-and-run strike ship. While initially slow, it can accelerate to great speeds and fly by enemy outposts, dealing large amounts of damage with its lightning and missiles. mech.javelin-ship.description = A hit-and-run strike ship. While initially slow, it can accelerate to great speeds and fly by enemy outposts, dealing large amounts of damage with its lightning and missiles.
mech.trident-ship.description = A heavy bomber, built for construction and destroying enemy fortifications. Reasonably well armored. mech.trident-ship.description = A heavy bomber, built for construction and destroying enemy fortifications. Reasonably well armored.
mech.glaive-ship.description = A large, well-armored gunship. Equipped with an incendiary repeater. Highly maneuverable. mech.glaive-ship.description = A large, well-armored gunship. Equipped with an incendiary repeater. Highly maneuverable.
@@ -1129,6 +1164,7 @@ block.rotary-pump.description = An advanced pump. Pumps more liquid, but require
block.thermal-pump.description = The ultimate pump. block.thermal-pump.description = The ultimate pump.
block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits. block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits.
block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits. block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less.
block.liquid-router.description = Accepts liquids from one direction and outputs them to up to 3 other directions equally. Can also store a certain amount of liquid. Useful for splitting the liquids from one source to multiple targets. block.liquid-router.description = Accepts liquids from one direction and outputs them to up to 3 other directions equally. Can also store a certain amount of liquid. Useful for splitting the liquids from one source to multiple targets.
block.liquid-tank.description = Stores a large amount of liquids. Use for creating buffers in situations with non-constant demand of materials or as a safeguard for cooling vital blocks. block.liquid-tank.description = Stores a large amount of liquids. Use for creating buffers in situations with non-constant demand of materials or as a safeguard for cooling vital blocks.
block.liquid-junction.description = Acts as a bridge for two crossing conduits. Useful in situations with two different conduits carrying different liquids to different locations. block.liquid-junction.description = Acts as a bridge for two crossing conduits. Useful in situations with two different conduits carrying different liquids to different locations.

View File

@@ -3,7 +3,7 @@ credits = Kredituak
contributors = Itzultzaile eta kolaboratzaileak contributors = Itzultzaile eta kolaboratzaileak
discord = Elkartu Mindustry Discord-era! discord = Elkartu Mindustry Discord-era!
link.discord.description = Mindustry Discord txat gela ofiziala link.discord.description = Mindustry Discord txat gela ofiziala
link.reddit.description = The Mindustry subreddit link.reddit.description = Mindustry azpireddita
link.github.description = Jolasaren iturburu kodea link.github.description = Jolasaren iturburu kodea
link.changelog.description = Eguneraketaren aldaketen zerrenda link.changelog.description = Eguneraketaren aldaketen zerrenda
link.dev-builds.description = Garapen konpilazio ezegonkorrak link.dev-builds.description = Garapen konpilazio ezegonkorrak
@@ -17,29 +17,29 @@ screenshot.invalid = Mapa handiegia, baliteke pantaila-argazkirako memoria nahik
gameover = Partida amaitu da gameover = Partida amaitu da
gameover.pvp = [accent] {0}[] taldeak irabazi du! gameover.pvp = [accent] {0}[] taldeak irabazi du!
highscore = [accent]Marka berria! highscore = [accent]Marka berria!
copied = Copied. copied = Kopiatuta.
load.sound = Soinuak load.sound = Soinuak
load.map = Mapak load.map = Mapak
load.image = Irudiak load.image = Irudiak
load.content = Edukia load.content = Edukia
load.system = Sistema load.system = Sistema
load.mod = Mods load.mod = Mod-ak
schematic = Schematic schematic = Eskama
schematic.add = Save Schematic... schematic.add = Gorde eskema...
schematics = Schematics schematics = Eskemak
schematic.replace = A schematic by that name already exists. Replace it? schematic.replace = Badago izen bereko eskema bat. Ordeztu nahi duzu?
schematic.import = Import Schematic... schematic.import = Inportatu eskema...
schematic.exportfile = Export File schematic.exportfile = Esportatu fitxategia
schematic.importfile = Import File schematic.importfile = Inportatu fitxategia
schematic.browseworkshop = Browse Workshop schematic.browseworkshop = Arakatu tailerra
schematic.copy = Copy to Clipboard schematic.copy = Kopiatu arbelera
schematic.copy.import = Import from Clipboard schematic.copy.import = Inportatu arbeletik
schematic.shareworkshop = Share on Workshop schematic.shareworkshop = Partekatu tailerrean
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic schematic.flip = [accent][[{0}][]/[accent][[{1}][]: itzulbiratu eskema
schematic.saved = Schematic saved. schematic.saved = Eskema gordeta.
schematic.delete.confirm = This schematic will be utterly eradicated. schematic.delete.confirm = Eskema hau behin betiko suntsituko da.
schematic.rename = Rename Schematic schematic.rename = Aldatu izena eskemari
schematic.info = {0}x{1}, {2} blocks schematic.info = {0}x{1}, {2} bloke
stat.wave = Garaitutako boladak:[accent] {0} stat.wave = Garaitutako boladak:[accent] {0}
stat.enemiesDestroyed = Suntsitutako etsaiak:[accent] {0} stat.enemiesDestroyed = Suntsitutako etsaiak:[accent] {0}
stat.built = Eraikitako eraikinak:[accent] {0} stat.built = Eraikitako eraikinak:[accent] {0}
@@ -48,7 +48,7 @@ stat.deconstructed = Deseraikitako eraikinak:[accent] {0}
stat.delivered = Egotzitako baliabideak: stat.delivered = Egotzitako baliabideak:
stat.rank = Azken graduazioa: [accent]{0} stat.rank = Azken graduazioa: [accent]{0}
launcheditems = [accent]Egotzitako baliabideak launcheditems = [accent]Egotzitako baliabideak
launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. launchinfo = [unlaunched][[EGOTZI] zure muina urdinez adierazitako baliabideak eskuratzeko.
map.delete = Ziur al zaude "[accent]{0}[]" mapa ezabatu nahi duzula? map.delete = Ziur al zaude "[accent]{0}[]" mapa ezabatu nahi duzula?
level.highscore = Marka: [accent]{0} level.highscore = Marka: [accent]{0}
level.select = Maila hautaketa level.select = Maila hautaketa
@@ -64,7 +64,7 @@ customgame = Partida pertsonalizatua
newgame = Partida berria newgame = Partida berria
none = <bat ere ez> none = <bat ere ez>
minimap = Mapatxoa minimap = Mapatxoa
position = Position position = Posizioa
close = Itxi close = Itxi
website = Webgunea website = Webgunea
quit = Irten quit = Irten
@@ -80,30 +80,30 @@ uploadingcontent = Edukia igotzen
uploadingpreviewfile = Aurrebista fitxategia igotzen uploadingpreviewfile = Aurrebista fitxategia igotzen
committingchanges = Aldaketak aplikatzen committingchanges = Aldaketak aplikatzen
done = Egina done = Egina
feature.unsupported = Your device does not support this feature. feature.unsupported = Zure gailuak ez du ezaugarri hau onartzen.
mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry GitHub or Discord. mods.alphainfo = Kontuan izan mod-ak alfa egoeran daudela, eta [scarlet] akats ugari izan ditzakete[].\nEman arazoen berri Mindustry-ren GitHub or Discord zerbitzuetan.
mods.alpha = [accent](Alpha) mods.alpha = [accent](Alfa)
mods = Mods mods = Mod-ak
mods.none = [LIGHT_GRAY]No mods found! mods.none = [LIGHT_GRAY]Ez da mod-ik aurkitu!
mods.guide = Modding Guide mods.guide = Mod-ak sortzeko gida
mods.report = Report Bug mods.report = Eman akatsaren berri
mods.openfolder = Open Mod Folder mods.openfolder = Ireki Mod-en karpeta
mod.enabled = [lightgray]Enabled mod.enabled = [lightgray]Gaituta
mod.disabled = [scarlet]Disabled mod.disabled = [scarlet]Desgaituta
mod.disable = Disable mod.disable = Desgaitu
mod.delete.error = Unable to delete mod. File may be in use. mod.delete.error = Ezin izan da mod-a ezabatu. Agian fitxategia erabilia izaten ari da.
mod.missingdependencies = [scarlet]Missing dependencies: {0} mod.missingdependencies = [scarlet]Falta diren menpekotasunak: {0}
mod.nowdisabled = [scarlet]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled. mod.nowdisabled = [scarlet]'{0}' mod-ak menpekotasunak ditu faltan:[accent] {1}\n[lightgray]Aurretik beste mod hauek deskargatu behar dira.\nMod hau automatikoki desgaituko da.
mod.enable = Enable mod.enable = Gaitu
mod.requiresrestart = The game will now close to apply the mod changes. mod.requiresrestart = Jolasa itxi egingo da mod-aren aldaketak aplikatzeko.
mod.reloadrequired = [scarlet]Reload Required mod.reloadrequired = [scarlet]Birkargatu behar da
mod.import = Import Mod mod.import = Importatu Mod-a
mod.import.github = Import GitHub Mod mod.import.github = Inportatu GitHub Mod-a
mod.remove.confirm = This mod will be deleted. mod.remove.confirm = Mod hau ezabatuko da.
mod.author = [LIGHT_GRAY]Author:[] {0} mod.author = [LIGHT_GRAY]Egilea:[] {0}
mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} mod.missing = Gordetako partida honek eguneratu dituzun edo jada instalatuta ez dituzun mod-ak ditu. Gordetako partida izorratu daiteke. Ziur kargatu nahi duzula?\n[lightgray]Mod-ak:\n{0}
mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. mod.preview.missing = Mod hau tailerrean argitaratu aurretik, aurrebista bat gehitu behar diozu.\nKokatu[accent] preview.png[] izeneko irudi bat mod-aren karpetan eta saiatu berriro.
mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. mod.folder.missing = Karpeta formatuko mod-ak besterik ezin dira argitaratu tailerrean.\nEdozein mod karpetara bihurtzeko, deskopnrimitu fitxategia eta ezabatu zip zaharra, gero berrabiarazi jolasa edo birkargatu zure mod-ak.
about.button = Honi buruz about.button = Honi buruz
name = Izena: name = Izena:
noname = Hautatu[accent] jokalari-izena[] aurretik. noname = Hautatu[accent] jokalari-izena[] aurretik.
@@ -216,8 +216,8 @@ save.playtime = Jolastua: {0}
warning = Abisua. warning = Abisua.
confirm = Baieztatu confirm = Baieztatu
delete = Ezabatu delete = Ezabatu
view.workshop = Ikusi lantegian view.workshop = Ikusi tailerrean
workshop.listing = Edit Workshop Listing workshop.listing = Editatu tailerreko zerrenda
ok = Ados ok = Ados
open = Ireki open = Ireki
customize = Aldatu arauak customize = Aldatu arauak
@@ -235,12 +235,12 @@ classic.export.text = [accent]Mindustry[] jolasak eguneraketa nagusi bat jaso du
quit.confirm = Ziur irten nahi duzula? quit.confirm = Ziur irten nahi duzula?
quit.confirm.tutorial = Ziur al zaude irten nahi duzula?\nTutoriala berriro hasi dezakezu hemen: [accent] Ezarpenak->Jolasa->Berriro hasi tutoriala.[] quit.confirm.tutorial = Ziur al zaude irten nahi duzula?\nTutoriala berriro hasi dezakezu hemen: [accent] Ezarpenak->Jolasa->Berriro hasi tutoriala.[]
loading = [accent]Kargatzen... loading = [accent]Kargatzen...
reloading = [accent]Reloading Mods... reloading = [accent]Mod-ak birkargatzen...
saving = [accent]Gordetzen... saving = [accent]Gordetzen...
cancelbuilding = [accent][[{0}][] to clear plan cancelbuilding = [accent][[{0}][] plan bat ezabatzeko
selectschematic = [accent][[{0}][] to select+copy selectschematic = [accent][[{0}][] hautatu+kopiatzeko
pausebuilding = [accent][[{0}][] to pause building pausebuilding = [accent][[{0}][] eraikiketa eteteko
resumebuilding = [scarlet][[{0}][] to resume building resumebuilding = [scarlet][[{0}][] eraikiketa berrekiteko
wave = [accent]{0}. bolada wave = [accent]{0}. bolada
wave.waiting = [lightgray]Boladarako {0} wave.waiting = [lightgray]Boladarako {0}
wave.waveInProgress = [lightgray]Bolada abian wave.waveInProgress = [lightgray]Bolada abian
@@ -259,18 +259,18 @@ map.nospawn = Mapa honek ez du muinik jokalaria sortu dadin! Gehitu muin [accent
map.nospawn.pvp = Mapa honek ez du etsaien muinik jokalaria sortu dadin! Gehitu [SCARLET]laranja ez den[] muinen bat edo batzuk mapa honi editorean. map.nospawn.pvp = Mapa honek ez du etsaien muinik jokalaria sortu dadin! Gehitu [SCARLET]laranja ez den[] muinen bat edo batzuk mapa honi editorean.
map.nospawn.attack = Mapa honek ez du etsaien muinik jokalariak eraso dezan! Gehitu muin [SCARLET]gorriak[] mapa honi editorean. map.nospawn.attack = Mapa honek ez du etsaien muinik jokalariak eraso dezan! Gehitu muin [SCARLET]gorriak[] mapa honi editorean.
map.invalid = Errorea mapa kargatzean: Mapa-fitxategi baliogabe edo hondatua. map.invalid = Errorea mapa kargatzean: Mapa-fitxategi baliogabe edo hondatua.
workshop.update = Update Item workshop.update = Eguneratu elementua
workshop.error = Error fetching workshop details: {0} workshop.error = Errorea tailerreko xehetasunak eskuratzean: {0}
map.publish.confirm = Ziur mapa hau argitaratu nahi duzula?\n\n[lightgray]Ziurtatu aurretik lantegiaren erabilera arauekin bat zatozela, bestela zure mapak ez dira agertuko! map.publish.confirm = Ziur mapa hau argitaratu nahi duzula?\n\n[lightgray]Ziurtatu aurretik lantegiaren erabilera arauekin bat zatozela, bestela zure mapak ez dira agertuko!
workshop.menu = Select what you would like to do with this item. workshop.menu = Erabaki elementu honekin zer egin nahi duzun.
workshop.info = Item Info workshop.info = Elementuaren informazioa
changelog = Changelog (optional): changelog = Aldaketa egunkatia (aukerakoa):
eula = Steam EULA eula = Steam EULA
missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. missing = Elementu hau ezabatu edo lekuz aldatu da.\n[lightgray]Tailerreko zerrendatik kendu da automatikoki.
publishing = [accent]Publishing... publishing = [accent]Argitaratzen...
publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! publish.confirm = Ziur hau argitaratu nahi duzula?\n\n[lightgray]Egiaztatu tailerreko EULA lizentziarekin ados zaudela aurretik, bestela zure elementuak ez dira agertuko!
publish.error = Error publishing item: {0} publish.error = Errorea elementua argitaratzean: {0}
steam.error = Failed to initialize Steam services.\nError: {0} steam.error = Huts egin du Steam zerbitzuak hasieratzean.\nErrorea: {0}
editor.brush = Brotxa editor.brush = Brotxa
editor.openin = Ireki editorean editor.openin = Ireki editorean
editor.oregen = Mea sorrera editor.oregen = Mea sorrera
@@ -411,9 +411,9 @@ abandon = Abandonatu
abandon.text = Eremu hau eta bere baliabide guztiak etsaiaren esku geratuko dira. abandon.text = Eremu hau eta bere baliabide guztiak etsaiaren esku geratuko dira.
locked = Blokeatuta locked = Blokeatuta
complete = [lightgray]Helmena: complete = [lightgray]Helmena:
requirement.wave = Reach Wave {0} in {1} requirement.wave = Iritsi {0} boladara {1}
requirement.core = Destroy Enemy Core in {0} requirement.core = Suntsitu etsaiaren muina {0}
requirement.unlock = Unlock {0} requirement.unlock = Desblokeatu {0}
resume = Berrekin:\n[lightgray]{0} resume = Berrekin:\n[lightgray]{0}
bestwave = [lightgray]Bolada onena: {0} bestwave = [lightgray]Bolada onena: {0}
launch = < EGOTZI > launch = < EGOTZI >
@@ -424,13 +424,13 @@ launch.confirm = Honek zure muinean dauden baliabide guztiak egotziko ditu.\nEzi
launch.skip.confirm = Orain ez eginez gero, geroagoko beste bolada batera itxaron beharko duzu. launch.skip.confirm = Orain ez eginez gero, geroagoko beste bolada batera itxaron beharko duzu.
uncover = Estalgabetu uncover = Estalgabetu
configure = Konfiguratu zuzkidura configure = Konfiguratu zuzkidura
bannedblocks = Banned Blocks bannedblocks = Debekatutako blokeak
addall = Add All addall = Gehitu denak
configure.locked = [lightgray]Zuzkiduraren konfigurazioa desblokeatzeko: {0} bolada. configure.locked = [lightgray]Zuzkiduraren konfigurazioa desblokeatzeko: {0} bolada.
configure.invalid = Kopurua 0 eta {0} bitarteko zenbaki bat izan behar da. configure.invalid = Kopurua 0 eta {0} bitarteko zenbaki bat izan behar da.
zone.unlocked = [lightgray]{0} desblokeatuta. zone.unlocked = [lightgray]{0} desblokeatuta.
zone.requirement.complete = {0}. boladara iritsia:\n{1} Eremuaren betebeharra beteta. zone.requirement.complete = {0}. boladara iritsia:\n{1} Eremuaren betebeharra beteta.
zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.config.unlocked = Deskarga desblokeatuta:[lightgray]\n{0}
zone.resources = [lightgray]Antzemandako baliabideak: zone.resources = [lightgray]Antzemandako baliabideak:
zone.objective = [lightgray]Helburua: [accent]{0} zone.objective = [lightgray]Helburua: [accent]{0}
zone.objective.survival = Biziraupena zone.objective.survival = Biziraupena
@@ -487,8 +487,8 @@ settings.cleardata = Garbitu jolasaren datuak...
settings.clear.confirm = Ziur datu hauek garbitu nahi dituzula?\nEgindakoa ezin da desegin! settings.clear.confirm = Ziur datu hauek garbitu nahi dituzula?\nEgindakoa ezin da desegin!
settings.clearall.confirm = [scarlet]ABISUA![]\nHonek datu guztiak garbituko ditu, gordetako partidak, mapak, desblokeatutakoak, eta teklen konfigurazioak barne.\nBehin 'Ados' sakatzen duzula jolasak datuk guztiak ezabatuko ditu eta automatikoki irten. settings.clearall.confirm = [scarlet]ABISUA![]\nHonek datu guztiak garbituko ditu, gordetako partidak, mapak, desblokeatutakoak, eta teklen konfigurazioak barne.\nBehin 'Ados' sakatzen duzula jolasak datuk guztiak ezabatuko ditu eta automatikoki irten.
paused = [accent]< Pausatuta > paused = [accent]< Pausatuta >
clear = Clear clear = Garbitu
banned = [scarlet]Banned banned = [scarlet]Debekatuta
yes = Bai yes = Bai
no = Ez no = Ez
info.title = Informazioa info.title = Informazioa
@@ -509,7 +509,7 @@ blocks.shootrange = Irismena
blocks.size = Neurria blocks.size = Neurria
blocks.liquidcapacity = Likido-edukiera blocks.liquidcapacity = Likido-edukiera
blocks.powerrange = Energia irismena blocks.powerrange = Energia irismena
blocks.powerconnections = Max Connections blocks.powerconnections = Gehieneko konexioak
blocks.poweruse = Energia-erabilera blocks.poweruse = Energia-erabilera
blocks.powerdamage = Energia/Kaltea blocks.powerdamage = Energia/Kaltea
blocks.itemcapacity = Elementu-edukiera blocks.itemcapacity = Elementu-edukiera
@@ -531,7 +531,7 @@ blocks.reload = Tiroak/segundoko
blocks.ammo = Munizioa blocks.ammo = Munizioa
bar.drilltierreq = Zulagailu hobea behar da bar.drilltierreq = Zulagailu hobea behar da
bar.drillspeed = Ustiatze-abiadura: {0}/s bar.drillspeed = Ustiatze-abiadura: {0}/s
bar.pumpspeed = Pump Speed: {0}/s bar.pumpspeed = Ponpatze abiadura: {0}/s
bar.efficiency = Eraginkortasuna: {0}% bar.efficiency = Eraginkortasuna: {0}%
bar.powerbalance = Energia: {0}/s bar.powerbalance = Energia: {0}/s
bar.powerstored = Bilduta: {0}/{1} bar.powerstored = Bilduta: {0}/{1}
@@ -576,9 +576,9 @@ category.shooting = Tirokatzea
category.optional = Aukerako hobekuntzak category.optional = Aukerako hobekuntzak
setting.landscape.name = Blokeatu horizontalean setting.landscape.name = Blokeatu horizontalean
setting.shadows.name = Itzalak setting.shadows.name = Itzalak
setting.blockreplace.name = Automatic Block Suggestions setting.blockreplace.name = Bloke proposamen automatikoak
setting.linear.name = Iragazte lineala setting.linear.name = Iragazte lineala
setting.hints.name = Hints setting.hints.name = Pistak
setting.animatedwater.name = Animatutako ura setting.animatedwater.name = Animatutako ura
setting.animatedshields.name = Animatutako ezkutuak setting.animatedshields.name = Animatutako ezkutuak
setting.antialias.name = Antialias[lightgray] (berrabiarazi behar da)[] setting.antialias.name = Antialias[lightgray] (berrabiarazi behar da)[]
@@ -599,8 +599,8 @@ setting.difficulty.insane = Zoramena
setting.difficulty.name = Zailtasuna: setting.difficulty.name = Zailtasuna:
setting.screenshake.name = Pantailaren astindua setting.screenshake.name = Pantailaren astindua
setting.effects.name = Bistaratze-efektuak setting.effects.name = Bistaratze-efektuak
setting.destroyedblocks.name = Display Destroyed Blocks setting.destroyedblocks.name = Erakutsi suntsitutako blokeak
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding setting.conveyorpathfinding.name = Garraio-zintak kokatzeko bide-bilaketa
setting.sensitivity.name = Kontrolagailuaren sentikortasuna setting.sensitivity.name = Kontrolagailuaren sentikortasuna
setting.saveinterval.name = Gordetzeko tartea setting.saveinterval.name = Gordetzeko tartea
setting.seconds = {0} segundo setting.seconds = {0} segundo
@@ -610,7 +610,7 @@ setting.fps.name = Erakutsi FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.pixelate.name = Pixelatu[lightgray] (animazioak desgaitzen ditu) setting.pixelate.name = Pixelatu[lightgray] (animazioak desgaitzen ditu)
setting.minimap.name = Erakutsi mapatxoa setting.minimap.name = Erakutsi mapatxoa
setting.position.name = Show Player Position setting.position.name = Erakutsi jokalariaren kokalekua
setting.musicvol.name = Musikaren bolumena setting.musicvol.name = Musikaren bolumena
setting.ambientvol.name = Giroaren bolumena setting.ambientvol.name = Giroaren bolumena
setting.mutemusic.name = Isilarazi musika setting.mutemusic.name = Isilarazi musika
@@ -620,10 +620,10 @@ setting.crashreport.name = Bidali kraskatze txosten automatikoak
setting.savecreate.name = Gorde automatikoki setting.savecreate.name = Gorde automatikoki
setting.publichost.name = Partidaren ikusgaitasun publikoa setting.publichost.name = Partidaren ikusgaitasun publikoa
setting.chatopacity.name = Txataren opakotasuna setting.chatopacity.name = Txataren opakotasuna
setting.lasersopacity.name = Power Laser Opacity setting.lasersopacity.name = Energia laserraren opakutasuna
setting.playerchat.name = Erakutsi jolas barneko txata setting.playerchat.name = Erakutsi jolas barneko txata
public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. public.confirm = Zure jolasa publikoa egin nahi duzu?\n[accent]Edonor elkartu ahal izango da zure partidetara.\n[lightgray]Hau gero ere aldatu dauteke, Ezarpenak->Partida->Partida publikoaren ikusgaitasuna.
public.beta = Note that beta versions of the game cannot make public lobbies. public.beta = Kontuan izan jolasaren beta bertsioek ezin dituztela jokalarien gela publokoak sortu.
uiscale.reset = Interfazearen eskala aldatu da.\nSakatu "Ados" eskala hau berresteko.\n[scarlet][accent] {0}[] segundo atzera egin eta irteteko... uiscale.reset = Interfazearen eskala aldatu da.\nSakatu "Ados" eskala hau berresteko.\n[scarlet][accent] {0}[] segundo atzera egin eta irteteko...
uiscale.cancel = Utzi eta irten uiscale.cancel = Utzi eta irten
setting.bloom.name = Distira setting.bloom.name = Distira
@@ -635,16 +635,16 @@ category.multiplayer.name = Hainbat jokalari
command.attack = Eraso command.attack = Eraso
command.rally = Batu command.rally = Batu
command.retreat = Erretreta command.retreat = Erretreta
keybind.clear_building.name = Clear Building keybind.clear_building.name = Garrbitu eraikina
keybind.press = Sakatu tekla bat... keybind.press = Sakatu tekla bat...
keybind.press.axis = Sakatu ardatza edo tekla... keybind.press.axis = Sakatu ardatza edo tekla...
keybind.screenshot.name = Maparen pantaila-argazkia keybind.screenshot.name = Maparen pantaila-argazkia
keybind.move_x.name = Mugitu x keybind.move_x.name = Mugitu x
keybind.move_y.name = Mugitu y keybind.move_y.name = Mugitu y
keybind.schematic_select.name = Select Region keybind.schematic_select.name = Hautatu eskualdea
keybind.schematic_menu.name = Schematic Menu keybind.schematic_menu.name = Eskema menua
keybind.schematic_flip_x.name = Flip Schematic X keybind.schematic_flip_x.name = Itzulbiratu X
keybind.schematic_flip_y.name = Flip Schematic Y keybind.schematic_flip_y.name = Itzulbiratu Y
keybind.fullscreen.name = Txandakatu pantaila osoa keybind.fullscreen.name = Txandakatu pantaila osoa
keybind.select.name = Hautatu/Tirokatu keybind.select.name = Hautatu/Tirokatu
keybind.diagonal_placement.name = Kokatze diagonala keybind.diagonal_placement.name = Kokatze diagonala
@@ -656,14 +656,14 @@ keybind.zoom_hold.name = Zoom mantenduz
keybind.zoom.name = Zoom keybind.zoom.name = Zoom
keybind.menu.name = Menua keybind.menu.name = Menua
keybind.pause.name = Pausatu keybind.pause.name = Pausatu
keybind.pause_building.name = Pause/Resume Building keybind.pause_building.name = Pausatu/berrekin eraikiketa
keybind.minimap.name = Mapatxoa keybind.minimap.name = Mapatxoa
keybind.dash.name = Arrapalada keybind.dash.name = Arrapalada
keybind.chat.name = Txata keybind.chat.name = Txata
keybind.player_list.name = Jokalarien zerrenda keybind.player_list.name = Jokalarien zerrenda
keybind.console.name = Kontsola keybind.console.name = Kontsola
keybind.rotate.name = Biratu keybind.rotate.name = Biratu
keybind.rotateplaced.name = Rotate Existing (Hold) keybind.rotateplaced.name = Biratu dagoena (Mantendu)
keybind.toggle_menus.name = Txandakatu menuak keybind.toggle_menus.name = Txandakatu menuak
keybind.chat_history_prev.name = Txat historialean aurrekoa keybind.chat_history_prev.name = Txat historialean aurrekoa
keybind.chat_history_next.name = Txat historialean hurrengoa keybind.chat_history_next.name = Txat historialean hurrengoa
@@ -675,7 +675,7 @@ mode.survival.name = Biziraupena
mode.survival.description = Modu arrunta. Baliabide mugatuak eta bolada automatikoak.\n[gray]Jolasteko etsaien sortze puntuak behar dira mapan. mode.survival.description = Modu arrunta. Baliabide mugatuak eta bolada automatikoak.\n[gray]Jolasteko etsaien sortze puntuak behar dira mapan.
mode.sandbox.name = Jolastokia mode.sandbox.name = Jolastokia
mode.sandbox.description = Baliabide amaigabeak eta boladen denboragailurik gabe. mode.sandbox.description = Baliabide amaigabeak eta boladen denboragailurik gabe.
mode.editor.name = Editor mode.editor.name = Editorea
mode.pvp.name = JvJ mode.pvp.name = JvJ
mode.pvp.description = Borrokatu beste jokalari batzuk lokalean.\n[gray]Gutxienez bi kolore desberdinetako muinak behar dira mapan jolasteko. mode.pvp.description = Borrokatu beste jokalari batzuk lokalean.\n[gray]Gutxienez bi kolore desberdinetako muinak behar dira mapan jolasteko.
mode.attack.name = Erasoa mode.attack.name = Erasoa
@@ -843,8 +843,8 @@ block.copper-wall.name = Kobrezko horma
block.copper-wall-large.name = Kobrezko horma handia block.copper-wall-large.name = Kobrezko horma handia
block.titanium-wall.name = Titaniozko horma block.titanium-wall.name = Titaniozko horma
block.titanium-wall-large.name = Titaniozko horma handia block.titanium-wall-large.name = Titaniozko horma handia
block.plastanium-wall.name = Plastanium Wall block.plastanium-wall.name = Plastaniozko horma
block.plastanium-wall-large.name = Large Plastanium Wall block.plastanium-wall-large.name = Plastaniozko horma handia
block.phase-wall.name = Fasezko horma block.phase-wall.name = Fasezko horma
block.phase-wall-large.name = Fasezko horma handia block.phase-wall-large.name = Fasezko horma handia
block.thorium-wall.name = Toriozko horma block.thorium-wall.name = Toriozko horma
@@ -864,7 +864,7 @@ block.junction.name = Lotunea
block.router.name = Bideratzailea block.router.name = Bideratzailea
block.distributor.name = Banatzailea block.distributor.name = Banatzailea
block.sorter.name = Antolatzailea block.sorter.name = Antolatzailea
block.inverted-sorter.name = Inverted Sorter block.inverted-sorter.name = Alderantzizko antolatzailea
block.message.name = Mezua block.message.name = Mezua
block.overflow-gate.name = Gainezkatze atea block.overflow-gate.name = Gainezkatze atea
block.silicon-smelter.name = Silizio galdategia block.silicon-smelter.name = Silizio galdategia
@@ -983,7 +983,7 @@ unit.lich.name = Litxe
unit.reaper.name = Segalaria unit.reaper.name = Segalaria
tutorial.next = [lightgray]<Sakatu jarraitzeko> tutorial.next = [lightgray]<Sakatu jarraitzeko>
tutorial.intro = Hau [scarlet]Mindustry tutoriala[] da.\nHasi [accent]kobrea ustiatzen[]. Horretarako, sakatu zure muinetik hurbil dagoen kobre-mea bat.\n\n[accent]{0}/{1} kobre tutorial.intro = Hau [scarlet]Mindustry tutoriala[] da.\nHasi [accent]kobrea ustiatzen[]. Horretarako, sakatu zure muinetik hurbil dagoen kobre-mea bat.\n\n[accent]{0}/{1} kobre
tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers [] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper tutorial.intro.mobile = [scarlet] Mindustry Tutorialean[] sartu zara\nPasatu hatza mugitzeko.\n[accent]Egin atximurkada bi hatzekin [] zooma hurbildu edo urruntzeko.\nHasi[accent] kobrea ustiatuz[]. Hurbildu kobrera, gero sakatu zure muinetik hurbil dagoen kobre mea bat.\n\n[accent]{0}/{1} kobre
tutorial.drill = Eskuz ustiatzea ez da eraginkorra.\n[accent]Zulagailuek []automatikoki ustiatu dezakete.\nSakatu zulagailuen fitxa, behean eskuman.\nHautatu[accent] zulagailu mekanikoa[]. Kokatu ezazu kobre zain batean klik eginez.\n[accent]Eskumako klik[] deseraikitzeko. tutorial.drill = Eskuz ustiatzea ez da eraginkorra.\n[accent]Zulagailuek []automatikoki ustiatu dezakete.\nSakatu zulagailuen fitxa, behean eskuman.\nHautatu[accent] zulagailu mekanikoa[]. Kokatu ezazu kobre zain batean klik eginez.\n[accent]Eskumako klik[] deseraikitzeko.
tutorial.drill.mobile = Eskuz ustiatzea ez da eraginkorra.\n[accent]Zulagailuek []automatikoki ustiatu dezakete.\nSakatu zulagailuen fitxa behean eskuman.\nHautatu[accent] zulagailu mekanikoa[]. \nKokatu ezazu kobre zain batean sakatuz, gero sakatu azpiko [accent]egiaztapen-marka[] zure hautaketa berresteko.\nSakatu [accent]X botoia[] kokatzea ezeztatzeko. tutorial.drill.mobile = Eskuz ustiatzea ez da eraginkorra.\n[accent]Zulagailuek []automatikoki ustiatu dezakete.\nSakatu zulagailuen fitxa behean eskuman.\nHautatu[accent] zulagailu mekanikoa[]. \nKokatu ezazu kobre zain batean sakatuz, gero sakatu azpiko [accent]egiaztapen-marka[] zure hautaketa berresteko.\nSakatu [accent]X botoia[] kokatzea ezeztatzeko.
tutorial.blockinfo = Bloke bakoitzak estatistika desberdinak ditu. Eta zulagailu bakoitzak mea mota zehatz batzuk ustiatu ditzake soilik.\nBloke mota baten informazio eta estatistikak egiaztatzeko,[accent] hautatu blokea eraikiketa menuan eta sakatu "?" botoia .[]\n\n[accent]Atzitu zulagailu mekanikoaren estatistikak orain.[] tutorial.blockinfo = Bloke bakoitzak estatistika desberdinak ditu. Eta zulagailu bakoitzak mea mota zehatz batzuk ustiatu ditzake soilik.\nBloke mota baten informazio eta estatistikak egiaztatzeko,[accent] hautatu blokea eraikiketa menuan eta sakatu "?" botoia .[]\n\n[accent]Atzitu zulagailu mekanikoaren estatistikak orain.[]
@@ -1000,7 +1000,7 @@ tutorial.breaking.mobile = Maiz blokeak suntsitu beharko dituzu.\n[accent]Hautat
tutorial.withdraw = Egoera batzuetan, blokeetatik zuzenean hartu behar dira baliabideak.\nHorretarako, [accent]sakatu baliabideak dituen bloke bat[], gero [accent]sakatu baliabidea[] inbentarioan.\nHainbat baliabide ateratzeko [accent]sakatu eta mantendu[].\n\n[accent]Atera kobre apur bat muinetik.[] tutorial.withdraw = Egoera batzuetan, blokeetatik zuzenean hartu behar dira baliabideak.\nHorretarako, [accent]sakatu baliabideak dituen bloke bat[], gero [accent]sakatu baliabidea[] inbentarioan.\nHainbat baliabide ateratzeko [accent]sakatu eta mantendu[].\n\n[accent]Atera kobre apur bat muinetik.[]
tutorial.deposit = Baliabideak blokeren batean sartzeko, arrastatu zure ontzitik blokera.\n\n[accent]Sartu zure kobrea berriro muinean.[] tutorial.deposit = Baliabideak blokeren batean sartzeko, arrastatu zure ontzitik blokera.\n\n[accent]Sartu zure kobrea berriro muinean.[]
tutorial.waves = [lightgray]Etsaia[] dator.\n\nBabestu muina 2 boladetan zehar. [accent]Egin klik[] tirokatzeko.\nEraiki dorre eta zulagailu gehiago. Ustiatu kobre gehiago. tutorial.waves = [lightgray]Etsaia[] dator.\n\nBabestu muina 2 boladetan zehar. [accent]Egin klik[] tirokatzeko.\nEraiki dorre eta zulagailu gehiago. Ustiatu kobre gehiago.
tutorial.waves.mobile = [lightgray]Etsaia[] daor.\n\nBabestu muina 2 boladatan. Zure ontziak automatikoki tirokatuko ditu etsaiak.\nEraiki dorre eta zulagailu gehiago. Ustiatu kobre gehiago. tutorial.waves.mobile = [lightgray]Etsaia[] dator.\n\nBabestu muina 2 boladatan. Zure ontziak automatikoki tirokatuko ditu etsaiak.\nEraiki dorre eta zulagailu gehiago. Ustiatu kobre gehiago.
tutorial.launch = Bolada zehatz batera heltzean, [accent]muina egotzi[] dezakezu, zure defentsak atzean utziz [accent]eta muineko baliabide guztiak eskuratuz.[]\nBaliabide hauek teknologia berriak ikertzeko erabili daitezke.\n\n[accent]Sakatu egotzi botoia. tutorial.launch = Bolada zehatz batera heltzean, [accent]muina egotzi[] dezakezu, zure defentsak atzean utziz [accent]eta muineko baliabide guztiak eskuratuz.[]\nBaliabide hauek teknologia berriak ikertzeko erabili daitezke.\n\n[accent]Sakatu egotzi botoia.
item.copper.description = Egiturazko material oinarrizkoena. Asko erabilia bloke mota guztietarako. item.copper.description = Egiturazko material oinarrizkoena. Asko erabilia bloke mota guztietarako.
item.lead.description = Hastapeneko oinarrizko materiala. Bloke elektronikoak eta likidoen garraiorako blokeetan asko erabilia. item.lead.description = Hastapeneko oinarrizko materiala. Bloke elektronikoak eta likidoen garraiorako blokeetan asko erabilia.
@@ -1067,8 +1067,8 @@ block.copper-wall.description = Babeserako bloke merke bat.\nMuina eta dorreak l
block.copper-wall-large.description = Babeserako bloke merke bat.\nMuina eta dorreak lehen boladetan babesteko erabilgarria.\nHainbat lauza hartzen ditu. block.copper-wall-large.description = Babeserako bloke merke bat.\nMuina eta dorreak lehen boladetan babesteko erabilgarria.\nHainbat lauza hartzen ditu.
block.titanium-wall.description = Zertxobait gogorra den babeserako bloke bat.\nEtsaien aurreko babes ertaina eskaintzen du. block.titanium-wall.description = Zertxobait gogorra den babeserako bloke bat.\nEtsaien aurreko babes ertaina eskaintzen du.
block.titanium-wall-large.description = Zertxobait gogorra den babeserako bloke bat.\nEtsaien aurreko babes ertaina eskaintzen du.\nHainbat lauza hartzen ditu. block.titanium-wall-large.description = Zertxobait gogorra den babeserako bloke bat.\nEtsaien aurreko babes ertaina eskaintzen du.\nHainbat lauza hartzen ditu.
block.plastanium-wall.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections. block.plastanium-wall.description = Arku elektrikoak xurgatzen dituen eta energia-nodoen konexio automatikoak blokeatzen dituen horma berezia.
block.plastanium-wall-large.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections.\nSpans multiple tiles. block.plastanium-wall-large.description = Arku elektrikoak xurgatzen dituen eta energia-nodoen konexio automatikoak blokeatzen dituen horma berezia..\nHainbat lauza hartzen ditu.
block.thorium-wall.description = Babeserako bloke gogorra.\nEtsaitatik aterpe txukuna. block.thorium-wall.description = Babeserako bloke gogorra.\nEtsaitatik aterpe txukuna.
block.thorium-wall-large.description = Babeserako bloke gogorra.\nEtsaitatik aterpe txukuna.\nHainbat lauza hartzen ditu. block.thorium-wall-large.description = Babeserako bloke gogorra.\nEtsaitatik aterpe txukuna.\nHainbat lauza hartzen ditu.
block.phase-wall.description = Fasez osatutako konposatu islatzaile batez estalitako horma bat. Talkan jasotako bala gehienak desbideratzen ditu. block.phase-wall.description = Fasez osatutako konposatu islatzaile batez estalitako horma bat. Talkan jasotako bala gehienak desbideratzen ditu.
@@ -1088,7 +1088,7 @@ block.junction.description = Gurutzatutako bi garraio-zinten arteko zubi gisa ar
block.bridge-conveyor.description = Elementuen garraiorako bloke aurreratua. Elementuak edozein gainazal edo eraikinen gainetik garraiatzen ditu 3 lauzatara gehienez. block.bridge-conveyor.description = Elementuen garraiorako bloke aurreratua. Elementuak edozein gainazal edo eraikinen gainetik garraiatzen ditu 3 lauzatara gehienez.
block.phase-conveyor.description = Elementuen garraiorako bloke aurreratua. Energia erabiltzen du hainbat lauzetara konektatutako beste Fasezko garraiagailu batera elementuak teleportatzeko. block.phase-conveyor.description = Elementuen garraiorako bloke aurreratua. Energia erabiltzen du hainbat lauzetara konektatutako beste Fasezko garraiagailu batera elementuak teleportatzeko.
block.sorter.description = Elementuak antolatzen ditu. Elementu bat hautuarekin bat badator, aurrera jarraitu dezake. Bestela, elementua ezker eta eskuinera ateratzen da. block.sorter.description = Elementuak antolatzen ditu. Elementu bat hautuarekin bat badator, aurrera jarraitu dezake. Bestela, elementua ezker eta eskuinera ateratzen da.
block.inverted-sorter.description = Processes items like a standard sorter, but outputs selected items to the sides instead. block.inverted-sorter.description = Antolatzaile arruntaren antzera prozesatzen ditu elementuak, baina hautatutako elementuak alboetara ateratzen ditu.
block.router.description = Elementuak onartzen ditu, eta beste gehienez 3 norabideetara ateratzen ditu kopuru berdinetan. Jatorri batetik hainbat xedeetara materialak banatzeko egokia.\n\n[scarlet]Ez jarri ekoizpen sarreren ondoan, irteerek trabatuko baitute.[] block.router.description = Elementuak onartzen ditu, eta beste gehienez 3 norabideetara ateratzen ditu kopuru berdinetan. Jatorri batetik hainbat xedeetara materialak banatzeko egokia.\n\n[scarlet]Ez jarri ekoizpen sarreren ondoan, irteerek trabatuko baitute.[]
block.distributor.description = Bideratzaile aurreratu bat. Elementuak beste gehienez 7 norabideetara sakabanatzen ditu kopuru berdinetan. block.distributor.description = Bideratzaile aurreratu bat. Elementuak beste gehienez 7 norabideetara sakabanatzen ditu kopuru berdinetan.
block.overflow-gate.description = Antolatzaile eta bideratzaile konbinatua. Soilik aurrealdea blokeatuta dagoenean ateratzen du ezker eta eskuinera. block.overflow-gate.description = Antolatzaile eta bideratzaile konbinatua. Soilik aurrealdea blokeatuta dagoenean ateratzen du ezker eta eskuinera.

File diff suppressed because it is too large Load Diff

View File

@@ -10,6 +10,7 @@ link.dev-builds.description = Versions instables du jeu
link.trello.description = Trello officiel pour les ajouts futurs link.trello.description = Trello officiel pour les ajouts futurs
link.itch.io.description = Page itch.io avec lien de téléchargement pour PC link.itch.io.description = Page itch.io avec lien de téléchargement pour PC
link.google-play.description = Google Play Store link.google-play.description = Google Play Store
link.f-droid.description = Catalogue F-Droid
link.wiki.description = Le wiki officiel de Mindustry link.wiki.description = Le wiki officiel de Mindustry
linkfail = Erreur lors de l'ouverture du lien !\nL'URL a été copiée dans votre presse papier. linkfail = Erreur lors de l'ouverture du lien !\nL'URL a été copiée dans votre presse papier.
screenshot = Capture d'écran sauvegardée à {0} screenshot = Capture d'écran sauvegardée à {0}
@@ -18,12 +19,14 @@ gameover = Game over
gameover.pvp = L'équipe [accent] {0}[] a gagné ! gameover.pvp = L'équipe [accent] {0}[] a gagné !
highscore = [accent]Nouveau meilleur score! highscore = [accent]Nouveau meilleur score!
copied = Copié. copied = Copié.
load.sound = Sons load.sound = Sons
load.map = Cartes load.map = Cartes
load.image = Images load.image = Images
load.content = Contenu load.content = Contenu
load.system = Système load.system = Système
load.mod = Mods load.mod = Mods
schematic = Schéma schematic = Schéma
schematic.add = Sauvegarder le schéma... schematic.add = Sauvegarder le schéma...
schematics = Schémas schematics = Schémas
@@ -40,6 +43,7 @@ schematic.saved = Schéma sauvegardé.
schematic.delete.confirm = Ce schéma sera complètement éradiqué. schematic.delete.confirm = Ce schéma sera complètement éradiqué.
schematic.rename = Renommer le schéma schematic.rename = Renommer le schéma
schematic.info = {0}x{1}, {2} blocs schematic.info = {0}x{1}, {2} blocs
stat.wave = Vagues vaincues:[accent] {0} stat.wave = Vagues vaincues:[accent] {0}
stat.enemiesDestroyed = Ennemis détruits:[accent] {0} stat.enemiesDestroyed = Ennemis détruits:[accent] {0}
stat.built = Bâtiments construits:[accent] {0} stat.built = Bâtiments construits:[accent] {0}
@@ -47,6 +51,7 @@ stat.destroyed = Bâtiments détruits:[accent] {0}
stat.deconstructed = Bâtiments déconstruits:[accent] {0} stat.deconstructed = Bâtiments déconstruits:[accent] {0}
stat.delivered = Ressources transférées: stat.delivered = Ressources transférées:
stat.rank = Rang Final: [accent]{0} stat.rank = Rang Final: [accent]{0}
launcheditems = [accent]Ressources transférées launcheditems = [accent]Ressources transférées
launchinfo = [unlaunched][[LANCER] votre noyau pour obtenir les objets indiqués en bleu. launchinfo = [unlaunched][[LANCER] votre noyau pour obtenir les objets indiqués en bleu.
map.delete = Êtes-vous certain(e) de vouloir supprimer la carte "[accent]{0}[]"? map.delete = Êtes-vous certain(e) de vouloir supprimer la carte "[accent]{0}[]"?
@@ -74,6 +79,7 @@ maps.browse = Parcourir les cartes
continue = Continuer continue = Continuer
maps.none = [lightgray]Aucune carte trouvée! maps.none = [lightgray]Aucune carte trouvée!
invalid = Invalide invalid = Invalide
pickcolor = Choisir la Couleur
preparingconfig = Préparation de la configuration preparingconfig = Préparation de la configuration
preparingcontent = Préparation du contenu preparingcontent = Préparation du contenu
uploadingcontent = Publication du contenu uploadingcontent = Publication du contenu
@@ -81,6 +87,7 @@ uploadingpreviewfile = Publication du fichier d'aperçu
committingchanges = Validation des modifications committingchanges = Validation des modifications
done = Fait done = Fait
feature.unsupported = Votre appareil ne supporte pas cette fonctionnalité. feature.unsupported = Votre appareil ne supporte pas cette fonctionnalité.
mods.alphainfo = Gardez à l'esprit que les mods sont en alpha et[scarlet] peuvent être très buggés[].\nMerci de signaler les problèmes que vous rencontrez via le GitHub ou le Discord Mindustry. mods.alphainfo = Gardez à l'esprit que les mods sont en alpha et[scarlet] peuvent être très buggés[].\nMerci de signaler les problèmes que vous rencontrez via le GitHub ou le Discord Mindustry.
mods.alpha = [accent](Alpha) mods.alpha = [accent](Alpha)
mods = Mods mods = Mods
@@ -104,6 +111,7 @@ mod.author = [LIGHT_GRAY]Auteur:[] {0}
mod.missing = Cette sauvegarde contient des mods que vous avez récemment mis à jour ou que vous avez désinstallés. Votre sauvegarde risque d'être corrompue. Êtes-vous sûr de vouloir l'importer?\n[lightgray]Mods:\n{0} mod.missing = Cette sauvegarde contient des mods que vous avez récemment mis à jour ou que vous avez désinstallés. Votre sauvegarde risque d'être corrompue. Êtes-vous sûr de vouloir l'importer?\n[lightgray]Mods:\n{0}
mod.preview.missing = Avant de publier ce mod dans le workshop, vous devez ajouter une image servant d'aperçu.\nPlacez une image nommée[accent] preview.png[] dans le dossier du mod et réessayez. mod.preview.missing = Avant de publier ce mod dans le workshop, vous devez ajouter une image servant d'aperçu.\nPlacez une image nommée[accent] preview.png[] dans le dossier du mod et réessayez.
mod.folder.missing = Seuls les mods sous forme de dossiers peuvent être publiés sur l'atelier.\nPour convertir n'importe quel mod en un dossier, dézippez-le tout simplement dans un dossier et supprimez l'ancien zip, puis redémarrez votre jeu ou rechargez vos mods. mod.folder.missing = Seuls les mods sous forme de dossiers peuvent être publiés sur l'atelier.\nPour convertir n'importe quel mod en un dossier, dézippez-le tout simplement dans un dossier et supprimez l'ancien zip, puis redémarrez votre jeu ou rechargez vos mods.
about.button = À propos about.button = À propos
name = Nom: name = Nom:
noname = Commencer par choisir un[accent] nom de joueur[]. noname = Commencer par choisir un[accent] nom de joueur[].
@@ -271,6 +279,7 @@ publishing = [accent]Publication...
publish.confirm = Êtes-vous sûr de vouloir publier ceci ?\n\n[lightgray]Assurez-vous d'être d'abord d'accord avec les CGU du workshop, sinon vos éléments n'apparaîtront pas ! publish.confirm = Êtes-vous sûr de vouloir publier ceci ?\n\n[lightgray]Assurez-vous d'être d'abord d'accord avec les CGU du workshop, sinon vos éléments n'apparaîtront pas !
publish.error = Erreur de publication de l'élément: {0} publish.error = Erreur de publication de l'élément: {0}
steam.error = Failed to initialize Steam services.\nError: {0} steam.error = Failed to initialize Steam services.\nError: {0}
editor.brush = Pinceau editor.brush = Pinceau
editor.openin = Ouvrir dans l'éditeur editor.openin = Ouvrir dans l'éditeur
editor.oregen = Génération de minerais editor.oregen = Génération de minerais
@@ -347,6 +356,7 @@ editor.overwrite = [accent]Attention!\nCeci écrase une carte existante.
editor.overwrite.confirm = [scarlet]Attention![] Une carte avec ce nom existe déjà. Êtes-vous sûr de vouloir l'écraser? editor.overwrite.confirm = [scarlet]Attention![] Une carte avec ce nom existe déjà. Êtes-vous sûr de vouloir l'écraser?
editor.exists = Une carte avec ce nom existe déjà. editor.exists = Une carte avec ce nom existe déjà.
editor.selectmap = Sélectionnez une carte: editor.selectmap = Sélectionnez une carte:
toolmode.replace = Remplacer toolmode.replace = Remplacer
toolmode.replace.description = Dessiner seulement sur les blocs solides. toolmode.replace.description = Dessiner seulement sur les blocs solides.
toolmode.replaceall = Tout remplacer toolmode.replaceall = Tout remplacer
@@ -361,6 +371,7 @@ toolmode.fillteams = Remplir les équipes
toolmode.fillteams.description = Rempli les équipes au lieu des blocs. toolmode.fillteams.description = Rempli les équipes au lieu des blocs.
toolmode.drawteams = Dessiner les équipes toolmode.drawteams = Dessiner les équipes
toolmode.drawteams.description = Dessine les équipes au lieu de blocs. toolmode.drawteams.description = Dessine les équipes au lieu de blocs.
filters.empty = [lightgray]Aucun filtre! Ajoutez-en un avec les boutons ci-dessous. filters.empty = [lightgray]Aucun filtre! Ajoutez-en un avec les boutons ci-dessous.
filter.distort = Déformation filter.distort = Déformation
filter.noise = Bruit filter.noise = Bruit
@@ -392,6 +403,7 @@ filter.option.floor2 = Sol secondaire
filter.option.threshold2 = Seuil secondaire filter.option.threshold2 = Seuil secondaire
filter.option.radius = Rayon filter.option.radius = Rayon
filter.option.percentile = Centile filter.option.percentile = Centile
width = Largeur: width = Largeur:
height = Hauteur: height = Hauteur:
menu = Menu menu = Menu
@@ -407,6 +419,7 @@ tutorial = Tutoriel
tutorial.retake = Refaire le Tutoriel tutorial.retake = Refaire le Tutoriel
editor = Éditeur editor = Éditeur
mapeditor = Éditeur de carte mapeditor = Éditeur de carte
abandon = Abandonner abandon = Abandonner
abandon.text = Cette zone et toutes ses ressources vont être perdues. abandon.text = Cette zone et toutes ses ressources vont être perdues.
locked = Verrouillé locked = Verrouillé
@@ -437,6 +450,7 @@ zone.objective.survival = Survivre
zone.objective.attack = Détruire le noyau ennemi zone.objective.attack = Détruire le noyau ennemi
add = Ajouter... add = Ajouter...
boss.health = Santé du Boss boss.health = Santé du Boss
connectfail = [crimson]Échec de la connexion au serveur :\n\n[accent]{0} connectfail = [crimson]Échec de la connexion au serveur :\n\n[accent]{0}
error.unreachable = Serveur injoignable.\nL'adresse IP est correcte? error.unreachable = Serveur injoignable.\nL'adresse IP est correcte?
error.invalidaddress = Adresse invalide. error.invalidaddress = Adresse invalide.
@@ -447,6 +461,7 @@ error.mapnotfound = Carte introuvable!
error.io = Erreur de Réseau (I/O) error.io = Erreur de Réseau (I/O)
error.any = Erreur réseau inconnue error.any = Erreur réseau inconnue
error.bloom = Échec de l'initialisation du flou lumineux.\nVotre appareil peux ne pas le supporter. error.bloom = Échec de l'initialisation du flou lumineux.\nVotre appareil peux ne pas le supporter.
zone.groundZero.name = Première Bataille zone.groundZero.name = Première Bataille
zone.desertWastes.name = Désert Sauvage zone.desertWastes.name = Désert Sauvage
zone.craters.name = Les Cratères zone.craters.name = Les Cratères
@@ -461,6 +476,7 @@ zone.saltFlats.name = Marais Salants
zone.impact0078.name = Impact 0078 zone.impact0078.name = Impact 0078
zone.crags.name = Rochers zone.crags.name = Rochers
zone.fungalPass.name = Passe Fongique zone.fungalPass.name = Passe Fongique
zone.groundZero.description = L'emplacement optimal pour débuter. Faible menace ennemie. Peu de ressources. \nRecueillez autant de plomb et de cuivre que possible.\nRien d'autre à signaler. zone.groundZero.description = L'emplacement optimal pour débuter. Faible menace ennemie. Peu de ressources. \nRecueillez autant de plomb et de cuivre que possible.\nRien d'autre à signaler.
zone.frozenForest.description = Même ici, plus près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir pour toujours.\n\nFamiliarisez vous avec l'Énergie. Construisez des générateurs a combustion. Apprenez a utiliser les réparateurs. zone.frozenForest.description = Même ici, plus près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir pour toujours.\n\nFamiliarisez vous avec l'Énergie. Construisez des générateurs a combustion. Apprenez a utiliser les réparateurs.
zone.desertWastes.description = Cette étendue désertique est immense, imprévisible. On y croise des structures abandonnées.\nLe charbon est présent dans la région. Brûlez-le pour générer de l'Énergie ou synthétisez-le en graphite.\n\n[lightgray]Ce lieu d'atterisage est imprévisible. zone.desertWastes.description = Cette étendue désertique est immense, imprévisible. On y croise des structures abandonnées.\nLe charbon est présent dans la région. Brûlez-le pour générer de l'Énergie ou synthétisez-le en graphite.\n\n[lightgray]Ce lieu d'atterisage est imprévisible.
@@ -475,6 +491,7 @@ zone.nuclearComplex.description = Une ancienne installation de production et tra
zone.fungalPass.description = Une zone de transition entre les hautes montagnes et les basses régions infestées de spores. Une petite base de reconnaissance ennemie s'y trouve.\nDétruisez la.\nUtilisez les unités Poignard et Rampeurs. Détruisez les deux noyaux. zone.fungalPass.description = Une zone de transition entre les hautes montagnes et les basses régions infestées de spores. Une petite base de reconnaissance ennemie s'y trouve.\nDétruisez la.\nUtilisez les unités Poignard et Rampeurs. Détruisez les deux noyaux.
zone.impact0078.description = <insérer une description ici> zone.impact0078.description = <insérer une description ici>
zone.crags.description = <insérer une description ici> zone.crags.description = <insérer une description ici>
settings.language = Langue settings.language = Langue
settings.data = Données du Jeu settings.data = Données du Jeu
settings.reset = Valeurs par Défaut settings.reset = Valeurs par Défaut
@@ -494,8 +511,8 @@ no = Non
info.title = Info info.title = Info
error.title = [crimson]Une erreur s'est produite error.title = [crimson]Une erreur s'est produite
error.crashtitle = Une erreur s'est produite error.crashtitle = Une erreur s'est produite
blocks.input = Input blocks.input = Entrée
blocks.output = Output blocks.output = Sortie
blocks.booster = Booster blocks.booster = Booster
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Capacité d'énergie blocks.powercapacity = Capacité d'énergie
@@ -529,9 +546,10 @@ blocks.inaccuracy = Imprécision
blocks.shots = Tirs blocks.shots = Tirs
blocks.reload = Tirs/Seconde blocks.reload = Tirs/Seconde
blocks.ammo = Munitions blocks.ammo = Munitions
bar.drilltierreq = Foreuse Améliorée Requise bar.drilltierreq = Foreuse Améliorée Requise
bar.drillspeed = Vitesse de forage: {0}/s bar.drillspeed = Vitesse de Forage: {0}/s
bar.pumpspeed = Pump Speed: {0}/s bar.pumpspeed = Vitesse de Pompage: {0}/s
bar.efficiency = Efficacité: {0}% bar.efficiency = Efficacité: {0}%
bar.powerbalance = Énergie: {0}/s bar.powerbalance = Énergie: {0}/s
bar.powerstored = Stocké: {0}/{1} bar.powerstored = Stocké: {0}/{1}
@@ -544,6 +562,9 @@ bar.heat = Chaleur
bar.power = Énergie bar.power = Énergie
bar.progress = Progression de la construction bar.progress = Progression de la construction
bar.spawned = Unités: {0}/{1} bar.spawned = Unités: {0}/{1}
bar.input = Entrée
bar.output = Sortie
bullet.damage = [stat]{0}[lightgray] dégâts bullet.damage = [stat]{0}[lightgray] dégâts
bullet.splashdamage = [stat]{0}[lightgray] dégâts de zone ~[stat] {1}[lightgray] blocs bullet.splashdamage = [stat]{0}[lightgray] dégâts de zone ~[stat] {1}[lightgray] blocs
bullet.incendiary = [stat]incendiaire bullet.incendiary = [stat]incendiaire
@@ -555,6 +576,7 @@ bullet.freezing = [stat]gel
bullet.tarred = [stat]goudronné bullet.tarred = [stat]goudronné
bullet.multiplier = [stat]{0}[lightgray]x multiplicateur de munitions bullet.multiplier = [stat]{0}[lightgray]x multiplicateur de munitions
bullet.reload = [stat]{0}[lightgray]x vitesse de tir bullet.reload = [stat]{0}[lightgray]x vitesse de tir
unit.blocks = blocs unit.blocks = blocs
unit.powersecond = énergie/seconde unit.powersecond = énergie/seconde
unit.liquidsecond = unité de liquide/seconde unit.liquidsecond = unité de liquide/seconde
@@ -576,9 +598,10 @@ category.shooting = Défense
category.optional = Améliorations optionnelles category.optional = Améliorations optionnelles
setting.landscape.name = Verrouiller en rotation paysage setting.landscape.name = Verrouiller en rotation paysage
setting.shadows.name = Ombres setting.shadows.name = Ombres
setting.blockreplace.name = Automatic Block Suggestions setting.blockreplace.name = Suggestions Automatiques de Blocs
setting.linear.name = Filtrage Linéaire setting.linear.name = Filtrage Linéaire
setting.hints.name = Astuces setting.hints.name = Astuces
setting.buildautopause.name = Pause Automatique de la Construction
setting.animatedwater.name = Eau animée setting.animatedwater.name = Eau animée
setting.animatedshields.name = Boucliers Animés setting.animatedshields.name = Boucliers Animés
setting.antialias.name = Antialias[lightgray] (redémarrage du jeu nécessaire)[] setting.antialias.name = Antialias[lightgray] (redémarrage du jeu nécessaire)[]
@@ -599,14 +622,17 @@ setting.difficulty.insane = Extrême
setting.difficulty.name = Difficulté: setting.difficulty.name = Difficulté:
setting.screenshake.name = Tremblement de l'écran setting.screenshake.name = Tremblement de l'écran
setting.effects.name = Afficher les effets setting.effects.name = Afficher les effets
setting.destroyedblocks.name = Display Destroyed Blocks setting.destroyedblocks.name = Afficher les Blocs Détruits
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding setting.conveyorpathfinding.name = Recherche de Chemin pour le Placement de Convoyeurs
setting.sensitivity.name = Sensibilité de la manette setting.sensitivity.name = Sensibilité de la manette
setting.saveinterval.name = Intervalle des sauvegardes auto setting.saveinterval.name = Intervalle des sauvegardes auto
setting.seconds = {0} secondes setting.seconds = {0} secondes
setting.blockselecttimeout.name = Délai d'Attente de Sélection de Bloc
setting.milliseconds = {0} millisecondes
setting.fullscreen.name = Plein Écran setting.fullscreen.name = Plein Écran
setting.borderlesswindow.name = Fenêtre sans bords (Borderless)[lightgray] (peut nécessiter le redémarrage du jeu) setting.borderlesswindow.name = Fenêtre sans bords (Borderless)[lightgray] (peut nécessiter le redémarrage du jeu)
setting.fps.name = Afficher FPS setting.fps.name = Afficher FPS
setting.blockselectkeys.name = Afficher les Touches de Sélection de Bloc
setting.vsync.name = VSync setting.vsync.name = VSync
setting.pixelate.name = Pixeliser[lightgray] (désactive les animations) setting.pixelate.name = Pixeliser[lightgray] (désactive les animations)
setting.minimap.name = Afficher la Minimap setting.minimap.name = Afficher la Minimap
@@ -635,16 +661,36 @@ category.multiplayer.name = Multijoueur
command.attack = Attaque command.attack = Attaque
command.rally = Rassembler command.rally = Rassembler
command.retreat = Retraite command.retreat = Retraite
placement.blockselectkeys = \n[lightgray]Touche: [{0},
keybind.clear_building.name = Effacer les constructions keybind.clear_building.name = Effacer les constructions
keybind.press = Appuyer sur une touche... keybind.press = Appuyer sur une touche...
keybind.press.axis = Appuyer sur un axe ou une touche... keybind.press.axis = Appuyer sur un axe ou une touche...
keybind.screenshot.name = Capture d'écran keybind.screenshot.name = Capture d'écran
keybind.move_x.name = Mouvement x keybind.toggle_power_lines.name = Montrer/Cacher les Connections d'Énergie
keybind.move_y.name = Mouvement y keybind.move_x.name = Mouvement X
keybind.move_y.name = Mouvement Y
keybind.mouse_move.name = Suivre la Souris
keybind.dash.name = Sprint
keybind.schematic_select.name = Sélectionner une région keybind.schematic_select.name = Sélectionner une région
keybind.schematic_menu.name = Menu des schéma keybind.schematic_menu.name = Menu des schéma
keybind.schematic_flip_x.name = Retourner le schéma sur l'axe X keybind.schematic_flip_x.name = Retourner le schéma sur l'axe X
keybind.schematic_flip_y.name = Retourner le schéma sur l'axe Y keybind.schematic_flip_y.name = Retourner le schéma sur l'axe Y
keybind.category_prev.name = Catégorie Précédente
keybind.category_next.name = Catégorie Suivante
keybind.block_select_left.name = Sélectionner Bloc de Gauche
keybind.block_select_right.name = Sélectionner Bloc de Droite
keybind.block_select_up.name = Sélectionner Bloc en Haut
keybind.block_select_down.name = Sélectionner Bloc en Bas
keybind.block_select_01.name = Sélectionner Catégorie/Bloc 1
keybind.block_select_02.name = Sélectionner Catégorie/Bloc 2
keybind.block_select_03.name = Sélectionner Catégorie/Bloc 3
keybind.block_select_04.name = Sélectionner Catégorie/Bloc 4
keybind.block_select_05.name = Sélectionner Catégorie/Bloc 5
keybind.block_select_06.name = Sélectionner Catégorie/Bloc 6
keybind.block_select_07.name = Sélectionner Catégorie/Bloc 7
keybind.block_select_08.name = Sélectionner Catégorie/Bloc 8
keybind.block_select_09.name = Sélectionner Catégorie/Bloc 9
keybind.block_select_10.name = Sélectionner Catégorie/Bloc 10
keybind.fullscreen.name = Basculer en Plein Écran keybind.fullscreen.name = Basculer en Plein Écran
keybind.select.name = Sélectionner/Tirer keybind.select.name = Sélectionner/Tirer
keybind.diagonal_placement.name = Placement en diagonale keybind.diagonal_placement.name = Placement en diagonale
@@ -658,18 +704,17 @@ keybind.menu.name = Menu
keybind.pause.name = Pause keybind.pause.name = Pause
keybind.pause_building.name = Pauser/Reprendre la construction keybind.pause_building.name = Pauser/Reprendre la construction
keybind.minimap.name = Minimap keybind.minimap.name = Minimap
keybind.dash.name = Sprint
keybind.chat.name = Chat keybind.chat.name = Chat
keybind.player_list.name = Liste des joueurs keybind.player_list.name = Liste des Joueurs
keybind.console.name = Console keybind.console.name = Console
keybind.rotate.name = Tourner keybind.rotate.name = Tourner
keybind.rotateplaced.name = Tourner existant (maintenir) keybind.rotateplaced.name = Tourner existant (maintenir)
keybind.toggle_menus.name = Cacher/afficher les menus keybind.toggle_menus.name = Cacher/Afficher les Menus
keybind.chat_history_prev.name = Remonter l'historique du chat keybind.chat_history_prev.name = Remonter l'Historique du Chat
keybind.chat_history_next.name = Descendre l'historique du chat keybind.chat_history_next.name = Descendre l'Historique du Chat
keybind.chat_scroll.name = Défilement du chat keybind.chat_scroll.name = Défilement du Chat
keybind.drop_unit.name = Larguer l'unité keybind.drop_unit.name = Larguer l'unité
keybind.zoom_minimap.name = Zoom minimap keybind.zoom_minimap.name = Zoom Minimap
mode.help.title = Description des modes de jeu mode.help.title = Description des modes de jeu
mode.survival.name = Survie mode.survival.name = Survie
mode.survival.description = Le mode normal. Ressources limitées et vagues automatiques.\n[gray]Nécessite un point d'apparition pour les ennemis. mode.survival.description = Le mode normal. Ressources limitées et vagues automatiques.\n[gray]Nécessite un point d'apparition pour les ennemis.
@@ -681,7 +726,9 @@ mode.pvp.description = Battez-vous contre d'autres joueurs en local.\n[gray]Requ
mode.attack.name = Attaque mode.attack.name = Attaque
mode.attack.description = Pas de vagues, le but étant de détruire la base ennemie.\n[gray]Requiert un noyaux rouge dans la map pour y jouer. mode.attack.description = Pas de vagues, le but étant de détruire la base ennemie.\n[gray]Requiert un noyaux rouge dans la map pour y jouer.
mode.custom = Règles personnalisées mode.custom = Règles personnalisées
rules.infiniteresources = Ressources infinies rules.infiniteresources = Ressources infinies
rules.reactorexplosions = Explosion des Réacteurs
rules.wavetimer = Minuterie pour les vagues rules.wavetimer = Minuterie pour les vagues
rules.waves = Vagues rules.waves = Vagues
rules.attack = Mode d'Attaque rules.attack = Mode d'Attaque
@@ -707,6 +754,10 @@ rules.title.resourcesbuilding = Ressources & Construction
rules.title.player = Joueurs rules.title.player = Joueurs
rules.title.enemy = Ennemis rules.title.enemy = Ennemis
rules.title.unit = Unités rules.title.unit = Unités
rules.title.experimental = Expérimental
rules.lighting = Éclairage
rules.ambientlight = Éclairage Ambiant
content.item.name = Objets content.item.name = Objets
content.liquid.name = Liquides content.liquid.name = Liquides
content.unit.name = Unités content.unit.name = Unités
@@ -753,6 +804,7 @@ mech.trident-ship.name = Trident
mech.trident-ship.weapon = Bombes mech.trident-ship.weapon = Bombes
mech.glaive-ship.name = Glaive mech.glaive-ship.name = Glaive
mech.glaive-ship.weapon = Mitraille incendiaire mech.glaive-ship.weapon = Mitraille incendiaire
item.corestorable = [lightgray]Stockable dans le Noyau: {0}
item.explosiveness = [LIGHT_GRAY]Explosivité: {0} item.explosiveness = [LIGHT_GRAY]Explosivité: {0}
item.flammability = [LIGHT_GRAY]Inflammabilité: {0} item.flammability = [LIGHT_GRAY]Inflammabilité: {0}
item.radioactivity = [LIGHT_GRAY]Radioactivité: {0} item.radioactivity = [LIGHT_GRAY]Radioactivité: {0}
@@ -768,6 +820,7 @@ mech.buildspeed = [LIGHT_GRAY]Vitesse de Construction: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique: {0} liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosité: {0} liquid.viscosity = [LIGHT_GRAY]Viscosité: {0}
liquid.temperature = [LIGHT_GRAY]Température: {0} liquid.temperature = [LIGHT_GRAY]Température: {0}
block.sand-boulder.name = Bloc de Sable block.sand-boulder.name = Bloc de Sable
block.grass.name = Herbe block.grass.name = Herbe
block.salt.name = Sel block.salt.name = Sel
@@ -866,6 +919,8 @@ block.distributor.name = Distributeur
block.sorter.name = Trieur block.sorter.name = Trieur
block.inverted-sorter.name = Trieur Inversé block.inverted-sorter.name = Trieur Inversé
block.message.name = Message block.message.name = Message
block.illuminator.name = Illuminateur
block.illuminator.description = Une petite source lumineuse compacte et configurable. Nécessite de l'énergie pour fonctionner.
block.overflow-gate.name = Barrière de Débordement block.overflow-gate.name = Barrière de Débordement
block.silicon-smelter.name = Fonderie de Silicium block.silicon-smelter.name = Fonderie de Silicium
block.phase-weaver.name = Tisseur à Phase block.phase-weaver.name = Tisseur à Phase
@@ -879,6 +934,7 @@ block.coal-centrifuge.name = Centrifugeur à Charbon
block.power-node.name = Transmetteur Énergétique block.power-node.name = Transmetteur Énergétique
block.power-node-large.name = Grand Transmetteur Énergétique block.power-node-large.name = Grand Transmetteur Énergétique
block.surge-tower.name = Tour de Surtension block.surge-tower.name = Tour de Surtension
block.diode.name = Diode de Batterie
block.battery.name = Batterie block.battery.name = Batterie
block.battery-large.name = Grande Batterie block.battery-large.name = Grande Batterie
block.combustion-generator.name = Générateur à Combustion block.combustion-generator.name = Générateur à Combustion
@@ -931,6 +987,7 @@ block.fortress-factory.name = Usine de Méchas Forteresses
block.revenant-factory.name = Usine de Combattants Revenants block.revenant-factory.name = Usine de Combattants Revenants
block.repair-point.name = Point de Réparation block.repair-point.name = Point de Réparation
block.pulse-conduit.name = Conduit à Impulsion block.pulse-conduit.name = Conduit à Impulsion
block.plated-conduit.name = Conduit Plaqué
block.phase-conduit.name = Conduit Phasé block.phase-conduit.name = Conduit Phasé
block.liquid-router.name = Routeur de Liquide block.liquid-router.name = Routeur de Liquide
block.liquid-tank.name = Réservoir à Liquide block.liquid-tank.name = Réservoir à Liquide
@@ -938,7 +995,7 @@ block.liquid-junction.name = Jonction à Liquide
block.bridge-conduit.name = Conduit Surélevé block.bridge-conduit.name = Conduit Surélevé
block.rotary-pump.name = Pompe Rotative block.rotary-pump.name = Pompe Rotative
block.thorium-reactor.name = Réacteur à Thorium block.thorium-reactor.name = Réacteur à Thorium
block.mass-driver.name = Transporteur de Masses block.mass-driver.name = Catapulte Électromagnétique
block.blast-drill.name = Foreuse à Explosion block.blast-drill.name = Foreuse à Explosion
block.thermal-pump.name = Pompe Thermique block.thermal-pump.name = Pompe Thermique
block.thermal-generator.name = Générateur Thermique block.thermal-generator.name = Générateur Thermique
@@ -982,7 +1039,7 @@ unit.eradicator.name = Éradicateur
unit.lich.name = Liche unit.lich.name = Liche
unit.reaper.name = Faucheur unit.reaper.name = Faucheur
tutorial.next = [lightgray]<Appuyez pour continuer> tutorial.next = [lightgray]<Appuyez pour continuer>
tutorial.intro = Vous venez de commencer le [scarlet]Tutoriel de Mindustry.[]\nUtilisez [[ZQSD] pour vous déplacer.\n[accent]Maintenez [[Ctrl] tout en faisant rouler la molette de la souris[] pour zoomer et dézoomer.\nCommencez en minant du [accent]cuivre[]. Pour cela, rapprochez vous de la veine de minerais de cuivre près de votre noyau et faites un clic gauche dessus.\n\n[accent]{0}/{1} cuivre tutorial.intro = Vous venez de commencer le [scarlet]Tutoriel de Mindustry.[]\nUtilisez [accent][[ZQSD][] pour vous déplacer.\n[accent]Maintenez [[Ctrl] tout en faisant rouler la molette de la souris[] pour zoomer et dézoomer.\nCommencez en minant du [accent]cuivre[]. Pour cela, rapprochez vous de la veine de minerais de cuivre près de votre noyau et faites un clic gauche dessus.\n\n[accent]{0}/{1} cuivre
tutorial.intro.mobile = Vous venez de commencer le [scarlet]Tutoriel de Mindustry.[]\nBalayez l'écran pour vous déplacer.\n[accent] Pincer avec deux doigts [] afin d'agrandir et rétrécir la perspective.\nCommencez en[accent] minant du cuivre[]. Pour cela, appuyez sur une veine de minerai de cuivre près de votre noyau.\n\n[accent]{0}/{1} cuivre tutorial.intro.mobile = Vous venez de commencer le [scarlet]Tutoriel de Mindustry.[]\nBalayez l'écran pour vous déplacer.\n[accent] Pincer avec deux doigts [] afin d'agrandir et rétrécir la perspective.\nCommencez en[accent] minant du cuivre[]. Pour cela, appuyez sur une veine de minerai de cuivre près de votre noyau.\n\n[accent]{0}/{1} cuivre
tutorial.drill = Miner manuellement est inefficace.\n[accent]Les foreuses []peuvent miner pour vous.\nCliquez sur l'onglet des foreuses en bas à droite.\nSélectionnez la [accent]foreuse mécanique[]. Placez-la sur une veine de cuivre en cliquant.\n[accent]Faite un clique-droit[] pour arrêter la construction. tutorial.drill = Miner manuellement est inefficace.\n[accent]Les foreuses []peuvent miner pour vous.\nCliquez sur l'onglet des foreuses en bas à droite.\nSélectionnez la [accent]foreuse mécanique[]. Placez-la sur une veine de cuivre en cliquant.\n[accent]Faite un clique-droit[] pour arrêter la construction.
tutorial.drill.mobile = Miner manuellement est inefficace.\n[accent]Les foreuses []peuvent miner pour vous.\nAppuyez sur l'onglet des foreuses en bas à droite.\nSélectionnez la [accent]foreuse mécanique[].\nPlacez-la sur une veine de cuivre en y appuyant, puis en touchant la[accent] coche[] pour confirmer votre placement.\nAppuyez sur le [accent]bouton en forme de croix[] pour annuler le placement. tutorial.drill.mobile = Miner manuellement est inefficace.\n[accent]Les foreuses []peuvent miner pour vous.\nAppuyez sur l'onglet des foreuses en bas à droite.\nSélectionnez la [accent]foreuse mécanique[].\nPlacez-la sur une veine de cuivre en y appuyant, puis en touchant la[accent] coche[] pour confirmer votre placement.\nAppuyez sur le [accent]bouton en forme de croix[] pour annuler le placement.
@@ -1002,6 +1059,7 @@ tutorial.deposit = Déposez des ressources dans des blocs en les faisant glisser
tutorial.waves = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues.[accent] Cliquez[] pour tirer.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre. tutorial.waves = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues.[accent] Cliquez[] pour tirer.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre.
tutorial.waves.mobile = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues. Votre vaisseau tirera automatiquement sur les ennemis.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre. tutorial.waves.mobile = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues. Votre vaisseau tirera automatiquement sur les ennemis.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre.
tutorial.launch = Une fois que vous aurez atteint une vague spécifique, vous aurez la possibilité de[accent] faire décoller le noyau[], abandonnant vos défenses mais [accent]sécurisant toutes les ressources stockées dans votre noyau.[]\nCes ressources peuvent ensuite être utilisées pour rechercher de nouvelles technologies.\n\n[accent]Appuyez sur le bouton de lancement. tutorial.launch = Une fois que vous aurez atteint une vague spécifique, vous aurez la possibilité de[accent] faire décoller le noyau[], abandonnant vos défenses mais [accent]sécurisant toutes les ressources stockées dans votre noyau.[]\nCes ressources peuvent ensuite être utilisées pour rechercher de nouvelles technologies.\n\n[accent]Appuyez sur le bouton de lancement.
item.copper.description = Le matériau structurel de base. Utilisé intensivement dans tout les blocs. item.copper.description = Le matériau structurel de base. Utilisé intensivement dans tout les blocs.
item.lead.description = Un matériau de départ. Utilisé intensivement en électronique et dans les blocs de transport de liquides. item.lead.description = Un matériau de départ. Utilisé intensivement en électronique et dans les blocs de transport de liquides.
item.metaglass.description = Un composé de vitre super-résistant. Utilisé largement pour le transport et le stockage de liquides. item.metaglass.description = Un composé de vitre super-résistant. Utilisé largement pour le transport et le stockage de liquides.
@@ -1083,21 +1141,22 @@ block.overdrive-projector.description = Accélère les bâtiments autour de lui,
block.force-projector.description = Crée un champ de force hexagonal autour de lui qui protège les bâtiments et les unités à l'intérieur des dégâts.\nSurchauffe si trop de dégâts sont reçus. Peut utiliser du liquide réfrigérant pour éviter la surchauffe. Peut utiliser du tissu phasé pour booster la taille du bouclier. block.force-projector.description = Crée un champ de force hexagonal autour de lui qui protège les bâtiments et les unités à l'intérieur des dégâts.\nSurchauffe si trop de dégâts sont reçus. Peut utiliser du liquide réfrigérant pour éviter la surchauffe. Peut utiliser du tissu phasé pour booster la taille du bouclier.
block.shock-mine.description = Blesse les ennemis qui marchent dessus. Quasiment invisible pour l'ennemi. block.shock-mine.description = Blesse les ennemis qui marchent dessus. Quasiment invisible pour l'ennemi.
block.conveyor.description = Convoyeur basique servant à transporter des objets. Les objets déplacés en avant sont automatiquement déposés dans les tourelles ou les bâtiments. Peut être tourné. block.conveyor.description = Convoyeur basique servant à transporter des objets. Les objets déplacés en avant sont automatiquement déposés dans les tourelles ou les bâtiments. Peut être tourné.
block.titanium-conveyor.description = Convoyeur avancé . Déplace les objets plus rapidement que les convoyeurs standards. block.titanium-conveyor.description = Convoyeur avancé. Déplace les objets plus rapidement que les convoyeurs standards.
block.junction.description = Agit comme un pont pour deux lignes de convoyeurs se croisant. Utile lorsque deux différents convoyeurs déplacent différents matériaux à différents endroits. block.junction.description = Agit comme un pont pour deux lignes de convoyeurs se croisant. Utile lorsque deux différents convoyeurs déplacent différents matériaux à différents endroits.
block.bridge-conveyor.description = Bloc de transport avancé permettant de traverser jusqu'à 3 blocs de n'importe quel terrain ou bâtiment. block.bridge-conveyor.description = Bloc de transport avancé permettant de traverser jusqu'à 3 blocs de n'importe quel terrain ou bâtiment.
block.phase-conveyor.description = Convoyeur très avancé. Utilise de l'énergie pour téléporter des objets à un convoyeur phasé connecté jusqu'à une longue distance . block.phase-conveyor.description = Convoyeur très avancé. Utilise de l'énergie pour téléporter des objets à un convoyeur phasé connecté jusqu'à une longue distance.
block.sorter.description = Trie les articles. Si un article correspond à la sélection, il peut passer. Autrement, l'article est distribué vers la gauche ou la droite. block.sorter.description = Trie les ressources. Si une ressource correspond à la sélection, elle peut passer. Autrement, elle est distribuée vers la gauche ou la droite.
block.inverted-sorter.description = Trie les articles comme un trieur standard, mais ceux correspondant à la sélection sont envoyés sur les côtés. block.inverted-sorter.description = Trie les ressources comme un trieur standard, mais ceux correspondant à la sélection sont envoyés sur les côtés.
block.router.description = Accepte les objets depuis une ou plus directions et le renvoie dans n'importe quelle direction. Utile pour séparer une chaîne de convoyeurs en plusieurs.[accent]Le seul et l'Unique[] block.router.description = Accepte les objets depuis une ou plus directions et le renvoie dans n'importe quelle direction. Utile pour séparer une chaîne de convoyeurs en plusieurs.[accent]Le seul et l'Unique[]
block.distributor.description = Un routeur avancé qui sépare les objets jusqu'à 7 autres directions équitablement. block.distributor.description = Un routeur avancé qui sépare les objets jusqu'à 7 autres directions équitablement.
block.overflow-gate.description = C'est la combinaison entre un Routeur et un Diviseur qui peut seulement distribuer à gauche et à droite si le chemin de devant est bloqué. block.overflow-gate.description = Bloc envoyant les ressources à gauche et à droite si le chemin de devant est bloqué.
block.mass-driver.description = bâtiment de transport d'objet [accent]ultime[]. Collecte un grand nombre d'objets puis les tire à un autre transporteur de masse sur une très longue distance. block.mass-driver.description = Le moyen de transport de resources ultime. Collecte plusieurs ressources puis les envoie à une autre catapulte sur une longue distance. Nécessite de l'énergie pour fonctionner.
block.mechanical-pump.description = Une pompe de faible prix pompant lentement, mais ne consomme pas d'énergie. block.mechanical-pump.description = Une pompe de faible prix pompant lentement, mais ne consommant pas d'énergie.
block.rotary-pump.description = Une pompe avancée plus rapide mais utilisant de l'énergie. block.rotary-pump.description = Une pompe avancée plus rapide mais utilisant de l'énergie.
block.thermal-pump.description = La pompe ultime. Beaucoup plus rapide qu'une pompe mécanique et la seule pompe capable de récupérer de la lave. block.thermal-pump.description = La pompe ultime.
block.conduit.description = Tuyau basique permettant le transport de liquide . Marche comme un convoyeur mais avec les liquides. Utile si utilisé avec des extracteurs, des pompes ou d'autres conduits. block.conduit.description = Bloc de transport de liquide de base. Fait avancer les liquides. Utilisé avec des pompes et autres conduits.
block.pulse-conduit.description = Tuyau avancé permettant le transport de liquide . Transporte les liquides plus rapidement et en stocke plus que les tuyaux standards. block.pulse-conduit.description = Tuyau avancé permettant le transport de liquide. Transporte les liquides plus rapidement et en stocke plus que les tuyaux standards.
block.plated-conduit.description = Déplace les liquides au même rythme que les conduits d'impulsion, mais possède plus d'armure. N'accepte pas de liquides provenant des côtés par autre chose que des conduits.\nFuit moins.
block.liquid-router.description = Accepte les liquides en une direction et les rejette de tous les côtés équitablement. Peut aussi stocker une certaine quantité de liquide. Utile pour envoyer un liquide à plusieurs endroits. block.liquid-router.description = Accepte les liquides en une direction et les rejette de tous les côtés équitablement. Peut aussi stocker une certaine quantité de liquide. Utile pour envoyer un liquide à plusieurs endroits.
block.liquid-tank.description = Stocke une grande quantité de liquides . Utile pour réguler la sortie quand la demande est inconstante ou comme sécurité pour refroidir des bâtiments important. block.liquid-tank.description = Stocke une grande quantité de liquides . Utile pour réguler la sortie quand la demande est inconstante ou comme sécurité pour refroidir des bâtiments important.
block.liquid-junction.description = Agit comme une intersection pour deux conduits se croisant.Utile si deux conduits amènent différents liquides à différents endroits. block.liquid-junction.description = Agit comme une intersection pour deux conduits se croisant.Utile si deux conduits amènent différents liquides à différents endroits.
@@ -1106,11 +1165,12 @@ block.phase-conduit.description = Tuyau très avancé permettant le transport de
block.power-node.description = Transmet l'énergie aux transmetteurs énergétiques connectés. Le transmetteur recevra de l'énergie ou la transmettra à n'importe quel bâtiment adjacent. block.power-node.description = Transmet l'énergie aux transmetteurs énergétiques connectés. Le transmetteur recevra de l'énergie ou la transmettra à n'importe quel bâtiment adjacent.
block.power-node-large.description = Possède un rayon plus grand que le transmetteur énergétique standard, connectant d'autant plus de consommateurs ou transmetteurs d'énergie. block.power-node-large.description = Possède un rayon plus grand que le transmetteur énergétique standard, connectant d'autant plus de consommateurs ou transmetteurs d'énergie.
block.surge-tower.description = Un transmetteur énergétique de très grande portée mais avec moins de connections disponibles. block.surge-tower.description = Un transmetteur énergétique de très grande portée mais avec moins de connections disponibles.
block.diode.description = La batterie ne peut circuler dans ce bloc que dans un sens, mais uniquement si lautre côté a moins dénergie stockée.
block.battery.description = Stocke l'énergie quand elle est en abondance et la redistribue si il y a un deficit d'énergie dans la limite des réserves disponibles. block.battery.description = Stocke l'énergie quand elle est en abondance et la redistribue si il y a un deficit d'énergie dans la limite des réserves disponibles.
block.battery-large.description = Stocke bien plus d'énergie qu'une batterie normale. block.battery-large.description = Stocke bien plus d'énergie qu'une batterie normale.
block.combustion-generator.description = Génère de l'énergie en brûlant du charbon ou des matériaux inflammables. block.combustion-generator.description = Génère de l'énergie en brûlant du charbon ou d'autres matériaux inflammables.
block.thermal-generator.description = Génère une grande quantité d'énergie à partir de zone de chaleur . block.thermal-generator.description = Génère une grande quantité d'énergie à partir de zone de chaleur.
block.turbine-generator.description = Plus efficace qu'un générateur à combustion, mais requiert de l'eau . block.turbine-generator.description = Plus efficace qu'un générateur à combustion, mais requiert de l'eau.
block.differential-generator.description = Génère de grande quantité d'energie. Utilise différence de temperature entre le liquide cryogénique et la pyratite brûlante. block.differential-generator.description = Génère de grande quantité d'energie. Utilise différence de temperature entre le liquide cryogénique et la pyratite brûlante.
block.rtg-generator.description = Un générateur thermo-électrique à radioisotope qui ne demande pas de refroidissement mais produit moins d'énergie qu'un réacteur à Thorium. block.rtg-generator.description = Un générateur thermo-électrique à radioisotope qui ne demande pas de refroidissement mais produit moins d'énergie qu'un réacteur à Thorium.
block.solar-panel.description = Génère une faible quantité d'énergie grace au rayons du soleil. block.solar-panel.description = Génère une faible quantité d'énergie grace au rayons du soleil.

View File

@@ -17,29 +17,29 @@ screenshot.invalid = マップが広すぎます。スクリーンショット
gameover = ゲームオーバー gameover = ゲームオーバー
gameover.pvp = [accent] {0}[] チームの勝利! gameover.pvp = [accent] {0}[] チームの勝利!
highscore = [accent]ハイスコアを更新! highscore = [accent]ハイスコアを更新!
copied = Copied. copied = コピーしました。
load.sound = サウンド load.sound = サウンド
load.map = マップ load.map = マップ
load.image = 画像 load.image = 画像
load.content = コンテンツ load.content = コンテンツ
load.system = システム load.system = システム
load.mod = MOD load.mod = MOD
schematic = Schematic schematic = 設計図
schematic.add = Save Schematic... schematic.add = 設計図を保存しています...
schematics = Schematics schematics = 設計図一覧
schematic.replace = A schematic by that name already exists. Replace it? schematic.replace = 同じ名前の設計図があるようです。 上書きしますか?
schematic.import = Import Schematic... schematic.import = 設計図を読み込んでいます...
schematic.exportfile = Export File schematic.exportfile = ファイルに出力する
schematic.importfile = Import File schematic.importfile = ファイルから読み込む
schematic.browseworkshop = Browse Workshop schematic.browseworkshop = ワークショップを表示する
schematic.copy = Copy to Clipboard schematic.copy = クリップボードにコピーする
schematic.copy.import = Import from Clipboard schematic.copy.import = クリップボードから読み込む
schematic.shareworkshop = Share on Workshop schematic.shareworkshop = ワークショップで共有する
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic
schematic.saved = Schematic saved. schematic.saved = 設計図を保存しました。
schematic.delete.confirm = This schematic will be utterly eradicated. schematic.delete.confirm = この設計図は完全に削除されます。よろしいですか
schematic.rename = Rename Schematic schematic.rename = 設計図の名前を変更する。
schematic.info = {0}x{1}, {2} blocks schematic.info = {0}x{1}, {2} ブロック
stat.wave = 防衛したウェーブ:[accent] {0} stat.wave = 防衛したウェーブ:[accent] {0}
stat.enemiesDestroyed = 敵による破壊数:[accent] {0} stat.enemiesDestroyed = 敵による破壊数:[accent] {0}
stat.built = 建設した建造物数:[accent] {0} stat.built = 建設した建造物数:[accent] {0}
@@ -64,7 +64,7 @@ customgame = カスタムプレイ
newgame = 新しく始める newgame = 新しく始める
none = <なし> none = <なし>
minimap = ミニマップ minimap = ミニマップ
position = Position position = 位置
close = 閉じる close = 閉じる
website = ウェブサイト website = ウェブサイト
quit = 終了 quit = 終了
@@ -80,25 +80,25 @@ uploadingcontent = コンテンツをアップロードしています
uploadingpreviewfile = プレビューファイルをアップロードしています uploadingpreviewfile = プレビューファイルをアップロードしています
committingchanges = 変更を適応中 committingchanges = 変更を適応中
done = 完了 done = 完了
feature.unsupported = Your device does not support this feature. feature.unsupported = あなたのデバイスはこの機能をサポートしていません。
mods.alphainfo = Mods機能は実験的なものです。[scarlet] エラーが含まれている可能性があります[]。\n 発見した問題をMindustry GitHubに報告してください。 mods.alphainfo = Mods機能は実験的なものです。[scarlet] エラーが含まれている可能性があります[]。\n 発見した問題をMindustry GitHubに報告してください。
mods.alpha = [accent](Alpha) mods.alpha = [accent](Alpha)
mods = Mods mods = Mods
mods.none = [LIGHT_GRAY]Modが見つかりませんでした! mods.none = [LIGHT_GRAY]Modが見つかりませんでした!
mods.guide = Modding Guide mods.guide = Modding Guide
mods.report = Report Bug mods.report = バグを報告する
mods.openfolder = Open Mod Folder mods.openfolder = MODのフォルダを開く
mod.enabled = [lightgray]有効 mod.enabled = [lightgray]有効
mod.disabled = [scarlet]無効 mod.disabled = [scarlet]無効
mod.disable = 無効化 mod.disable = 無効化
mod.delete.error = Unable to delete mod. File may be in use. mod.delete.error = MODを削除することができませんでした。
mod.missingdependencies = [scarlet]Missing dependencies: {0} mod.missingdependencies = [scarlet]Missing dependencies: {0}
mod.nowdisabled = [scarlet]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled. mod.nowdisabled = [scarlet]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled.
mod.enable = 有効化 mod.enable = 有効化
mod.requiresrestart = このModをインストールするためにはゲームの再起動が必要です。 mod.requiresrestart = このModをインストールするためにはゲームの再起動が必要です。
mod.reloadrequired = [scarlet]Modを有効にするには、この画面を開き直してください。 mod.reloadrequired = [scarlet]Modを有効にするには、この画面を開き直してください。
mod.import = Modをインポート mod.import = Modをインポート
mod.import.github = Import GitHub Mod mod.import.github = GitHubからMODを読み込む
mod.remove.confirm = このModを削除します。 mod.remove.confirm = このModを削除します。
mod.author = [LIGHT_GRAY]著者:[] {0} mod.author = [LIGHT_GRAY]著者:[] {0}
mod.missing = このセーブには、アップグレードされた可能性があるModsか、ここに存在しないModsが必要です。 メモリのセーブを保存する! ロードしてもよろしいですか?\n[lightgray]MODS:\n{0} mod.missing = このセーブには、アップグレードされた可能性があるModsか、ここに存在しないModsが必要です。 メモリのセーブを保存する! ロードしてもよろしいですか?\n[lightgray]MODS:\n{0}
@@ -166,7 +166,7 @@ server.version = [lightgray]バージョン: {0} {1}
server.custombuild = [yellow]カスタムビルド server.custombuild = [yellow]カスタムビルド
confirmban = このプレイヤーをBanしてもよろしいですか? confirmban = このプレイヤーをBanしてもよろしいですか?
confirmkick = このプレイヤーをキックしてもよろしいですか? confirmkick = このプレイヤーをキックしてもよろしいですか?
confirmvotekick = Are you sure you want to vote-kick this player? confirmvotekick = このプレイヤーを投票キックしてもよろしいですか?
confirmunban = このプレイヤーのBanを解除してもよろしいですか? confirmunban = このプレイヤーのBanを解除してもよろしいですか?
confirmadmin = このプレイヤーを管理者にしてもよろしいですか? confirmadmin = このプレイヤーを管理者にしてもよろしいですか?
confirmunadmin = このプレイヤーを管理者から削除してもよろしいですか? confirmunadmin = このプレイヤーを管理者から削除してもよろしいですか?
@@ -202,7 +202,7 @@ save.rename = 名前を変更
save.rename.text = 新しい名前: save.rename.text = 新しい名前:
selectslot = セーブデータを選択してください。 selectslot = セーブデータを選択してください。
slot = [accent]スロット {0} slot = [accent]スロット {0}
editmessage = Edit Message editmessage = メッセージを編集する
save.corrupted = [accent]セーブファイルが無効、または破損しました!\nゲームのアップデート直後の場合、恐らくセーブデータのフォーマットの変更によるもので、バグではありません。 save.corrupted = [accent]セーブファイルが無効、または破損しました!\nゲームのアップデート直後の場合、恐らくセーブデータのフォーマットの変更によるもので、バグではありません。
empty = <空> empty = <空>
on = オン on = オン
@@ -237,10 +237,10 @@ quit.confirm.tutorial = チュートリアルを終了しますか?\nチュー
loading = [accent]読み込み中... loading = [accent]読み込み中...
reloading = [accent]Reloading Mods... reloading = [accent]Reloading Mods...
saving = [accent]保存中... saving = [accent]保存中...
cancelbuilding = [accent][[{0}][] to clear plan cancelbuilding = [accent][[{0}][] 選択を解除する
selectschematic = [accent][[{0}][] to select+copy selectschematic = [accent][[{0}][] 選択し、コピーする
pausebuilding = [accent][[{0}][] to pause building pausebuilding = [accent][[{0}][] 建築を一時的に中断する
resumebuilding = [scarlet][[{0}][] to resume building resumebuilding = [scarlet][[{0}][] 建築を再開する
wave = [accent]ウェーブ {0} wave = [accent]ウェーブ {0}
wave.waiting = [lightgray]次のウェーブまで {0} 秒 wave.waiting = [lightgray]次のウェーブまで {0} 秒
wave.waveInProgress = [lightgray]ウェーブ進行中 wave.waveInProgress = [lightgray]ウェーブ進行中
@@ -424,8 +424,8 @@ launch.confirm = すべての資源をコアに搬入し、発射します。\n
launch.skip.confirm = スキップすると、次の発射可能なウェーブまで発射できません。 launch.skip.confirm = スキップすると、次の発射可能なウェーブまで発射できません。
uncover = 開放 uncover = 開放
configure = 積み荷の設定 configure = 積み荷の設定
bannedblocks = Banned Blocks bannedblocks = 禁止ブロック
addall = Add All addall = すべて追加
configure.locked = [lightgray]ウェーブ {0} を達成すると積み荷を設定できるようになります。 configure.locked = [lightgray]ウェーブ {0} を達成すると積み荷を設定できるようになります。
configure.invalid = 値は 0 から {0} の間でなければなりません。 configure.invalid = 値は 0 から {0} の間でなければなりません。
zone.unlocked = [lightgray]{0} がアンロックされました. zone.unlocked = [lightgray]{0} がアンロックされました.
@@ -509,7 +509,7 @@ blocks.shootrange = 範囲
blocks.size = 大きさ blocks.size = 大きさ
blocks.liquidcapacity = 液体容量 blocks.liquidcapacity = 液体容量
blocks.powerrange = 電力範囲 blocks.powerrange = 電力範囲
blocks.powerconnections = Max Connections blocks.powerconnections = 最大接続数
blocks.poweruse = 電力使用量 blocks.poweruse = 電力使用量
blocks.powerdamage = 電力/ダメージ blocks.powerdamage = 電力/ダメージ
blocks.itemcapacity = アイテム容量 blocks.itemcapacity = アイテム容量
@@ -531,10 +531,10 @@ blocks.reload = ショット/秒
blocks.ammo = 弾薬 blocks.ammo = 弾薬
bar.drilltierreq = より良いドリルが必要です bar.drilltierreq = より良いドリルが必要です
bar.drillspeed = 採掘速度: {0}/秒 bar.drillspeed = 採掘速度: {0}/秒
bar.pumpspeed = Pump Speed: {0}/s bar.pumpspeed = ポンプの速度: {0}/s
bar.efficiency = 効率: {0}% bar.efficiency = 効率: {0}%
bar.powerbalance = 電力: {0}/秒 bar.powerbalance = 電力: {0}/秒
bar.powerstored = Stored: {0}/{1} bar.powerstored = 残量: {0}/{1}
bar.poweramount = 電力: {0} bar.poweramount = 電力: {0}
bar.poweroutput = 電力発電量: {0} bar.poweroutput = 電力発電量: {0}
bar.items = アイテム: {0} bar.items = アイテム: {0}
@@ -578,7 +578,7 @@ setting.landscape.name = 横画面で固定
setting.shadows.name = setting.shadows.name =
setting.blockreplace.name = Automatic Block Suggestions setting.blockreplace.name = Automatic Block Suggestions
setting.linear.name = リニアフィルター setting.linear.name = リニアフィルター
setting.hints.name = Hints setting.hints.name = ヒント
setting.animatedwater.name = 水のアニメーション setting.animatedwater.name = 水のアニメーション
setting.animatedshields.name = シールドのアニメーション setting.animatedshields.name = シールドのアニメーション
setting.antialias.name = アンチエイリアス[lightgray] (再起動が必要)[] setting.antialias.name = アンチエイリアス[lightgray] (再起動が必要)[]
@@ -599,7 +599,7 @@ setting.difficulty.insane = クレイジー
setting.difficulty.name = 難易度: setting.difficulty.name = 難易度:
setting.screenshake.name = 画面の揺れ setting.screenshake.name = 画面の揺れ
setting.effects.name = 画面効果 setting.effects.name = 画面効果
setting.destroyedblocks.name = Display Destroyed Blocks setting.destroyedblocks.name = 破壊されたブロックを表示
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding setting.conveyorpathfinding.name = Conveyor Placement Pathfinding
setting.sensitivity.name = 操作感度 setting.sensitivity.name = 操作感度
setting.saveinterval.name = 自動保存間隔 setting.saveinterval.name = 自動保存間隔
@@ -610,7 +610,7 @@ setting.fps.name = FPSを表示
setting.vsync.name = VSync setting.vsync.name = VSync
setting.pixelate.name = ピクセル化[lightgray] (アニメーションが無効化されます) setting.pixelate.name = ピクセル化[lightgray] (アニメーションが無効化されます)
setting.minimap.name = ミニマップを表示 setting.minimap.name = ミニマップを表示
setting.position.name = Show Player Position setting.position.name = プレイヤーの位置表示
setting.musicvol.name = 音楽 音量 setting.musicvol.name = 音楽 音量
setting.ambientvol.name = 環境音 音量 setting.ambientvol.name = 環境音 音量
setting.mutemusic.name = 音楽をミュート setting.mutemusic.name = 音楽をミュート
@@ -620,7 +620,7 @@ setting.crashreport.name = 匿名でクラッシュレポートを送信する
setting.savecreate.name = 自動保存 setting.savecreate.name = 自動保存
setting.publichost.name = 誰でもゲームに参加できるようにする setting.publichost.name = 誰でもゲームに参加できるようにする
setting.chatopacity.name = チャットの透明度 setting.chatopacity.name = チャットの透明度
setting.lasersopacity.name = Power Laser Opacity setting.lasersopacity.name = レーザーの透明度
setting.playerchat.name = ゲーム内にチャットを表示 setting.playerchat.name = ゲーム内にチャットを表示
public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility.
public.beta = Note that beta versions of the game cannot make public lobbies. public.beta = Note that beta versions of the game cannot make public lobbies.
@@ -843,8 +843,8 @@ block.copper-wall.name = 銅の壁
block.copper-wall-large.name = 巨大な銅の壁 block.copper-wall-large.name = 巨大な銅の壁
block.titanium-wall.name = チタンの壁 block.titanium-wall.name = チタンの壁
block.titanium-wall-large.name = 巨大なチタンの壁 block.titanium-wall-large.name = 巨大なチタンの壁
block.plastanium-wall.name = Plastanium Wall block.plastanium-wall.name = プラスタニウムの壁
block.plastanium-wall-large.name = Large Plastanium Wall block.plastanium-wall-large.name = 巨大なプラスタニウムの壁
block.phase-wall.name = フェーズファイバーの壁 block.phase-wall.name = フェーズファイバーの壁
block.phase-wall-large.name = 巨大なフェーズファイバーの壁 block.phase-wall-large.name = 巨大なフェーズファイバーの壁
block.thorium-wall.name = トリウムの壁 block.thorium-wall.name = トリウムの壁
@@ -864,8 +864,8 @@ block.junction.name = ジャンクション
block.router.name = ルーター block.router.name = ルーター
block.distributor.name = ディストリビューター block.distributor.name = ディストリビューター
block.sorter.name = ソーター block.sorter.name = ソーター
block.inverted-sorter.name = Inverted Sorter block.inverted-sorter.name = 反転ソーター
block.message.name = Message block.message.name = メッセージブロック
block.overflow-gate.name = オーバーフローゲート block.overflow-gate.name = オーバーフローゲート
block.silicon-smelter.name = シリコン溶鉱炉 block.silicon-smelter.name = シリコン溶鉱炉
block.phase-weaver.name = フェーズ織機 block.phase-weaver.name = フェーズ織機
@@ -1088,7 +1088,7 @@ block.junction.description = 十字に交差したコンベアーをそれぞれ
block.bridge-conveyor.description = 高度な輸送ブロックです。地形や建物を超えて、3ブロック離れた場所にアイテムを輸送することができます。 block.bridge-conveyor.description = 高度な輸送ブロックです。地形や建物を超えて、3ブロック離れた場所にアイテムを輸送することができます。
block.phase-conveyor.description = 改良されたアイテム転送ブロックです。電力を使用して、離れた場所にあるフェーズコンベアーにアイテムを転送することができます。 block.phase-conveyor.description = 改良されたアイテム転送ブロックです。電力を使用して、離れた場所にあるフェーズコンベアーにアイテムを転送することができます。
block.sorter.description = アイテムを分別して搬出します。設定したアイテムは通過させます。他のアイテムが搬入されると側面にアイテムを搬出します。 block.sorter.description = アイテムを分別して搬出します。設定したアイテムは通過させます。他のアイテムが搬入されると側面にアイテムを搬出します。
block.inverted-sorter.description = Processes items like a standard sorter, but outputs selected items to the sides instead. block.inverted-sorter.description = アイテムを分別して搬出します。設定したアイテムは側面に搬出されます。他のアイテムが搬入されるとアイテムを通過させます。通常のルーターと反対の動作をします。
block.router.description = 搬入したアイテムをほかの3方向に均等に搬出します。一つの資源から複数に分ける際などに使われます。 block.router.description = 搬入したアイテムをほかの3方向に均等に搬出します。一つの資源から複数に分ける際などに使われます。
block.distributor.description = 高度なルーターです。搬入したアイテムをほかの7方向に均等に分けて搬出します。 block.distributor.description = 高度なルーターです。搬入したアイテムをほかの7方向に均等に分けて搬出します。
block.overflow-gate.description = 搬出先にアイテムを搬入する空きがない場合に左右にアイテムを搬出します。 block.overflow-gate.description = 搬出先にアイテムを搬入する空きがない場合に左右にアイテムを搬出します。

View File

@@ -10,6 +10,7 @@ link.dev-builds.description = 불안정한 개발 빌드들
link.trello.description = 다음 출시될 기능들을 게시한 공식 Trello 보드 link.trello.description = 다음 출시될 기능들을 게시한 공식 Trello 보드
link.itch.io.description = PC 버전 다운로드와 HTML5 버전이 있는 itch.io 사이트 link.itch.io.description = PC 버전 다운로드와 HTML5 버전이 있는 itch.io 사이트
link.google-play.description = Google Play 스토어 정보 link.google-play.description = Google Play 스토어 정보
link.f-droid.description = F-Droid 카탈로그
link.wiki.description = 공식 Mindustry 위키 link.wiki.description = 공식 Mindustry 위키
linkfail = 링크를 여는 데 실패했습니다!\nURL이 기기의 클립보드에 복사되었습니다. linkfail = 링크를 여는 데 실패했습니다!\nURL이 기기의 클립보드에 복사되었습니다.
screenshot = 스크린샷이 {0} 경로에 저장되었습니다. screenshot = 스크린샷이 {0} 경로에 저장되었습니다.
@@ -18,12 +19,14 @@ gameover = 게임 오버
gameover.pvp = [accent]{0}[] 팀이 승리했습니다! gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
highscore = [accent]최고점수 달성! highscore = [accent]최고점수 달성!
copied = 복사됨. copied = 복사됨.
load.sound = 소리 load.sound = 소리
load.map = load.map =
load.image = 사진 load.image = 사진
load.content = 컨텐츠 load.content = 컨텐츠
load.system = 시스템 load.system = 시스템
load.mod = 모드 load.mod = 모드
schematic = 설계도 schematic = 설계도
schematic.add = 설계도 저장하기 schematic.add = 설계도 저장하기
schematics = 설계도 모음 schematics = 설계도 모음
@@ -40,6 +43,7 @@ schematic.saved = 설계도 저장됨.
schematic.delete.confirm = 삭제된 설계도는 복구할 수 없습니다. 정말로 삭제하시겠습니까? schematic.delete.confirm = 삭제된 설계도는 복구할 수 없습니다. 정말로 삭제하시겠습니까?
schematic.rename = 설계도명 변경 schematic.rename = 설계도명 변경
schematic.info = 크기 : {0}x{1}, 블럭 수 : {2} schematic.info = 크기 : {0}x{1}, 블럭 수 : {2}
stat.wave = 버틴 단계 수 : [accent]{0} stat.wave = 버틴 단계 수 : [accent]{0}
stat.enemiesDestroyed = 파괴한 적 수 : [accent]{0} stat.enemiesDestroyed = 파괴한 적 수 : [accent]{0}
stat.built = 건설한 건물 수 : [accent]{0} stat.built = 건설한 건물 수 : [accent]{0}
@@ -47,6 +51,7 @@ stat.destroyed = 파괴된 건물 수 : [accent]{0}
stat.deconstructed = 파괴한 건물 수 : [accent]{0} stat.deconstructed = 파괴한 건물 수 : [accent]{0}
stat.delivered = 획득한 자원 : stat.delivered = 획득한 자원 :
stat.rank = 최종 점수 : [accent]{0} stat.rank = 최종 점수 : [accent]{0}
launcheditems = [accent]창고 launcheditems = [accent]창고
launchinfo = [출격되지 않음][[출격]파랑색으로 표시된 자원들을 획득합니다. launchinfo = [출격되지 않음][[출격]파랑색으로 표시된 자원들을 획득합니다.
map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까? map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까?
@@ -74,6 +79,7 @@ maps.browse = 맵 검색
continue = 계속하기 continue = 계속하기
maps.none = [LIGHT_GRAY]맵을 찾을 수 없습니다! maps.none = [LIGHT_GRAY]맵을 찾을 수 없습니다!
invalid = 오류 invalid = 오류
pickcolor =
preparingconfig = 설정 사전준비 preparingconfig = 설정 사전준비
preparingcontent = 컨텐츠 사전준비 preparingcontent = 컨텐츠 사전준비
uploadingcontent = 컨텐츠 업로드 uploadingcontent = 컨텐츠 업로드
@@ -81,13 +87,14 @@ uploadingpreviewfile = 미리보기 파일 업로드
committingchanges = 바뀐 점 적용 committingchanges = 바뀐 점 적용
done = 완료 done = 완료
feature.unsupported = 당신의 기기는 이 기능을 지원하지 않습니다. feature.unsupported = 당신의 기기는 이 기능을 지원하지 않습니다.
mods.alphainfo = 현재의 모드는 첫 번째 시도이며, 그리고[scarlet] 버그가 매우 많음을 명심하십시오[].\n만약 버그를 발견할경우 Mindustry 깃허브 또는 디스코드로 제보해주세요. mods.alphainfo = 현재의 모드는 첫 번째 시도이며, 그리고[scarlet] 버그가 매우 많음을 명심하십시오[].\n만약 버그를 발견할경우 Mindustry 깃허브 또는 디스코드로 제보해주세요.
mods.alpha = [scarlet](Alpha) mods.alpha = [scarlet](Alpha)
mods = 모드 mods = 모드
mods.none = [LIGHT_GRAY]추가한 모드가 없습니다! mods.none = [LIGHT_GRAY]추가한 모드가 없습니다!
mods.guide = 모드 가이드 mods.guide = 모드 가이드
mods.report = 버그 신고 mods.report = 버그 신고
mods.openfolder = Open Mod Folder mods.openfolder = 모드 폴더 열기
mod.enabled = [firebrick]활성화 mod.enabled = [firebrick]활성화
mod.disabled = [lightgray]비활성화 mod.disabled = [lightgray]비활성화
mod.disable = 비활성화 mod.disable = 비활성화
@@ -104,6 +111,7 @@ mod.author = [LIGHT_GRAY]제작자 : [] {0}
mod.missing = 이 세이브파일에는 설치하지 않은 모드 혹은 이 버전에 속해있지 않은 데이터가 포함되어 있습니다. 이 파일을 불러올 경우 세이브파일의 데이터가 손상될 수 있습니다. 정말로 이 파일을 불러오시겠습니까?\n[lightgray]모드 :\n{0} mod.missing = 이 세이브파일에는 설치하지 않은 모드 혹은 이 버전에 속해있지 않은 데이터가 포함되어 있습니다. 이 파일을 불러올 경우 세이브파일의 데이터가 손상될 수 있습니다. 정말로 이 파일을 불러오시겠습니까?\n[lightgray]모드 :\n{0}
mod.preview.missing = 워크샵에 당신의 모드를 업로드하기 전에 미리보기 이미지를 먼저 추가해야합니다.\n[accent] preview.png[]라는 이름으로 미리보기 이미지를 당신의 모드 폴더안에 준비한 후 다시 시도해주세요. mod.preview.missing = 워크샵에 당신의 모드를 업로드하기 전에 미리보기 이미지를 먼저 추가해야합니다.\n[accent] preview.png[]라는 이름으로 미리보기 이미지를 당신의 모드 폴더안에 준비한 후 다시 시도해주세요.
mod.folder.missing = 워크샵에는 폴더 형태의 모드만 게시할 수 있습니다.\n모드를 폴더 형태로 바꾸려면 파일을 폴더에 압축 해제하고 이전 압축파일을 제거한 후, 게임을 재시작하거나 모드를 다시 로드하십시오. mod.folder.missing = 워크샵에는 폴더 형태의 모드만 게시할 수 있습니다.\n모드를 폴더 형태로 바꾸려면 파일을 폴더에 압축 해제하고 이전 압축파일을 제거한 후, 게임을 재시작하거나 모드를 다시 로드하십시오.
about.button = 정보 about.button = 정보
name = 이름 : name = 이름 :
noname = 먼저 [accent] [] 을 설정하세요. noname = 먼저 [accent] [] 을 설정하세요.
@@ -148,7 +156,7 @@ hosts.none = [lightgray]LAN 게임을 찾을 수 없습니다!
host.invalid = [scarlet]서버에 연결할 수 없습니다! host.invalid = [scarlet]서버에 연결할 수 없습니다!
trace = 플레이어 정보 보기 trace = 플레이어 정보 보기
trace.playername = 닉네임 : [accent]{0} trace.playername = 닉네임 : [accent]{0}
trace.ip = IP : [accent]{0}{0} trace.ip = IP : [accent]{0}
trace.id = UUID : [accent]{0} trace.id = UUID : [accent]{0}
trace.mobile = 모바일 접속 유무 : [accent]{0} trace.mobile = 모바일 접속 유무 : [accent]{0}
trace.modclient = 수정된 클라이언트 : [accent]{0} trace.modclient = 수정된 클라이언트 : [accent]{0}
@@ -173,7 +181,7 @@ confirmunadmin = 이 플레이어를 일반 유저로 만들겠습니까?
joingame.title = 게임 참가 joingame.title = 게임 참가
joingame.ip = 주소 : joingame.ip = 주소 :
disconnect = 서버와 연결이 해제되었습니다. disconnect = 서버와 연결이 해제되었습니다.
disconnect.error = 연결 . disconnect.error = 연결 오류.
disconnect.closed = 연결이 끊어졌습니다.. disconnect.closed = 연결이 끊어졌습니다..
disconnect.timeout = 연결 시간 한계 도달.. disconnect.timeout = 연결 시간 한계 도달..
disconnect.data = 월드 데이터 로딩 실패.. disconnect.data = 월드 데이터 로딩 실패..
@@ -183,7 +191,7 @@ connecting.data = [accent]월드 데이터 로딩중...
server.port = 포트 : server.port = 포트 :
server.addressinuse = 주소가 이미 사용중입니다! server.addressinuse = 주소가 이미 사용중입니다!
server.invalidport = 포트가 올바르지 않습니다! server.invalidport = 포트가 올바르지 않습니다!
server.error = [accent]{0}[crimson]서버를 여는 데 오류가 발생했습니다. server.error = [crimson]서버를 여는 데 오류가 발생했습니다.
save.new = 새로 저장 save.new = 새로 저장
save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까? save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까?
overwrite = 덮어쓰기 overwrite = 덮어쓰기
@@ -271,6 +279,7 @@ publishing = [accent]업로드 중...
publish.confirm = 맵을 업로드 하시겠습니까?\n\n[lightgray]먼저 워크샵 EULA에 동의하시지 않으면 맵이 표시되지 않습니다! publish.confirm = 맵을 업로드 하시겠습니까?\n\n[lightgray]먼저 워크샵 EULA에 동의하시지 않으면 맵이 표시되지 않습니다!
publish.error = 맵 업로드 오류 : {0} publish.error = 맵 업로드 오류 : {0}
steam.error = 스팀 서비스를 초기화하는데 실패했습니다.\n에러 코드 : {0} steam.error = 스팀 서비스를 초기화하는데 실패했습니다.\n에러 코드 : {0}
editor.brush = 브러쉬 editor.brush = 브러쉬
editor.openin = 편집기 열기 editor.openin = 편집기 열기
editor.oregen = 광물 무작위 생성 editor.oregen = 광물 무작위 생성
@@ -308,8 +317,8 @@ editor.name = 이름 :
editor.spawn = 유닛 생성 editor.spawn = 유닛 생성
editor.removeunit = 유닛 삭제 editor.removeunit = 유닛 삭제
editor.teams = editor.teams =
editor.errorload = [accent]{0} 파일을 불러오는 데 실패했습니다. editor.errorload = 파일을 불러오지 습니다.
editor.errorsave = [accent]{0} 파일을 저장하는 데 실패했습니다. editor.errorsave = 파일을 저장하지 못했습니다.
editor.errorimage = 이것은 맵이 아니라 사진입니다.\n\n예전 맵을 가져오려면 편집기의 '예전 맵 가져오기' 버튼을 사용하세요. editor.errorimage = 이것은 맵이 아니라 사진입니다.\n\n예전 맵을 가져오려면 편집기의 '예전 맵 가져오기' 버튼을 사용하세요.
editor.errorlegacy = 이 맵은 너무 오래되어, 더는 지원하지 않는 맵 형식을 사용합니다. editor.errorlegacy = 이 맵은 너무 오래되어, 더는 지원하지 않는 맵 형식을 사용합니다.
editor.errornot = 선택한 대상이 맵 파일이 아닙니다. editor.errornot = 선택한 대상이 맵 파일이 아닙니다.
@@ -347,6 +356,7 @@ editor.overwrite = [accept]경고!이 명령은 기존 맵을 덮어씌우게
editor.overwrite.confirm = [scarlet]경고![] 이 이름을 가진 맵이 이미 있습니다. 덮어 쓰시겠습니까? editor.overwrite.confirm = [scarlet]경고![] 이 이름을 가진 맵이 이미 있습니다. 덮어 쓰시겠습니까?
editor.exists = 같은 이름의 맵이 이미 존재합니다. editor.exists = 같은 이름의 맵이 이미 존재합니다.
editor.selectmap = 불러올 맵 선택 : editor.selectmap = 불러올 맵 선택 :
toolmode.replace = 재배치 toolmode.replace = 재배치
toolmode.replace.description = 블록을 배치합니다. toolmode.replace.description = 블록을 배치합니다.
toolmode.replaceall = 모두 재배치 toolmode.replaceall = 모두 재배치
@@ -361,6 +371,7 @@ toolmode.fillteams = 팀 채우기
toolmode.fillteams.description = 블록 대신 팀 건물로 채웁니다. toolmode.fillteams.description = 블록 대신 팀 건물로 채웁니다.
toolmode.drawteams = 팀 그리기 toolmode.drawteams = 팀 그리기
toolmode.drawteams.description = 블록 대신 팀 건물을 배치합니다. toolmode.drawteams.description = 블록 대신 팀 건물을 배치합니다.
filters.empty = [LIGHT_GRAY]필터가 없습니다!! 아래 버튼을 눌러 추가하세요. filters.empty = [LIGHT_GRAY]필터가 없습니다!! 아래 버튼을 눌러 추가하세요.
filter.distort = 왜곡 filter.distort = 왜곡
filter.noise = 맵 전체에 타일 혹은 블럭 뿌리기 filter.noise = 맵 전체에 타일 혹은 블럭 뿌리기
@@ -392,6 +403,7 @@ filter.option.floor2 = 2번째 바닥
filter.option.threshold2 = 2번째 한계점 filter.option.threshold2 = 2번째 한계점
filter.option.radius = 반경 filter.option.radius = 반경
filter.option.percentile = 백분위수 filter.option.percentile = 백분위수
width = 넓이 : width = 넓이 :
height = 높이 : height = 높이 :
menu = 메뉴 menu = 메뉴
@@ -407,6 +419,7 @@ tutorial = 튜토리얼
tutorial.retake = 튜토리얼 tutorial.retake = 튜토리얼
editor = 편집기 editor = 편집기
mapeditor = 맵 편집기 mapeditor = 맵 편집기
abandon = 지역 포기 abandon = 지역 포기
abandon.text = 이 구역의 모든 자원이 적에게 빼앗길 것입니다. abandon.text = 이 구역의 모든 자원이 적에게 빼앗길 것입니다.
locked = 잠김 locked = 잠김
@@ -428,7 +441,7 @@ bannedblocks = 금지된 블럭들
addall = 모두 추가 addall = 모두 추가
configure.locked = [lightgray]{0}시 시작자원 설정이 해금됩니다. configure.locked = [lightgray]{0}시 시작자원 설정이 해금됩니다.
configure.invalid = 해당 값은 0 과 {0} 사이여야 합니다. configure.invalid = 해당 값은 0 과 {0} 사이여야 합니다.
zone.unlocked = [LIGHT_GRAY] 잠금 해제되었습니다! zone.unlocked = [LIGHT_GRAY]지역 {0}이 잠금 해제되었습니다!
zone.requirement.complete = {0} 단계 달성 성공! \n{1} 지역 요구사항이 충족되었습니다! zone.requirement.complete = {0} 단계 달성 성공! \n{1} 지역 요구사항이 충족되었습니다!
zone.config.unlocked = 시작자원 설정 해금! : [lightgray]\n{0} zone.config.unlocked = 시작자원 설정 해금! : [lightgray]\n{0}
zone.resources = 감지된 자원 목록 : zone.resources = 감지된 자원 목록 :
@@ -437,6 +450,7 @@ zone.objective.survival = 생존
zone.objective.attack = 적 코어 파괴 zone.objective.attack = 적 코어 파괴
add = 추가... add = 추가...
boss.health = 보스 체력 boss.health = 보스 체력
connectfail = [crimson]{0}[accent] 서버에 연결하지 못했습니다.[] connectfail = [crimson]{0}[accent] 서버에 연결하지 못했습니다.[]
error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요? error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요?
error.invalidaddress = 잘못된 주소입니다. error.invalidaddress = 잘못된 주소입니다.
@@ -447,6 +461,7 @@ error.mapnotfound = 맵 파일을 찾을 수 없습니다!
error.io = 네트워크 I/O 오류. error.io = 네트워크 I/O 오류.
error.any = 알 수 없는 네트워크 오류. error.any = 알 수 없는 네트워크 오류.
error.bloom = 블룸 그래픽 효과를 적용하지 못했습니다.\n당신의 기기가 이 기능을 지원하지 않는 것일 수도 있습니다. error.bloom = 블룸 그래픽 효과를 적용하지 못했습니다.\n당신의 기기가 이 기능을 지원하지 않는 것일 수도 있습니다.
zone.groundZero.name = 전초기지 zone.groundZero.name = 전초기지
zone.desertWastes.name = 쓰레기 사막 zone.desertWastes.name = 쓰레기 사막
zone.craters.name = 크레이터 zone.craters.name = 크레이터
@@ -461,6 +476,7 @@ zone.saltFlats.name = 소금 사막
zone.impact0078.name = Impact 0078 zone.impact0078.name = Impact 0078
zone.crags.name = 협곡 zone.crags.name = 협곡
zone.fungalPass.name = 포자 지대 zone.fungalPass.name = 포자 지대
zone.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지닌 장소입니다. 적은 수준의 위협이 있으며 자원의 양은 적습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n출격합시다! zone.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지닌 장소입니다. 적은 수준의 위협이 있으며 자원의 양은 적습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n출격합시다!
zone.frozenForest.description = 이 지역도 산과 가까운 지역입니다 포자들이 흩뿌려져 있으며 극한의 추위도 포자를 막을 수 있을 것 같지 않습니다.\n화력 발전소를 짓고 전력을 확보하여 채광 드론을 사용하는 법을 배우십시오. zone.frozenForest.description = 이 지역도 산과 가까운 지역입니다 포자들이 흩뿌려져 있으며 극한의 추위도 포자를 막을 수 있을 것 같지 않습니다.\n화력 발전소를 짓고 전력을 확보하여 채광 드론을 사용하는 법을 배우십시오.
zone.desertWastes.description = 이 황무지는 끝을 알 수 없을 정도로 광활하고 십자가 형태의 버려진 구조물이 존재합니다.\n석탄이 존재하며 이를 화력발전에 쓰거나 흑연 정제에 쓰십시오.\n\n[lightgray]이 지역에서의 착륙장소는 확실하지 않습니다. zone.desertWastes.description = 이 황무지는 끝을 알 수 없을 정도로 광활하고 십자가 형태의 버려진 구조물이 존재합니다.\n석탄이 존재하며 이를 화력발전에 쓰거나 흑연 정제에 쓰십시오.\n\n[lightgray]이 지역에서의 착륙장소는 확실하지 않습니다.
@@ -475,6 +491,7 @@ zone.nuclearComplex.description = 과거 토륨의 생산, 연구와 처리를
zone.fungalPass.description = 고산지대과 포자지대 사이의 지역입니다. 소규모의 적 정찰기지가 있으니 디거와 크롤러를 이용해 적의 코어를 파괴하십시오. zone.fungalPass.description = 고산지대과 포자지대 사이의 지역입니다. 소규모의 적 정찰기지가 있으니 디거와 크롤러를 이용해 적의 코어를 파괴하십시오.
zone.impact0078.description = [ROYAL]죄송합니다. 아직 설명이 준비되지 않았습니다. zone.impact0078.description = [ROYAL]죄송합니다. 아직 설명이 준비되지 않았습니다.
zone.crags.description = [ROYAL]죄송합니다. 아직 설명이 준비되지 않았습니다. zone.crags.description = [ROYAL]죄송합니다. 아직 설명이 준비되지 않았습니다.
settings.language = 언어 settings.language = 언어
settings.data = 게임 데이터 settings.data = 게임 데이터
settings.reset = 설정 초기화 settings.reset = 설정 초기화
@@ -497,7 +514,7 @@ error.crashtitle = 오류가 발생했습니다.
blocks.input = 소모 자원 blocks.input = 소모 자원
blocks.output = 출력 자원 blocks.output = 출력 자원
blocks.booster = 가속 blocks.booster = 가속
block.unknown = [LIGHT_GRAY]??? block.unknown = [LIGHT_GRAY]OHNO
blocks.powercapacity = 전력 용량 blocks.powercapacity = 전력 용량
blocks.powershot = 1발당 전력 소모량 blocks.powershot = 1발당 전력 소모량
blocks.damage = 공격력 blocks.damage = 공격력
@@ -509,7 +526,7 @@ blocks.shootrange = 사거리
blocks.size = 크기 blocks.size = 크기
blocks.liquidcapacity = 액체 용량 blocks.liquidcapacity = 액체 용량
blocks.powerrange = 전력 범위 blocks.powerrange = 전력 범위
blocks.powerconnections = Max Connections blocks.powerconnections = 최대 연결 수
blocks.poweruse = 전력 사용 blocks.poweruse = 전력 사용
blocks.powerdamage = 전력/데미지 blocks.powerdamage = 전력/데미지
blocks.itemcapacity = 저장 용량 blocks.itemcapacity = 저장 용량
@@ -529,14 +546,15 @@ blocks.inaccuracy = 오차각
blocks.shots = 공격 속도 blocks.shots = 공격 속도
blocks.reload = 재장전 blocks.reload = 재장전
blocks.ammo = 탄약 blocks.ammo = 탄약
bar.drilltierreq = 더 좋은 드릴이 요구됨 bar.drilltierreq = 더 좋은 드릴이 요구됨
bar.drillspeed = 초당 {0}개 채굴중 bar.drillspeed = 드릴 속도 : {0}개/s
bar.pumpspeed = Pump Speed: {0}/s bar.pumpspeed = 펌프 속도 : {0}/s
bar.efficiency = 활성화율 : {0}% bar.efficiency = 활성화율 : {0}%
bar.powerbalance = 초당 {0} 발전중 bar.powerbalance = 전력 발전 : {0}/s
bar.powerstored = 총 전력 저장량 : {0}/{1} bar.powerstored = 총 전력 저장량 : {0}/{1}
bar.poweramount = 전력 저장량 : {0} bar.poweramount = 전력 저장량 : {0}
bar.poweroutput = 초당 {0} 발전중 bar.poweroutput = 전력 출력 : {0}
bar.items = 자원량 : {0} bar.items = 자원량 : {0}
bar.capacity = 저장공간 : {0} bar.capacity = 저장공간 : {0}
bar.liquid = 액체 bar.liquid = 액체
@@ -544,6 +562,9 @@ bar.heat = 발열
bar.power = 전력 bar.power = 전력
bar.progress = 생산 진행도 bar.progress = 생산 진행도
bar.spawned = 최대 {1}기 중 {0}기 생산됨 bar.spawned = 최대 {1}기 중 {0}기 생산됨
bar.input = 입력
bar.output =
bullet.damage = [lightgray]피해량 : [stat]{0}[] bullet.damage = [lightgray]피해량 : [stat]{0}[]
bullet.splashdamage = [lightgray]범위 피해량 : [stat]{0}[] / [lightgray]피해 범위 : [stat]{1}[lightgray] 타일 bullet.splashdamage = [lightgray]범위 피해량 : [stat]{0}[] / [lightgray]피해 범위 : [stat]{1}[lightgray] 타일
bullet.incendiary = [stat]방화 bullet.incendiary = [stat]방화
@@ -555,6 +576,7 @@ bullet.freezing = [stat]빙결
bullet.tarred = [stat]타르 bullet.tarred = [stat]타르
bullet.multiplier = 추가 타격 횟수 : [stat]{0}[lightgray] bullet.multiplier = 추가 타격 횟수 : [stat]{0}[lightgray]
bullet.reload = 공격 속도 : [stat]{0}[lightgray] bullet.reload = 공격 속도 : [stat]{0}[lightgray]
unit.blocks = 블록 unit.blocks = 블록
unit.powersecond = 전력/초 unit.powersecond = 전력/초
unit.liquidsecond = 액체/초 unit.liquidsecond = 액체/초
@@ -574,11 +596,12 @@ category.items = 아이템
category.crafting = 제작 category.crafting = 제작
category.shooting = 사격 category.shooting = 사격
category.optional = 보조 아이템 category.optional = 보조 아이템
setting.landscape.name = 가로화면으로 고정 setting.landscape.name = 가로화면
setting.shadows.name = 그림자 setting.shadows.name = 그림자
setting.blockreplace.name = 블럭 제안 자동화 setting.blockreplace.name = 블럭 제안 자동화
setting.linear.name = 선형 필터링 setting.linear.name = 선형 필터링
setting.hints.name = 힌트 활성화 setting.hints.name = 힌트 활성화
setting.buildautopause.name = 건설 자동 일시정지
setting.animatedwater.name = 움직이는 물 setting.animatedwater.name = 움직이는 물
setting.animatedshields.name = 움직이는 보호막 setting.animatedshields.name = 움직이는 보호막
setting.antialias.name = 안티 에일리어싱[LIGHT_GRAY] (재시작 필요)[] setting.antialias.name = 안티 에일리어싱[LIGHT_GRAY] (재시작 필요)[]
@@ -599,14 +622,17 @@ setting.difficulty.insane = 미침
setting.difficulty.name = 난이도 : setting.difficulty.name = 난이도 :
setting.screenshake.name = 화면 흔들기 setting.screenshake.name = 화면 흔들기
setting.effects.name = 화면 효과 setting.effects.name = 화면 효과
setting.destroyedblocks.name = Display Destroyed Blocks setting.destroyedblocks.name = 부서진 블럭 표시
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding setting.conveyorpathfinding.name = 컨베이어 설치 보조 기능
setting.sensitivity.name = 컨트롤러 감도 setting.sensitivity.name = 컨트롤러 감도
setting.saveinterval.name = 저장 간격 setting.saveinterval.name = 저장 간격
setting.seconds = setting.seconds = {0}
setting.blockselecttimeout.name = 블록 선택 시간 초과
setting.milliseconds = {0} 밀리초
setting.fullscreen.name = 전체 화면 setting.fullscreen.name = 전체 화면
setting.borderlesswindow.name = 테두리 없는 창모드[LIGHT_GRAY] (재시작이 필요할 수 있습니다) setting.borderlesswindow.name = 테두리 없는 창모드[LIGHT_GRAY] (재시작이 필요할 수 있습니다)
setting.fps.name = FPS 표시 setting.fps.name = FPS 표시
setting.blockselectkeys.name = 블럭 선택 키
setting.vsync.name = VSync 활성화 setting.vsync.name = VSync 활성화
setting.pixelate.name = 픽셀화[LIGHT_GRAY] (게임에 렉이 심할 경우 이 옵션을 켜주세요.) setting.pixelate.name = 픽셀화[LIGHT_GRAY] (게임에 렉이 심할 경우 이 옵션을 켜주세요.)
setting.minimap.name = 미니맵 보기 setting.minimap.name = 미니맵 보기
@@ -635,16 +661,35 @@ category.multiplayer.name = 멀티플레이
command.attack = 공격 command.attack = 공격
command.rally = 순찰 command.rally = 순찰
command.retreat = 후퇴 command.retreat = 후퇴
placement.blockselectkeys = \n[lightgray]키: [{0},
keybind.clear_building.name = 설계도 초기화 keybind.clear_building.name = 설계도 초기화
keybind.press = 키를 누르세요... keybind.press = 키를 누르세요...
keybind.press.axis = 마우스 휠 또는 키를 누르세요... keybind.press.axis = 마우스 휠 또는 키를 누르세요...
keybind.screenshot.name = 맵 스크린샷 keybind.screenshot.name = 맵 스크린샷
keybind.move_x.name = 오른쪽/왼쪽 이동 keybind.toggle_power_lines.name = 전력 라인 허용
keybind.move_y.name = 위 / 아래 중간 keybind.move_x.name = 오른쪽 / 왼쪽 이동
keybind.move_y.name = 위 / 아래 이동
keybind.mouse_move.name = 커서를 따라서 이동
keybind.schematic_select.name = 영역 설정 keybind.schematic_select.name = 영역 설정
keybind.schematic_menu.name = 설계도 메뉴 keybind.schematic_menu.name = 설계도 메뉴
keybind.schematic_flip_x.name = 설계도 X축 뒤집기 keybind.schematic_flip_x.name = 설계도 X축 뒤집기
keybind.schematic_flip_y.name = 설계도 Y축 뒤집기 keybind.schematic_flip_y.name = 설계도 Y축 뒤집기
keybind.category_prev.name = 이전 목록
keybind.category_next.name = 다음 목록
keybind.block_select_left.name = 블럭 Select Left
keybind.block_select_right.name = 블럭 Select Right
keybind.block_select_up.name = 블럭 Select Up
keybind.block_select_down.name = 블럭 Select Down
keybind.block_select_01.name = 카테고리/블럭 선택 1
keybind.block_select_02.name = 카테고리/블럭 선택 2
keybind.block_select_03.name = 카테고리/블럭 선택 3
keybind.block_select_04.name = 카테고리/블럭 선택 4
keybind.block_select_05.name = 카테고리/블럭 선택 5
keybind.block_select_06.name = 카테고리/블럭 선택 6
keybind.block_select_07.name = 카테고리/블럭 선택 7
keybind.block_select_08.name = 카테고리/블럭 선택 8
keybind.block_select_09.name = 카테고리/블럭 선택 9
keybind.block_select_10.name = 카테고리/블럭 선택 10
keybind.fullscreen.name = 전체 화면 keybind.fullscreen.name = 전체 화면
keybind.select.name = 선택/공격 keybind.select.name = 선택/공격
keybind.diagonal_placement.name = 대각선 설치 keybind.diagonal_placement.name = 대각선 설치
@@ -681,9 +726,11 @@ mode.pvp.description = 실제 플레이어와 PvP를 합니다. 맵에 적어도
mode.attack.name = 공격 mode.attack.name = 공격
mode.attack.description = 적 기지를 파괴하세요. 맵에 빨간팀 코어가 있어야 플레이 가능합니다. mode.attack.description = 적 기지를 파괴하세요. 맵에 빨간팀 코어가 있어야 플레이 가능합니다.
mode.custom = 사용자 정의 규칙 mode.custom = 사용자 정의 규칙
rules.infiniteresources = 무한 자원 rules.infiniteresources = 무한 자원
rules.wavetimer = 단계 rules.reactorexplosions = 원자로 폭발 허가여부
rules.waves = 단계 rules.wavetimer = 단계 대기시간
rules.waves = 단계 활성화
rules.attack = 공격 모드 rules.attack = 공격 모드
rules.enemyCheat = 무한한 적 자원 rules.enemyCheat = 무한한 적 자원
rules.unitdrops = 유닛 처치시 자원 약탈 rules.unitdrops = 유닛 처치시 자원 약탈
@@ -692,13 +739,13 @@ rules.unithealthmultiplier = 유닛 체력 배수
rules.playerhealthmultiplier = 플레이어 체력 배수 rules.playerhealthmultiplier = 플레이어 체력 배수
rules.playerdamagemultiplier = 플레이어 공격력 배수 rules.playerdamagemultiplier = 플레이어 공격력 배수
rules.unitdamagemultiplier = 유닛 공격력 배수 rules.unitdamagemultiplier = 유닛 공격력 배수
rules.enemycorebuildradius = 적 코어 건설 금지구역:[LIGHT_GRAY] (타일) rules.enemycorebuildradius = 적 코어 건설 금지구역 범위 : [LIGHT_GRAY] (타일)
rules.respawntime = 플레이어 부활 대기 시간:[LIGHT_GRAY] (초) rules.respawntime = 플레이어 부활 대기 시간 : [LIGHT_GRAY] (초)
rules.wavespacing = 단계 간격 : [LIGHT_GRAY] (초) rules.wavespacing = 단계 간격 : [LIGHT_GRAY] (초)
rules.buildcostmultiplier = 건설 소모 배수 rules.buildcostmultiplier = 건설 소모 배수
rules.buildspeedmultiplier = 건설 속도 배수 rules.buildspeedmultiplier = 건설 속도 배수
rules.waitForWaveToEnd = 단계가 끝날때까지 기다리는중 rules.waitForWaveToEnd = 단계가 끝날때까지 기다리는중
rules.dropzoneradius = 소환 구역 반경 : [LIGHT_GRAY] (타일) rules.dropzoneradius = 소환 충격파 범위 : [LIGHT_GRAY] (타일)
rules.respawns = 단계당 최대 플레이어 부활 횟수 rules.respawns = 단계당 최대 플레이어 부활 횟수
rules.limitedRespawns = 플레이어 부활 제한 rules.limitedRespawns = 플레이어 부활 제한
rules.title.waves = 단계 rules.title.waves = 단계
@@ -707,6 +754,10 @@ rules.title.resourcesbuilding = 자원 & 건축
rules.title.player = 플레이어들 rules.title.player = 플레이어들
rules.title.enemy = rules.title.enemy =
rules.title.unit = 유닛 rules.title.unit = 유닛
rules.title.experimental = 실험적인 기능
rules.lighting = 전장의 안개 활성화
rules.ambientlight = 안개 색
content.item.name = 아이템 content.item.name = 아이템
content.liquid.name = 액체 content.liquid.name = 액체
content.unit.name = 유닛 content.unit.name = 유닛
@@ -721,7 +772,7 @@ item.thorium.name = 토륨
item.silicon.name = 실리콘 item.silicon.name = 실리콘
item.plastanium.name = 플라스터늄 item.plastanium.name = 플라스터늄
item.phase-fabric.name = 메타 item.phase-fabric.name = 메타
item.surge-alloy.name = 서지 합 item.surge-alloy.name =
item.spore-pod.name = 포자 포드 item.spore-pod.name = 포자 포드
item.sand.name = 모래 item.sand.name = 모래
item.blast-compound.name = 폭발물 item.blast-compound.name = 폭발물
@@ -768,6 +819,7 @@ mech.buildspeed = [LIGHT_GRAY]건설 속도 : {0}%
liquid.heatcapacity = [LIGHT_GRAY]발열 용량 : {0} liquid.heatcapacity = [LIGHT_GRAY]발열 용량 : {0}
liquid.viscosity = [LIGHT_GRAY]점도 : {0} liquid.viscosity = [LIGHT_GRAY]점도 : {0}
liquid.temperature = [LIGHT_GRAY]온도 : {0} liquid.temperature = [LIGHT_GRAY]온도 : {0}
block.sand-boulder.name = 사암 block.sand-boulder.name = 사암
block.grass.name = 잔디 block.grass.name = 잔디
block.salt.name = 소금 block.salt.name = 소금
@@ -866,6 +918,8 @@ block.distributor.name = 대형 분배기
block.sorter.name = 필터 block.sorter.name = 필터
block.inverted-sorter.name = 반전 필터 block.inverted-sorter.name = 반전 필터
block.message.name = 메모 블럭 block.message.name = 메모 블럭
block.illuminator.name = 조명
block.illuminator.description = 작고, 간단한 조명입니다. 색을 변경할 수 있으며 가동하기 위해서 전력이 필요합니다.
block.overflow-gate.name = 포화 필터 block.overflow-gate.name = 포화 필터
block.silicon-smelter.name = 실리콘 제련소 block.silicon-smelter.name = 실리콘 제련소
block.phase-weaver.name = 메타 합성기 block.phase-weaver.name = 메타 합성기
@@ -879,6 +933,7 @@ block.coal-centrifuge.name = 석탄 원심분리기
block.power-node.name = 전력 노드 block.power-node.name = 전력 노드
block.power-node-large.name = 대형 전력 노드 block.power-node-large.name = 대형 전력 노드
block.surge-tower.name = 설금 타워 block.surge-tower.name = 설금 타워
block.diode.name = 배터리 다이오드
block.battery.name = 배터리 block.battery.name = 배터리
block.battery-large.name = 대형 배터리 block.battery-large.name = 대형 배터리
block.combustion-generator.name = 화력 발전기 block.combustion-generator.name = 화력 발전기
@@ -893,8 +948,8 @@ block.cultivator.name = 온실
block.dart-mech-pad.name = 알파 기체 패드 block.dart-mech-pad.name = 알파 기체 패드
block.delta-mech-pad.name = 델타 기체 패드 block.delta-mech-pad.name = 델타 기체 패드
block.javelin-ship-pad.name = 재블린 비행선 패드 block.javelin-ship-pad.name = 재블린 비행선 패드
block.trident-ship-pad.name = 삼지창 비행선 패드 block.trident-ship-pad.name = 트라이던트 폭격기 패드
block.glaive-ship-pad.name = 글레브 비행선 패드 block.glaive-ship-pad.name = 글레전투기 패드
block.omega-mech-pad.name = 오메가 기체 패드 block.omega-mech-pad.name = 오메가 기체 패드
block.tau-mech-pad.name = 타우 기체 패드 block.tau-mech-pad.name = 타우 기체 패드
block.conduit.name = 파이프 block.conduit.name = 파이프
@@ -930,7 +985,8 @@ block.titan-factory.name = 타이탄 공장
block.fortress-factory.name = 포트리스 공장 block.fortress-factory.name = 포트리스 공장
block.revenant-factory.name = 망령 전함 공장 block.revenant-factory.name = 망령 전함 공장
block.repair-point.name = 수리 지점 block.repair-point.name = 수리 지점
block.pulse-conduit.name = 퓨즈 파이프 block.pulse-conduit.name = 펄스 파이프
block.plated-conduit.name = 도금된
block.phase-conduit.name = 메타 파이프 block.phase-conduit.name = 메타 파이프
block.liquid-router.name = 액체 분배기 block.liquid-router.name = 액체 분배기
block.liquid-tank.name = 물탱크 block.liquid-tank.name = 물탱크
@@ -957,8 +1013,8 @@ block.rtg-generator.name = RTG 발전기
block.spectre.name = 스펙터 block.spectre.name = 스펙터
block.meltdown.name = 멜트다운 block.meltdown.name = 멜트다운
block.container.name = 컨테이너 block.container.name = 컨테이너
block.launch-pad.name = 발사대 block.launch-pad.name = 자원 출격 패드
block.launch-pad-large.name = 출격 패드 block.launch-pad-large.name = 대형 자원 출격 패드
team.blue.name = 파랑색 팀 team.blue.name = 파랑색 팀
team.crux.name = 빨강색 팀 team.crux.name = 빨강색 팀
team.sharded.name = 주황색 팀 team.sharded.name = 주황색 팀
@@ -976,10 +1032,10 @@ unit.ghoul.name = 구울 폭격기
unit.wraith.name = 유령 전투기 unit.wraith.name = 유령 전투기
unit.fortress.name = 포트리스 unit.fortress.name = 포트리스
unit.revenant.name = 망령 전함 unit.revenant.name = 망령 전함
unit.eruptor.name = 럽터 unit.eruptor.name = 이럽터
unit.chaos-array.name = 혼돈 unit.chaos-array.name = 혼돈 군
unit.eradicator.name = 파괴자 unit.eradicator.name = 파괴자
unit.lich.name = 사자왕 unit.lich.name = 시체 군주
unit.reaper.name = 사신 unit.reaper.name = 사신
tutorial.next = [lightgray]< 이 곳을 터치해 진행하세요. > tutorial.next = [lightgray]< 이 곳을 터치해 진행하세요. >
tutorial.intro = [scarlet]Mindustry 튜토리얼[]을 시작하겠습니다.\n [WASD] 키를 눌러 이동할 수 있습니다.\n[accent]Ctrl 키를 누르고 마우스 휠을 돌려 확대 또는 축소가 가능합니다.\n[accent]주황색의 광맥[]을 눌러 [accent]구리[]를 채광하세요.\n구리를 채광한 후에는 코어 근처로 이동한 뒤, 당신의 기체에서 코어로 드래그해 구리를 코어에 넣으세요. 코어 근처에서 채광하면 자동으로 옮겨집니다.\n\n임무 : 구리 채광({0}/{1}) tutorial.intro = [scarlet]Mindustry 튜토리얼[]을 시작하겠습니다.\n [WASD] 키를 눌러 이동할 수 있습니다.\n[accent]Ctrl 키를 누르고 마우스 휠을 돌려 확대 또는 축소가 가능합니다.\n[accent]주황색의 광맥[]을 눌러 [accent]구리[]를 채광하세요.\n구리를 채광한 후에는 코어 근처로 이동한 뒤, 당신의 기체에서 코어로 드래그해 구리를 코어에 넣으세요. 코어 근처에서 채광하면 자동으로 옮겨집니다.\n\n임무 : 구리 채광({0}/{1})
@@ -1002,6 +1058,7 @@ tutorial.deposit = 자원을 다시 블록에 넣을 수도 있습니다.\n\n[ac
tutorial.waves = [LIGHT_GRAY]적[]이 접근합니다.\n당신의 기체는 적을 클릭하여 공격할 수 있습니다. 또한, 구리를 더 캐내고 포탑을 더 지어서 방어를 강화하세요.\n\n[accent]2단계 동안 코어를 보호하세요.[] tutorial.waves = [LIGHT_GRAY]적[]이 접근합니다.\n당신의 기체는 적을 클릭하여 공격할 수 있습니다. 또한, 구리를 더 캐내고 포탑을 더 지어서 방어를 강화하세요.\n\n[accent]2단계 동안 코어를 보호하세요.[]
tutorial.waves.mobile = [LIGHT_GRAY]적[]이 접근합니다.\n당신의 기체는 적을 자동조준하지만, 원하는 적을 클릭하여 공격하고 싶은 대상을 바꿀 수 있습니다.\n구리를 더 캐내고 포탑을 더 지어서 방어를 강화하세요.\n\n[accent]2단계동안 코어를 방어하세요.[] tutorial.waves.mobile = [LIGHT_GRAY]적[]이 접근합니다.\n당신의 기체는 적을 자동조준하지만, 원하는 적을 클릭하여 공격하고 싶은 대상을 바꿀 수 있습니다.\n구리를 더 캐내고 포탑을 더 지어서 방어를 강화하세요.\n\n[accent]2단계동안 코어를 방어하세요.[]
tutorial.launch = 특정 단계에 도달하면 [accent]출격[]이 가능합니다.\n[accent]출격[]을 하게되면 해당 지역의 코어에 들어있는 자원들을 캠페인의 자원 창고로 보내지만, 해당 지역의 [accent]모든 것들[]은 날라가게 되니 주의하세요. tutorial.launch = 특정 단계에 도달하면 [accent]출격[]이 가능합니다.\n[accent]출격[]을 하게되면 해당 지역의 코어에 들어있는 자원들을 캠페인의 자원 창고로 보내지만, 해당 지역의 [accent]모든 것들[]은 날라가게 되니 주의하세요.
item.copper.description = 모든 종류의 블록에서 광범위하게 사용되는 자원입니다. item.copper.description = 모든 종류의 블록에서 광범위하게 사용되는 자원입니다.
item.lead.description = 쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다. item.lead.description = 쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
item.metaglass.description = 초강력 유리 화합물. 액체 분배 및 저장에 광범위하게 사용됩니다.\n\n[royal]액체를 활용하기 위한 필수품입니다. item.metaglass.description = 초강력 유리 화합물. 액체 분배 및 저장에 광범위하게 사용됩니다.\n\n[royal]액체를 활용하기 위한 필수품입니다.
@@ -1088,7 +1145,7 @@ block.junction.description = 2개의 컨베이어 벨트를 교차시키는 다
block.bridge-conveyor.description = 자원 수송 블록.\n지형이나 건물을 넘어 최대 3개 타일을 건너뛰고 자원을 운송할 수 있습니다. block.bridge-conveyor.description = 자원 수송 블록.\n지형이나 건물을 넘어 최대 3개 타일을 건너뛰고 자원을 운송할 수 있습니다.
block.phase-conveyor.description = 고급 자원 수송 블록.\n지형이나 건물을 넘어 최대 11개 타일을 건너뛰고 자원을 운송할 수 있습니다. 전기를 사용하고, 기본 터널 컨베이어보다 빠릅니다. block.phase-conveyor.description = 고급 자원 수송 블록.\n지형이나 건물을 넘어 최대 11개 타일을 건너뛰고 자원을 운송할 수 있습니다. 전기를 사용하고, 기본 터널 컨베이어보다 빠릅니다.
block.sorter.description = 자원을 넣어서 필터에 설정된 자원일 경우 바로 앞으로 통과하며, 그렇지 않을 경우 옆으로 이동시킵니다. block.sorter.description = 자원을 넣어서 필터에 설정된 자원일 경우 바로 앞으로 통과하며, 그렇지 않을 경우 옆으로 이동시킵니다.
block.inverted-sorter.description = Processes items like a standard sorter, but outputs selected items to the sides instead. block.inverted-sorter.description = 필터와 비슷하지만, 대신에 반전 필터는 설정된 자원을 필터의 양 옆으로 보냅니다.
block.router.description = 한 방향에서 자원을 넣을 시 최대 3개의 다른 방향으로 균등하게 내보냅니다. 자원을 한 곳에서 여러 방향으로 분배하는 데 유용합니다. block.router.description = 한 방향에서 자원을 넣을 시 최대 3개의 다른 방향으로 균등하게 내보냅니다. 자원을 한 곳에서 여러 방향으로 분배하는 데 유용합니다.
block.distributor.description = 자원을 최대 7개의 다른 방향으로 균등하게 분베하는 고급 분배기. block.distributor.description = 자원을 최대 7개의 다른 방향으로 균등하게 분베하는 고급 분배기.
block.overflow-gate.description = 평소에는 자원의 들어온 방향으로 자원을 통과시키지만, 정면이 자원으로 꽉 차거나 다른 사유로 막힐 시 옆으로 자원을 내보냅니다. block.overflow-gate.description = 평소에는 자원의 들어온 방향으로 자원을 통과시키지만, 정면이 자원으로 꽉 차거나 다른 사유로 막힐 시 옆으로 자원을 내보냅니다.
@@ -1098,6 +1155,7 @@ block.rotary-pump.description = 전기를 사용해 빠른 속도로 액체를
block.thermal-pump.description = 가장 강력한 펌프. block.thermal-pump.description = 가장 강력한 펌프.
block.conduit.description = 기본 파이프\n액체를 배치된 방향으로 느리게 운송합니다. block.conduit.description = 기본 파이프\n액체를 배치된 방향으로 느리게 운송합니다.
block.pulse-conduit.description = 고급 파이프\n기본 파이프보다 액체 운송 속도가 빠릅니다. block.pulse-conduit.description = 고급 파이프\n기본 파이프보다 액체 운송 속도가 빠릅니다.
block.plated-conduit.description = 펄스 파이프와 같은 속도로 액체를 운송시키지만, 체력이 더 많습니다. 양 옆으로는 파이프 의외의 대상에서 액체를 받지 않습니다. \n파이프 끝 부분이 블럭에 연결되지 않고 노출되었을 때 누수되는 액체의 양이 더 적습니다.
block.liquid-router.description = 액체를 다른 방향으로 분배할 수 있게 하는 블럭입니다. block.liquid-router.description = 액체를 다른 방향으로 분배할 수 있게 하는 블럭입니다.
block.liquid-tank.description = 액체를 저장할 수 있는 물탱크 입니다. block.liquid-tank.description = 액체를 저장할 수 있는 물탱크 입니다.
block.liquid-junction.description = 교차기와 같은 기능을 하나 자원 대신에 액체를 교차시킵니다. block.liquid-junction.description = 교차기와 같은 기능을 하나 자원 대신에 액체를 교차시킵니다.
@@ -1106,6 +1164,7 @@ block.phase-conduit.description = 고급 액체 수송블록\n전기를 사용
block.power-node.description = 전기을 연결된 대상과 연동시킵니다.\n최대 20개의 대상을 연결할 수 있습니다. 노드는 붙어있는 블록으로부터 전기가 연동됩니다. block.power-node.description = 전기을 연결된 대상과 연동시킵니다.\n최대 20개의 대상을 연결할 수 있습니다. 노드는 붙어있는 블록으로부터 전기가 연동됩니다.
block.power-node-large.description = 전기를 연결된 대상과 연동시킵니다.\n최대 30개의 대상을 연결시킬 수 있고, 범위도 더 넓습니다. block.power-node-large.description = 전기를 연결된 대상과 연동시킵니다.\n최대 30개의 대상을 연결시킬 수 있고, 범위도 더 넓습니다.
block.surge-tower.description = 전기를 연결된 대상과 연동시킵니다.\n2개의 대상만 연결시킬 수 있지만 대신에 범위가 매우 넓습니다. block.surge-tower.description = 전기를 연결된 대상과 연동시킵니다.\n2개의 대상만 연결시킬 수 있지만 대신에 범위가 매우 넓습니다.
block.diode.description = 이 블럭을 배터리와 배터리 사이에 놓아 연결할경우 전력은 화살표 방향으로만 이동할 수 있습니다. 화살표의 뒤에 있는 배터리의 전력량이 앞에 있는 배터리보다 많을 경우에만 이동시킵니다.
block.battery.description = 전력 생산량에 여유가 있을경우, 생산된 잉여 전력을 여기에 저장합니다.\n\n[ROYAL]이것을 이용해 한순간에 많은 전력을 사용하는 포탑들을 보조가능합니다. block.battery.description = 전력 생산량에 여유가 있을경우, 생산된 잉여 전력을 여기에 저장합니다.\n\n[ROYAL]이것을 이용해 한순간에 많은 전력을 사용하는 포탑들을 보조가능합니다.
block.battery-large.description = 일반 배터리보다 훨씬 많은 량의 전력을 저장합니다.\n\n[ROYAL]배터리 9개를 설치하는 것보다 효율이 좋습니다. block.battery-large.description = 일반 배터리보다 훨씬 많은 량의 전력을 저장합니다.\n\n[ROYAL]배터리 9개를 설치하는 것보다 효율이 좋습니다.
block.combustion-generator.description = 인화성 물질을 태워 소량의 전력을 생산합니다. block.combustion-generator.description = 인화성 물질을 태워 소량의 전력을 생산합니다.

View File

@@ -17,29 +17,29 @@ screenshot.invalid = Kaart te groot, mogelijks te weinig geheugen voor een scree
gameover = Game Over gameover = Game Over
gameover.pvp = Het[accent] {0}[] team heeft gewonnen! gameover.pvp = Het[accent] {0}[] team heeft gewonnen!
highscore = [accent]Nieuw record! highscore = [accent]Nieuw record!
copied = Copied. copied = Gekopieerd.
load.sound = Sounds load.sound = Geluiden
load.map = Maps load.map = Kaarten
load.image = Images load.image = Images
load.content = Content load.content = Content
load.system = System load.system = System
load.mod = Mods load.mod = Mods
schematic = Schematic schematic = Blauwdruk
schematic.add = Save Schematic... schematic.add = Blauwdruk Opslaan...
schematics = Schematics schematics = Blauwdrukken
schematic.replace = A schematic by that name already exists. Replace it? schematic.replace = Er bestaat al een blaudruk met deze naam. Vervangen?
schematic.import = Import Schematic... schematic.import = Importeer Blauwdruk...
schematic.exportfile = Export File schematic.exportfile = Exporteer Bestand
schematic.importfile = Import File schematic.importfile = Exporteer Bestand
schematic.browseworkshop = Browse Workshop schematic.browseworkshop = Browse Workshop
schematic.copy = Copy to Clipboard schematic.copy = Kopieer naar Klembord
schematic.copy.import = Import from Clipboard schematic.copy.import = Importeer vanaf Klembord
schematic.shareworkshop = Share on Workshop schematic.shareworkshop = Deel op Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic
schematic.saved = Schematic saved. schematic.saved = Blauwdruk opgeslagen.
schematic.delete.confirm = This schematic will be utterly eradicated. schematic.delete.confirm = This schematic will be utterly eradicated.
schematic.rename = Rename Schematic schematic.rename = Blauwdruk Hernoemen
schematic.info = {0}x{1}, {2} blocks schematic.info = {0}x{1}, {2} blokken
stat.wave = Je overleefde tot aanvalsgolf: [accent]{0}[]. stat.wave = Je overleefde tot aanvalsgolf: [accent]{0}[].
stat.enemiesDestroyed = Vijanden vernietigd:[accent] {0} stat.enemiesDestroyed = Vijanden vernietigd:[accent] {0}
stat.built = Gebouwen gebouwd:[accent] {0} stat.built = Gebouwen gebouwd:[accent] {0}
@@ -48,7 +48,7 @@ stat.deconstructed = Gebouwen afgebroken:[accent] {0}
stat.delivered = Gronstoffen meegenomen: stat.delivered = Gronstoffen meegenomen:
stat.rank = Eindresultaat: [accent]{0} stat.rank = Eindresultaat: [accent]{0}
launcheditems = [accent]Meegenomen grondstoffen launcheditems = [accent]Meegenomen grondstoffen
launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. launchinfo = [unlaunched][[LAUNCH] je kern om de met blauw aangeduide voorwerpen te verkrijgen.
map.delete = Ben je zeker dat je de kaart "[accent]{0}[]" wilt verwijderen? map.delete = Ben je zeker dat je de kaart "[accent]{0}[]" wilt verwijderen?
level.highscore = Beste score: [accent]{0} level.highscore = Beste score: [accent]{0}
level.select = Selecteer level level.select = Selecteer level
@@ -57,14 +57,14 @@ showagain = Toon dit volgende keer niet meer.
coreattack = < Kern wordt aangevallen! > coreattack = < Kern wordt aangevallen! >
nearpoint = [[ [scarlet]VERLAAT dit gebied onmiddelijk[] ]\nDirecte vernietiging... nearpoint = [[ [scarlet]VERLAAT dit gebied onmiddelijk[] ]\nDirecte vernietiging...
database = Kern Database database = Kern Database
savegame = opslaan savegame = Opslaan
loadgame = openen loadgame = Openen
joingame = Multiplayer joingame = Multiplayer
customgame = Aangepaste versie customgame = Aangepaste versie
newgame = Nieuw spel newgame = Nieuw spel
none = <geen> none = <geen>
minimap = Kaartje minimap = Kaartje
position = Position position = Positie
close = Sluit close = Sluit
website = Website website = Website
quit = Verlaat quit = Verlaat
@@ -74,40 +74,40 @@ maps.browse = Browse Maps
continue = Ga verder continue = Ga verder
maps.none = [LIGHT_GRAY]Geen kaarten gevonden! maps.none = [LIGHT_GRAY]Geen kaarten gevonden!
invalid = Invalid invalid = Invalid
preparingconfig = Preparing Config preparingconfig = Config Voorbereiden
preparingcontent = Preparing Content preparingcontent = Content Voorbereiden
uploadingcontent = Uploading Content uploadingcontent = Content Uploaden
uploadingpreviewfile = Uploading Preview File uploadingpreviewfile = Voorbeeldbestand Uploaden
committingchanges = Comitting Changes committingchanges = Veranderingen Toepassen
done = Done done = Klaar
feature.unsupported = Your device does not support this feature. feature.unsupported = Uw apparaat ondersteunt deze functie niet.
mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry GitHub or Discord. mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry GitHub or Discord.
mods.alpha = [accent](Alpha) mods.alpha = [accent](Alpha)
mods = Mods mods = Mods
mods.none = [LIGHT_GRAY]No mods found! mods.none = [LIGHT_GRAY]Geen mods gevonden!
mods.guide = Modding Guide mods.guide = Handleiding tot Modding
mods.report = Report Bug mods.report = Bug Rapporteren
mods.openfolder = Open Mod Folder mods.openfolder = Open Mod Folder
mod.enabled = [lightgray]Enabled mod.enabled = [lightgray]Ingeschakeld
mod.disabled = [scarlet]Disabled mod.disabled = [scarlet]Uitgeschakeld
mod.disable = Disable mod.disable = Schakel uit
mod.delete.error = Unable to delete mod. File may be in use. mod.delete.error = Kan mod niet verwijderen. Bestand is mogelijk in gebruik.
mod.missingdependencies = [scarlet]Missing dependencies: {0} mod.missingdependencies = [scarlet]Missing dependencies: {0}
mod.nowdisabled = [scarlet]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled. mod.nowdisabled = [scarlet]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled.
mod.enable = Enable mod.enable = Enable
mod.requiresrestart = The game will now close to apply the mod changes. mod.requiresrestart = The game will now close to apply the mod changes.
mod.reloadrequired = [scarlet]Reload Required mod.reloadrequired = [scarlet]Herladen Vereist
mod.import = Import Mod mod.import = Importeer Mod
mod.import.github = Import GitHub Mod mod.import.github = Importeer GitHub Mod
mod.remove.confirm = This mod will be deleted. mod.remove.confirm = Deze mod zal worden verwijderd.
mod.author = [LIGHT_GRAY]Author:[] {0} mod.author = [LIGHT_GRAY]Auteur:[] {0}
mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} mod.missing = Dit opslagbestand bevat mods die zijn geupdate of recentelijk zijn verwijderd. Uw opslagbestand kan beschadigd geraken. Bent u zeker dat u wil verdergaan?\n[lightgray]Mods:\n{0}
mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again.
mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods.
about.button = Extra info about.button = Extra info
name = Naam: name = Naam:
noname = Kies eerst[accent] een naam[]. noname = Kies eerst[accent] een naam[].
filename = Bestands naam: filename = Bestandsnaam:
unlocked = Ontgrendeld! unlocked = Ontgrendeld!
completed = [accent]Voltooid completed = [accent]Voltooid
techtree = Technische vooruitgang techtree = Technische vooruitgang

View File

@@ -1,4 +1,4 @@
credits.text = Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!) credits.text = Stworzone przez [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]
credits = Zasłużeni credits = Zasłużeni
contributors = Tłumacze i pomocnicy contributors = Tłumacze i pomocnicy
discord = Odwiedź nasz serwer Discord! discord = Odwiedź nasz serwer Discord!
@@ -10,6 +10,7 @@ link.dev-builds.description = Niestabilne wersje gry
link.trello.description = Oficjalna tablica Trello z planowanym funkcjami link.trello.description = Oficjalna tablica Trello z planowanym funkcjami
link.itch.io.description = Strona itch.io z oficjanymi wersjami do pobrania link.itch.io.description = Strona itch.io z oficjanymi wersjami do pobrania
link.google-play.description = Strona na sklepie Google Play link.google-play.description = Strona na sklepie Google Play
link.f-droid.description = F-Droid catalogue listing
link.wiki.description = Oficjana Wiki Mindustry link.wiki.description = Oficjana Wiki Mindustry
linkfail = Nie udało się otworzyć linku!\nURL został skopiowany. linkfail = Nie udało się otworzyć linku!\nURL został skopiowany.
screenshot = Zapisano zdjęcie w {0} screenshot = Zapisano zdjęcie w {0}
@@ -18,12 +19,14 @@ gameover = Koniec Gry
gameover.pvp = Zwyciężyła drużyna [accent]{0}[]! gameover.pvp = Zwyciężyła drużyna [accent]{0}[]!
highscore = [YELLOW] Nowy rekord! highscore = [YELLOW] Nowy rekord!
copied = Copied. copied = Copied.
load.sound = Dźwięki load.sound = Dźwięki
load.map = Mapy load.map = Mapy
load.image = Obrazy load.image = Obrazy
load.content = Treść load.content = Treść
load.system = System load.system = System
load.mod = Mody load.mod = Mody
schematic = Schemat schematic = Schemat
schematic.add = Zapisz schemat... schematic.add = Zapisz schemat...
schematics = Schematy schematics = Schematy
@@ -40,6 +43,7 @@ schematic.saved = Schemat zapisany.
schematic.delete.confirm = Ten schemat zostanie kompletnie wyeliminowany. schematic.delete.confirm = Ten schemat zostanie kompletnie wyeliminowany.
schematic.rename = Zmień nazwę schematu schematic.rename = Zmień nazwę schematu
schematic.info = {0}x{1}, {2} bloków schematic.info = {0}x{1}, {2} bloków
stat.wave = Fale powstrzymane:[accent] {0} stat.wave = Fale powstrzymane:[accent] {0}
stat.enemiesDestroyed = Przeciwnicy zniszczeni:[accent] {0} stat.enemiesDestroyed = Przeciwnicy zniszczeni:[accent] {0}
stat.built = Budynki zbudowane:[accent] {0} stat.built = Budynki zbudowane:[accent] {0}
@@ -47,8 +51,9 @@ stat.destroyed = Budynki zniszczone:[accent] {0}
stat.deconstructed = Budynki zrekonstruowane:[accent] {0} stat.deconstructed = Budynki zrekonstruowane:[accent] {0}
stat.delivered = Surowce wystrzelone: stat.delivered = Surowce wystrzelone:
stat.rank = Ocena: [accent]{0} stat.rank = Ocena: [accent]{0}
launcheditems = [accent]Wystrzelone przedmioty launcheditems = [accent]Wystrzelone przedmioty
launchinfo = [unlaunched][[LAUNCH] rdzeń aby uzyskać przedmioty oznaczone na niebiesko. launchinfo = [unlaunched][[WYSTRZEL] rdzeń aby uzyskać przedmioty oznaczone na niebiesko.
map.delete = Jesteś pewny, że chcesz usunąć "[accent]{0}[]"? map.delete = Jesteś pewny, że chcesz usunąć "[accent]{0}[]"?
level.highscore = Rekord: [accent]{0} level.highscore = Rekord: [accent]{0}
level.select = Wybrany poziom level.select = Wybrany poziom
@@ -72,8 +77,10 @@ save.quit = Zapisz & Wyjdź
maps = Mapy maps = Mapy
maps.browse = Przeglądaj Mapy maps.browse = Przeglądaj Mapy
continue = Kontynuuj continue = Kontynuuj
maps.none = [LIGHT_GRAY]Nie znaleziono żadnych map! maps.none = [lightgray]Nie znaleziono żadnych map!
invalid = Nieprawidłowy invalid = Nieprawidłowy
pickcolor = Wybierz kolor
preparingconfig = Przygotowywanie Konfiguracji preparingconfig = Przygotowywanie Konfiguracji
preparingcontent = Przygotowywanie Zawartości preparingcontent = Przygotowywanie Zawartości
uploadingcontent = Przesyłanie Zawartości uploadingcontent = Przesyłanie Zawartości
@@ -81,6 +88,7 @@ uploadingpreviewfile = Przesyłanie Pliku Podglądu
committingchanges = Zatwierdzanie Zmian committingchanges = Zatwierdzanie Zmian
done = Gotowe done = Gotowe
feature.unsupported = Twoje urządzenie nie wspiera tej funkcji. feature.unsupported = Twoje urządzenie nie wspiera tej funkcji.
mods.alphainfo = Pamiętaj, że mody są wersji alpha, i[scarlet] mogą być pełne błędów[].\nZgłaszaj wszystkie znalezione problemy na Mindustry GitHub lub Discord. mods.alphainfo = Pamiętaj, że mody są wersji alpha, i[scarlet] mogą być pełne błędów[].\nZgłaszaj wszystkie znalezione problemy na Mindustry GitHub lub Discord.
mods.alpha = [scarlet](Alpha) mods.alpha = [scarlet](Alpha)
mods = Mody mods = Mody
@@ -104,16 +112,17 @@ mod.author = [LIGHT_GRAY]Autor:[] {0}
mod.missing = Ten zapis zawiera mody, które zostały niedawno zaktualizowane, bądź nie są już zainstalowane. Zapis może zostać uszkodzony. Czy jesteś pewien, że chcesz go załadować?\n[lightgray]Mody:\n{0} mod.missing = Ten zapis zawiera mody, które zostały niedawno zaktualizowane, bądź nie są już zainstalowane. Zapis może zostać uszkodzony. Czy jesteś pewien, że chcesz go załadować?\n[lightgray]Mody:\n{0}
mod.preview.missing = Przed opublikowaniem tego moda na Warsztacie musisz dodać zdjęcie podglądowe.\nDodaj zdjęcie o nazwie[accent] preview.png[] do folderu moda i spróbuj jeszcze raz. mod.preview.missing = Przed opublikowaniem tego moda na Warsztacie musisz dodać zdjęcie podglądowe.\nDodaj zdjęcie o nazwie[accent] preview.png[] do folderu moda i spróbuj jeszcze raz.
mod.folder.missing = Jedynie mody w formie folderów mogą się znaleźć na Warsztacie.\nBy zamienić moda w folder, wyciągnij go z archiwum, umieść w folderze i usuń archiwum. Później uruchom ponownie grę bądź załaduj ponownie mody. mod.folder.missing = Jedynie mody w formie folderów mogą się znaleźć na Warsztacie.\nBy zamienić moda w folder, wyciągnij go z archiwum, umieść w folderze i usuń archiwum. Później uruchom ponownie grę bądź załaduj ponownie mody.
about.button = O Grze about.button = O Grze
name = Nazwa: name = Nazwa:
noname = Najpierw wybierz [accent]nazwę gracza[] noname = Najpierw wybierz[accent] nazwę gracza[]
filename = Nazwa Pliku: filename = Nazwa Pliku:
unlocked = Odblokowano nowy blok! unlocked = Odblokowano nową zawartość!
completed = [accent]Ukończony completed = [accent]Ukończony
techtree = Drzewo Technologiczne techtree = Drzewo Technologiczne
research.list = [LIGHT_GRAY]Badania: research.list = [lightgray]Badania:
research = Badaj research = Badaj
researched = [LIGHT_GRAY]{0} zbadane. researched = [lightgray]{0} zbadane.
players = {0} graczy online players = {0} graczy online
players.single = {0} gracz online players.single = {0} gracz online
server.closing = [accent] Zamykanie serwera... server.closing = [accent] Zamykanie serwera...
@@ -129,23 +138,23 @@ server.kicked.playerLimit = Serwer pełny. Poczekaj na wolne miejsce.
server.kicked.recentKick = Zostałeś niedawno wyrzucony.\nPoczekaj chwilę przed ponownym połączniem. server.kicked.recentKick = Zostałeś niedawno wyrzucony.\nPoczekaj chwilę przed ponownym połączniem.
server.kicked.nameInUse = Ta nazwa jest już zajęta na tym serwerze. server.kicked.nameInUse = Ta nazwa jest już zajęta na tym serwerze.
server.kicked.nameEmpty = Wybrana przez Ciebie nazwa jest nieprawidłowa. server.kicked.nameEmpty = Wybrana przez Ciebie nazwa jest nieprawidłowa.
server.kicked.idInUse = Jesteś już na serwerze! Używanie tego samego konta na 2 urządzeniach jest zabronione. server.kicked.idInUse = Jesteś już na serwerze! Łączenie się z dwóch kont nie jest dozwolone.
server.kicked.customClient = Ten serwer nie wspomaga wersji deweloperskich. Pobierz oficjalną wersję. server.kicked.customClient = Ten serwer nie wspomaga wersji deweloperskich. Pobierz oficjalną wersję.
server.kicked.gameover = Koniec gry! server.kicked.gameover = Koniec gry!
server.versions = Twoja wersja gry:[accent] {0}[]\nWersja gry serwera:[accent] {1}[] server.versions = Twoja wersja gry:[accent] {0}[]\nWersja gry serwera:[accent] {1}[]
host.info = Przycisk [accent]host[] hostuje serwer na porcie [scarlet]6567[] i [scarlet]6568.[]\nKażdy w tej samej sieci [LIGHT_GRAY]wifi lub hotspocie[] powinien zobaczyć twój serwer.\n\nJeśli chcesz, aby każdy z twoim IP mógł dołączyć, musisz wykonać [accent]przekierowywanie portów[].\n\n[LIGHT_GRAY]Notka:Jeśli ktokolwiek ma problem z dołączeniem do gry, upewnij się, że udostępniłeś Mindustry dostęp do sieci. host.info = Przycisk [accent]host[] hostuje serwer na porcie [scarlet]6567[]. \nKażdy w tej samej sieci [lightgray]wifi lub hotspocie[] powinien zobaczyć twój serwer.\n\nJeśli chcesz, aby każdy z twoim IP mógł dołączyć, musisz wykonać [accent]przekierowywanie portów[].\n\n[lightgray]Notka: Jeśli ktokolwiek ma problem z dołączeniem do gry lokalnej, upewnij się, że udostępniłeś Mindustry dostęp do sieci w ustawieniach zapory (firewall). Zauważ, że niektóre sieci publiczne mogą nie zezwalać na wykrycie serwerów.
join.info = Tutaj możesz wpisać [accent]adres IP serwera[], aby dołączyć lub wyszukać [accent]serwerów w lokalnej sieci[], do których możesz dołączyć .\nGra wieloosobowa na LAN i WAN jest wspomagana.\n\n[LIGHT_GRAY]Notka: Nie ma automatycznej listy wszystkich serwerów; jeśli chcesz dołączyć przez IP, musisz zapytać hosta o IP. join.info = Tutaj możesz wpisać [accent]adres IP serwera[], aby dołączyć lub wyszukać [accent]serwerów w lokalnej sieci[], do których możesz dołączyć .\nGra wieloosobowa na LAN i WAN jest wspomagana.\n\n[lightgray]Notka: Nie ma automatycznej listy wszystkich serwerów; jeśli chcesz dołączyć przez IP, musisz zapytać hosta o IP.
hostserver = Stwórz Serwer hostserver = Stwórz Serwer
invitefriends = Zaproś Znajomych invitefriends = Zaproś Znajomych
hostserver.mobile = Hostuj\nGrę hostserver.mobile = Hostuj\nGrę
host = Hostuj host = Hostuj
hosting = [accent] Otwieranie serwera... hosting = [accent]Otwieranie serwera...
hosts.refresh = Odśwież hosts.refresh = Odśwież
hosts.discovering = Wyszukiwanie gier w sieci LAN hosts.discovering = Wyszukiwanie gier w sieci LAN
hosts.discovering.any = Wyszukiwanie gier hosts.discovering.any = Wyszukiwanie gier
server.refreshing = Odświeżanie serwera server.refreshing = Odświeżanie serwera
hosts.none = [lightgray] Brak serwerów w sieci LAN! hosts.none = [lightgray]Brak serwerów w sieci LAN!
host.invalid = [scarlet] Nie można połączyć się z hostem. host.invalid = [scarlet]Nie można połączyć się z hostem.
trace = Zlokalizuj Gracza trace = Zlokalizuj Gracza
trace.playername = Nazwa gracza: [accent]{0} trace.playername = Nazwa gracza: [accent]{0}
trace.ip = IP: [accent]{0} trace.ip = IP: [accent]{0}
@@ -162,8 +171,8 @@ server.delete = Czy na pewno chcesz usunąć ten serwer?
server.edit = Edytuj Serwer server.edit = Edytuj Serwer
server.outdated = [crimson]Przestarzały serwer![] server.outdated = [crimson]Przestarzały serwer![]
server.outdated.client = [crimson]Przestarzały klient![] server.outdated.client = [crimson]Przestarzały klient![]
server.version = [lightgray]Wersja: {0} server.version = [gray]Wersja: {0}
server.custombuild = [yellow]Zmodowany klient server.custombuild = [accent]Zmodowany klient
confirmban = Jesteś pewny, że chcesz zbanować tego gracza? confirmban = Jesteś pewny, że chcesz zbanować tego gracza?
confirmkick = Jesteś pewny, że chcesz wyrzucić tego gracza? confirmkick = Jesteś pewny, że chcesz wyrzucić tego gracza?
confirmvotekick = Jesteś pewny, że chcesz głosować za wyrzuceniem tego gracza? confirmvotekick = Jesteś pewny, że chcesz głosować za wyrzuceniem tego gracza?
@@ -188,14 +197,14 @@ save.new = Nowy zapis
save.overwrite = Czy na pewno chcesz nadpisać zapis gry? save.overwrite = Czy na pewno chcesz nadpisać zapis gry?
overwrite = Nadpisz overwrite = Nadpisz
save.none = Nie znaleziono zapisów gry! save.none = Nie znaleziono zapisów gry!
saveload = [accent]Zapisywanie... saveload = Zapisywanie...
savefail = Nie udało się zapisać gry! savefail = Nie udało się zapisać gry!
save.delete.confirm = Czy na pewno chcesz usunąć ten zapis gry? save.delete.confirm = Czy na pewno chcesz usunąć ten zapis gry?
save.delete = Usuń save.delete = Usuń
save.export = Eksportuj save.export = Eksportuj
save.import.invalid = [accent]Zapis gry jest niepoprawny! save.import.invalid = [accent]Zapis gry jest niepoprawny!
save.import.fail = [crimson]Nie udało się zaimportować zapisu: [accent] {0} save.import.fail = [crimson]Nie udało się zaimportować zapisu: [accent]{0}
save.export.fail = [crimson]Nie można wyeksportować zapisu: [accent] {0} save.export.fail = [crimson]Nie można wyeksportować zapisu: [accent]{0}
save.import = Importuj Zapis save.import = Importuj Zapis
save.newslot = Zapisz nazwę: save.newslot = Zapisz nazwę:
save.rename = Zmień Nazwę save.rename = Zmień Nazwę
@@ -203,7 +212,7 @@ save.rename.text = Nowa nazwa:
selectslot = Wybierz zapis. selectslot = Wybierz zapis.
slot = [accent]Slot {0} slot = [accent]Slot {0}
editmessage = Edytuj Wiadomość editmessage = Edytuj Wiadomość
save.corrupted = [accent]Zapis gry jest uszkodzony lub nieprawidłowy! Jeżeli aktualizowałeś grę, najprawdopodobniej jest to zmiana w formacie zapisu i [scarlet]nie jest[] to błąd. save.corrupted = Zapis gry jest uszkodzony lub nieprawidłowy!
empty = <pusto> empty = <pusto>
on = Włączone on = Włączone
off = Wyłączone off = Wyłączone
@@ -231,11 +240,11 @@ data.exported = Dane wyeksportowane.
data.invalid = Nieprawidłowe dane gry. data.invalid = Nieprawidłowe dane gry.
data.import.confirm = Zaimportowanie zewnętrznych danych usunie[scarlet] wszystkie[] obecne dane gry.\n[accent]Nie można tego cofnąć![]\n\nGdy dane zostaną zimportowane, gra automatycznie się wyłączy. data.import.confirm = Zaimportowanie zewnętrznych danych usunie[scarlet] wszystkie[] obecne dane gry.\n[accent]Nie można tego cofnąć![]\n\nGdy dane zostaną zimportowane, gra automatycznie się wyłączy.
classic.export = Eksportuj Dane Wersji Klasycznej classic.export = Eksportuj Dane Wersji Klasycznej
classic.export.text = [accent]Mindustry[] otrzymało ostatnio ważną aktualizację.\nClassic (v3.5 build 40) zapis albo mapa zostały wykryte. Czy chciałbyś eksportować te zapisy do katalogu domowego swojego telefonu, do użycia w aplikacji Mindustry Classic? classic.export.text = [accent]Mindustry[] otrzymało ostatnio ważną aktualizację.\nWykryto zapis lub mapę z wersji classic (v3.5 build 40) - czy chciałbyś eksportować te zapisy do katalogu domowego swojego telefonu, do użycia w aplikacji Mindustry Classic?
quit.confirm = Czy na pewno chcesz wyjść? quit.confirm = Czy na pewno chcesz wyjść?
quit.confirm.tutorial = Czy jesteś pewien tego co robisz?\nSamouczek może zostać powtórzony w[accent] Opcje->Gra->Powtórz samouczek.[] quit.confirm.tutorial = Czy jesteś pewien tego co robisz?\nSamouczek może zostać powtórzony w[accent] Ustawienia->Gra->Ponów samouczek.[]
loading = [accent]Ładowanie... loading = [accent]Ładowanie...
reloading = [accent]Reloading Mods... reloading = [accent]Przeładowywanie Modów...
saving = [accent]Zapisywanie... saving = [accent]Zapisywanie...
cancelbuilding = [accent][[{0}][] by wyczyścić plan cancelbuilding = [accent][[{0}][] by wyczyścić plan
selectschematic = [accent][[{0}][] by wybrać+skopiować selectschematic = [accent][[{0}][] by wybrać+skopiować
@@ -243,11 +252,11 @@ pausebuilding = [accent][[{0}][] by wtrzymać budowę
resumebuilding = [scarlet][[{0}][] by kontynuować budowę resumebuilding = [scarlet][[{0}][] by kontynuować budowę
wave = [accent]Fala {0} wave = [accent]Fala {0}
wave.waiting = Fala za {0} wave.waiting = Fala za {0}
wave.waveInProgress = [LIGHT_GRAY]Fala w trakcie wave.waveInProgress = [lightgray]Fala w trakcie
waiting = [LIGHT_GRAY]Oczekiwanie... waiting = [lightgray]Oczekiwanie...
waiting.players = Oczekiwanie na graczy... waiting.players = Oczekiwanie na graczy...
wave.enemies = Pozostało [LIGHT_GRAY]{0} wrogów wave.enemies = Pozostało [lightgray]{0} wrogów
wave.enemy = Pozostał [LIGHT_GRAY]{0} wróg wave.enemy = Pozostał [lightgray]{0} wróg
loadimage = Załaduj Obraz loadimage = Załaduj Obraz
saveimage = Zapisz Obraz saveimage = Zapisz Obraz
unknown = Nieznane unknown = Nieznane
@@ -255,8 +264,8 @@ custom = Własne
builtin = Wbudowane builtin = Wbudowane
map.delete.confirm = Jesteś pewny, że chcesz usunąć tę mapę? Nie będzie można jej przywrócić. map.delete.confirm = Jesteś pewny, że chcesz usunąć tę mapę? Nie będzie można jej przywrócić.
map.random = [accent]Losowa Mapa map.random = [accent]Losowa Mapa
map.nospawn = Ta mapa nie zawiera żadnego rdzenia! Dodaj [ROYAL]niebieski[] rdzeń do tej mapy w edytorze. map.nospawn = Ta mapa nie zawiera żadnego rdzenia! Dodaj [accent]pomarańczowy[] rdzeń do tej mapy w edytorze.
map.nospawn.pvp = Ta mapa nie ma żadnego rdzenia przeciwnika, aby mogli się zrespić przeciwnicy! Dodaj[SCARLET] inny niż niebieski[] rdzeń do mapy w edytorze. map.nospawn.pvp = Ta mapa nie ma żadnego rdzenia przeciwnika, aby mogli się zrespić przeciwnicy! Dodaj[SCARLET] inny niż pomarańczowy[] rdzeń do mapy w edytorze.
map.nospawn.attack = Ta mapa nie ma żadnego rdzenia przeciwnika, aby można było go zaatakować! Dodaj[SCARLET] czerwony[] rdzeń do mapy w edytorze. map.nospawn.attack = Ta mapa nie ma żadnego rdzenia przeciwnika, aby można było go zaatakować! Dodaj[SCARLET] czerwony[] rdzeń do mapy w edytorze.
map.invalid = Błąd podczas ładowania mapy: uszkodzony lub niepoprawny plik mapy. map.invalid = Błąd podczas ładowania mapy: uszkodzony lub niepoprawny plik mapy.
workshop.update = Aktualizuj pozycję workshop.update = Aktualizuj pozycję
@@ -265,12 +274,13 @@ map.publish.confirm = Czy jesteś pewien, że chcesz opublikować tę mapę?\n\n
workshop.menu = Wybierz co chcesz zrobić z tą pozycją. workshop.menu = Wybierz co chcesz zrobić z tą pozycją.
workshop.info = Informacja o pozycji workshop.info = Informacja o pozycji
changelog = Historia aktualizacji (opcjonalna): changelog = Historia aktualizacji (opcjonalna):
eula = Umowa EULA Steam eula = Umowa Użytkownika Końcowego (EULA) Steam
missing = Ta pozycja została przeniesiona bądź usunięta.\n[lightgray]Pozycja na Warsztacie została automatycznie odłączona. missing = Ta pozycja została przeniesiona bądź usunięta.\n[lightgray]Pozycja na Warsztacie została automatycznie odłączona.
publishing = [accent]Trwa publikowanie... publishing = [accent]Trwa publikowanie...
publish.confirm = Czy jesteś pewien, że chcesz to opublikować?\n\n[lightgray]Najpierw upewnij się, że zgadzasz się z umową EULA Warsztatu, w przeciwnym razie twoje pozycje nie będą widoczne! publish.confirm = Czy jesteś pewien, że chcesz to opublikować?\n\n[lightgray]Najpierw upewnij się, że zgadzasz się z umową EULA Warsztatu, w przeciwnym razie twoje pozycje nie będą widoczne!
publish.error = Błąd podczas publikowania pozycji: {0} publish.error = Błąd podczas publikowania pozycji: {0}
steam.error = Nie udało się zainicjować serwisów Steam.\nBłąd: {0} steam.error = Nie udało się zainicjować serwisów Steam.\nBłąd: {0}
editor.brush = Pędzel editor.brush = Pędzel
editor.openin = Otwórz w Edytorze editor.openin = Otwórz w Edytorze
editor.oregen = Generacja Złóż editor.oregen = Generacja Złóż
@@ -301,7 +311,7 @@ waves.load = Załaduj Ze Schowka
waves.invalid = Nieprawidłowe fale w schowku. waves.invalid = Nieprawidłowe fale w schowku.
waves.copied = Fale zostały skopiowane. waves.copied = Fale zostały skopiowane.
waves.none = Brak zdefiniowanych wrogów.\nPamiętaj, że puste układy fal zostaną automatycznie zastąpione układem domyślnym. waves.none = Brak zdefiniowanych wrogów.\nPamiętaj, że puste układy fal zostaną automatycznie zastąpione układem domyślnym.
editor.default = [LIGHT_GRAY]<Domyślne> editor.default = [lightgray]<Domyślne>
details = Detale... details = Detale...
edit = Edytuj... edit = Edytuj...
editor.name = Nazwa: editor.name = Nazwa:
@@ -310,11 +320,11 @@ editor.removeunit = Usuń Jednostkę
editor.teams = Drużyny editor.teams = Drużyny
editor.errorload = Błąd podczas ładowania pliku:\n[accent]{0} editor.errorload = Błąd podczas ładowania pliku:\n[accent]{0}
editor.errorsave = Błąd podczas zapisywania pliku:\n[accent]{0} editor.errorsave = Błąd podczas zapisywania pliku:\n[accent]{0}
editor.errorimage = To obraz, nie mapa. Nie zmieniaj rozszerzenia, spodziewając się, że to coś zmieni.\n\nJeśli chcesz zaimportować starszą mapę, użyj przycisku „importuj starszą mapę w edytorze. editor.errorimage = To obraz, nie mapa.\n\nJeśli chcesz zaimportować mapę z wersji 3.5/build 40, użyj przycisku "Importuj starszą mapę" w edytorze.
editor.errorlegacy = Ta mapa jest zbyt stara i używa starszego formatu mapy, który nie jest już obsługiwany. editor.errorlegacy = Ta mapa jest zbyt stara i używa starszego formatu mapy, który nie jest już obsługiwany.
editor.errornot = To nie jest plik mapy. editor.errornot = To nie jest plik mapy.
editor.errorheader = Ten plik mapy jest nieprawidłowy lub uszkodzony. editor.errorheader = Ten plik mapy jest nieprawidłowy lub uszkodzony.
editor.errorname = Mapa nie zawiera nazwy. editor.errorname = Mapa nie zawiera nazwy. Czy próbujesz załadować zapis gry?
editor.update = Aktualizuj editor.update = Aktualizuj
editor.randomize = Losuj editor.randomize = Losuj
editor.apply = Zastosuj editor.apply = Zastosuj
@@ -347,6 +357,7 @@ editor.overwrite = [accent]Uwaga!\nSpowoduje to nadpisanie istniejącej mapy.
editor.overwrite.confirm = [scarlet]Uwaga![] Mapa o tej nazwie już istnieje. Jesteś pewny, że chcesz ją nadpisać? editor.overwrite.confirm = [scarlet]Uwaga![] Mapa o tej nazwie już istnieje. Jesteś pewny, że chcesz ją nadpisać?
editor.exists = Mapa o tej nazwie już istnieje. editor.exists = Mapa o tej nazwie już istnieje.
editor.selectmap = Wybierz mapę do załadowania: editor.selectmap = Wybierz mapę do załadowania:
toolmode.replace = Zastąp toolmode.replace = Zastąp
toolmode.replace.description = Rysuje tylko na stałych blokach. toolmode.replace.description = Rysuje tylko na stałych blokach.
toolmode.replaceall = Zastąp Wszystko toolmode.replaceall = Zastąp Wszystko
@@ -361,7 +372,8 @@ toolmode.fillteams = Wypełnij Drużyny
toolmode.fillteams.description = Wypełniaj drużyny zamiast bloków. toolmode.fillteams.description = Wypełniaj drużyny zamiast bloków.
toolmode.drawteams = Rysuj Drużyny toolmode.drawteams = Rysuj Drużyny
toolmode.drawteams.description = Rysuj drużyny zamiast bloków. toolmode.drawteams.description = Rysuj drużyny zamiast bloków.
filters.empty = [LIGHT_GRAY]Brak filtrów! Dodaj jeden za pomocą przycisku poniżej.
filters.empty = [lightgray]Brak filtrów! Dodaj jeden za pomocą przycisku poniżej.
filter.distort = Zniekształcanie filter.distort = Zniekształcanie
filter.noise = Szum filter.noise = Szum
filter.median = Mediana filter.median = Mediana
@@ -391,7 +403,8 @@ filter.option.ore = Ruda
filter.option.floor2 = Druga Podłoga filter.option.floor2 = Druga Podłoga
filter.option.threshold2 = Drugi Próg filter.option.threshold2 = Drugi Próg
filter.option.radius = Zasięg filter.option.radius = Zasięg
filter.option.percentile = Percentyl filter.option.percentile = Procent
width = Szerokość: width = Szerokość:
height = Wysokość: height = Wysokość:
menu = Menu menu = Menu
@@ -401,52 +414,56 @@ load = Wczytaj
save = Zapisz save = Zapisz
fps = FPS: {0} fps = FPS: {0}
ping = Ping: {0}ms ping = Ping: {0}ms
language.restart = Uruchom grę ponownie, aby ustawiony język zaczął funkcjonować. language.restart = Uruchom grę ponownie, aby ustawiony język zaczął funkcjonować.
settings = Ustawienia settings = Ustawienia
tutorial = Poradnik tutorial = Poradnik
tutorial.retake = Ponów Samouczek tutorial.retake = Ponów Samouczek
editor = Edytor editor = Edytor
mapeditor = Edytor Map mapeditor = Edytor Map
abandon = Opuść abandon = Opuść
abandon.text = Ta strefa i wszystkie jej surowce będą przejęte przez przeciwników. abandon.text = Ta strefa i wszystkie jej surowce będą przejęte przez przeciwników.
locked = Zablokowane locked = Zablokowane
complete = [LIGHT_GRAY]Ukończone: complete = [lightgray]Ukończone:
requirement.wave = Osiągnij falę {0} w {1} requirement.wave = Osiągnij falę {0} w {1}
requirement.core = Zniszcz Rdzeń wroga w {0} requirement.core = Zniszcz Rdzeń wroga w {0}
requirement.unlock = Odblokuj {0} requirement.unlock = Odblokuj {0}
resume = Kontynuuj Strefę:\n[LIGHT_GRAY]{0} resume = Kontynuuj Strefę:\n[lightgray]{0}
bestwave = [LIGHT_GRAY]Najwyższa fala: {0} bestwave = [lightgray]Najwyższa fala: {0}
launch = < WYSTRZEL > launch = < WYSTRZEL >
launch.title = Wystrzelenie Udane launch.title = Wystrzelenie Udane
launch.next = [LIGHT_GRAY]Następna okazja przy fali {0} launch.next = [lightgray]Następna okazja przy fali {0}
launch.unable2 = [scarlet]WYSTZRZELENIE niedostępne.[] launch.unable2 = [scarlet]WYSTZRZELENIE niedostępne.[]
launch.confirm = Spowoduje to wystrzelenie wszystkich surowców w rdzeniu.\nNie będziesz mógł wrócić do tej bazy. launch.confirm = Spowoduje to wystrzelenie wszystkich surowców w rdzeniu.\nNie będziesz mógł wrócić do tej bazy.
launch.skip.confirm = Jeśli teraz przejdziesz do kolejnej fali, Nie biędziesz miał możliwości wystrzelenia do czasu pokonania dalszych fal. launch.skip.confirm = Jeśli teraz przejdziesz do kolejnej fali, nie biędziesz miał możliwości wystrzelenia do czasu pokonania dalszych fal.
uncover = Odkryj uncover = Odkryj
configure = Skonfiguruj Ładunek configure = Skonfiguruj Ładunek
bannedblocks = Zabronione bloki bannedblocks = Zabronione bloki
addall = Dodaj wszystkie addall = Dodaj wszystkie
configure.locked = [LIGHT_GRAY]Dotrzyj do fali {0}\nAby skonfigurować ładunek. configure.locked = [lightgray]Dotrzyj do fali {0},\naby skonfigurować ładunek.
configure.invalid = Ilość musi być liczbą pomiędzy 0 a {0}. configure.invalid = Ilość musi być liczbą pomiędzy 0 a {0}.
zone.unlocked = [LIGHT_GRAY]Strefa {0} odblokowana. zone.unlocked = [lightgray]Strefa {0} odblokowana.
zone.requirement.complete = Fala {0} osiągnięta:\n{1} Wymagania strefy zostały spełnione. zone.requirement.complete = Fala {0} osiągnięta:\n{1} Wymagania strefy zostały spełnione.
zone.config.unlocked = Ładunek odblokowany:[lightgray]\n{0} zone.config.unlocked = Ładunek odblokowany:[lightgray]\n{0}
zone.resources = Wykryte Zasoby: zone.resources = [lightgray]Wykryte Zasoby:
zone.objective = [lightgray]Cel: [accent]{0} zone.objective = [lightgray]Cel: [accent]{0}
zone.objective.survival = Przeżyj zone.objective.survival = Przeżyj
zone.objective.attack = Zniszcz Rdzeń Wroga zone.objective.attack = Zniszcz Rdzeń Wroga
add = Dodaj... add = Dodaj...
boss.health = Zdrowie Bossa boss.health = Zdrowie Bossa
connectfail = [crimson]Nie można połączyć się z serwerem:\n\n[accent]{0} connectfail = [crimson]Nie można połączyć się z serwerem:\n\n[accent]{0}
error.unreachable = Serwer niedostępny.\nCzy adres jest wpisany poprawnie? error.unreachable = Serwer niedostępny.\nCzy adres jest wpisany poprawnie?
error.invalidaddress = Niepoprawny adres. error.invalidaddress = Niepoprawny adres.
error.timedout = Przekroczono limit czasu!/nUpewnij się, że host ma ustawione przekierowanie portu oraz, czy adres jest poprawny! error.timedout = Przekroczono limit czasu!/nUpewnij się, że host ma ustawione przekierowanie portu oraz poprawność wpisanego adresu!
error.mismatch = Błąd pakietu:\nprawdopodobne niedopasowanie klienta/serwera.\nUpewnij się, że ty i host macie najnowszą wersję Mindustry! error.mismatch = Błąd pakietu:\nprawdopodobne niedopasowanie klienta/serwera.\nUpewnij się, że ty i host macie najnowszą wersję Mindustry!
error.alreadyconnected = Jesteś już połączony. error.alreadyconnected = Jesteś już połączony.
error.mapnotfound = Plik mapy nie został znaleziony! error.mapnotfound = Plik mapy nie został znaleziony!
error.io = Błąd siecowy I/O. error.io = Błąd siecowy I/O.
error.any = Nieznany błąd sieci. error.any = Nieznany błąd sieci.
error.bloom = Nie udało się załadować bloom.\nTwoje urządzenie może nie wspierać tej funkcji. error.bloom = Nie udało się załadować bloom.\nTwoje urządzenie może nie wspierać tej funkcji.
zone.groundZero.name = Wybuch Lądowy zone.groundZero.name = Wybuch Lądowy
zone.desertWastes.name = Pustynne Pustkowia zone.desertWastes.name = Pustynne Pustkowia
zone.craters.name = Kratery zone.craters.name = Kratery
@@ -461,6 +478,7 @@ zone.saltFlats.name = Solne Równiny
zone.impact0078.name = Uderzenie 0078 zone.impact0078.name = Uderzenie 0078
zone.crags.name = Urwisko zone.crags.name = Urwisko
zone.fungalPass.name = Grzybowa Przełęcz zone.fungalPass.name = Grzybowa Przełęcz
zone.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz jak najwięcej miedzi i ołowiu, tyle ile jest możliwe.\nPrzejdź do następnej strefy jak najszybciej. zone.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz jak najwięcej miedzi i ołowiu, tyle ile jest możliwe.\nPrzejdź do następnej strefy jak najszybciej.
zone.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki rozprzestrzeniły się. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nRozpocznij przedsięwzięcie od władzy. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy. zone.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki rozprzestrzeniły się. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nRozpocznij przedsięwzięcie od władzy. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy.
zone.desertWastes.description = Te pustkowia są rozległe, nieprzewidywalne, i znajdują się na nich opuszczone struktury.\nWęgiel jest obecny w tym regionie. Użyj go do produkcji energii, lub do stworzenia grafitu.\n\n[lightgray]Miejsce lądowania nie jest pewne. zone.desertWastes.description = Te pustkowia są rozległe, nieprzewidywalne, i znajdują się na nich opuszczone struktury.\nWęgiel jest obecny w tym regionie. Użyj go do produkcji energii, lub do stworzenia grafitu.\n\n[lightgray]Miejsce lądowania nie jest pewne.
@@ -472,7 +490,7 @@ zone.overgrowth.description = Obszar ten jest zarośnięty, bliżej źródła za
zone.tarFields.description = Obrzeża strefy produkcji ropy, między górami a pustynią. Jeden z niewielu obszarów z rezerwami użytecznej smoły.\nMimo że ta strefa jest opuszczona, w pobliżu znajdują się niebezpieczne siły wroga. Nie lekceważ ich.\n\n[lightgray]Jeśli to możliwe, zbadaj technologię przetwarzania oleju. zone.tarFields.description = Obrzeża strefy produkcji ropy, między górami a pustynią. Jeden z niewielu obszarów z rezerwami użytecznej smoły.\nMimo że ta strefa jest opuszczona, w pobliżu znajdują się niebezpieczne siły wroga. Nie lekceważ ich.\n\n[lightgray]Jeśli to możliwe, zbadaj technologię przetwarzania oleju.
zone.desolateRift.description = Strefa wyjątkowo niebezpieczna. Obfita w zasoby ale mało miejsca. Wysokie ryzyko zniszczenia. Opuść tę strefe jak najszybciej. Nie daj się zwieść długiemu odstępowi między atakami wroga. zone.desolateRift.description = Strefa wyjątkowo niebezpieczna. Obfita w zasoby ale mało miejsca. Wysokie ryzyko zniszczenia. Opuść tę strefe jak najszybciej. Nie daj się zwieść długiemu odstępowi między atakami wroga.
zone.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru, zredukowny do ruin.\n[lightgray]Zbadaj tor i jego zastosowania.\n\nWróg jest tutaj obecny w dużej ilości, nieustannie poszukuje napastników. zone.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru, zredukowny do ruin.\n[lightgray]Zbadaj tor i jego zastosowania.\n\nWróg jest tutaj obecny w dużej ilości, nieustannie poszukuje napastników.
zone.fungalPass.description = Przejściowy obszar pomiędzy wysokimi górami a nisko znajdującymi się, ogarniętymi przez zarodniki równinami. Znajduje się tu mała postawiona przez wrogów baza zwiadowcza.\nZniszcz ją.\nUżyj jednostek Nóż i Pełzak. Zniszcz oba rdżenie. zone.fungalPass.description = Przejściowy obszar pomiędzy wysokimi górami a nisko znajdującymi się, ogarniętymi przez zarodniki równinami. Znajduje się tu mała postawiona przez wrogów baza zwiadowcza.\nZniszcz ją.\nUżyj jednostek Nóż i Pełzak. Zniszcz oba rdzenie.
zone.impact0078.description = <insert description here> zone.impact0078.description = <insert description here>
zone.crags.description = <insert description here> zone.crags.description = <insert description here>
settings.language = Język settings.language = Język
@@ -497,7 +515,7 @@ error.crashtitle = Wystąpił błąd
blocks.input = Wejście blocks.input = Wejście
blocks.output = Wyjście blocks.output = Wyjście
blocks.booster = Wzmacniacz blocks.booster = Wzmacniacz
block.unknown = [LIGHT_GRAY]??? block.unknown = [lightgray]???
blocks.powercapacity = Pojemność mocy blocks.powercapacity = Pojemność mocy
blocks.powershot = moc/strzał blocks.powershot = moc/strzał
blocks.damage = Obrażenia blocks.damage = Obrażenia
@@ -509,7 +527,7 @@ blocks.shootrange = Zasięg
blocks.size = Rozmiar blocks.size = Rozmiar
blocks.liquidcapacity = Pojemność cieczy blocks.liquidcapacity = Pojemność cieczy
blocks.powerrange = Zakres mocy blocks.powerrange = Zakres mocy
blocks.powerconnections = Max Connections blocks.powerconnections = Maksymalna ilość połączeń
blocks.poweruse = Zużycie prądu blocks.poweruse = Zużycie prądu
blocks.powerdamage = Moc/Zniszczenia blocks.powerdamage = Moc/Zniszczenia
blocks.itemcapacity = Pojemność przedmiotów blocks.itemcapacity = Pojemność przedmiotów
@@ -529,9 +547,10 @@ blocks.inaccuracy = Niedokładność
blocks.shots = Strzały blocks.shots = Strzały
blocks.reload = Strzałów/sekundę blocks.reload = Strzałów/sekundę
blocks.ammo = Amunicja blocks.ammo = Amunicja
bar.drilltierreq = Wymagane Lepsze Wiertło bar.drilltierreq = Wymagane Lepsze Wiertło
bar.drillspeed = Prędkość wiertła: {0}/s bar.drillspeed = Prędkość wiertła: {0}/s
bar.pumpspeed = Pump Speed: {0}/s bar.pumpspeed = Prędkość pompy: {0}/s
bar.efficiency = Efektywność: {0}% bar.efficiency = Efektywność: {0}%
bar.powerbalance = Moc: {0} bar.powerbalance = Moc: {0}
bar.powerstored = Zmagazynowano: {0}/{1} bar.powerstored = Zmagazynowano: {0}/{1}
@@ -544,6 +563,9 @@ bar.heat = Ciepło
bar.power = Prąd bar.power = Prąd
bar.progress = Postęp Budowy bar.progress = Postęp Budowy
bar.spawned = Jednostki: {0}/{1} bar.spawned = Jednostki: {0}/{1}
bar.input = Input
bar.output = Output
bullet.damage = [stat]{0}[lightgray] Obrażenia bullet.damage = [stat]{0}[lightgray] Obrażenia
bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[lightgray] kratki bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[lightgray] kratki
bullet.incendiary = [stat]zapalający bullet.incendiary = [stat]zapalający
@@ -555,6 +577,7 @@ bullet.freezing = [stat]zamrażający
bullet.tarred = [stat]smolny bullet.tarred = [stat]smolny
bullet.multiplier = [stat]{0}[lightgray]x mnożnik amunicji bullet.multiplier = [stat]{0}[lightgray]x mnożnik amunicji
bullet.reload = [stat]{0}[lightgray]x szybkość ataku bullet.reload = [stat]{0}[lightgray]x szybkość ataku
unit.blocks = bloki unit.blocks = bloki
unit.powersecond = jednostek prądu na sekundę unit.powersecond = jednostek prądu na sekundę
unit.liquidsecond = jednostek płynów na sekundę unit.liquidsecond = jednostek płynów na sekundę
@@ -576,12 +599,13 @@ category.shooting = Strzelanie
category.optional = Dodatkowe ulepszenia category.optional = Dodatkowe ulepszenia
setting.landscape.name = Zablokuj tryb panoramiczny setting.landscape.name = Zablokuj tryb panoramiczny
setting.shadows.name = Cienie setting.shadows.name = Cienie
setting.blockreplace.name = Automatic Block Suggestions setting.blockreplace.name = Automatyczne sugestie bloków
setting.linear.name = Filtrowanie Liniowe setting.linear.name = Filtrowanie Liniowe
setting.hints.name = Hints setting.hints.name = Podpowiedzi
setting.buildautopause.name = Automatycznie zatrzymaj budowanie
setting.animatedwater.name = Animowana woda setting.animatedwater.name = Animowana woda
setting.animatedshields.name = Animowana Tarcza setting.animatedshields.name = Animowana Tarcza
setting.antialias.name = Antyaliasing[LIGHT_GRAY] (wymaga restartu)[] setting.antialias.name = Antyaliasing[lightgray] (wymaga restartu)[]
setting.indicators.name = Wskaźniki Przyjaciół setting.indicators.name = Wskaźniki Przyjaciół
setting.autotarget.name = Automatyczne Celowanie setting.autotarget.name = Automatyczne Celowanie
setting.keyboard.name = Sterowanie - Myszka+Klawiatura setting.keyboard.name = Sterowanie - Myszka+Klawiatura
@@ -599,18 +623,21 @@ setting.difficulty.insane = Szalony
setting.difficulty.name = Poziom trudności setting.difficulty.name = Poziom trudności
setting.screenshake.name = Wstrząsy ekranu setting.screenshake.name = Wstrząsy ekranu
setting.effects.name = Wyświetlanie efektów setting.effects.name = Wyświetlanie efektów
setting.destroyedblocks.name = Display Destroyed Blocks setting.destroyedblocks.name = Wyświetl zniszczone bloki
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding setting.conveyorpathfinding.name = Conveyor Placement Pathfinding
setting.sensitivity.name = Czułość kontrolera setting.sensitivity.name = Czułość kontrolera
setting.saveinterval.name = Interwał automatycznego zapisywania setting.saveinterval.name = Interwał automatycznego zapisywania
setting.seconds = {0} Sekundy setting.seconds = {0} sekund
setting.blockselecttimeout.name = Block Select Timeout
setting.milliseconds = {0} millisekund
setting.fullscreen.name = Pełny ekran setting.fullscreen.name = Pełny ekran
setting.borderlesswindow.name = Bezramkowe okno[LIGHT_GRAY] (może wymagać restartu) setting.borderlesswindow.name = Bezramkowe okno[lightgray] (może wymagać restartu)
setting.fps.name = Pokazuj FPS setting.fps.name = Pokazuj FPS oraz ping
setting.blockselectkeys.name = Show Block Select Keys
setting.vsync.name = Synchronizacja pionowa setting.vsync.name = Synchronizacja pionowa
setting.pixelate.name = Pikselacja [LIGHT_GRAY](wyłącza animacje) setting.pixelate.name = Pikselacja [lightgray](wyłącza animacje)
setting.minimap.name = Pokaż Minimapę setting.minimap.name = Pokaż Minimapę
setting.position.name = Show Player Position setting.position.name = Pokazuj położenie gracza
setting.musicvol.name = Głośność muzyki setting.musicvol.name = Głośność muzyki
setting.ambientvol.name = Głośność otoczenia setting.ambientvol.name = Głośność otoczenia
setting.mutemusic.name = Wycisz muzykę setting.mutemusic.name = Wycisz muzykę
@@ -622,7 +649,7 @@ setting.publichost.name = Widoczność Gry Publicznej
setting.chatopacity.name = Przezroczystość czatu setting.chatopacity.name = Przezroczystość czatu
setting.lasersopacity.name = Przezroczystość laserów zasilających setting.lasersopacity.name = Przezroczystość laserów zasilających
setting.playerchat.name = Wyświetlaj czat w grze setting.playerchat.name = Wyświetlaj czat w grze
public.confirm = Czy chcesz ustawić swoją grę jako publiczną?\n[lightgray]Można to później zmienić w Ustawienia->Gra->Widoczność Gry Publicznej. public.confirm = Czy chcesz ustawić swoją grę jako publiczną?\n[accent]Każdy będzie mógł dołączyć do twojej gry.\n[lightgray]Można to później zmienić w Ustawienia->Gra->Widoczność Gry Publicznej.
public.beta = Wersje beta gry nie mogą tworzyć publicznych pokoi. public.beta = Wersje beta gry nie mogą tworzyć publicznych pokoi.
uiscale.reset = Skala interfejsu uległa zmianie.\nNaciśnij "OK" by potwierdzić zmiany.\n[scarlet]Cofanie zmian i wyjście z gry za[accent] {0}[] uiscale.reset = Skala interfejsu uległa zmianie.\nNaciśnij "OK" by potwierdzić zmiany.\n[scarlet]Cofanie zmian i wyjście z gry za[accent] {0}[]
uiscale.cancel = Anuluj i Wyjdź uiscale.cancel = Anuluj i Wyjdź
@@ -635,16 +662,36 @@ category.multiplayer.name = Wielu graczy
command.attack = Atakuj command.attack = Atakuj
command.rally = Zbierz command.rally = Zbierz
command.retreat = Wycofaj command.retreat = Wycofaj
placement.blockselectkeys = \n[lightgray]Key: [{0},
keybind.clear_building.name = Wyczyść budynek keybind.clear_building.name = Wyczyść budynek
keybind.press = Naciśnij wybrany klawisz... keybind.press = Naciśnij wybrany klawisz...
keybind.press.axis = Naciśnij oś lub klawisz... keybind.press.axis = Naciśnij oś lub klawisz...
keybind.screenshot.name = Zrzut ekranu mapy keybind.screenshot.name = Zrzut ekranu mapy
keybind.toggle_power_lines.name = Toggle Power Lines
keybind.move_x.name = Poruszanie w poziomie keybind.move_x.name = Poruszanie w poziomie
keybind.move_y.name = Poruszanie w pionie keybind.move_y.name = Poruszanie w pionie
keybind.mouse_move.name = Follow Mouse
keybind.dash.name = Dash
keybind.schematic_select.name = Wybierz region keybind.schematic_select.name = Wybierz region
keybind.schematic_menu.name = Menu schematów keybind.schematic_menu.name = Menu schematów
keybind.schematic_flip_x.name = Obróć schemat horyzontalnie keybind.schematic_flip_x.name = Obróć schemat horyzontalnie
keybind.schematic_flip_y.name = Obróć schemat wertykalnie keybind.schematic_flip_y.name = Obróć schemat wertykalnie
keybind.category_prev.name = Poprzednia kategoria
keybind.category_next.name = Następna kategoria
keybind.block_select_left.name = Block Select Left
keybind.block_select_right.name = Block Select Right
keybind.block_select_up.name = Block Select Up
keybind.block_select_down.name = Block Select Down
keybind.block_select_01.name = Category/Block Select 1
keybind.block_select_02.name = Category/Block Select 2
keybind.block_select_03.name = Category/Block Select 3
keybind.block_select_04.name = Category/Block Select 4
keybind.block_select_05.name = Category/Block Select 5
keybind.block_select_06.name = Category/Block Select 6
keybind.block_select_07.name = Category/Block Select 7
keybind.block_select_08.name = Category/Block Select 8
keybind.block_select_09.name = Category/Block Select 9
keybind.block_select_10.name = Category/Block Select 10
keybind.fullscreen.name = Przełącz Pełny Ekran keybind.fullscreen.name = Przełącz Pełny Ekran
keybind.select.name = Zaznacz keybind.select.name = Zaznacz
keybind.diagonal_placement.name = Budowa po skosie keybind.diagonal_placement.name = Budowa po skosie
@@ -658,7 +705,6 @@ keybind.menu.name = Menu
keybind.pause.name = Pauza keybind.pause.name = Pauza
keybind.pause_building.name = Wstrzymaj/kontynuuj budowę keybind.pause_building.name = Wstrzymaj/kontynuuj budowę
keybind.minimap.name = Minimapa keybind.minimap.name = Minimapa
keybind.dash.name = Przyspieszenie
keybind.chat.name = Czat keybind.chat.name = Czat
keybind.player_list.name = Lista graczy keybind.player_list.name = Lista graczy
keybind.console.name = Konsola keybind.console.name = Konsola
@@ -672,16 +718,18 @@ keybind.drop_unit.name = Wyrzucanie przedmiot
keybind.zoom_minimap.name = Powiększenie mapy keybind.zoom_minimap.name = Powiększenie mapy
mode.help.title = Opis trybów mode.help.title = Opis trybów
mode.survival.name = Przeżycie mode.survival.name = Przeżycie
mode.survival.description = Zwykły tryb. Limitowane surowce i fale przeciwników. mode.survival.description = Zwykły tryb. Limitowane surowce i fale przeciwników.\n[gray]Wymaga spawnów wroga na mapie, aby móc grać na tym trybie.
mode.sandbox.name = Piaskownica mode.sandbox.name = Piaskownica
mode.sandbox.description = Nieskończone surowce i fale bez odliczania. mode.sandbox.description = Nieskończone surowce i fale bez odliczania.
mode.editor.name = Edytor mode.editor.name = Edytor
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = Walcz przeciwko innym graczom. mode.pvp.description = Walcz przeciwko innym graczom.\n[gray]Wymaga co najmniej dwóch rdzeniów o róźnych kolorach na mapie, aby móc grać na tym trybie
mode.attack.name = Atak mode.attack.name = Atak
mode.attack.description = Brak fal. Celem jest zniszczenie bazy przeciwnika. mode.attack.description = Brak fal. Celem jest zniszczenie bazy przeciwnika.\n[gray]Wymaga czerwonego rdzenia na mapie, aby móc grać na tym trybie.
mode.custom = Własny tryb mode.custom = Własny tryb
rules.infiniteresources = Nieskończone zasoby rules.infiniteresources = Nieskończone zasoby
rules.reactorexplosions = Eksplozje reaktorów
rules.wavetimer = Zegar fal rules.wavetimer = Zegar fal
rules.waves = Fale rules.waves = Fale
rules.attack = Tryb ataku rules.attack = Tryb ataku
@@ -692,13 +740,13 @@ rules.unithealthmultiplier = Mnożnik życia jednostek
rules.playerhealthmultiplier = Mnożnik życia gracza rules.playerhealthmultiplier = Mnożnik życia gracza
rules.playerdamagemultiplier = Mnożnik obrażeń gracza rules.playerdamagemultiplier = Mnożnik obrażeń gracza
rules.unitdamagemultiplier = Mnożnik obrażeń jednostek rules.unitdamagemultiplier = Mnożnik obrażeń jednostek
rules.enemycorebuildradius = Zasięg blokady budowy przy rdżeniu wroga:[LIGHT_GRAY] (kratki) rules.enemycorebuildradius = Zasięg blokady budowy przy rdzeniu wroga:[lightgray] (kratki)
rules.respawntime = Czas odrodzenia:[LIGHT_GRAY] (sek) rules.respawntime = Czas odrodzenia:[lightgray] (sek)
rules.wavespacing = Odstępy między falami:[LIGHT_GRAY] (sek) rules.wavespacing = Odstępy między falami:[lightgray] (sek)
rules.buildcostmultiplier = Mnożnik kosztów budowania rules.buildcostmultiplier = Mnożnik kosztów budowania
rules.buildspeedmultiplier = Mnożnik prędkości budowania rules.buildspeedmultiplier = Mnożnik prędkości budowania
rules.waitForWaveToEnd = Fale czekają na przeciwników rules.waitForWaveToEnd = Fale czekają na przeciwników
rules.dropzoneradius = Zasięg strefy zrzutu:[LIGHT_GRAY] (kratki) rules.dropzoneradius = Zasięg strefy zrzutu:[lightgray] (kratki)
rules.respawns = Maksymalna ilośc odrodzeń na falę rules.respawns = Maksymalna ilośc odrodzeń na falę
rules.limitedRespawns = Ogranicz Odrodzenia rules.limitedRespawns = Ogranicz Odrodzenia
rules.title.waves = Fale rules.title.waves = Fale
@@ -707,6 +755,10 @@ rules.title.resourcesbuilding = Zasoby i Budowanie
rules.title.player = Gracze rules.title.player = Gracze
rules.title.enemy = Przeciwnicy rules.title.enemy = Przeciwnicy
rules.title.unit = Jednostki rules.title.unit = Jednostki
rules.title.experimental = Eksperymentalne
rules.lighting = Oświetlenie
rules.ambientlight = Światła otoczenia
content.item.name = Przedmioty content.item.name = Przedmioty
content.liquid.name = Płyny content.liquid.name = Płyny
content.unit.name = Jednostki content.unit.name = Jednostki
@@ -753,21 +805,22 @@ mech.trident-ship.name = Trójząb
mech.trident-ship.weapon = Wnęka bombowa mech.trident-ship.weapon = Wnęka bombowa
mech.glaive-ship.name = Glewia mech.glaive-ship.name = Glewia
mech.glaive-ship.weapon = Zapalający Karabin mech.glaive-ship.weapon = Zapalający Karabin
item.explosiveness = [LIGHT_GRAY]Wybuchowość: {0} item.explosiveness = [lightgray]Wybuchowość: {0}
item.flammability = [LIGHT_GRAY]Palność: {0} item.flammability = [lightgray]Palność: {0}
item.radioactivity = [LIGHT_GRAY]Promieniotwórczość: {0} item.radioactivity = [lightgray]Promieniotwórczość: {0}
unit.health = [LIGHT_GRAY]Zdrowie: {0} unit.health = [lightgray]Zdrowie: {0}
unit.speed = [LIGHT_GRAY]Prędkość: {0} unit.speed = [lightgray]Prędkość: {0}
mech.weapon = [LIGHT_GRAY]Broń: {0} mech.weapon = [lightgray]Broń: {0}
mech.health = [LIGHT_GRAY]Zdrowie: {0} mech.health = [lightgray]Zdrowie: {0}
mech.itemcapacity = [LIGHT_GRAY]Pojemność przedmiotów: {0} mech.itemcapacity = [lightgray]Pojemność przedmiotów: {0}
mech.minespeed = [LIGHT_GRAY]Prędkość kopania: {0} mech.minespeed = [lightgray]Prędkość kopania: {0}
mech.minepower = [LIGHT_GRAY]Moc kopania: {0} mech.minepower = [lightgray]Moc kopania: {0}
mech.ability = [LIGHT_GRAY]Umiejętność: {0} mech.ability = [lightgray]Umiejętność: {0}
mech.buildspeed = [LIGHT_GRAY]Szybkość Budowy: {0}% mech.buildspeed = [lightgray]Szybkość Budowy: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Wytrzymałość na przegrzewanie: {0} liquid.heatcapacity = [lightgray]Wytrzymałość na przegrzewanie: {0}
liquid.viscosity = [LIGHT_GRAY]Lepkość: {0} liquid.viscosity = [lightgray]Lepkość: {0}
liquid.temperature = [LIGHT_GRAY]Temperatura: {0} liquid.temperature = [lightgray]Temperatura: {0}
block.sand-boulder.name = Piaskowy Głaz block.sand-boulder.name = Piaskowy Głaz
block.grass.name = Trawa block.grass.name = Trawa
block.salt.name = Sól block.salt.name = Sól
@@ -794,7 +847,7 @@ block.thruster.name = Silnik
block.kiln.name = Wypalarka block.kiln.name = Wypalarka
block.graphite-press.name = Grafitowa Prasa block.graphite-press.name = Grafitowa Prasa
block.multi-press.name = Multi-Prasa block.multi-press.name = Multi-Prasa
block.constructing = {0} [LIGHT_GRAY](Budowa) block.constructing = {0} [lightgray](Budowa)
block.spawn.name = Spawn wrogów block.spawn.name = Spawn wrogów
block.core-shard.name = Rdzeń: Odłamek block.core-shard.name = Rdzeń: Odłamek
block.core-foundation.name = Rdzeń: Podstawa block.core-foundation.name = Rdzeń: Podstawa
@@ -843,8 +896,8 @@ block.copper-wall.name = Miedziana Ściana
block.copper-wall-large.name = Duża Miedziana Ściana block.copper-wall-large.name = Duża Miedziana Ściana
block.titanium-wall.name = Tytanowa Ściana block.titanium-wall.name = Tytanowa Ściana
block.titanium-wall-large.name = Duża Tytanowa Ściana block.titanium-wall-large.name = Duża Tytanowa Ściana
block.plastanium-wall.name = Plastanium Wall block.plastanium-wall.name = Ściana z Plastanu
block.plastanium-wall-large.name = Large Plastanium Wall block.plastanium-wall-large.name = Duża Ściana z Plastanu
block.phase-wall.name = Fazowa Ściana block.phase-wall.name = Fazowa Ściana
block.phase-wall-large.name = Duża Fazowa Ściana block.phase-wall-large.name = Duża Fazowa Ściana
block.thorium-wall.name = Torowa Ściana block.thorium-wall.name = Torowa Ściana
@@ -866,6 +919,8 @@ block.distributor.name = Dystrybutor
block.sorter.name = Sortownik block.sorter.name = Sortownik
block.inverted-sorter.name = Odwrotny Sortownik block.inverted-sorter.name = Odwrotny Sortownik
block.message.name = Wiadomość block.message.name = Wiadomość
block.illuminator.name = Illuminator
block.illuminator.description = Małe, kompaktowe i konfigurowane źródło światła. Wymaga energii do funkcjonowania.
block.overflow-gate.name = Brama Przepełnieniowa block.overflow-gate.name = Brama Przepełnieniowa
block.silicon-smelter.name = Huta Krzemu block.silicon-smelter.name = Huta Krzemu
block.phase-weaver.name = Fazowa Fabryka block.phase-weaver.name = Fazowa Fabryka
@@ -879,6 +934,7 @@ block.coal-centrifuge.name = Wirówka węglowa
block.power-node.name = Węzeł Prądu block.power-node.name = Węzeł Prądu
block.power-node-large.name = Duży Węzeł Prądu block.power-node-large.name = Duży Węzeł Prądu
block.surge-tower.name = Wieża Energetyczna block.surge-tower.name = Wieża Energetyczna
block.diode.name = Dioda baterii
block.battery.name = Bateria block.battery.name = Bateria
block.battery-large.name = Duża Bateria block.battery-large.name = Duża Bateria
block.combustion-generator.name = Generator Spalinowy block.combustion-generator.name = Generator Spalinowy
@@ -931,6 +987,7 @@ block.fortress-factory.name = Fabryka Mechów Forteca
block.revenant-factory.name = Fabryka Krążowników Zjawa block.revenant-factory.name = Fabryka Krążowników Zjawa
block.repair-point.name = Punkt Napraw block.repair-point.name = Punkt Napraw
block.pulse-conduit.name = Rura Pulsacyjna block.pulse-conduit.name = Rura Pulsacyjna
block.plated-conduit.name = Opancerzona rura
block.phase-conduit.name = Rura Fazowa block.phase-conduit.name = Rura Fazowa
block.liquid-router.name = Rozdzielacz Płynów block.liquid-router.name = Rozdzielacz Płynów
block.liquid-tank.name = Zbiornik Płynów block.liquid-tank.name = Zbiornik Płynów
@@ -982,8 +1039,8 @@ unit.eradicator.name = Niszczyciel
unit.lich.name = Obudzony unit.lich.name = Obudzony
unit.reaper.name = Żniwiarz unit.reaper.name = Żniwiarz
tutorial.next = [lightgray]<Kliknij, aby kontynuować> tutorial.next = [lightgray]<Kliknij, aby kontynuować>
tutorial.intro = Wszedłeś do[scarlet] Samouczka Mindustry.[]\nZacznij od[accent] wydobycia miedzi[]. Aby to zrobić, dotknij żyły rudy miedzi w pobliżu rdzenia.\n\n[accent]{0}/{1} miedź tutorial.intro = Wszedłeś do[scarlet] Samouczka Mindustry.[]\nUżyj [accent][[WASD][], aby poruszyć się.\n[accent]Przytrzymaj [[Ctrl] podczas przewijania[], aby przybliżyć i oddalić widok.\nZacznij od[accent] wydobycia miedzi[]. W tym celu przybliż się, a następnie dotknij żyły rudy miedzi w pobliżu rdzenia.\n\n[accent]{0}/{1} miedź
tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers [] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper tutorial.intro.mobile = Wszedłeś do[scarlet] Samouczka Mindustry.[]\nPrzesuń palcem po ekranie, aby poruszyć się.\n[accent]Użyj dwóch palcy[], aby przybliżyć i oddalić widok.\nZacznij od[accent] wydobycia miedzi[]. W tym celu przybliż się, a następnie dotknij żyły rudy miedzi w pobliżu rdzenia.\n\n[accent]{0}/{1} miedź
tutorial.drill = Wydobywanie ręczne nie jest efektywne.\n[accent]Wiertła []mogą kopać automatycznie.\nKliknij zakładkę wiertła w prawym dolnym rogu.\nWybierz[accent] wiertło mechaniczne[]. Umieść go na złożu miedzi, klikając.\n[accent]Kliknij prawym przyciskiem myszy[], aby przestać budować. tutorial.drill = Wydobywanie ręczne nie jest efektywne.\n[accent]Wiertła []mogą kopać automatycznie.\nKliknij zakładkę wiertła w prawym dolnym rogu.\nWybierz[accent] wiertło mechaniczne[]. Umieść go na złożu miedzi, klikając.\n[accent]Kliknij prawym przyciskiem myszy[], aby przestać budować.
tutorial.drill.mobile = Wydobywanie ręczne jest nieefektywne.\n[accent]Wiertła []mogą kopać automatycznie.\nDotknij zakładkę wiertła w prawym dolnym rogu.\nWybierz[accent] wiertło mechaniczne[].\nUmieść go na złożu miedzi poprzez Stuknięcie, potem wciśnij[accent] ptaszek[] na dole by potwierdzić wybór.\nNaciśnij przycisk[accent] X[] by anulować budowe. tutorial.drill.mobile = Wydobywanie ręczne jest nieefektywne.\n[accent]Wiertła []mogą kopać automatycznie.\nDotknij zakładkę wiertła w prawym dolnym rogu.\nWybierz[accent] wiertło mechaniczne[].\nUmieść go na złożu miedzi poprzez Stuknięcie, potem wciśnij[accent] ptaszek[] na dole by potwierdzić wybór.\nNaciśnij przycisk[accent] X[] by anulować budowe.
tutorial.blockinfo = Każdy blok ma inne statystyki. Każde wiertło może kopać tylko wybrane rudy.\nBy sprawdzić informacje i statystyki bloku,[accent] kliknij przycisk "?" podczas jego wyboru w menu budowy.[]\n\n[accent]Sprawdź teraz statystyki mechanicznego wiertła.[] tutorial.blockinfo = Każdy blok ma inne statystyki. Każde wiertło może kopać tylko wybrane rudy.\nBy sprawdzić informacje i statystyki bloku,[accent] kliknij przycisk "?" podczas jego wyboru w menu budowy.[]\n\n[accent]Sprawdź teraz statystyki mechanicznego wiertła.[]
@@ -1002,12 +1059,13 @@ tutorial.deposit = Włóż przedmioty do bloków poprzez przeciągnięcie z twoj
tutorial.waves = [lightgray] Wrogowie[] nadchodzą.\n\nBroń swój rdżeń przez 2 fale.[accent] Kliknij[] by strzelać.\nZbuduj wiecej działek i wierteł. Wydobądź więcej miedzi. tutorial.waves = [lightgray] Wrogowie[] nadchodzą.\n\nBroń swój rdżeń przez 2 fale.[accent] Kliknij[] by strzelać.\nZbuduj wiecej działek i wierteł. Wydobądź więcej miedzi.
tutorial.waves.mobile = [lightgray] Wrogowie[] nadchodzą.\n\nBroń swój rdzeń przez 2 fale. Twój statek będzie automatycznie atakował wrogów.\nZbuduj wiecej działek i wierteł. Wydobądź więcej miedzi. tutorial.waves.mobile = [lightgray] Wrogowie[] nadchodzą.\n\nBroń swój rdzeń przez 2 fale. Twój statek będzie automatycznie atakował wrogów.\nZbuduj wiecej działek i wierteł. Wydobądź więcej miedzi.
tutorial.launch = Kiedy dotrzesz do określonej fali, masz możliwość[accent] wystrzelenia rdzenia[], pozostawiając struktury obronne za sobą i[accent] otrzymując wszystkie surowce znajdujące się w rdzeniu.[]\nSurowce te mogą potem zostać użyte do odkrywania nowych technologii.\n\n[accent]Naciśnij przycisk Wystrzału. tutorial.launch = Kiedy dotrzesz do określonej fali, masz możliwość[accent] wystrzelenia rdzenia[], pozostawiając struktury obronne za sobą i[accent] otrzymując wszystkie surowce znajdujące się w rdzeniu.[]\nSurowce te mogą potem zostać użyte do odkrywania nowych technologii.\n\n[accent]Naciśnij przycisk Wystrzału.
item.copper.description = Przydatny materiał budowlany. Szeroko używany w prawie każdej konstrukcji. item.copper.description = Przydatny materiał budowlany. Szeroko używany w prawie każdej konstrukcji.
item.lead.description = Podstawowy matriał. Używany w przesyle przemiotów i płynów. Nie jest on przypadkiem szkodliwy? item.lead.description = Podstawowy materiał. Używany w przesyle przemiotów i płynów. Nie jest on przypadkiem szkodliwy?
item.metaglass.description = Wyjątkowo wytrzymały stop szkła. Szeroko używany w transporcie i przechowywaniu płynów. item.metaglass.description = Wyjątkowo wytrzymały stop szkła. Szeroko używany w transporcie i przechowywaniu płynów.
item.graphite.description = Zmineralizowany węgiel, wykorzystywany do amunicji i izolacji elektrycznej. item.graphite.description = Zmineralizowany węgiel, wykorzystywany do amunicji i izolacji elektrycznej.
item.sand.description = Zwykły materiał używany pospolicie w przepalaniu, stopach i jako topnik. Dostanie piaskiem po oczach nie jest przyjemne. item.sand.description = Zwykły materiał używany pospolicie w przepalaniu, stopach i jako topnik. Dostanie piaskiem po oczach nie jest przyjemne.
item.coal.description = Zwykły i łatwo dostępny materiał energetyczny. item.coal.description = Zwykły i łatwo dostępny materiał energetyczny. Używany powszechnie jako paliwo oraz w produkcji surowców.
item.titanium.description = Rzadki i bardzo lekki materiał. Używany w bardzo zaawansowanym przewodnictwie, wiertłach i samolotach. Poczuj się jak Tytan! item.titanium.description = Rzadki i bardzo lekki materiał. Używany w bardzo zaawansowanym przewodnictwie, wiertłach i samolotach. Poczuj się jak Tytan!
item.thorium.description = Zwarty i radioaktywny materiał używany w strukturach i paliwie nuklearnym. Nie trzymaj go w rękach! item.thorium.description = Zwarty i radioaktywny materiał używany w strukturach i paliwie nuklearnym. Nie trzymaj go w rękach!
item.scrap.description = Pozostałości starych budynków i jednostek. Składa się z małej ilości wszystkiego. item.scrap.description = Pozostałości starych budynków i jednostek. Składa się z małej ilości wszystkiego.
@@ -1021,7 +1079,7 @@ item.pyratite.description = Niesamowicie palny związek używany w zbrojeniu. Ni
liquid.water.description = Powszechnie używana do schładzania budowli i przetwarzania odpadów. liquid.water.description = Powszechnie używana do schładzania budowli i przetwarzania odpadów.
liquid.slag.description = Wiele różnych metali stopionych i zmieszanych razem. Może zostać rozdzielony na jego metale składowe, albo wystrzelony w wrogie jednostki i użyty jako broń. liquid.slag.description = Wiele różnych metali stopionych i zmieszanych razem. Może zostać rozdzielony na jego metale składowe, albo wystrzelony w wrogie jednostki i użyty jako broń.
liquid.oil.description = Używany w do produkcji złożonych materiałów. Może zostać przetworzony na węgiel, lub wystrzelony w wrogów przez wieżyczke. liquid.oil.description = Używany w do produkcji złożonych materiałów. Może zostać przetworzony na węgiel, lub wystrzelony w wrogów przez wieżyczke.
liquid.cryofluid.description = Najefektywniejsza ciecz do schładzania budowli. liquid.cryofluid.description = Obojętna, niekorozyjna ciecz utworzona z wody i tytanu
mech.alpha-mech.description = Standardowy mech. Bazuje na jednostce Nóż, z ulepszonym pancerzem i zdolnością budowania. Zadaje więcej obrażeń niż Strzałka. mech.alpha-mech.description = Standardowy mech. Bazuje na jednostce Nóż, z ulepszonym pancerzem i zdolnością budowania. Zadaje więcej obrażeń niż Strzałka.
mech.delta-mech.description = Szybki, lekko opancerzony mech stworzony do ataków typu uderz i uciekaj. Zadaje niewielkie obrażenia strukturom, lecz może bardzo szybko niszczyć spore grupy jednostek wroga przy pomocy jego działek tesli. mech.delta-mech.description = Szybki, lekko opancerzony mech stworzony do ataków typu uderz i uciekaj. Zadaje niewielkie obrażenia strukturom, lecz może bardzo szybko niszczyć spore grupy jednostek wroga przy pomocy jego działek tesli.
mech.tau-mech.description = Mech wsparcia. Naprawia budynki drużyny, strzelając w nie. Potrafi wygasić niedalekie pożary i uleczyć bliskich przyjaciół. mech.tau-mech.description = Mech wsparcia. Naprawia budynki drużyny, strzelając w nie. Potrafi wygasić niedalekie pożary i uleczyć bliskich przyjaciół.
@@ -1038,7 +1096,7 @@ unit.crawler.description = Jednostka naziemna składająca się z rozebranej ram
unit.titan.description = Zaawansowana, opancerzona jednostka naziemna. Atakuje zarówno cele naziemne, jak i powietrzne. Wyposażony w dwa miniaturowe miotacze ognia typu Płomień. unit.titan.description = Zaawansowana, opancerzona jednostka naziemna. Atakuje zarówno cele naziemne, jak i powietrzne. Wyposażony w dwa miniaturowe miotacze ognia typu Płomień.
unit.fortress.description = Ciężki mech artyleryjski. Wyposażony w dwa zmodyfikowane działa typu gradowego do ataku na dalekie odległości na konstrukcje i jednostki wroga. unit.fortress.description = Ciężki mech artyleryjski. Wyposażony w dwa zmodyfikowane działa typu gradowego do ataku na dalekie odległości na konstrukcje i jednostki wroga.
unit.eruptor.description = Ciężki mech stworzony do niszczenia struktur. Strzela wiązką żużlu w kierunku fortyfikacji wroga, Topiąc je oraz podpalając łatwopalne przedmioty. unit.eruptor.description = Ciężki mech stworzony do niszczenia struktur. Strzela wiązką żużlu w kierunku fortyfikacji wroga, Topiąc je oraz podpalając łatwopalne przedmioty.
unit.wraith.description = Szybka jednostka, stosuje taktyke uderz-uciekaj Namierza jakiekolwiek źródło prądu. unit.wraith.description = Szybka jednostka, stosuje taktykę uderz-uciekaj. Namierza jakiekolwiek źródło prądu.
unit.ghoul.description = Ciężki bombowiec dywanowy. Rozdziera struktury wroga, atakując krytyczną infrastrukturę. unit.ghoul.description = Ciężki bombowiec dywanowy. Rozdziera struktury wroga, atakując krytyczną infrastrukturę.
unit.revenant.description = Ciężka, unosząca sie platforma z rakietami. unit.revenant.description = Ciężka, unosząca sie platforma z rakietami.
block.message.description = Przechowuje wiadomość. Wykorzystywane do komunikacji pomiędzy sojusznikami. block.message.description = Przechowuje wiadomość. Wykorzystywane do komunikacji pomiędzy sojusznikami.
@@ -1078,8 +1136,8 @@ block.surge-wall-large.description = Ekstremalnie wytrzymały blok obronny.\nMa
block.door.description = Małe drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą strzelać i się przemieszczać przez nie. block.door.description = Małe drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą strzelać i się przemieszczać przez nie.
block.door-large.description = Duże drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą strzelać i się przemieszczać przez nie.\nObejmuje wiele kratek. block.door-large.description = Duże drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą strzelać i się przemieszczać przez nie.\nObejmuje wiele kratek.
block.mender.description = Co jakiś czas naprawia bloki w zasięgu. Utrzymuje struktury obronne w dobrym stanie.\nOpcjonalnie używa silikonu do zwiększenia zasięgu i szybkości naprawy. block.mender.description = Co jakiś czas naprawia bloki w zasięgu. Utrzymuje struktury obronne w dobrym stanie.\nOpcjonalnie używa silikonu do zwiększenia zasięgu i szybkości naprawy.
block.mend-projector.description = Co jakiś czas naprawia bloki w zasięgu. Lepsza wersja naprawiacza. block.mend-projector.description = Ulepszona wersja Naprawiacza. Naprawia bloki w jego otoczeniu.\nMoże wykorzystywać włókno fazowe, aby zwiększyć efektywność budowli.
block.overdrive-projector.description = Zwiększa szybkość budynków w zasięgu takich jak wiertła czy przenośniki. block.overdrive-projector.description = Zwiększa szybkość budynków w zasięgu takich jak wiertła czy przenośniki. Może wykorzystywać włókno fazowe, aby zwiększyć zasięg i efektywność budowli.
block.force-projector.description = Wytwarza pole siłowe w kształcie sześciokąta wokół siebie, chroniąc budynki i jednostki wewnątrz od obrażeń zadanych przez pociski. block.force-projector.description = Wytwarza pole siłowe w kształcie sześciokąta wokół siebie, chroniąc budynki i jednostki wewnątrz od obrażeń zadanych przez pociski.
block.shock-mine.description = Zadaje obrażenia jednostkom wroga którzy na nią wejdą. Ledwo widoczne dla wrogów. block.shock-mine.description = Zadaje obrażenia jednostkom wroga którzy na nią wejdą. Ledwo widoczne dla wrogów.
block.conveyor.description = Podstawowy blok transportowy dla przedmiotów. Automatycznie przesyła przedmioty naprzód do działek oraz maszyn. Można obrócić. block.conveyor.description = Podstawowy blok transportowy dla przedmiotów. Automatycznie przesyła przedmioty naprzód do działek oraz maszyn. Można obrócić.
@@ -1088,7 +1146,7 @@ block.junction.description = Używany jako most dla dwóch krzyżujących się p
block.bridge-conveyor.description = Zaawansowany blok transportujący. Pozwala na przenoszenie przedmiotów nawet do 3 bloków na każdym terenie, przez każdy budynek. block.bridge-conveyor.description = Zaawansowany blok transportujący. Pozwala na przenoszenie przedmiotów nawet do 3 bloków na każdym terenie, przez każdy budynek.
block.phase-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Używa energii do teleportacji przedmiotów do połączonego transportera fazowego na spore odległości. block.phase-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Używa energii do teleportacji przedmiotów do połączonego transportera fazowego na spore odległości.
block.sorter.description = Sortuje przedmioty. Jeśli przedmiot pasuje to przechodzi dalej, jeśli nie - to przechodzi na boki. block.sorter.description = Sortuje przedmioty. Jeśli przedmiot pasuje to przechodzi dalej, jeśli nie - to przechodzi na boki.
block.inverted-sorter.description = Processes items like a standard sorter, but outputs selected items to the sides instead. block.inverted-sorter.description = Sortuje przedmioty jak zwykły sortownik, ale odpowiednie surowce wyciągane są na boki.
block.router.description = Akceptuje przedmioty z jednego miejsca i rozdziela je do trzech innych kierunków. Przydatne w rozdzielaniu materiałów z jednego źródła do wielu celów. block.router.description = Akceptuje przedmioty z jednego miejsca i rozdziela je do trzech innych kierunków. Przydatne w rozdzielaniu materiałów z jednego źródła do wielu celów.
block.distributor.description = Zaawansowany rozdzielacz, rozdzielający przedmioty do 7 innych kierunków. block.distributor.description = Zaawansowany rozdzielacz, rozdzielający przedmioty do 7 innych kierunków.
block.overflow-gate.description = Rozdzielacz, który przerzuca przedmioty, kiedy główna droga jest przepełniona block.overflow-gate.description = Rozdzielacz, który przerzuca przedmioty, kiedy główna droga jest przepełniona
@@ -1098,6 +1156,7 @@ block.rotary-pump.description = Zaawansowana pompa. Pompuje więcej cieczy, ale
block.thermal-pump.description = Najlepsza pompa. Trzy razy szybsza od mechanicznej pompy i jedyna, która może wypompować lawę. block.thermal-pump.description = Najlepsza pompa. Trzy razy szybsza od mechanicznej pompy i jedyna, która może wypompować lawę.
block.conduit.description = Podstawowy blok do transportowania cieczy. Używany w połączeniu z pompami i innymi rurami. block.conduit.description = Podstawowy blok do transportowania cieczy. Używany w połączeniu z pompami i innymi rurami.
block.pulse-conduit.description = Zaawansowany blok do transportowania cieczy. Transportuje je szybciej i magazynuje więcej niż standardowe rury. block.pulse-conduit.description = Zaawansowany blok do transportowania cieczy. Transportuje je szybciej i magazynuje więcej niż standardowe rury.
block.plated-conduit.description = Przesyła ciecze z taką samą szybkością co rura tytanowa, ale jest bardziej odporna. Wejściami bocznymi mogą być tylko inne rury.\nWycieka z niej mniej cieczy.
block.liquid-router.description = Akceptuje płyny z jednego kierunku i wyprowadza je po równo do trzech innych kierunków. Może również przechowywać pewną ilość płynu. Przydatne do dzielenia płynów z jednego źródła do wielu celów. block.liquid-router.description = Akceptuje płyny z jednego kierunku i wyprowadza je po równo do trzech innych kierunków. Może również przechowywać pewną ilość płynu. Przydatne do dzielenia płynów z jednego źródła do wielu celów.
block.liquid-tank.description = Magazynuje duże ilości cieczy. Użyj go do stworzenia buforu, gdy występuje różne zapotrzebowanie na materiały lub jako zabezpieczenie dla chłodzenia ważnych bloków. block.liquid-tank.description = Magazynuje duże ilości cieczy. Użyj go do stworzenia buforu, gdy występuje różne zapotrzebowanie na materiały lub jako zabezpieczenie dla chłodzenia ważnych bloków.
block.liquid-junction.description = Działa jak most dla dwóch krzyżujących się rur. Przydatne w sytuacjach, kiedy dwie rury mają różne ciecze do różnych lokacji. block.liquid-junction.description = Działa jak most dla dwóch krzyżujących się rur. Przydatne w sytuacjach, kiedy dwie rury mają różne ciecze do różnych lokacji.
@@ -1106,6 +1165,7 @@ block.phase-conduit.description = Zaawansowany blok do przenoszenia cieczy. Uży
block.power-node.description = Przesyła moc do połączonych węzłów. Można podłączyć do czterech źródeł zasilania, zlewów lub węzłów. Zasila też bloki które go dotykają. block.power-node.description = Przesyła moc do połączonych węzłów. Można podłączyć do czterech źródeł zasilania, zlewów lub węzłów. Zasila też bloki które go dotykają.
block.power-node-large.description = Posiada większy zasięg niż zwykły węzeł prądu. Można podłączyć do sześciu źródeł zasilania, zlewów lub węzłów. block.power-node-large.description = Posiada większy zasięg niż zwykły węzeł prądu. Można podłączyć do sześciu źródeł zasilania, zlewów lub węzłów.
block.surge-tower.description = Węzęł prądu z bardzo dużym zasięgiem, posiadający mniej możliwych podłączeń. block.surge-tower.description = Węzęł prądu z bardzo dużym zasięgiem, posiadający mniej możliwych podłączeń.
block.diode.description = Battery power can flow through this block in only one direction, but only if the other side has less power stored.
block.battery.description = Przechowuje energię przy nadwyżce produkcji oraz dostarcza energię kiedy jest jej brak, dopóki jest w niej miejsce. block.battery.description = Przechowuje energię przy nadwyżce produkcji oraz dostarcza energię kiedy jest jej brak, dopóki jest w niej miejsce.
block.battery-large.description = Przechowuje o wiele wiecej prądu niż standardowa bateria. block.battery-large.description = Przechowuje o wiele wiecej prądu niż standardowa bateria.
block.combustion-generator.description = Wytwarza energię poprzez spalanie łatwopalnych materiałów. block.combustion-generator.description = Wytwarza energię poprzez spalanie łatwopalnych materiałów.
@@ -1121,14 +1181,14 @@ block.mechanical-drill.description = Tanie wiertło. Kiedy zostanie zbudowane na
block.pneumatic-drill.description = Ulepszone wiertło, które jest szybsze i może wykopywać twardsze surowce przy użyciu ciśnienia. block.pneumatic-drill.description = Ulepszone wiertło, które jest szybsze i może wykopywać twardsze surowce przy użyciu ciśnienia.
block.laser-drill.description = Pozwala kopać jeszcze szybciej poprzez technologię laserową, ale wymaga energii. Zdolne do wydobywania toru. block.laser-drill.description = Pozwala kopać jeszcze szybciej poprzez technologię laserową, ale wymaga energii. Zdolne do wydobywania toru.
block.blast-drill.description = Najlepsze wiertło. Wymaga dużych ilości energii. block.blast-drill.description = Najlepsze wiertło. Wymaga dużych ilości energii.
block.water-extractor.description = Wydobywa wodę z ziemi. Użyj go, gdy w pobliżu nie ma jeziora. block.water-extractor.description = Wydobywa wodę z ziemi. Użyj go, gdy w pobliżu brakuje wody.
block.cultivator.description = Uprawia małe skupiska zarodników i umieszcza je w gotowych do dalszego przetwarzania kapsułach. block.cultivator.description = Uprawia małe skupiska zarodników i umieszcza je w gotowych do dalszego przetwarzania kapsułach.
block.oil-extractor.description = Używa bardzo dużych ilości energii do ekstrakcji ropy z piasku. Używaj go w sytuacji kiedy nie ma bezpośredniego źródła ropy w okolicy. block.oil-extractor.description = Używa bardzo dużych ilości energii do ekstrakcji ropy z piasku. Używaj go w sytuacji kiedy nie ma bezpośredniego źródła ropy w okolicy.
block.core-shard.description = Pierwsza wersja rdzenia. Gdy zostaje zniszczony, wszelki kontakt do regionu zostaje utracony. Nie pozwól na to. block.core-shard.description = Pierwsza wersja rdzenia. Gdy zostaje zniszczony, wszelki kontakt do regionu zostaje utracony. Nie pozwól na to.
block.core-foundation.description = Druga wersja rdzenia. Lepiej opancerzony. Przechowuje więcej surowców. block.core-foundation.description = Druga wersja rdzenia. Lepiej opancerzony. Przechowuje więcej surowców.
block.core-nucleus.description = Trzecia i ostatnia wersja rdzenia. Bardzo dobrze opanczerzony. Przechowuje ogromne ilości surowców. block.core-nucleus.description = Trzecia i ostatnia wersja rdzenia. Bardzo dobrze opanczerzony. Przechowuje ogromne ilości surowców.
block.vault.description = Przechowuje duże ilości przedmiotów każdego rodzaju. [LIGHT_GRAY] Ekstraktor[] może zostać użyty do rozładowania magazynu. block.vault.description = Przechowuje duże ilości przedmiotów każdego rodzaju. Użyj ekstraktora, aby rozładować magazyn.
block.container.description = Przechowuje małe ilości przedmiotów każdego rodzaju. [LIGHT_GRAY] ekstraktor[] może zostać użyty do rozładowania kontenera. block.container.description = Przechowuje małe ilości przedmiotów każdego rodzaju. Użyj ekstraktora, aby rozładować kontener.
block.unloader.description = Wyciąga przedmioty z kontenera, magazynu oraz rdżenia na przenośniki lub bezpośrednio na przyległe bloki. Typ przedmiotu jaki zostanie wyciągniety może zostać zmieniony poprzez kliknięcie. block.unloader.description = Wyciąga przedmioty z kontenera, magazynu oraz rdżenia na przenośniki lub bezpośrednio na przyległe bloki. Typ przedmiotu jaki zostanie wyciągniety może zostać zmieniony poprzez kliknięcie.
block.launch-pad.description = Wysyła pakiety przedmiotów bez potrzeby wystrzeliwania rdżenia. Niedokończona. block.launch-pad.description = Wysyła pakiety przedmiotów bez potrzeby wystrzeliwania rdżenia. Niedokończona.
block.launch-pad-large.description = Ulepszona wersja wyrzutni. Magazynuje więcej przedmiotów. Wysyła częściej. block.launch-pad-large.description = Ulepszona wersja wyrzutni. Magazynuje więcej przedmiotów. Wysyła częściej.

View File

@@ -10,20 +10,23 @@ link.dev-builds.description = Desenvolvimentos instáveis
link.trello.description = Trello oficial para atualizações planejadas link.trello.description = Trello oficial para atualizações planejadas
link.itch.io.description = Página da Itch.io com os downloads link.itch.io.description = Página da Itch.io com os downloads
link.google-play.description = Página da google play store link.google-play.description = Página da google play store
link.f-droid.description = F-Droid catalogue listing
link.wiki.description = Wiki oficial do Mindustry link.wiki.description = Wiki oficial do Mindustry
linkfail = Falha ao abrir o link\nO Url foi copiado linkfail = Falha ao abrir o link\nO Url foi copiado para a área de transferência.
screenshot = Screenshot salvo para {0} screenshot = Screenshot salvo para {0}
screenshot.invalid = Mapa grande demais, Potencialmente sem memória suficiente para captura de tela. screenshot.invalid = Mapa grande demais, Potencialmente sem memória suficiente para captura de tela.
gameover = O núcleo foi destruído. gameover = O núcleo foi destruído.
gameover.pvp = O time[accent] {0}[] ganhou! gameover.pvp = O time[accent] {0}[] ganhou!
highscore = [YELLOW]Novo recorde! highscore = [YELLOW]Novo recorde!
copied = Copiado copied = Copiado
load.sound = Sons load.sound = Sons
load.map = Mapas load.map = Mapas
load.image = Imagens load.image = Imagens
load.content = Conteúdo load.content = Conteúdo
load.system = Sistema load.system = Sistema
load.mod = Mods load.mod = Mods
schematic = Esquema schematic = Esquema
schematic.add = Salvar Esquema... schematic.add = Salvar Esquema...
schematics = Esquemas schematics = Esquemas
@@ -40,6 +43,7 @@ schematic.saved = Esquema salvo.
schematic.delete.confirm = Esse Esquema será totalmente erradicado. schematic.delete.confirm = Esse Esquema será totalmente erradicado.
schematic.rename = Rename Schematic schematic.rename = Rename Schematic
schematic.info = {0}x{1}, {2} blocks schematic.info = {0}x{1}, {2} blocks
stat.wave = Hordas derrotadas:[accent] {0} stat.wave = Hordas derrotadas:[accent] {0}
stat.enemiesDestroyed = Inimigos Destruídos:[accent] {0} stat.enemiesDestroyed = Inimigos Destruídos:[accent] {0}
stat.built = Construções construídas:[accent] {0} stat.built = Construções construídas:[accent] {0}
@@ -47,6 +51,7 @@ stat.destroyed = Construções destruídas:[accent] {0}
stat.deconstructed = Construções desconstruídas:[accent] {0} stat.deconstructed = Construções desconstruídas:[accent] {0}
stat.delivered = Recursos lançados: stat.delivered = Recursos lançados:
stat.rank = Classificação Final: [accent]{0} stat.rank = Classificação Final: [accent]{0}
launcheditems = [accent]Itens lançados launcheditems = [accent]Itens lançados
launchinfo = [unlaunched][[LANCE] seu núcleo para obter os itens indicados em azul. launchinfo = [unlaunched][[LANCE] seu núcleo para obter os itens indicados em azul.
map.delete = Certeza que quer deletar o mapa "[accent]{0}[]"? map.delete = Certeza que quer deletar o mapa "[accent]{0}[]"?
@@ -74,6 +79,7 @@ maps.browse = Pesquisar mapas
continue = Continuar continue = Continuar
maps.none = [LIGHT_GRAY]Nenhum Mapa Encontrado! maps.none = [LIGHT_GRAY]Nenhum Mapa Encontrado!
invalid = Inválido invalid = Inválido
pickcolor = Escolher Cor
preparingconfig = Preparando configuração preparingconfig = Preparando configuração
preparingcontent = Preparando conteúdo preparingcontent = Preparando conteúdo
uploadingcontent = Fazendo upload do conteúdo uploadingcontent = Fazendo upload do conteúdo
@@ -81,6 +87,7 @@ uploadingpreviewfile = Fazendo upload do arquivo de pré-visualização
committingchanges = Enviando mudanças committingchanges = Enviando mudanças
done = Feito done = Feito
feature.unsupported = Seu dispositivo não suporta essa função. feature.unsupported = Seu dispositivo não suporta essa função.
mods.alphainfo = Mantenha em mente que os mods estão em Alpha, e[scarlet] talvez sejam bem bugados[].\nReporte quaisquer problemas no Discord ou GitHub do Mindustry. mods.alphainfo = Mantenha em mente que os mods estão em Alpha, e[scarlet] talvez sejam bem bugados[].\nReporte quaisquer problemas no Discord ou GitHub do Mindustry.
mods.alpha = [accent](Alpha) mods.alpha = [accent](Alpha)
mods = Mods mods = Mods
@@ -90,10 +97,11 @@ mods.report = Reportar um Bug
mods.openfolder = Abrir pasta de Mods mods.openfolder = Abrir pasta de Mods
mod.enabled = [lightgray]Ativado mod.enabled = [lightgray]Ativado
mod.disabled = [scarlet]Desativado mod.disabled = [scarlet]Desativado
mod.disable = Desativar mod.disable = Desati-\nvar
mod.delete.error = Incapaz de deletar o Mod. O arquivo talvez esteja em uso. mod.delete.error = Incapaz de deletar o Mod. O arquivo talvez esteja em uso.
mod.requiresversion = [scarlet]Requer versão [accent]{0} [scarlet]do jogo.
mod.missingdependencies = [scarlet]Dependências ausentes: {0} mod.missingdependencies = [scarlet]Dependências ausentes: {0}
mod.nowdisabled = [scarlet]O Mod '{0}' está com dependências ausentes :[accent] {1}\n[lightgray]Esses Mods precisam ser baixados primeiro.\nEsse Mod será desativado automaticamente. mod.nowdisabled = [scarlet]O Mod '{0}' está com dependências ausentes:[accent] {1}\n[lightgray]Esses Mods precisam ser baixados primeiro.\nEsse Mod será desativado automaticamente.
mod.enable = Ativar mod.enable = Ativar
mod.requiresrestart = O jogo irá fechar para aplicar as mudanças do Mod. mod.requiresrestart = O jogo irá fechar para aplicar as mudanças do Mod.
mod.reloadrequired = [scarlet]Recarregamento necessário mod.reloadrequired = [scarlet]Recarregamento necessário
@@ -104,6 +112,7 @@ mod.author = [LIGHT_GRAY]Author:[] {0}
mod.missing = Esse jogo salvo foi criado antes de você atualizar ou desinstalar um mod. O jogo salvo pode se corromper. Você tem certeza que quer carregar?\n[lightgray]Mods:\n{0} mod.missing = Esse jogo salvo foi criado antes de você atualizar ou desinstalar um mod. O jogo salvo pode se corromper. Você tem certeza que quer carregar?\n[lightgray]Mods:\n{0}
mod.preview.missing = Antes de publicar esse mod na Oficina, você deve adicionar uma imagem de pré-visualização.\nColoque uma imagem com o nome[accent] preview.png[] na pasta do Mod e tente novamente. mod.preview.missing = Antes de publicar esse mod na Oficina, você deve adicionar uma imagem de pré-visualização.\nColoque uma imagem com o nome[accent] preview.png[] na pasta do Mod e tente novamente.
mod.folder.missing = Somente Mods no formato de pasta serão publicados na Oficina.\nPara converter qualquer Mod em uma pasta, Simplesmente descompacte seu arquivo numa pasta e delete a compactação antiga, então reinicie seu jogo ou recarregue os Mods. mod.folder.missing = Somente Mods no formato de pasta serão publicados na Oficina.\nPara converter qualquer Mod em uma pasta, Simplesmente descompacte seu arquivo numa pasta e delete a compactação antiga, então reinicie seu jogo ou recarregue os Mods.
about.button = Sobre about.button = Sobre
name = Nome: name = Nome:
noname = Escolha[accent] um nome[] primeiro. noname = Escolha[accent] um nome[] primeiro.
@@ -271,6 +280,7 @@ publishing = [accent]Publishing...
publish.confirm = você tem certeza de que quer publicar isso?\n\n[lightgray]Primeiramente tenha certeza de que você concorda com o EULA da Oficina, ou seus itens não irão aparecer! publish.confirm = você tem certeza de que quer publicar isso?\n\n[lightgray]Primeiramente tenha certeza de que você concorda com o EULA da Oficina, ou seus itens não irão aparecer!
publish.error = Erro publicando o Item: {0} publish.error = Erro publicando o Item: {0}
steam.error = Falha em iniciar os serviços da Steam.\nError: {0} steam.error = Falha em iniciar os serviços da Steam.\nError: {0}
editor.brush = Pincel editor.brush = Pincel
editor.openin = Abrir no Editor editor.openin = Abrir no Editor
editor.oregen = Geração de minério editor.oregen = Geração de minério
@@ -347,6 +357,7 @@ editor.overwrite = [accent]Aviso!\nIsso Substitui um mapa existente.
editor.overwrite.confirm = [scarlet]Aviso![] Um mapa com esse nome já existe. Tem certeza que deseja substituir? editor.overwrite.confirm = [scarlet]Aviso![] Um mapa com esse nome já existe. Tem certeza que deseja substituir?
editor.exists = Já existe um mapa com este nome. editor.exists = Já existe um mapa com este nome.
editor.selectmap = Selecione uma mapa para carregar: editor.selectmap = Selecione uma mapa para carregar:
toolmode.replace = Substituir toolmode.replace = Substituir
toolmode.replace.description = Desenha apenas em blocos sólidos. toolmode.replace.description = Desenha apenas em blocos sólidos.
toolmode.replaceall = Substituir tudo toolmode.replaceall = Substituir tudo
@@ -361,6 +372,7 @@ toolmode.fillteams = Encher times
toolmode.fillteams.description = Muda o time do qual todos os blocos pertencem. toolmode.fillteams.description = Muda o time do qual todos os blocos pertencem.
toolmode.drawteams = Desenhar times toolmode.drawteams = Desenhar times
toolmode.drawteams.description = Muda o time do qual o bloco pertence. toolmode.drawteams.description = Muda o time do qual o bloco pertence.
filters.empty = [LIGHT_GRAY]Sem filtro! Adicione um usando o botão abaixo. filters.empty = [LIGHT_GRAY]Sem filtro! Adicione um usando o botão abaixo.
filter.distort = Distorcedor filter.distort = Distorcedor
filter.noise = Geração aleatória filter.noise = Geração aleatória
@@ -392,6 +404,7 @@ filter.option.floor2 = Chão secundário
filter.option.threshold2 = Margem secundária filter.option.threshold2 = Margem secundária
filter.option.radius = Raio filter.option.radius = Raio
filter.option.percentile = Percentual filter.option.percentile = Percentual
width = Largura: width = Largura:
height = Altura: height = Altura:
menu = Menu menu = Menu
@@ -407,6 +420,7 @@ tutorial = Tutorial
tutorial.retake = Refazer Tutorial tutorial.retake = Refazer Tutorial
editor = Editor editor = Editor
mapeditor = Editor de mapa mapeditor = Editor de mapa
abandon = Abandonar abandon = Abandonar
abandon.text = Esta zona e todos os seus recursos serão perdidos para o inimigo. abandon.text = Esta zona e todos os seus recursos serão perdidos para o inimigo.
locked = Trancado locked = Trancado
@@ -437,6 +451,7 @@ zone.objective.survival = Sobreviver
zone.objective.attack = Destruir o núcleo inimigo zone.objective.attack = Destruir o núcleo inimigo
add = Adicionar... add = Adicionar...
boss.health = Vida do chefe boss.health = Vida do chefe
connectfail = [crimson]Falha ao entrar no servidor: [accent]{0} connectfail = [crimson]Falha ao entrar no servidor: [accent]{0}
error.unreachable = Servidor inalcançável. error.unreachable = Servidor inalcançável.
error.invalidaddress = Endereço inválido. error.invalidaddress = Endereço inválido.
@@ -447,6 +462,7 @@ error.mapnotfound = Arquivo de mapa não encontrado!
error.io = Erro I/O de internet. error.io = Erro I/O de internet.
error.any = Erro de rede desconhecido. error.any = Erro de rede desconhecido.
error.bloom = Falha ao inicializar bloom.\nSeu dispositivo talvez não o suporte. error.bloom = Falha ao inicializar bloom.\nSeu dispositivo talvez não o suporte.
zone.groundZero.name = Marco zero zone.groundZero.name = Marco zero
zone.desertWastes.name = Ruínas do Deserto zone.desertWastes.name = Ruínas do Deserto
zone.craters.name = As crateras zone.craters.name = As crateras
@@ -461,6 +477,7 @@ zone.saltFlats.name = Planícies de sal
zone.impact0078.name = Impacto 0078 zone.impact0078.name = Impacto 0078
zone.crags.name = Penhascos zone.crags.name = Penhascos
zone.fungalPass.name = Passagem Fúngica zone.fungalPass.name = Passagem Fúngica
zone.groundZero.description = Uma ótima localização para começar de novo. Baixa ameaça inimiga. Poucos recursos.\nColete o máximo de chumbo e cobre possível.\nContinue! zone.groundZero.description = Uma ótima localização para começar de novo. Baixa ameaça inimiga. Poucos recursos.\nColete o máximo de chumbo e cobre possível.\nContinue!
zone.frozenForest.description = Até aqui, perto das montanhas, os esporos se espalharam. As baixas temperaturas não podem contê-los para sempre.\n\nComeçe a busca por energia. Construa geradores à combustão. Aprenda a usar os reparadores (menders). zone.frozenForest.description = Até aqui, perto das montanhas, os esporos se espalharam. As baixas temperaturas não podem contê-los para sempre.\n\nComeçe a busca por energia. Construa geradores à combustão. Aprenda a usar os reparadores (menders).
zone.desertWastes.description = Estas ruínas são vastas, imprevisíveis, e cruzadas por estruturas abandonadas.\nCarvão está presente na região. O queime por energia, ou sintetize grafite.\n\n[lightgray]Este local de pouso não pode ser garantido. zone.desertWastes.description = Estas ruínas são vastas, imprevisíveis, e cruzadas por estruturas abandonadas.\nCarvão está presente na região. O queime por energia, ou sintetize grafite.\n\n[lightgray]Este local de pouso não pode ser garantido.
@@ -475,17 +492,19 @@ zone.nuclearComplex.description = Uma antiga instalação para produção e proc
zone.fungalPass.description = Uma area de transição entre montanhas altas e baixas, terras cheias de esporos. Uma pequena base de reconhecimento inimiga está localizada aqui.\nDestrua-a.\nUse as unidades crawler e dagger. Destrua os dois núcleos. zone.fungalPass.description = Uma area de transição entre montanhas altas e baixas, terras cheias de esporos. Uma pequena base de reconhecimento inimiga está localizada aqui.\nDestrua-a.\nUse as unidades crawler e dagger. Destrua os dois núcleos.
zone.impact0078.description = <insert description here> zone.impact0078.description = <insert description here>
zone.crags.description = <insert description here> zone.crags.description = <insert description here>
settings.language = Idioma settings.language = Idioma
settings.data = Dados do jogo settings.data = Dados do jogo
settings.reset = Restaurar Padrões settings.reset = Restaurar Padrões
settings.rebind = Religar settings.rebind = Religar
settings.resetKey = Resetar
settings.controls = Controles settings.controls = Controles
settings.game = Jogo settings.game = Jogo
settings.sound = Som settings.sound = Som
settings.graphics = Gráficos settings.graphics = Gráficos
settings.cleardata = Apagar dados... settings.cleardata = Apagar dados...
settings.clear.confirm = Certeza que quer limpar a os dados?\nOque é feito não pode ser desfeito! settings.clear.confirm = Certeza que quer limpar a os dados?\nOque é feito não pode ser desfeito!
settings.clearall.confirm = [scarlet]Aviso![]\nIsso vai limpar todo os arquivos, Incluindo jogos salvos, mapas, Keybinds e desbloqueados.\nQuando apertar 'ok' todos os arquivos serão apagados e o jogo irá sair automaticamente. settings.clearall.confirm = [scarlet]Aviso![]\nIsso vai limpar todo os arquivos, incluindo jogos salvos, mapas, teclas personalizadas e desbloqueados.\nQuando apertar 'ok' todos os arquivos serão apagados e o jogo irá sair automaticamente.
paused = Pausado paused = Pausado
clear = Clear clear = Clear
banned = [scarlet]Banido banned = [scarlet]Banido
@@ -529,6 +548,7 @@ blocks.inaccuracy = Imprecisão
blocks.shots = Tiros blocks.shots = Tiros
blocks.reload = Tiros por segundo blocks.reload = Tiros por segundo
blocks.ammo = Munição blocks.ammo = Munição
bar.drilltierreq = Broca melhor necessária. bar.drilltierreq = Broca melhor necessária.
bar.drillspeed = Velocidade da Broca: {0}/s bar.drillspeed = Velocidade da Broca: {0}/s
bar.pumpspeed = Velocidade da Bomna: {0}/s bar.pumpspeed = Velocidade da Bomna: {0}/s
@@ -544,8 +564,11 @@ bar.heat = Aquecimento
bar.power = Poder bar.power = Poder
bar.progress = Progresso da construção bar.progress = Progresso da construção
bar.spawned = Unidades: {0}/{1} bar.spawned = Unidades: {0}/{1}
bullet.damage = [stat]{0}[lightgray] Dano bar.input = Entrando
bullet.splashdamage = [stat]{0}[lightgray] Dano em área ~[stat] {1}[lightgray] Blocos bar.output = Saindo
bullet.damage = [stat]{0}[lightgray] de dano
bullet.splashdamage = [stat]{0}[lightgray] de dano em área ~[stat] {1}[lightgray] bloco(s)
bullet.incendiary = [stat]Incendiário bullet.incendiary = [stat]Incendiário
bullet.homing = [stat]Guiado bullet.homing = [stat]Guiado
bullet.shock = [stat]Choque bullet.shock = [stat]Choque
@@ -555,6 +578,7 @@ bullet.freezing = [stat]Congelamento
bullet.tarred = [stat]Grudento bullet.tarred = [stat]Grudento
bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munição bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munição
bullet.reload = [stat]{0}[lightgray]x cadência de tiro bullet.reload = [stat]{0}[lightgray]x cadência de tiro
unit.blocks = Blocos unit.blocks = Blocos
unit.powersecond = Unidades de energia/segundo unit.powersecond = Unidades de energia/segundo
unit.liquidsecond = Unidades de líquido/segundo unit.liquidsecond = Unidades de líquido/segundo
@@ -576,13 +600,14 @@ category.shooting = Atirando
category.optional = Melhoras opcionais category.optional = Melhoras opcionais
setting.landscape.name = Travar panorama setting.landscape.name = Travar panorama
setting.shadows.name = Sombras setting.shadows.name = Sombras
setting.blockreplace.name = Automatic Block Suggestions setting.blockreplace.name = Sugestões automáticas de blocos
setting.linear.name = Filtragem linear setting.linear.name = Filtragem linear
setting.hints.name = Dicas setting.hints.name = Dicas
setting.buildautopause.name = Pausar construções automaticamente
setting.animatedwater.name = Água animada setting.animatedwater.name = Água animada
setting.animatedshields.name = Escudos animados setting.animatedshields.name = Escudos animados
setting.antialias.name = Filtro suavizante[LIGHT_GRAY] (reinicialização requerida)[] setting.antialias.name = Filtro suavizante[LIGHT_GRAY] (reinicialização requerida)[]
setting.indicators.name = Indicador de aliados setting.indicators.name = Indicador de aliados/inimigos
setting.autotarget.name = Alvo automatico setting.autotarget.name = Alvo automatico
setting.keyboard.name = Controles de mouse e teclado setting.keyboard.name = Controles de mouse e teclado
setting.touchscreen.name = Controles de Touchscreen setting.touchscreen.name = Controles de Touchscreen
@@ -600,13 +625,16 @@ setting.difficulty.name = Dificuldade
setting.screenshake.name = Balanço da Tela setting.screenshake.name = Balanço da Tela
setting.effects.name = Efeitos setting.effects.name = Efeitos
setting.destroyedblocks.name = Mostrar Blocos Destruídos setting.destroyedblocks.name = Mostrar Blocos Destruídos
setting.conveyorpathfinding.name = Posicionamento do localizador do Transportador setting.conveyorpathfinding.name = Esteiras Encontram Caminho
setting.sensitivity.name = Sensibilidade do Controle setting.sensitivity.name = Sensibilidade do Controle
setting.saveinterval.name = Intervalo de Auto Salvamento setting.saveinterval.name = Intervalo de Auto Salvamento
setting.seconds = {0} Segundos setting.seconds = {0} segundos
setting.blockselecttimeout.name = Tempo limite de seleção de blocos
setting.milliseconds = {0} milissegundos
setting.fullscreen.name = Tela Cheia setting.fullscreen.name = Tela Cheia
setting.borderlesswindow.name = Janela sem borda[LIGHT_GRAY] (Pode precisar reiniciar) setting.borderlesswindow.name = Janela sem borda[LIGHT_GRAY] (Pode precisar reiniciar)
setting.fps.name = Mostrar FPS setting.fps.name = Mostrar FPS e Ping
setting.blockselectkeys.name = Mostrar teclas de seleção de blocos
setting.vsync.name = VSync setting.vsync.name = VSync
setting.pixelate.name = Pixelizado [LIGHT_GRAY](Pode diminuir a performace) setting.pixelate.name = Pixelizado [LIGHT_GRAY](Pode diminuir a performace)
setting.minimap.name = Mostrar minimapa setting.minimap.name = Mostrar minimapa
@@ -635,16 +663,36 @@ category.multiplayer.name = Multijogador
command.attack = Atacar command.attack = Atacar
command.rally = Reunir command.rally = Reunir
command.retreat = Recuar command.retreat = Recuar
keybind.clear_building.name = Clear Building placement.blockselectkeys = \n[lightgray]Tecla: [{0},
keybind.clear_building.name = Limpar construção
keybind.press = Pressione uma tecla... keybind.press = Pressione uma tecla...
keybind.press.axis = Pressione uma Axis ou tecla... keybind.press.axis = Pressione uma Axis ou tecla...
keybind.screenshot.name = Captura do mapa keybind.screenshot.name = Captura do mapa
keybind.move_x.name = mover_x keybind.toggle_power_lines.name = Mudar lasers
keybind.move_y.name = mover_y keybind.move_x.name = Mover no eixo x
keybind.move_y.name = Mover no eixo Y
keybind.mouse_move.name = Seguir Mouse
keybind.dash.name = Arrancada
keybind.schematic_select.name = Selecionar região keybind.schematic_select.name = Selecionar região
keybind.schematic_menu.name = Menu de Esquemas keybind.schematic_menu.name = Menu de Esquemas
keybind.schematic_flip_x.name = girar o Esquema X keybind.schematic_flip_x.name = Girar o Esquema no eixo X
keybind.schematic_flip_y.name = girar o Esquema Y keybind.schematic_flip_y.name = Girar o Esquema no eixo Y
keybind.category_prev.name = Categoria anterior
keybind.category_next.name = Próxima categoria
keybind.block_select_left.name = Selecionar bloco à esquerda
keybind.block_select_right.name = Selecionar bloco à direita
keybind.block_select_up.name = Selecionar bloco acima
keybind.block_select_down.name = Selecionar bloco abaixo
keybind.block_select_01.name = Categoria/Selecionar bloco 1
keybind.block_select_02.name = Categoria/Selecionar bloco 2
keybind.block_select_03.name = Categoria/Selecionar bloco 3
keybind.block_select_04.name = Categoria/Selecionar bloco 4
keybind.block_select_05.name = Categoria/Selecionar bloco 5
keybind.block_select_06.name = Categoria/Selecionar bloco 6
keybind.block_select_07.name = Categoria/Selecionar bloco 7
keybind.block_select_08.name = Categoria/Selecionar bloco 8
keybind.block_select_09.name = Categoria/Selecionar bloco 9
keybind.block_select_10.name = Categoria/Selecionar bloco 10
keybind.fullscreen.name = Alterar tela cheia keybind.fullscreen.name = Alterar tela cheia
keybind.select.name = selecionar keybind.select.name = selecionar
keybind.diagonal_placement.name = Colocação diagonal keybind.diagonal_placement.name = Colocação diagonal
@@ -658,7 +706,6 @@ keybind.menu.name = Menu
keybind.pause.name = Pausar keybind.pause.name = Pausar
keybind.pause_building.name = Parar/Resumir a construção keybind.pause_building.name = Parar/Resumir a construção
keybind.minimap.name = Minimapa keybind.minimap.name = Minimapa
keybind.dash.name = Correr
keybind.chat.name = Conversa keybind.chat.name = Conversa
keybind.player_list.name = Lista_de_jogadores keybind.player_list.name = Lista_de_jogadores
keybind.console.name = Console keybind.console.name = Console
@@ -666,7 +713,7 @@ keybind.rotate.name = Girar
keybind.rotateplaced.name = Girar (Segure) keybind.rotateplaced.name = Girar (Segure)
keybind.toggle_menus.name = Ativar menus keybind.toggle_menus.name = Ativar menus
keybind.chat_history_prev.name = Historico do chat anterior keybind.chat_history_prev.name = Historico do chat anterior
keybind.chat_history_next.name = Historico do proximo chat keybind.chat_history_next.name = Historico do próximo chat
keybind.chat_scroll.name = Rolar chat keybind.chat_scroll.name = Rolar chat
keybind.drop_unit.name = Soltar unidade keybind.drop_unit.name = Soltar unidade
keybind.zoom_minimap.name = Zoom do minimapa keybind.zoom_minimap.name = Zoom do minimapa
@@ -681,12 +728,14 @@ mode.pvp.description = Lutar contra outros jogadores locais.
mode.attack.name = Ataque mode.attack.name = Ataque
mode.attack.description = Sem hordas, com o objetivo de destruir a base inimiga. mode.attack.description = Sem hordas, com o objetivo de destruir a base inimiga.
mode.custom = Regras personalizadas mode.custom = Regras personalizadas
rules.infiniteresources = Recursos infinitos rules.infiniteresources = Recursos infinitos
rules.reactorexplosions = Reatores explodem
rules.wavetimer = Tempo de horda rules.wavetimer = Tempo de horda
rules.waves = Hordas rules.waves = Hordas
rules.attack = Modo de ataque rules.attack = Modo de ataque
rules.enemyCheat = Recursos de IA Infinitos rules.enemyCheat = Recursos de IA Infinitos
rules.unitdrops = Unidade solta rules.unitdrops = Inimigos dropam itens
rules.unitbuildspeedmultiplier = Multiplicador de velocidade de criação de unidade rules.unitbuildspeedmultiplier = Multiplicador de velocidade de criação de unidade
rules.unithealthmultiplier = Multiplicador de vida de unidade rules.unithealthmultiplier = Multiplicador de vida de unidade
rules.playerhealthmultiplier = Multiplicador da vida de jogador rules.playerhealthmultiplier = Multiplicador da vida de jogador
@@ -694,10 +743,10 @@ rules.playerdamagemultiplier = Multiplicador do dano de jogador
rules.unitdamagemultiplier = Multiplicador de dano de Unidade rules.unitdamagemultiplier = Multiplicador de dano de Unidade
rules.enemycorebuildradius = Raio de "Não-criação" de core inimigo:[LIGHT_GRAY] (blocos) rules.enemycorebuildradius = Raio de "Não-criação" de core inimigo:[LIGHT_GRAY] (blocos)
rules.respawntime = Tempo de renascimento:[LIGHT_GRAY] (seg) rules.respawntime = Tempo de renascimento:[LIGHT_GRAY] (seg)
rules.wavespacing = Espaço entre hordas:[LIGHT_GRAY] (seg) rules.wavespacing = Espaço de tempo entre hordas:[LIGHT_GRAY] (seg)
rules.buildcostmultiplier = Multiplicador de custo de construção rules.buildcostmultiplier = Multiplicador de custo de construção
rules.buildspeedmultiplier = Multiplicador de velocidade de construção rules.buildspeedmultiplier = Multiplicador de velocidade de construção
rules.waitForWaveToEnd = hordas esperam inimigos rules.waitForWaveToEnd = Hordas esperam inimigos
rules.dropzoneradius = Raio da zona de spawn:[LIGHT_GRAY] (blocos) rules.dropzoneradius = Raio da zona de spawn:[LIGHT_GRAY] (blocos)
rules.respawns = Respawn maximos por horda rules.respawns = Respawn maximos por horda
rules.limitedRespawns = Respawn limitados rules.limitedRespawns = Respawn limitados
@@ -707,6 +756,10 @@ rules.title.resourcesbuilding = Recursos e Construções
rules.title.player = Jogadores rules.title.player = Jogadores
rules.title.enemy = Inimigos rules.title.enemy = Inimigos
rules.title.unit = Unidades rules.title.unit = Unidades
rules.title.experimental = Experimental
rules.lighting = Iluminação
rules.ambientlight = Luz ambiente
content.item.name = Itens content.item.name = Itens
content.liquid.name = Líquidos content.liquid.name = Líquidos
content.unit.name = Unidades content.unit.name = Unidades
@@ -768,6 +821,7 @@ mech.buildspeed = [LIGHT_GRAY]Velocidade de construção: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacidade de aquecimento: {0} liquid.heatcapacity = [LIGHT_GRAY]Capacidade de aquecimento: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosidade: {0} liquid.viscosity = [LIGHT_GRAY]Viscosidade: {0}
liquid.temperature = [LIGHT_GRAY]Temperatura: {0} liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
block.sand-boulder.name = Pedregulho de areia block.sand-boulder.name = Pedregulho de areia
block.grass.name = Grama block.grass.name = Grama
block.salt.name = Sal block.salt.name = Sal
@@ -843,7 +897,7 @@ block.copper-wall.name = Muro de Cobre
block.copper-wall-large.name = Muro de Cobre Grande block.copper-wall-large.name = Muro de Cobre Grande
block.titanium-wall.name = Muro de Titânio block.titanium-wall.name = Muro de Titânio
block.titanium-wall-large.name = Muro de Titânio grande block.titanium-wall-large.name = Muro de Titânio grande
block.plastanium-wall.name = Muro de Plastânio Grande block.plastanium-wall.name = Muro de Plastânio
block.plastanium-wall-large.name = Muro de Plastânio Grande block.plastanium-wall-large.name = Muro de Plastânio Grande
block.phase-wall.name = Muro de Fase block.phase-wall.name = Muro de Fase
block.phase-wall-large.name = Muro de Fase Grande block.phase-wall-large.name = Muro de Fase Grande
@@ -866,6 +920,8 @@ block.distributor.name = Distribuidor
block.sorter.name = Ordenador block.sorter.name = Ordenador
block.inverted-sorter.name = Ordenador Invertido block.inverted-sorter.name = Ordenador Invertido
block.message.name = Mensagem block.message.name = Mensagem
block.illuminator.name = Iluminador
block.illuminator.description = Uma pequena, compacta e configurável fonte de luz. Precisa de energia para funcionar.
block.overflow-gate.name = Portão Sobrecarregado block.overflow-gate.name = Portão Sobrecarregado
block.silicon-smelter.name = Fundidora de silicio block.silicon-smelter.name = Fundidora de silicio
block.phase-weaver.name = Palheta de fase block.phase-weaver.name = Palheta de fase
@@ -875,14 +931,15 @@ block.melter.name = Aparelho de fusão
block.incinerator.name = Incinerador block.incinerator.name = Incinerador
block.spore-press.name = Prensa de Esporo block.spore-press.name = Prensa de Esporo
block.separator.name = Separador block.separator.name = Separador
block.coal-centrifuge.name = Centrifuga de carvão block.coal-centrifuge.name = Centrífuga de carvão
block.power-node.name = Célula de energia block.power-node.name = Célula de Energia
block.power-node-large.name = Célula de energia Grande block.power-node-large.name = Célula de Energia Grande
block.surge-tower.name = Torre de surto block.surge-tower.name = Torre de surto
block.diode.name = Bateria de Diodo
block.battery.name = Bateria block.battery.name = Bateria
block.battery-large.name = Bateria Grande block.battery-large.name = Bateria Grande
block.combustion-generator.name = Gerador a combustão block.combustion-generator.name = Gerador à combustão
block.turbine-generator.name = Gerador de Turbina block.turbine-generator.name = Gerador à vapor
block.differential-generator.name = Gerador diferencial block.differential-generator.name = Gerador diferencial
block.impact-reactor.name = Reator De Impacto block.impact-reactor.name = Reator De Impacto
block.mechanical-drill.name = Broca Mecânica block.mechanical-drill.name = Broca Mecânica
@@ -931,6 +988,7 @@ block.fortress-factory.name = Fábrica de mech Fortress
block.revenant-factory.name = Fábrica de lutadores Revenant block.revenant-factory.name = Fábrica de lutadores Revenant
block.repair-point.name = Ponto de Reparo block.repair-point.name = Ponto de Reparo
block.pulse-conduit.name = Cano de Pulso block.pulse-conduit.name = Cano de Pulso
block.plated-conduit.name = Cano Chapeado
block.phase-conduit.name = Cano de Fase block.phase-conduit.name = Cano de Fase
block.liquid-router.name = Roteador de Líquido block.liquid-router.name = Roteador de Líquido
block.liquid-tank.name = Tanque de Líquido block.liquid-tank.name = Tanque de Líquido
@@ -939,12 +997,12 @@ block.bridge-conduit.name = Cano Ponte
block.rotary-pump.name = Bomba Rotatória block.rotary-pump.name = Bomba Rotatória
block.thorium-reactor.name = Reator a Tório block.thorium-reactor.name = Reator a Tório
block.mass-driver.name = Catapulta Eletromagnética block.mass-driver.name = Catapulta Eletromagnética
block.blast-drill.name = Broca de Explosão block.blast-drill.name = Broca de Jato de Ar
block.thermal-pump.name = Bomba térmica block.thermal-pump.name = Bomba térmica
block.thermal-generator.name = Gerador Térmico block.thermal-generator.name = Gerador Térmico
block.alloy-smelter.name = Fundidora de Liga block.alloy-smelter.name = Fundidora de Liga
block.mender.name = Reparador block.mender.name = Reparador
block.mend-projector.name = Projetor de reparo block.mend-projector.name = Projetor de Reparo
block.surge-wall.name = Parede de liga de surto block.surge-wall.name = Parede de liga de surto
block.surge-wall-large.name = Parede de liga de surto grande block.surge-wall-large.name = Parede de liga de surto grande
block.cyclone.name = Ciclone block.cyclone.name = Ciclone
@@ -960,10 +1018,10 @@ block.container.name = Contâiner
block.launch-pad.name = Plataforma de lançamento block.launch-pad.name = Plataforma de lançamento
block.launch-pad-large.name = Plataforma de lançamento grande block.launch-pad-large.name = Plataforma de lançamento grande
team.blue.name = Azul team.blue.name = Azul
team.crux.name = Vermelha team.crux.name = Vermelho
team.sharded.name = Estilhaçada team.sharded.name = Fragmentado
team.orange.name = Laranja team.orange.name = Alaranjado
team.derelict.name = Abandonada team.derelict.name = Abandonado
team.green.name = Verde team.green.name = Verde
team.purple.name = Roxa team.purple.name = Roxa
unit.spirit.name = Drone Spirit unit.spirit.name = Drone Spirit
@@ -1002,6 +1060,7 @@ tutorial.deposit = Deposite itens em blocos arrastando da sua nave até o bloco.
tutorial.waves = O[LIGHT_GRAY] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Construa mais torretas. tutorial.waves = O[LIGHT_GRAY] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Construa mais torretas.
tutorial.waves.mobile = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Seu drone vai atirar nos inimigos automaticamente.\nConstrua mais torretas e brocas. Minere mais cobre. tutorial.waves.mobile = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Seu drone vai atirar nos inimigos automaticamente.\nConstrua mais torretas e brocas. Minere mais cobre.
tutorial.launch = Quando você atinge uma horda específica, Você é capaz de[accent] lançar o núcleo[], deixando suas defesas para trás e[accent] obtendo todos os recursos em seu núcleo.[]\nEstes recursos podem ser usados para pesquisar novas tecnologias.\n\n[accent]Pressione o botão lançar. tutorial.launch = Quando você atinge uma horda específica, Você é capaz de[accent] lançar o núcleo[], deixando suas defesas para trás e[accent] obtendo todos os recursos em seu núcleo.[]\nEstes recursos podem ser usados para pesquisar novas tecnologias.\n\n[accent]Pressione o botão lançar.
item.copper.description = O material mais básico. Usado em todos os tipos de blocos. item.copper.description = O material mais básico. Usado em todos os tipos de blocos.
item.lead.description = Material de começo basico. usado extensivamente em blocos de transporte de líquidos e eletrônicos. item.lead.description = Material de começo basico. usado extensivamente em blocos de transporte de líquidos e eletrônicos.
item.metaglass.description = Composto de vidro super resistente. Extensivamente usado para distribuição e armazenagem de líquidos. item.metaglass.description = Composto de vidro super resistente. Extensivamente usado para distribuição e armazenagem de líquidos.
@@ -1051,7 +1110,7 @@ block.phase-weaver.description = Produz tecido de fase usando tório radioativo
block.alloy-smelter.description = Combina titânio, chumbo, silicio e cobre para produzir liga de surto. block.alloy-smelter.description = Combina titânio, chumbo, silicio e cobre para produzir liga de surto.
block.cryofluidmixer.description = Mistura água e pó fino de titânio para produzir criofluido. Essencial para o uso do reator a tório. block.cryofluidmixer.description = Mistura água e pó fino de titânio para produzir criofluido. Essencial para o uso do reator a tório.
block.blast-mixer.description = Quebra e mistura aglomerados de esporos com piratita para produzir composto de explosão. block.blast-mixer.description = Quebra e mistura aglomerados de esporos com piratita para produzir composto de explosão.
block.pyratite-mixer.description = Mistura carvão, cobre e areia em piratita altamente inflamável block.pyratite-mixer.description = Mistura carvão, cobre e areia em piratita altamente inflamável.
block.melter.description = Derrete sucata em escória para processamento posterior ou uso em torretas. block.melter.description = Derrete sucata em escória para processamento posterior ou uso em torretas.
block.separator.description = Separa escória em seus minerais componentes, oferece o resultado refriado. block.separator.description = Separa escória em seus minerais componentes, oferece o resultado refriado.
block.spore-press.description = Comprime cápsulas de esporos em petróleo. block.spore-press.description = Comprime cápsulas de esporos em petróleo.
@@ -1067,10 +1126,10 @@ block.copper-wall.description = Um bloco defensivo e barato.\nUtil para proteger
block.copper-wall-large.description = Um bloco defensivo e barato.\nUtil para proteger o núcleo e torretas no começo.\nOcupa múltiplos blocos. block.copper-wall-large.description = Um bloco defensivo e barato.\nUtil para proteger o núcleo e torretas no começo.\nOcupa múltiplos blocos.
block.titanium-wall.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos. block.titanium-wall.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.
block.titanium-wall-large.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.\nOcupa múltiplos blocos. block.titanium-wall-large.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.\nOcupa múltiplos blocos.
block.plastanium-wall.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections. block.plastanium-wall.description = Um tipo especial de muro que absorve arcos elétricos e bloqueia conexões automáticas de células de energia.
block.plastanium-wall-large.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections.\nSpans multiple tiles. block.plastanium-wall-large.description = Um tipo especial de muro que absorve arcos elétricos e bloqueia conexões automáticas de células de energia.\nOcupa múltiplos blocos.
block.thorium-wall.description = Um bloco defensivo forte.\nBoa proteção contra inimigos. block.thorium-wall.description = Um bloco defensivo forte.\nBoa proteção contra inimigos.
block.thorium-wall-large.description = Um bloco grande e defensivo.\nBoa proteção contra inimigos.\nOcupa multiplos blocos. block.thorium-wall-large.description = Um bloco defensivo forte.\nBoa proteção contra inimigos.\nOcupa múltiplos blocos.
block.phase-wall.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto. block.phase-wall.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto.
block.phase-wall-large.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto.\nSOcupa múltiplos blocos. block.phase-wall-large.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto.\nSOcupa múltiplos blocos.
block.surge-wall.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-s aleatoriamente. block.surge-wall.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-s aleatoriamente.
@@ -1098,7 +1157,8 @@ block.rotary-pump.description = Uma bomba avançada. Bombeia mais líquido, mas
block.thermal-pump.description = A bomba final. block.thermal-pump.description = A bomba final.
block.conduit.description = Bloco básico de transporte de líquidos. Move líquidos para a frente. Usado em conjunto com bombas e outros canos. block.conduit.description = Bloco básico de transporte de líquidos. Move líquidos para a frente. Usado em conjunto com bombas e outros canos.
block.pulse-conduit.description = Bloco avancado de transporte de liquido. Transporta liquidos mais rápido e armazena mais que os canos padrões. block.pulse-conduit.description = Bloco avancado de transporte de liquido. Transporta liquidos mais rápido e armazena mais que os canos padrões.
block.liquid-router.description = Aceita liquidos de uma direcão e os joga em 3 direções igualmente. Pode armazenar uma certa quantidade de liquido. Util para espalhar liquidos de uma fonte para multiplos alvos. block.plated-conduit.description = Move líquidos na mesma velocidade que canos de pulso, mas possui mais blindagem. Não aceita fluidos dos lados de nada além de outros canos.\nVaza menos.
block.liquid-router.description = Aceita liquidos de uma direcão e os joga em 3 direções igualmente. Pode armazenar uma certa quantidade de liquido. Útil para espalhar líquidos de uma fonte para múltiplos alvos.
block.liquid-tank.description = Armazena grandes quantidades de liquido. Use quando a demanda de materiais não for constante ou para guardar itens para resfriar blocos vitais. block.liquid-tank.description = Armazena grandes quantidades de liquido. Use quando a demanda de materiais não for constante ou para guardar itens para resfriar blocos vitais.
block.liquid-junction.description = Age como uma ponte para dois canos que se cruzam. Útil em situações em que há dois cano carregando liquidos diferentes até localizações diferentes. block.liquid-junction.description = Age como uma ponte para dois canos que se cruzam. Útil em situações em que há dois cano carregando liquidos diferentes até localizações diferentes.
block.bridge-conduit.description = Bloco de transporte de liquidos avancados. Possibilita o transporte de liquido sobre 3 blocos acima de construções ou paredes block.bridge-conduit.description = Bloco de transporte de liquidos avancados. Possibilita o transporte de liquido sobre 3 blocos acima de construções ou paredes
@@ -1106,15 +1166,16 @@ block.phase-conduit.description = Bloco avancado de transporte de liquido. Usa e
block.power-node.description = Transmite energia para células conectadas. A célula vai receber energia ou alimentar qualquer bloco adjacente. block.power-node.description = Transmite energia para células conectadas. A célula vai receber energia ou alimentar qualquer bloco adjacente.
block.power-node-large.description = Uma célula de energia avançada com maior alcance e mais conexões. block.power-node-large.description = Uma célula de energia avançada com maior alcance e mais conexões.
block.surge-tower.description = Uma célula de energia com um extremo alcance mas com menos conexões disponíveis. block.surge-tower.description = Uma célula de energia com um extremo alcance mas com menos conexões disponíveis.
block.diode.description = A energia de baterias pode fluir através desse bloco em apenas uma direção, mas apenas se o outro lado possuir menos energia armazenada.
block.battery.description = Armazena energia em tempos de energia excedente. Libera energia em tempos de déficit. block.battery.description = Armazena energia em tempos de energia excedente. Libera energia em tempos de déficit.
block.battery-large.description = Guarda muito mais energia que uma beteria comum. block.battery-large.description = Guarda muito mais energia que uma bateria comum.
block.combustion-generator.description = Gera energia usando combustível ou petróleo. block.combustion-generator.description = Gera energia queimando materiais inflamáveis, como carvão.
block.thermal-generator.description = Gera uma quantidade grande de energia usando lava. block.thermal-generator.description = Gera energia quando colocado em lugares quentes.
block.turbine-generator.description = Mais eficiente que o gerador de Combustão, Mas requer agua adicional. block.turbine-generator.description = Mais eficiente que o gerador à combustão, mas requer água adicional para a geração de vapor.
block.differential-generator.description = Gera grandes quantidades de Energia. Utiliza a diferença de temperatura entre o Fluído Criogênico e a Piratita. block.differential-generator.description = Gera grandes quantidades de energia. Utiliza a diferença de temperatura entre o Fluido Criogênico e a Piratita.
block.rtg-generator.description = Um Gerador termoelétrico de radioisótopos que não precisa de refriamento mas dá muito menos energia que o reator de tório. block.rtg-generator.description = Um Gerador termoelétrico de radioisótopos que não precisa de refriamento mas dá muito menos energia que o reator de tório.
block.solar-panel.description = Gera pequenas quantidades de energia do sol. block.solar-panel.description = Gera pequenas quantidades de energia do sol.
block.solar-panel-large.description = Dá muito mais energia que o painel solar comum, Mas sua produção é mais cara. block.solar-panel-large.description = Uma versão significantemente mais eficiente que o painel solar padrão.
block.thorium-reactor.description = Gera altas quantidades de energia do torio radioativo. Requer resfriamento constante. Vai explodir violentamente Se resfriamento insuficiente for fornecido. block.thorium-reactor.description = Gera altas quantidades de energia do torio radioativo. Requer resfriamento constante. Vai explodir violentamente Se resfriamento insuficiente for fornecido.
block.impact-reactor.description = An advanced generator, capable of creating massive amounts of power at peak efficiency. Requires a significant power input to kickstart the process. block.impact-reactor.description = An advanced generator, capable of creating massive amounts of power at peak efficiency. Requires a significant power input to kickstart the process.
block.mechanical-drill.description = Uma broca barata. Quando colocado em blocos apropriados, retira itens em um ritmo lento e indefinitavamente. block.mechanical-drill.description = Uma broca barata. Quando colocado em blocos apropriados, retira itens em um ritmo lento e indefinitavamente.
@@ -1123,9 +1184,9 @@ block.laser-drill.description = Possibilita a mineração ainda mais rapida usan
block.blast-drill.description = A melhor mineradora. Requer muita energia. block.blast-drill.description = A melhor mineradora. Requer muita energia.
block.water-extractor.description = Extrai água do chão. Use quando não tive nenhum lago proximo block.water-extractor.description = Extrai água do chão. Use quando não tive nenhum lago proximo
block.cultivator.description = Cultiva o solo com agua para pegar bio materia. block.cultivator.description = Cultiva o solo com agua para pegar bio materia.
block.oil-extractor.description = Usa altas quantidades de energia Para extrair oleo da areia. Use quando não tiver fontes de oleo por perto block.water-extractor.description = Extrai água subterrânea. Usado em locais sem água superficial disponível.
block.core-shard.description = Primeira iteração da cápsula do núcleo. Uma vez destruida, o controle da região inteira é perdido. Não deixe isso acontecer. block.cultivator.description = Cultiva pequenas concentrações de esporos na atmosfera em cápsulas prontas.
block.core-foundation.description = A segunda versão do núcleo. Melhor armadura. Guarda mais recursos. block.oil-extractor.description = Usa altas quantidades de energia para extrair petróleo da areia. Use quando não tiver fontes de petróleo por perto.
block.core-nucleus.description = A terceira e ultima iteração do núcleo. Extremamente bem armadurada. Guarda quantidades massivas de recursos. block.core-nucleus.description = A terceira e ultima iteração do núcleo. Extremamente bem armadurada. Guarda quantidades massivas de recursos.
block.vault.description = Carrega uma alta quantidade de itens. Usado para criar fontes Quando não tem uma necessidade constante de materiais. Um[LIGHT_GRAY] Descarregador[] pode ser usado para recuperar esses itens do container. block.vault.description = Carrega uma alta quantidade de itens. Usado para criar fontes Quando não tem uma necessidade constante de materiais. Um[LIGHT_GRAY] Descarregador[] pode ser usado para recuperar esses itens do container.
block.container.description = Carrega uma baixa quantidade de itens. Usado para criar fontes Quando não tem uma necessidade constante de materiais. Um[LIGHT_GRAY] Descarregador[] pode ser usado para recuperar esses itens do container. block.container.description = Carrega uma baixa quantidade de itens. Usado para criar fontes Quando não tem uma necessidade constante de materiais. Um[LIGHT_GRAY] Descarregador[] pode ser usado para recuperar esses itens do container.

View File

@@ -6,10 +6,11 @@ link.discord.description = Официальный Discord-сервер Mindustry
link.reddit.description = Сабреддит Mindustry link.reddit.description = Сабреддит Mindustry
link.github.description = Исходный код игры link.github.description = Исходный код игры
link.changelog.description = Список изменений link.changelog.description = Список изменений
link.dev-builds.description = Нестабильные версии link.dev-builds.description = Нестабильные разрабатываемые версии
link.trello.description = Официальная доска Trello для запланированных функций link.trello.description = Официальная доска Trello для запланированных функций
link.itch.io.description = Страница itch.io с загрузками игры link.itch.io.description = Страница itch.io с загрузками игры
link.google-play.description = Скачать для Android с Google Play link.google-play.description = Скачать для Android с Google Play
link.f-droid.description = Скачать для Android с F-Droid
link.wiki.description = Официальная вики link.wiki.description = Официальная вики
linkfail = Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена. linkfail = Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена.
screenshot = риншот сохранён в {0} screenshot = риншот сохранён в {0}
@@ -18,12 +19,14 @@ gameover = Игра окончена
gameover.pvp = [accent]{0}[] команда победила! gameover.pvp = [accent]{0}[] команда победила!
highscore = [accent]Новый рекорд! highscore = [accent]Новый рекорд!
copied = Скопировано. copied = Скопировано.
load.sound = Звуки load.sound = Звуки
load.map = Карты load.map = Карты
load.image = Изображения load.image = Изображения
load.content = Содержимое load.content = Содержимое
load.system = Система load.system = Система
load.mod = Модификации load.mod = Модификации
schematic = Схема schematic = Схема
schematic.add = Сохранить схему... schematic.add = Сохранить схему...
schematics = Схемы schematics = Схемы
@@ -40,6 +43,7 @@ schematic.saved = Схема сохранена.
schematic.delete.confirm = Эта схема будет поджарена Испепелителем. schematic.delete.confirm = Эта схема будет поджарена Испепелителем.
schematic.rename = Переименовать схему schematic.rename = Переименовать схему
schematic.info = {0}x{1}, {2} блоков schematic.info = {0}x{1}, {2} блоков
stat.wave = Волн отражено:[accent] {0} stat.wave = Волн отражено:[accent] {0}
stat.enemiesDestroyed = Врагов уничтожено:[accent] {0} stat.enemiesDestroyed = Врагов уничтожено:[accent] {0}
stat.built = Строений построено:[accent] {0} stat.built = Строений построено:[accent] {0}
@@ -47,6 +51,7 @@ stat.destroyed = Строений уничтожено:[accent] {0}
stat.deconstructed = Строений деконструировано:[accent] {0} stat.deconstructed = Строений деконструировано:[accent] {0}
stat.delivered = Ресурсов запущено: stat.delivered = Ресурсов запущено:
stat.rank = Финальный ранг: [accent]{0} stat.rank = Финальный ранг: [accent]{0}
launcheditems = [accent]Запущенные предметы launcheditems = [accent]Запущенные предметы
launchinfo = [unlaunched]Нажмите на кнопку [ЗАПУСК], чтобы получить предметы, которые отмечены синим цветом. launchinfo = [unlaunched]Нажмите на кнопку [ЗАПУСК], чтобы получить предметы, которые отмечены синим цветом.
map.delete = Вы действительно хотите удалить карту «[accent]{0}[]»? map.delete = Вы действительно хотите удалить карту «[accent]{0}[]»?
@@ -55,7 +60,7 @@ level.select = Выбор карты
level.mode = Режим игры: level.mode = Режим игры:
showagain = Не показывать снова до следующей сессии showagain = Не показывать снова до следующей сессии
coreattack = < Ядро находится под атакой! > coreattack = < Ядро находится под атакой! >
nearpoint = [[ [scarlet]ПОКИНЬТЕ ТОЧКУ ВЫСАДКИ НЕМЕДЛЕННО[] ]\nАннигиляция неизбежна nearpoint = [[ [scarlet]ПОКИНЬТЕ ТОЧКУ ВЫСАДКИ НЕМЕДЛЕННО[] ]\nаннигиляция неизбежна
database = База данных ядра database = База данных ядра
savegame = Сохранить игру savegame = Сохранить игру
loadgame = Загрузить игру loadgame = Загрузить игру
@@ -64,7 +69,7 @@ customgame = Пользовательская игра
newgame = Новая игра newgame = Новая игра
none = <ничего> none = <ничего>
minimap = Мини-карта minimap = Мини-карта
position = Позиция position = Координаты
close = Закрыть close = Закрыть
website = Веб-сайт website = Веб-сайт
quit = Выход quit = Выход
@@ -74,27 +79,29 @@ maps.browse = Просмотр карт
continue = Продолжить continue = Продолжить
maps.none = [lightgray]Карты не найдены! maps.none = [lightgray]Карты не найдены!
invalid = Недопустимый invalid = Недопустимый
pickcolor = Выбрать цвет
preparingconfig = Подготовка конфигурации preparingconfig = Подготовка конфигурации
preparingcontent = Подготовка содержимого preparingcontent = Подготовка содержимого
uploadingcontent = Выгрузка содержимого uploadingcontent = Выгрузка содержимого
uploadingpreviewfile = Выгрузка файла предпросмотра uploadingpreviewfile = Выгрузка файла предпросмотра
committingchanges = Внесение изменений committingchanges = Внесение изменений
done = Готово done = Готово
feature.unsupported = Your device does not support this feature. feature.unsupported = Ваше устройство не поддерживает эту возможность.
mods.alphainfo = Имейте в виду, что модификации находятся в альфа-версии и могут содержать много ошибок[]. Докладывайте о любых проблемах, которые Вы найдете в Mindustry GitHub или Discord.
mods.alphainfo = Имейте в виду, что модификации находятся в альфа-версии и [scarlet]могут содержать много ошибок[]. Докладывайте о любых проблемах, которые Вы найдете в Mindustry Github или Discord.
mods.alpha = [accent](Альфа) mods.alpha = [accent](Альфа)
mods = Модификации mods = Модификации
mods.none = [LIGHT_GRAY]Модификации не найдены! mods.none = [LIGHT_GRAY]Модификации не найдены!
mods.guide = Руководство по созданию модификаций mods.guide = Руководство по созданию модификаций
mods.report = Доложить об ошибке mods.report = Доложить об ошибке
mods.openfolder = Open Mod Folder mods.openfolder = Открыть папку с модификациями
mod.enabled = [lightgray]Включён mod.enabled = [lightgray]Включён
mod.disabled = [scarlet]Выключен mod.disabled = [scarlet]Выключен
mod.disable = Выключить mod.disable = Выкл.
mod.delete.error = Unable to delete mod. File may be in use. mod.delete.error = Невозможно удалить модификацию. Возможно, файл используется.
mod.missingdependencies = [scarlet]Не найдены родительские модификации: {0} mod.missingdependencies = [scarlet]Не найдены родительские модификации: {0}
mod.nowdisabled = [scarlet]Модификации '{0}' требуются родительские модификации:[accent] {1}\n[lightgray]Сначала нужно загрузить их.\nЭта модификация будет автоматически отключена. mod.nowdisabled = [scarlet]Модификации '{0}' требуются родительские модификации:[accent] {1}\n[lightgray]Сначала нужно загрузить их.\nЭта модификация будет автоматически отключена.
mod.enable = Включить mod.enable = Вкл.
mod.requiresrestart = Теперь игра закроется, чтобы применить изменения в модификациях. mod.requiresrestart = Теперь игра закроется, чтобы применить изменения в модификациях.
mod.reloadrequired = [scarlet]Необходим перезапуск mod.reloadrequired = [scarlet]Необходим перезапуск
mod.import = Импортировать модификацию mod.import = Импортировать модификацию
@@ -104,6 +111,7 @@ mod.author = [LIGHT_GRAY]Автор:[] {0}
mod.missing = Это сохранение содержит модификацию, которое Вы недавно обновили или оно больше не установлено. Может случиться повреждение сохранения. Вы уверены, что хотите загрузить его?\n[lightgray]Модификации:\n{0} mod.missing = Это сохранение содержит модификацию, которое Вы недавно обновили или оно больше не установлено. Может случиться повреждение сохранения. Вы уверены, что хотите загрузить его?\n[lightgray]Модификации:\n{0}
mod.preview.missing = Перед публикацией этой модификации в Мастерской, Вы должны добавить изображение предпросмотра.\nРазместите изображение с именем[accent] preview.png[] в папке модификации и попробуйте снова. mod.preview.missing = Перед публикацией этой модификации в Мастерской, Вы должны добавить изображение предпросмотра.\nРазместите изображение с именем[accent] preview.png[] в папке модификации и попробуйте снова.
mod.folder.missing = Модификации могут быть опубликованы в Мастерской только в виде папки.\nЧтобы конвертировать любой мод в папку, просто извлеките его из архива и удалите старый архив .zip, затем перезапустите игру или перезагрузите модификации. mod.folder.missing = Модификации могут быть опубликованы в Мастерской только в виде папки.\nЧтобы конвертировать любой мод в папку, просто извлеките его из архива и удалите старый архив .zip, затем перезапустите игру или перезагрузите модификации.
about.button = Об игре about.button = Об игре
name = Имя: name = Имя:
noname = Для начала, придумайте[accent] себе имя[]. noname = Для начала, придумайте[accent] себе имя[].
@@ -111,8 +119,8 @@ filename = Имя файла:
unlocked = Новый контент разблокирован! unlocked = Новый контент разблокирован!
completed = [accent]Завершено completed = [accent]Завершено
techtree = Дерево технологий techtree = Дерево технологий
research.list = [lightgray]Исследование: research.list = [lightgray]Исследуйте:
research = Исследование research = Исследовать
researched = [lightgray]{0} исследовано. researched = [lightgray]{0} исследовано.
players = Игроков: {0} players = Игроков: {0}
players.single = {0} игрок players.single = {0} игрок
@@ -133,7 +141,7 @@ server.kicked.idInUse = Вы уже на этом сервере! Соедине
server.kicked.customClient = Этот сервер не поддерживает пользовательские сборки. Загрузите официальную версию. server.kicked.customClient = Этот сервер не поддерживает пользовательские сборки. Загрузите официальную версию.
server.kicked.gameover = Игра окончена! server.kicked.gameover = Игра окончена!
server.versions = Ваша версия:[accent] {0}[]\nВерсия сервера:[accent] {1}[] server.versions = Ваша версия:[accent] {0}[]\nВерсия сервера:[accent] {1}[]
host.info = Кнопка [accent]Сервер[] запускает сервер на порте [scarlet]6567[]. \nЛюбой пользователь в той же [lightgray]локальной сети или WiFi[] должен увидеть ваш сервер в своём списке серверов.\n\nЕсли Вы хотите, чтобы люди могли подключаться откуда угодно по IP, то требуется [accent]переадресация (проброс) портов[] и наличие [red]ВНЕШНЕГО[] WAN адреса (WAN адрес [red]НЕ должен[] начинаться с [red]10[][lightgray].x.x.x[], [red]100.64[][lightgray].x.x[], [red]172.16[][lightgray].x.x[], [red]192.168[][lightgray].x.x[], [red]127[][lightgray].x.x.x[])!\nКлиентам мобильных операторов нужно уточнять информацию в личном кабинете на сайте вашего оператора!\n\n[lightgray]Примечание: Если у кого-то возникают проблемы с подключением к вашей игре по локальной сети, убедитесь, что Вы разрешили доступ Mindustry к вашей локальной сети в настройках брандмауэра. Обратите внимание, что публичные сети иногда не позволяют обнаружение сервера. host.info = Кнопка [accent]Открыть сервер[] запускает сервер на порте [scarlet]6567[].\nЛюбой пользователь в той же [lightgray]локальной сети или WiFi[] должен увидеть ваш сервер в своём списке серверов.\n\nЕсли Вы хотите, чтобы люди могли подключаться откуда угодно по IP, то требуется [accent]переадресация (проброс) портов[] и наличие [red]ВНЕШНЕГО[] WAN адреса (WAN адрес [red]НЕ должен[] начинаться с [red]10[][lightgray].x.x.x[], [red]100.64[][lightgray].x.x[], [red]172.16[][lightgray].x.x[], [red]192.168[][lightgray].x.x[], [red]127[][lightgray].x.x.x[])!\nКлиентам мобильных операторов нужно уточнять информацию в личном кабинете на сайте вашего оператора!\n\n[lightgray]Примечание: Если у кого-то возникают проблемы с подключением к вашей игре по локальной сети, убедитесь, что Вы разрешили доступ Mindustry к вашей локальной сети в настройках брандмауэра. Обратите внимание, что публичные сети иногда не позволяют обнаружение сервера.
join.info = Здесь Вы можете ввести [accent]IP-адрес сервера[] для подключения или открыть [accent]локальную сеть[] для подключения к другим серверам.\nПоддерживаются оба многопользовательских режима: LAN и WAN.\n\n[lightgray]Примечание: это НЕ автоматический глобальный список серверов; если Вы хотите подключиться к кому-то по IP, вам нужно спросить у хоста его IP-адрес. join.info = Здесь Вы можете ввести [accent]IP-адрес сервера[] для подключения или открыть [accent]локальную сеть[] для подключения к другим серверам.\nПоддерживаются оба многопользовательских режима: LAN и WAN.\n\n[lightgray]Примечание: это НЕ автоматический глобальный список серверов; если Вы хотите подключиться к кому-то по IP, вам нужно спросить у хоста его IP-адрес.
hostserver = Запустить многопользовательский сервер hostserver = Запустить многопользовательский сервер
invitefriends = Пригласить друзей invitefriends = Пригласить друзей
@@ -152,7 +160,7 @@ trace.ip = IP: [accent]{0}
trace.id = ID: [accent]{0} trace.id = ID: [accent]{0}
trace.mobile = Мобильный клиент: [accent]{0} trace.mobile = Мобильный клиент: [accent]{0}
trace.modclient = Пользовательский клиент: [accent]{0} trace.modclient = Пользовательский клиент: [accent]{0}
invalidid = Недопустимый уникальный идентификатор клиента! Отправьте отчёт об ошибке. invalidid = Недопустимый ID клиента! Отправьте отчёт об ошибке.
server.bans = Блокировки server.bans = Блокировки
server.bans.none = Заблокированных игроков нет! server.bans.none = Заблокированных игроков нет!
server.admins = Администраторы server.admins = Администраторы
@@ -175,7 +183,7 @@ joingame.ip = Адрес:
disconnect = Отключено. disconnect = Отключено.
disconnect.error = Ошибка соединения. disconnect.error = Ошибка соединения.
disconnect.closed = Соединение закрыто. disconnect.closed = Соединение закрыто.
disconnect.timeout = Время истекло. disconnect.timeout = Время ожидания истекло.
disconnect.data = Ошибка при загрузке данных мира! disconnect.data = Ошибка при загрузке данных мира!
cantconnect = Не удаётся присоединиться к игре ([accent]{0}[]). cantconnect = Не удаётся присоединиться к игре ([accent]{0}[]).
connecting = [accent]Подключение… connecting = [accent]Подключение…
@@ -229,7 +237,7 @@ data.export = Экспортировать данные
data.import = Импортировать данные data.import = Импортировать данные
data.exported = Данные экспортированы. data.exported = Данные экспортированы.
data.invalid = Эти игровые данные являются недействительными. data.invalid = Эти игровые данные являются недействительными.
data.import.confirm = Импорт внешних данных сотрёт[scarlet] все[] ваши игровые данные.\n[accent]Это не может быть отменено![]\n\nКак только данные импортированы, ваша игра немедленно закроется. data.import.confirm = Импорт внешних данных сотрёт[scarlet] все[] Ваши игровые данные.\n[accent]Это не может быть отменено![]\n\nКак только данные импортированы, Ваша игра немедленно закроется.
classic.export = Экспортировать данные классической версии classic.export = Экспортировать данные классической версии
classic.export.text = [accent]Mindustry[] получил глобальное обновление.\nБыло обнаружено Классическое (версия 3.5 сборка 40) сохранение или карта. Вы хотите экспортировать эти сохранения в домашнюю папку вашего телефона, для использования в приложении Mindustry Classic? classic.export.text = [accent]Mindustry[] получил глобальное обновление.\nБыло обнаружено Классическое (версия 3.5 сборка 40) сохранение или карта. Вы хотите экспортировать эти сохранения в домашнюю папку вашего телефона, для использования в приложении Mindustry Classic?
quit.confirm = Вы уверены, что хотите выйти? quit.confirm = Вы уверены, что хотите выйти?
@@ -247,7 +255,7 @@ wave.waveInProgress = [lightgray]Волна продолжается
waiting = [lightgray]Ожидание… waiting = [lightgray]Ожидание…
waiting.players = Ожидание игроков… waiting.players = Ожидание игроков…
wave.enemies = Враги: [lightgray]{0} wave.enemies = Враги: [lightgray]{0}
wave.enemy = Остался [lightgray]{0} враг wave.enemy = Остался {0} [lightgray]враг[]
loadimage = Загрузить изображение loadimage = Загрузить изображение
saveimage = Сохранить изображение saveimage = Сохранить изображение
unknown = Неизвестно unknown = Неизвестно
@@ -270,12 +278,13 @@ missing = Этот предмет был удалён или перемещён.
publishing = [accent]Отправка... publishing = [accent]Отправка...
publish.confirm = Вы уверены, что хотите опубликовать этот предмет?\n\n[lightgray]Убедитесь, что Вы согласны с EULA Мастерской, иначе ваши предметы не будут отображаться! publish.confirm = Вы уверены, что хотите опубликовать этот предмет?\n\n[lightgray]Убедитесь, что Вы согласны с EULA Мастерской, иначе ваши предметы не будут отображаться!
publish.error = Ошибка отправки предмета: {0} publish.error = Ошибка отправки предмета: {0}
steam.error = Failed to initialize Steam services.\nError: {0} steam.error = Не удалось инициализировать сервисы Steam.\nОшибка: {0}
editor.brush = Кисть editor.brush = Кисть
editor.openin = Открыть в редакторе editor.openin = Открыть в редакторе
editor.oregen = Генерация руд editor.oregen = Генерация руд
editor.oregen.info = Генерация руд: editor.oregen.info = Генерация руд:
editor.mapinfo = Параметры карты editor.mapinfo = Информация о карте
editor.author = Автор: editor.author = Автор:
editor.description = Описание: editor.description = Описание:
editor.nodescription = Чтобы опубликовать карту, она должна содержать по крайней мере 4 символа в описании. editor.nodescription = Чтобы опубликовать карту, она должна содержать по крайней мере 4 символа в описании.
@@ -340,13 +349,14 @@ editor.exportimage = Экспортировать изображение лан
editor.exportimage.description = Экспортировать файл с изображением карты editor.exportimage.description = Экспортировать файл с изображением карты
editor.loadimage = Импортировать\nизображение editor.loadimage = Импортировать\nизображение
editor.saveimage = Экспортировать\nизображение editor.saveimage = Экспортировать\nизображение
editor.unsaved = [scarlet]У вас есть несохранённые изменения![]\nВы уверены, что хотите выйти? editor.unsaved = [scarlet]У Вас есть несохранённые изменения![]\nВы уверены, что хотите выйти?
editor.resizemap = Изменить размер карты editor.resizemap = Изменить размер карты
editor.mapname = Название карты: editor.mapname = Название карты:
editor.overwrite = [accent]Внимание! \nЭто перезапишет уже существующую карту. editor.overwrite = [accent]Внимание!\nЭто перезапишет уже существующую карту.
editor.overwrite.confirm = [scarlet]Осторожно![] Карта с таким названием уже существует. Вы действительно хотите её перезаписать? editor.overwrite.confirm = [scarlet]Осторожно![] Карта с таким названием уже существует. Вы действительно хотите её перезаписать?
editor.exists = Карта с таким именем уже существует. editor.exists = Карта с таким именем уже существует.
editor.selectmap = Выберите карту для загрузки: editor.selectmap = Выберите карту для загрузки:
toolmode.replace = Заменить toolmode.replace = Заменить
toolmode.replace.description = Рисует только\nна сплошных блоках. toolmode.replace.description = Рисует только\nна сплошных блоках.
toolmode.replaceall = Заменить всё toolmode.replaceall = Заменить всё
@@ -361,6 +371,7 @@ toolmode.fillteams = Изменить команду блоков
toolmode.fillteams.description = Изменяет принадлежность\nблоков к команде. toolmode.fillteams.description = Изменяет принадлежность\nблоков к команде.
toolmode.drawteams = Изменить команду блока toolmode.drawteams = Изменить команду блока
toolmode.drawteams.description = Изменяет принадлежность\nблока к команде. toolmode.drawteams.description = Изменяет принадлежность\nблока к команде.
filters.empty = [lightgray]Нет фильтров! Добавьте один при помощи кнопки ниже. filters.empty = [lightgray]Нет фильтров! Добавьте один при помощи кнопки ниже.
filter.distort = Искажение filter.distort = Искажение
filter.noise = Шум filter.noise = Шум
@@ -392,6 +403,7 @@ filter.option.floor2 = Вторая поверхность
filter.option.threshold2 = Вторичный предельный порог filter.option.threshold2 = Вторичный предельный порог
filter.option.radius = Радиус filter.option.radius = Радиус
filter.option.percentile = Процентиль filter.option.percentile = Процентиль
width = Ширина: width = Ширина:
height = Высота: height = Высота:
menu = Меню menu = Меню
@@ -407,10 +419,11 @@ tutorial = Обучение
tutorial.retake = Перепройти обучение tutorial.retake = Перепройти обучение
editor = Редактор editor = Редактор
mapeditor = Редактор карт mapeditor = Редактор карт
abandon = Покинуть abandon = Покинуть
abandon.text = Эта зона и все её ресурсы будут отданы противнику. abandon.text = Эта зона и все её ресурсы будут отданы противнику.
locked = Заблокировано locked = Заблокировано
complete = [lightgray]Достигнута: complete = [lightgray]Выполнить:
requirement.wave = Достигните {0} волны в зоне {1} requirement.wave = Достигните {0} волны в зоне {1}
requirement.core = Уничтожьте вражеское ядро в зоне {0} requirement.core = Уничтожьте вражеское ядро в зоне {0}
requirement.unlock = Разблокируйте {0} requirement.unlock = Разблокируйте {0}
@@ -429,14 +442,15 @@ addall = Добавить всё
configure.locked = [lightgray]Разблокировка выгрузки ресурсов: {0}. configure.locked = [lightgray]Разблокировка выгрузки ресурсов: {0}.
configure.invalid = Количество должно быть числом между 0 и {0}. configure.invalid = Количество должно быть числом между 0 и {0}.
zone.unlocked = Зона «[lightgray]{0}» теперь разблокирована. zone.unlocked = Зона «[lightgray]{0}» теперь разблокирована.
zone.requirement.complete = Вы достигли {0}-ой волны,\nУсловия для зоны «{1}» выполнены. zone.requirement.complete = Условия для зоны «{0}» выполнены:[lightgray]\n{1}
zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.config.unlocked = Выгрузка ресурсов разблокирована:[lightgray]\n{0}
zone.resources = [lightgray]Обнаруженные ресурсы: zone.resources = [lightgray]Обнаруженные ресурсы:
zone.objective = [lightgray]Цель: [accent]{0} zone.objective = [lightgray]Цель: [accent]{0}
zone.objective.survival = Выжить zone.objective.survival = Выжить
zone.objective.attack = Уничтожить вражеское ядро zone.objective.attack = Уничтожить вражеское ядро
add = Добавить… add = Добавить…
boss.health = Здоровье босса boss.health = Здоровье босса
connectfail = [crimson]Ошибка подключения:\n\n[accent]{0} connectfail = [crimson]Ошибка подключения:\n\n[accent]{0}
error.unreachable = Сервер недоступен.\nВы уверены, что адрес введён корректно? error.unreachable = Сервер недоступен.\nВы уверены, что адрес введён корректно?
error.invalidaddress = Некорректный адрес. error.invalidaddress = Некорректный адрес.
@@ -446,11 +460,12 @@ error.alreadyconnected = Вы уже подключены.
error.mapnotfound = Файл карты не найден! error.mapnotfound = Файл карты не найден!
error.io = Сетевая ошибка ввода-вывода. error.io = Сетевая ошибка ввода-вывода.
error.any = Неизвестная сетевая ошибка. error.any = Неизвестная сетевая ошибка.
error.bloom = Не удалось инициализировать свечение (Bloom).\nВозможно, ваше устройство не поддерживает его. error.bloom = Не удалось инициализировать свечение (Bloom).\nВозможно, Ваше устройство не поддерживает его.
zone.groundZero.name = Отправная точка zone.groundZero.name = Отправная точка
zone.desertWastes.name = Покинутые пустоши zone.desertWastes.name = Покинутые пустоши
zone.craters.name = Кратеры zone.craters.name = Кратеры
zone.frozenForest.name = Ледяной Лес zone.frozenForest.name = Ледяной лес
zone.ruinousShores.name = Разрушенные берега zone.ruinousShores.name = Разрушенные берега
zone.stainedMountains.name = Окрашенные горы zone.stainedMountains.name = Окрашенные горы
zone.desolateRift.name = Пустынный разлом zone.desolateRift.name = Пустынный разлом
@@ -461,20 +476,22 @@ zone.saltFlats.name = Соляные равнины
zone.impact0078.name = Воздействие 0078 zone.impact0078.name = Воздействие 0078
zone.crags.name = Скалы zone.crags.name = Скалы
zone.fungalPass.name = Грибной перевал zone.fungalPass.name = Грибной перевал
zone.groundZero.description = Оптимальная локация для повторных игр. Низкая вражеская угроза. Немного ресурсов.\nСоберите как можно больше свинца и меди.\nДвигайтесь дальше. zone.groundZero.description = Оптимальная локация для повторных игр. Низкая вражеская угроза. Немного ресурсов.\nСоберите как можно больше свинца и меди.\nДвигайтесь дальше.
zone.frozenForest.description = Даже здесь, ближе к горам, споры распространились. Холодные температуры не могут сдерживать их вечно.\n\nНачните вкладываться в энергию. Постройте генераторы внутреннего сгорания. Научитесь пользоваться регенератором. zone.frozenForest.description = Даже здесь, ближе к горам, споры распространились. Холодные температуры не могут сдерживать их вечно.\n\nНачните вкладываться в энергию. Постройте генераторы внутреннего сгорания. Научитесь пользоваться регенератором.
zone.desertWastes.description = Эти пустоши огромны, непредсказуемы и пронизаны заброшенными секторальными структурами.\nВ регионе присутствует уголь. Сожгите его для получения энергии, или синтезируйте графит.\n\n[lightgray]Место посадки здесь может не быть гарантировано. zone.desertWastes.description = Эти пустоши огромны, непредсказуемы и пронизаны заброшенными секторальными структурами.\nВ регионе присутствует уголь. Сожгите его для получения энергии, или синтезируйте графит.\n\n[lightgray]Место посадки здесь может не быть гарантировано.
zone.saltFlats.description = На окраине пустыни лежат соляные равнины. В этой местности можно найти немного ресурсов.\n\nВраги возвели здесь комплекс хранения ресурсов. Искорените их ядро. Не оставьте камня на камне. zone.saltFlats.description = На окраине пустыни лежат соляные равнины. В этой местности можно найти немного ресурсов.\n\nВраги возвели здесь комплекс хранения ресурсов. Искорените их ядро. Не оставьте камня на камне.
zone.craters.description = Вода скопилась в этом кратере, реликвии времён старых войн. Восстановите область. Соберите песок. Выплавите метастекло. Качайте воду для охлаждения турелей и буров. zone.craters.description = Вода скопилась в этом кратере, реликвии времён старых войн. Восстановите область. Соберите песок. Выплавьте метастекло. Качайте воду для охлаждения турелей и буров.
zone.ruinousShores.description = Мимо пустошей проходит береговая линия. Когда-то здесь располагался массив береговой обороны. Не так много от него осталось. Только самые базовые оборонительные сооружения остались невредимыми, всё остальное превратилось в металлолом.\nПродолжайте экспансию вовне. Переоткройте для себя технологии. zone.ruinousShores.description = Мимо пустошей проходит береговая линия. Когда-то здесь располагался массив береговой обороны. Не так много от него осталось. Только самые базовые оборонительные сооружения остались невредимыми, всё остальное превратилось в металлолом.\nПродолжайте экспансию вовне. Переоткройте для себя технологии.
zone.stainedMountains.description = Дальше, вглубь местности, лежат горы, еще не запятнанные спорами.\nИзвлеките изобилие титана в этой области. Узнайте, как его использовать.\n\nВражеское присутствие здесь сильнее. Не дайте им времени для отправки своих сильнейших боевых единиц. zone.stainedMountains.description = Дальше, вглубь местности, лежат горы, еще не запятнанные спорами.\nИзвлеките изобилие титана в этой области. Научитесь им пользоваться.\n\nВражеское присутствие здесь сильнее. Не дайте им времени для отправки своих сильнейших боевых единиц.
zone.overgrowth.description = Эта заросшая область находится ближе к источнику спор.\nВраг организовал здесь форпост. Постройте боевые единицы «Титан». Уничтожьте его. Верните то, что было потеряно. zone.overgrowth.description = Эта заросшая область находится ближе к источнику спор.\nВраг организовал здесь форпост. Постройте боевые единицы «Титан». Уничтожьте его. Верните то, что было потеряно.
zone.tarFields.description = Окраина зоны нефтедобычи, между горами и пустыней. Один из немногих районов с полезными запасами дёгтя.\nХотя область заброшенна, в этой области присутствуют поблизости некоторые опасные вражеские силы. Не стоит их недооценивать.\n\n[lightgray]Исследуйте технологию переработки нефти, если возможно. zone.tarFields.description = Окраина зоны нефтедобычи, между горами и пустыней. Один из немногих районов с полезными запасами дёгтя.\nХотя эта область заброшенна, в ней поблизости присутствуют некоторые опасные вражеские силы. Не стоит их недооценивать.\n\n[lightgray]Исследуйте технологию переработки нефти, если возможно.
zone.desolateRift.description = Чрезвычайно опасная зона. Обилие ресурсов, но мало места. Высокий риск разрушения. Эвакуироваться нужно как можно скорее. Не расслабляйтесь во время больших перерывов между вражескими атаками. zone.desolateRift.description = Чрезвычайно опасная зона. Обилие ресурсов, но мало места. Высокий риск разрушения. Эвакуироваться нужно как можно скорее. Не расслабляйтесь во время больших перерывов между вражескими атаками.
zone.nuclearComplex.description = Бывший завод по производству и переработке тория, превращенный в руины.\n[lightgray]Исследуйте торий и варианты его многочисленного применения.\n\nВраг присутствует здесь в большом числе, постоянно разведывая нападающих. zone.nuclearComplex.description = Бывший завод по производству и переработке тория, превращенный в руины.\n[lightgray]Исследуйте торий и варианты его многочисленного применения.\n\nВраг присутствует здесь в большом числе, постоянно разведывая нападающих.
zone.fungalPass.description = Переходная область между высокими горами и более низкими, покрытыми спорами землями. Здесь расположена небольшая разведывательная база противника.\nУничтожьте ее.\nИспользуйте единицы «Кинжал» и «Камикадзе». Достаньте до обоих ядер. zone.fungalPass.description = Переходная область между высокими горами и более низкими, покрытыми спорами землями. Здесь расположена небольшая разведывательная база противника.\nУничтожьте ее.\nИспользуйте единицы «Кинжал» и «Камикадзе». Достаньте до обоих ядер.
zone.impact0078.description = <вставить описание здесь> zone.impact0078.description = <вставить описание здесь>
zone.crags.description = <вставить описание здесь> zone.crags.description = <вставить описание здесь>
settings.language = Язык settings.language = Язык
settings.data = Игровые данные settings.data = Игровые данные
settings.reset = Сбросить по умолчанию settings.reset = Сбросить по умолчанию
@@ -508,8 +525,8 @@ blocks.launchtime = Интервал запусков
blocks.shootrange = Радиус действия blocks.shootrange = Радиус действия
blocks.size = Размер blocks.size = Размер
blocks.liquidcapacity = Вместимость жидкости blocks.liquidcapacity = Вместимость жидкости
blocks.powerrange = Диапазон передачи энергии blocks.powerrange = Дальность передачи энергии
blocks.powerconnections = Max Connections blocks.powerconnections = Количество соединений
blocks.poweruse = Потребляет энергии blocks.poweruse = Потребляет энергии
blocks.powerdamage = Энергия/урон blocks.powerdamage = Энергия/урон
blocks.itemcapacity = Вместимость предметов blocks.itemcapacity = Вместимость предметов
@@ -529,9 +546,10 @@ blocks.inaccuracy = Разброс
blocks.shots = Выстрелы blocks.shots = Выстрелы
blocks.reload = Выстрелы/секунду blocks.reload = Выстрелы/секунду
blocks.ammo = Боеприпасы blocks.ammo = Боеприпасы
bar.drilltierreq = Требуется лучший бур
bar.drillspeed = Скорость бурения: {0}/s bar.drilltierreq = Требуется бур получше
bar.pumpspeed = Pump Speed: {0}/s bar.drillspeed = Скорость бурения: {0}/с
bar.pumpspeed = Скорость выкачивания: {0}/с
bar.efficiency = Эффективность: {0}% bar.efficiency = Эффективность: {0}%
bar.powerbalance = Энергия: {0}/с bar.powerbalance = Энергия: {0}/с
bar.powerstored = Накоплено: {0}/{1} bar.powerstored = Накоплено: {0}/{1}
@@ -544,6 +562,9 @@ bar.heat = Нагрев
bar.power = Энергия bar.power = Энергия
bar.progress = Прогресс строительства bar.progress = Прогресс строительства
bar.spawned = Единицы: {0}/{1} bar.spawned = Единицы: {0}/{1}
bar.input = Вход
bar.output = Выход
bullet.damage = [stat]{0}[lightgray] урона bullet.damage = [stat]{0}[lightgray] урона
bullet.splashdamage = [stat]{0}[lightgray] урона в радиусе ~[stat] {1}[lightgray] блоков bullet.splashdamage = [stat]{0}[lightgray] урона в радиусе ~[stat] {1}[lightgray] блоков
bullet.incendiary = [stat]зажигательный bullet.incendiary = [stat]зажигательный
@@ -555,6 +576,7 @@ bullet.freezing = [stat]замораживающий
bullet.tarred = [stat]замедляющий, горючий bullet.tarred = [stat]замедляющий, горючий
bullet.multiplier = [stat]{0}[lightgray]x множитель боеприпасов bullet.multiplier = [stat]{0}[lightgray]x множитель боеприпасов
bullet.reload = [stat]{0}[lightgray]x скорость стрельбы bullet.reload = [stat]{0}[lightgray]x скорость стрельбы
unit.blocks = блоки unit.blocks = блоки
unit.powersecond = единиц энергии/секунду unit.powersecond = единиц энергии/секунду
unit.liquidsecond = жидкостных единиц/секунду unit.liquidsecond = жидкостных единиц/секунду
@@ -567,6 +589,8 @@ unit.persecond = /сек
unit.timesspeed = x скорость unit.timesspeed = x скорость
unit.percent = % unit.percent = %
unit.items = предметов unit.items = предметов
unit.thousands = тыс
unit.millions = мил
category.general = Основные category.general = Основные
category.power = Энергия category.power = Энергия
category.liquids = Жидкости category.liquids = Жидкости
@@ -576,9 +600,10 @@ category.shooting = Стрельба
category.optional = Дополнительные улучшения category.optional = Дополнительные улучшения
setting.landscape.name = Только альбомный (горизонтальный) режим setting.landscape.name = Только альбомный (горизонтальный) режим
setting.shadows.name = Тени setting.shadows.name = Тени
setting.blockreplace.name = Automatic Block Suggestions setting.blockreplace.name = Автоматическая замена блоков
setting.linear.name = Линейная фильтрация setting.linear.name = Линейная фильтрация
setting.hints.name = Подсказки setting.hints.name = Подсказки
setting.buildautopause.name = Автоматическая приостановка строительства
setting.animatedwater.name = Анимированная вода setting.animatedwater.name = Анимированная вода
setting.animatedshields.name = Анимированные щиты setting.animatedshields.name = Анимированные щиты
setting.antialias.name = Сглаживание[lightgray] (требует перезапуска)[] setting.antialias.name = Сглаживание[lightgray] (требует перезапуска)[]
@@ -599,14 +624,17 @@ setting.difficulty.insane = Безумная
setting.difficulty.name = Сложность: setting.difficulty.name = Сложность:
setting.screenshake.name = Тряска экрана setting.screenshake.name = Тряска экрана
setting.effects.name = Эффекты setting.effects.name = Эффекты
setting.destroyedblocks.name = Display Destroyed Blocks setting.destroyedblocks.name = Отображать уничтоженные блоки
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding setting.conveyorpathfinding.name = Поиск пути для установки конвейеров
setting.sensitivity.name = Чувствительность контроллера setting.sensitivity.name = Чувствительность контроллера
setting.saveinterval.name = Интервал сохранения setting.saveinterval.name = Интервал сохранения
setting.seconds = {0} секунд setting.seconds = {0} секунд
setting.blockselecttimeout.name = Тайм-аут выбора блока
setting.milliseconds = {0} миллисекунд
setting.fullscreen.name = Полноэкранный режим setting.fullscreen.name = Полноэкранный режим
setting.borderlesswindow.name = Безрамочное окно[lightgray] (может потребоваться перезапуск) setting.borderlesswindow.name = Безрамочное окно[lightgray] (может потребоваться перезапуск)
setting.fps.name = Показывать FPS setting.fps.name = Показывать FPS и пинг
setting.blockselectkeys.name = Показать клавиши выбора блока
setting.vsync.name = Вертикальная синхронизация setting.vsync.name = Вертикальная синхронизация
setting.pixelate.name = Пикселизация[lightgray] (отключает анимации) setting.pixelate.name = Пикселизация[lightgray] (отключает анимации)
setting.minimap.name = Отображать мини-карту setting.minimap.name = Отображать мини-карту
@@ -635,17 +663,36 @@ category.multiplayer.name = Сетевая игра
command.attack = Атаковать command.attack = Атаковать
command.rally = Точка сбора command.rally = Точка сбора
command.retreat = Отступить command.retreat = Отступить
placement.blockselectkeys = \n[lightgray]Клавиша: [{0},
keybind.clear_building.name = Очистить план строительства keybind.clear_building.name = Очистить план строительства
keybind.press = Нажмите клавишу… keybind.press = Нажмите клавишу…
keybind.press.axis = Нажмите оси или клавишу… keybind.press.axis = Нажмите оси или клавишу…
keybind.screenshot.name = Скриншот карты keybind.screenshot.name = Скриншот карты
keybind.move_x.name = Движение по оси x keybind.toggle_power_lines.name = Отображение линий энергоснабжения
keybind.move_y.name = Движение по оси y keybind.move_x.name = Движение по оси X
keybind.move_y.name = Движение по оси Y
keybind.category_prev.name = Предыдущая категория
keybind.category_next.name = Следующая категория
keybind.block_select_left.name = Выбор левого блока
keybind.block_select_right.name = Выбор правого блока
keybind.block_select_up.name = Выбор верхнего блока
keybind.block_select_down.name = Выбор нижнего блока
keybind.block_select_01.name = Категория/Выбор блока 1
keybind.block_select_02.name = Категория/Выбор блока 2
keybind.block_select_03.name = Категория/Выбор блока 3
keybind.block_select_04.name = Категория/Выбор блока 4
keybind.block_select_05.name = Категория/Выбор блока 5
keybind.block_select_06.name = Категория/Выбор блока 6
keybind.block_select_07.name = Категория/Выбор блока 7
keybind.block_select_08.name = Категория/Выбор блока 8
keybind.block_select_09.name = Категория/Выбор блока 9
keybind.block_select_10.name = Категория/Выбор блока 10
keybind.mouse_move.name = Следовать за курсором
keybind.schematic_select.name = Выбрать область keybind.schematic_select.name = Выбрать область
keybind.schematic_menu.name = Меню схем keybind.schematic_menu.name = Меню схем
keybind.schematic_flip_x.name = Отразить схему по оси X keybind.schematic_flip_x.name = Отразить схему по оси X
keybind.schematic_flip_y.name = Отразить схему по оси Y keybind.schematic_flip_y.name = Отразить схему по оси Y
keybind.fullscreen.name = Полноэкранный режим keybind.fullscreen.name = Переключение полноэкранного режима
keybind.select.name = Выбор/Выстрел keybind.select.name = Выбор/Выстрел
keybind.diagonal_placement.name = Диагональное размещение keybind.diagonal_placement.name = Диагональное размещение
keybind.pick.name = Выбрать блок keybind.pick.name = Выбрать блок
@@ -681,7 +728,9 @@ mode.pvp.description = Боритесь против других игроков
mode.attack.name = Атака mode.attack.name = Атака
mode.attack.description = Уничтожьте вражескую базу. Никаких волн.\n[gray]Для игры требуется красное ядро на карте. mode.attack.description = Уничтожьте вражескую базу. Никаких волн.\n[gray]Для игры требуется красное ядро на карте.
mode.custom = Пользовательские правила mode.custom = Пользовательские правила
rules.infiniteresources = Бесконечные ресурсы (Игрок) rules.infiniteresources = Бесконечные ресурсы (Игрок)
rules.reactorexplosions = Взрывы реакторов
rules.wavetimer = Интервал волн rules.wavetimer = Интервал волн
rules.waves = Волны rules.waves = Волны
rules.attack = Режим атаки rules.attack = Режим атаки
@@ -707,6 +756,10 @@ rules.title.resourcesbuilding = Ресурсы & строительство
rules.title.player = Игроки rules.title.player = Игроки
rules.title.enemy = Враги rules.title.enemy = Враги
rules.title.unit = Боев. ед. rules.title.unit = Боев. ед.
rules.title.experimental = Эксперементально
rules.lighting = Освещение
rules.ambientlight = Окружающий свет
content.item.name = Предметы content.item.name = Предметы
content.liquid.name = Жидкости content.liquid.name = Жидкости
content.unit.name = Боевые единицы content.unit.name = Боевые единицы
@@ -768,6 +821,7 @@ mech.buildspeed = [lightgray]Скорость строительства: {0}%
liquid.heatcapacity = [lightgray]Теплоёмкость: {0} liquid.heatcapacity = [lightgray]Теплоёмкость: {0}
liquid.viscosity = [lightgray]Вязкость: {0} liquid.viscosity = [lightgray]Вязкость: {0}
liquid.temperature = [lightgray]Температура: {0} liquid.temperature = [lightgray]Температура: {0}
block.sand-boulder.name = Песчаный валун block.sand-boulder.name = Песчаный валун
block.grass.name = Трава block.grass.name = Трава
block.salt.name = Соль block.salt.name = Соль
@@ -866,6 +920,8 @@ block.distributor.name = Распределитель
block.sorter.name = Сортировщик block.sorter.name = Сортировщик
block.inverted-sorter.name = Инвертированный сортировщик block.inverted-sorter.name = Инвертированный сортировщик
block.message.name = Сообщение block.message.name = Сообщение
block.illuminator.name = Осветитель
block.illuminator.description = Маленький, компактный, настраиваемый источник света. Требуется энергия для работы.
block.overflow-gate.name = Избыточный затвор block.overflow-gate.name = Избыточный затвор
block.silicon-smelter.name = Кремниевый плавильный завод block.silicon-smelter.name = Кремниевый плавильный завод
block.phase-weaver.name = Фазовый ткач block.phase-weaver.name = Фазовый ткач
@@ -879,6 +935,7 @@ block.coal-centrifuge.name = Угольная центрифуга
block.power-node.name = Силовой узел block.power-node.name = Силовой узел
block.power-node-large.name = Большой силовой узел block.power-node-large.name = Большой силовой узел
block.surge-tower.name = Кинетическая вышка block.surge-tower.name = Кинетическая вышка
block.diode.name = Диод
block.battery.name = Аккумулятор block.battery.name = Аккумулятор
block.battery-large.name = Большой аккумулятор block.battery-large.name = Большой аккумулятор
block.combustion-generator.name = Генератор внутреннего сгорания block.combustion-generator.name = Генератор внутреннего сгорания
@@ -931,6 +988,7 @@ block.fortress-factory.name = Завод мехов «Крепость»
block.revenant-factory.name = Завод крейсеров «Мститель» block.revenant-factory.name = Завод крейсеров «Мститель»
block.repair-point.name = Ремонтный пункт block.repair-point.name = Ремонтный пункт
block.pulse-conduit.name = Импульсный трубопровод block.pulse-conduit.name = Импульсный трубопровод
block.plated-conduit.name = Укреплённый трубопровод
block.phase-conduit.name = Фазовый трубопровод block.phase-conduit.name = Фазовый трубопровод
block.liquid-router.name = Жидкостный маршрутизатор block.liquid-router.name = Жидкостный маршрутизатор
block.liquid-tank.name = Жидкостный бак block.liquid-tank.name = Жидкостный бак
@@ -982,37 +1040,38 @@ unit.eradicator.name = Искоренитель
unit.lich.name = Лич unit.lich.name = Лич
unit.reaper.name = Жнец unit.reaper.name = Жнец
tutorial.next = [lightgray]<Нажмите для продолжения> tutorial.next = [lightgray]<Нажмите для продолжения>
tutorial.intro = Вы начали[scarlet] обучение по Mindustry.[]\nНачните с [accent]добычи меди[]. Нажмите на медную жилу возле Вашего ядра, чтобы сделать это.\n\n[accent]{0}/{1} меди tutorial.intro = Вы начали[scarlet] обучение по Mindustry.[]\nИспользуйте кнопки [accent][[WASD][] для передвижения.\n[accent]Зажмите [[Ctrl] и покрутите колесо мыши[]для приближения или отдаления камеры.\nНачните с [accent]добычи меди[]. Приблизьтесь к ней, затем нажмите на медную жилу возле Вашего ядра, чтобы сделать это.\n\n[accent]{0}/{1} меди
tutorial.intro.mobile = Вы начали[scarlet] обучение по Mindustry.[]\nПроведите по экрану, чтобы двигаться.\n[accent] Сведите или разведите 2 пальца для []изменения масштаба.\nНачните с [accent]добычи меди[]. Приблизьтесь к ней, затем нажмите на медную жилу возле Вашего ядра, чтобы сделать это.\n\n[accent]{0}/{1} меди tutorial.intro.mobile = Вы начали[scarlet] обучение по Mindustry.[]\nПроведите по экрану, чтобы двигаться.\n[accent]Сведите или разведите 2 пальца[] для изменения масштаба.\nНачните с [accent]добычи меди[]. Приблизьтесь к ней, затем нажмите на медную жилу возле Вашего ядра, чтобы сделать это.\n\n[accent]{0}/{1} меди
tutorial.drill = Ручная добыча не является эффективной.\n[accent]Буры []могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[]. Разместите его на медной жиле нажатием.\n[accent]Нажатие по правой кнопке[] прервёт строительство. [accent]Зажмите Ctrl и покрутите колесо мыши[]для приближения или отдаления камеры. tutorial.drill = Ручная добыча не является эффективной.\n[accent]Буры[] могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[]. Разместите его на медной жиле нажатием.\n[accent]Нажатие по правой кнопке[] прервёт строительство.
tutorial.drill.mobile = Ручная добыча не является эффективной.\n[accent]Буры []могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[]. \nРазместите его на медной жиле нажатием, затемм нажмите [accent] белую галку[] ниже, чтобы подтвердить построение выделенного.\nНажмите [accent] кнопку X[], чтобы отменить размещение. tutorial.drill.mobile = Ручная добыча не является эффективной.\n[accent]Буры []могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[].\nРазместите его на медной жиле нажатием, затем нажмите [accent] белую галку[] ниже, чтобы подтвердить построение выделенного.\nНажмите [accent] кнопку X[], чтобы отменить размещение.
tutorial.blockinfo = Каждый блок имеет разные характеристики. Каждая дрель может добывать определенные руды.\nЧтобы узнать информацию о блоке и о его характеристиках,[accent] нажмите на «?», когда он выбран в меню строительства.[]\n\n[accent]Сейчас, узнайте характеристики механического бура.[] tutorial.blockinfo = Каждый блок имеет разные характеристики. Каждая дрель может добывать определенные руды.\nЧтобы узнать информацию о блоке и о его характеристиках,[accent] нажмите на «?», когда он выбран в меню строительства.[]\n\n[accent]Сейчас, узнайте характеристики механического бура.[]
tutorial.conveyor = [accent]Конвейеры[] используются для транспортировки ресуров в ядро.\nСделайте линию конвейеров от бура к ядру\n[accent]Удерживайте левую кнопку мыши, чтобы разместить в линию.[]\nУдерживайте[accent] CTRL[] при постройке линии блоков, чтобы сделать её диагональной\n\n[accent]Разместите 2 конвейера в линию и доставьте предметы в ядро. tutorial.conveyor = [accent]Конвейеры[] используются для транспортировки ресуров в ядро.\nСделайте линию конвейеров от бура к ядру\n[accent]Удерживайте левую кнопку мыши, чтобы разместить в линию.[]\nУдерживайте[accent] CTRL[] при постройке линии блоков, чтобы сделать её диагональной\n\n[accent]Разместите 2 конвейера в линию и доставьте предметы в ядро.
tutorial.conveyor.mobile = [accent]Конвейеры[] используются для транспортировки ресурсов в ядро\nСделайте линию конвейеров от бура к ядру\n[accent]Сделайте линию, удерживая палец несколько секунд в том месте, в котором Вы хотите начать линию,[] и перетяните его в нужном направлении.[accent]Разместите 2 конвейера в линию и доставьте предметы в ядро. tutorial.conveyor.mobile = [accent]Конвейеры[] используются для транспортировки ресурсов в ядро\nСделайте линию конвейеров от бура к ядру\n[accent]Сделайте линию, удерживая палец несколько секунд в том месте, в котором Вы хотите начать линию,[] и перетяните его в нужном направлении.[accent]Разместите 2 конвейера в линию и доставьте предметы в ядро.
tutorial.turret = Как только предмет попадает в ядро, его можно использовать в строительстве.\nИмейте в виду, что не все предметы могут быть использованы в строительстве.\nПредметы, которые нелья использовать для стоительства, такие как[accent] уголь[] или[accent] металлолом[], не могут быть транспортированы в ядро.\nЗащитные структуры нужно строить для отражения[lightgray] противников[].\nПостройте[accent] двойную турель[] возле Вашей базы. tutorial.turret = Как только предмет попадает в ядро, его можно использовать в строительстве.\nИмейте в виду, что не все предметы могут быть использованы в строительстве.\nПредметы, которые нелья использовать для стоительства, такие как[accent] уголь[] или[accent] металлолом[], не могут быть транспортированы в ядро.\nЗащитные структуры нужно строить для отражения[lightgray] противников[].\nПостройте[accent] двойную турель[] возле Вашей базы.
tutorial.drillturret = Двойным турелям нужна [accent]медь []в качестве боеприпасов.\nРазместите бур рядом с турелью.\nПроведите конвейеры к турели, чтобы снабдить её медью.\n\n[accent]Боеприпасов доставлено: 0/1 tutorial.drillturret = Двойным турелям нужна [accent]медные боеприпасы[] для стрельбы.\nРазместите бур рядом с турелью.\nПроведите конвейеры к турели, чтобы снабдить её медью.\n\n[accent]Боеприпасов доставлено: 0/1
tutorial.pause = Во время битвы Вы можете[accent] приостановить игру.[]\nВы можете планировать строительство, когда игра стоит на паузе.\n\n[accent]Нажмите ПРОБЕЛ для приостановки игры. tutorial.pause = Во время битвы, Вы можете[accent] приостановить игру.[]\nВы можете планировать строительство, когда игра стоит на паузе.\n\n[accent]Нажмите ПРОБЕЛ для приостановки игры.
tutorial.pause.mobile = Во время битвы, Вы можете[accent] приостановить игру.[]\nВы можеть планировать строительство, когда игра стоит на паузе.\n\n[accent]Нажмите кнопку вверху слева, чтобы поставить игру на паузу. tutorial.pause.mobile = Во время битвы, Вы можете[accent] приостановить игру.[]\nВы можеть планировать строительство, когда игра стоит на паузе.\n\n[accent]Нажмите кнопку вверху слева, чтобы поставить игру на паузу.
tutorial.unpause = Снова нажмите пробел для снятия паузы. tutorial.unpause = Снова нажмите пробел для снятия паузы.
tutorial.unpause.mobile = Снова нажмите туда для снятия паузы. tutorial.unpause.mobile = Снова нажмите туда для снятия паузы.
tutorial.breaking = Зачастую, блоки приходится разрушать\n[accent]Зажмите ПКМ[], чтобы разрушить блоки в выбранной зоне.[]\n\n[accent]Разрушьте все стены из металлолома слева от Вашего ядра. tutorial.breaking = Зачастую, блоки приходится разрушать\n[accent]Зажмите ПКМ[], чтобы разрушить блоки в выбранной зоне.[]\n\n[accent]Разрушьте все стены из металлолома слева от Вашего ядра.
tutorial.breaking.mobile = Зачастую, блоки приходится разрушить.\n[accent]Выберите режим деконструкции[], после чего нажмите на нужный блок, чтобы разрушить его.\nРазрушьте блоки в выбранной зоне, зажав палец на несколько секунд[], и проведя его в нужном направлении.\nНажмите на галочку, чтобы подтвердить разрушение.\n\n[accent]Разрушьте все стены из металлолома слева от Вашего ядра. tutorial.breaking.mobile = Зачастую, блоки приходится разрушать.\n[accent]Выберите режим деконструкции[], после чего нажмите на нужный блок, чтобы разрушить его.\nРазрушьте блоки в выбранной зоне, зажав палец на несколько секунд[], и проведя его в нужном направлении.\nНажмите на галочку, чтобы подтвердить разрушение.\n\n[accent]Разрушьте все стены из металлолома слева от Вашего ядра.
tutorial.withdraw = В некоторых ситуациях, необходимо забрать предметы из блоков вручную.\nЧтобы сделать это, [accent]нажмите на блок[], в котором находятся предметы, затем [accent]нажмите на предмет[] в инвентаре.\nМожно забрать несколько предметов [accent]нажатием с зажимом[].\n\n[accent]Заберите немного меди из ядра[] tutorial.withdraw = В некоторых ситуациях, необходимо забрать предметы из блоков вручную.\nЧтобы сделать это, [accent]нажмите на блок[], в котором находятся предметы, затем [accent]нажмите на предмет[] в инвентаре.\nМожно забрать несколько предметов [accent]нажатием с зажимом[].\n\n[accent]Заберите немного меди из ядра[]
tutorial.deposit = Положить предметы в блоки можно перетащив от своего корабля к нужному блоку.\n\n[accent]Перенесите медь обратно в ядро[] tutorial.deposit = Положите предметы в блок, перетащив их от своего корабля в нужный блок.\n\n[accent]Перенесите медь обратно в ядро[]
tutorial.waves = [lightgray]Противники[] приближаются.\n\nЗащитите ядро от двух волн. Используйте[accent] левую кнопку мыши[] для стрельбы.\nПостройте больше турелей и буров. Добудьте больше меди. tutorial.waves = [lightgray]Противники[] приближаются.\n\nЗащитите ядро от двух волн. Используйте[accent] левую кнопку мыши[] для стрельбы.\nПостройте больше турелей и буров. Добудьте больше меди.
tutorial.waves.mobile = [lightgray]Противники[] приближаются.\n\nЗащитите ядро от двух волн. Ваш корабль будет автоматически атаковать противника.\nПостройте больше турелей и буров. Добудьте больше меди. tutorial.waves.mobile = [lightgray]Противники[] приближаются.\n\nЗащитите ядро от двух волн. Ваш корабль будет автоматически атаковать противника.\nПостройте больше турелей и буров. Добудьте больше меди.
tutorial.launch = Когда Вы достигаете определенной волны, Вы можете осуществить[accent] запуск ядра[], оставив базу и[accent] перенести ресурсы из ядра.[]\nЭти ресурсы могут быть использованы для изучения новых технологий.\n\n[accent]Нажмите кнопку запуска. tutorial.launch = Когда Вы достигаете определенной волны, Вы можете осуществить[accent] запуск ядра[], оставив базу и[accent] перенести ресурсы из ядра.[]\nЭти ресурсы могут быть использованы для изучения новых технологий.\n\n[accent]Нажмите кнопку запуска.
item.copper.description = Самый основной строительный материал. Широко используется во всех типах блоков. item.copper.description = Самый основной строительный материал. Широко используется во всех типах блоков.
item.lead.description = Основной стартовый материал. Широко используется в электронике и блоках для транспортировки жидкостей. item.lead.description = Основной стартовый материал. Широко используется в электронике и блоках для транспортировки жидкостей.
item.metaglass.description = Сверхпрочный сплав стекла. Широко используется для распределения и хранения жидкости. item.metaglass.description = Сверхпрочный сплав стекла. Широко используется для распределения и хранения жидкости.
item.graphite.description = Минерализованный углерод, используемый для боеприпасов и электроизоляции. item.graphite.description = Минерализованный углерод, используемый для боеприпасов и электроизоляции.
item.sand.description = Обычный материал, который широко используется при выплавке, как при легировании, так и в качестве отходов. item.sand.description = Обычный материал, который широко используется при выплавке, как при легировании, так и в качестве флюса.
item.coal.description = Окаменелое растительное вещество, образовавшееся задолго до посева. Широко используется для производства топлива и ресурсов. item.coal.description = Окаменелое растительное вещество, образовавшееся задолго до посева. Широко используется для производства топлива и ресурсов.
item.titanium.description = Редкий сверхлёгкий металл, широко используемый для транспортировки жидкостей, буров и авиации. item.titanium.description = Редкий сверхлёгкий металл, широко используемый для транспортировки жидкостей, буров и авиации.
item.thorium.description = Плотный радиоактивный металл, используемый в качестве структурной опоры и ядерного топлива. item.thorium.description = Плотный радиоактивный металл, используемый в качестве структурной опоры и ядерного топлива.
item.scrap.description = Остатки старых сооружений и подразделений. Содержит небольшие количества многих различных металлов. item.scrap.description = Остатки старых сооружений и подразделений. Содержит небольшие количества многих различных металлов.
item.silicon.description = Чрезвычайно полезный полупроводник. Применяется в солнечных панелях, сложной электронике и самонаводящихся боеприпасах. item.silicon.description = Чрезвычайно полезный полупроводник. Применяется в солнечных панелях, сложной электронике и самонаводящихся боеприпасах.
item.plastanium.description = Лёгкий, пластичный материал, используемый в современных авиационных и осколочных боеприпасах. item.plastanium.description = Лёгкий, пластичный материал, используемый в продвинутой авиации и осколочных боеприпасах.
item.phase-fabric.description = Практически невесомое вещество, используемое в передовой электронике и технологиях самовосстановления. item.phase-fabric.description = Практически невесомое вещество, используемое в передовой электронике и технологиях самовосстановления.
item.surge-alloy.description = Современный сплав с уникальными электрическими свойствами. item.surge-alloy.description = Современный сплав с уникальными электрическими свойствами.
item.spore-pod.description = Стручок синтетических спор, синтезированных из атмосферных концентраций для промышленных целей. Используется для превращения в нефть, взрывчатые вещества и топливо. item.spore-pod.description = Стручок синтетических спор, синтезированных из атмосферных концентраций для промышленных целей. Используется для превращения в нефть, взрывчатые вещества и топливо.
@@ -1024,9 +1083,9 @@ liquid.oil.description = Жидкость, используемая в прои
liquid.cryofluid.description = Инертная, неедкая жидкость, созданная из воды и титана. Обладает чрезвычайно высокой теплоёмкостью. Широко используется в качестве охлаждающей жидкости. liquid.cryofluid.description = Инертная, неедкая жидкость, созданная из воды и титана. Обладает чрезвычайно высокой теплоёмкостью. Широко используется в качестве охлаждающей жидкости.
mech.alpha-mech.description = Стандартный управляемый мех. Основан на «Кинжале», с улучшенной броней и строительными возможностями. Имеет больший урон, чем «Дротик». mech.alpha-mech.description = Стандартный управляемый мех. Основан на «Кинжале», с улучшенной броней и строительными возможностями. Имеет больший урон, чем «Дротик».
mech.delta-mech.description = Быстрый, легко бронированный мех, созданный для ударов «атакуй и беги». Наносит мало урона по строениям, но может очень быстро убить большие группы вражеских орудий с помощью дуговых молний. mech.delta-mech.description = Быстрый, легко бронированный мех, созданный для ударов «атакуй и беги». Наносит мало урона по строениям, но может очень быстро убить большие группы вражеских орудий с помощью дуговых молний.
mech.tau-mech.description = Мех поддержки. Ремонтирует союзные блоки просто стреляя в них. Может лечить союзников в радиусе его ремонтирующей способности. mech.tau-mech.description = Мех поддержки. Ремонтирует союзные блоки, просто стреляя в них. Может лечить союзников в радиусе его ремонтирующей способности.
mech.omega-mech.description = Громоздкий и хорошо бронированный мех, созданный для передовых атак. Его броня может блокировать до 90% входящего урона. mech.omega-mech.description = Громоздкий и хорошо бронированный мех, созданный для передовых атак. Его броня может блокировать до 90% входящего урона.
mech.dart-ship.description = Стандартный управляемый корабль. Достаточно быстрый и легкий, но мало атакующий и обладает низкой скоростью добычи. mech.dart-ship.description = Стандартный управляемый корабль. Достаточно быстрый и легкий, но обладает слабым вооружением и низкой скоростью добычи.
mech.javelin-ship.description = Корабль для тактики «атакуй и беги». Сначала он медленный, но позже может разгоняться до огромных скоростей и летать над аванпостами противника, нанося большой урон молниями и ракетами. mech.javelin-ship.description = Корабль для тактики «атакуй и беги». Сначала он медленный, но позже может разгоняться до огромных скоростей и летать над аванпостами противника, нанося большой урон молниями и ракетами.
mech.trident-ship.description = Тяжёлый бомбардировщик, построенный для строительства и уничтожения вражеских укреплений. Достаточно хорошо бронированный. mech.trident-ship.description = Тяжёлый бомбардировщик, построенный для строительства и уничтожения вражеских укреплений. Достаточно хорошо бронированный.
mech.glaive-ship.description = Большой хорошо бронированный боевой корабль. Оборудован зажигательным повторителем. Очень манёвренный. mech.glaive-ship.description = Большой хорошо бронированный боевой корабль. Оборудован зажигательным повторителем. Очень манёвренный.
@@ -1045,14 +1104,14 @@ block.message.description = Сохраняет сообщение. Исполь
block.graphite-press.description = Сжимает куски угля в чистые листы графита. block.graphite-press.description = Сжимает куски угля в чистые листы графита.
block.multi-press.description = Обновлённая версия графитовой печати. Использует воду и энергию для быстрой и эффективной переработки угля. block.multi-press.description = Обновлённая версия графитовой печати. Использует воду и энергию для быстрой и эффективной переработки угля.
block.silicon-smelter.description = Соединяет песок с чистым углем. Производит кремний. block.silicon-smelter.description = Соединяет песок с чистым углем. Производит кремний.
block.kiln.description = Выплавляет песок и свинец в соединение, известному как метастекло. Требуется небольшое количество энергии для запуска. block.kiln.description = Выплавляет песок и свинец в соединение, известное как метастекло. Требуется небольшое количество энергии для работы.
block.plastanium-compressor.description = Производит пластаний из нефти и титана. block.plastanium-compressor.description = Производит пластаний из нефти и титана.
block.phase-weaver.description = Синтезирует фазовую ткань из радиоактивного тория и песка. Требуется огромное количество энергии. block.phase-weaver.description = Синтезирует фазовую ткань из радиоактивного тория и песка. Требуется огромное количество энергии для работы.
block.alloy-smelter.description = Объединяет титан, свинец, кремний и медь для производства кинетического сплава. block.alloy-smelter.description = Объединяет титан, свинец, кремний и медь для производства кинетического сплава.
block.cryofluidmixer.description = Смешивает воду и мелкий титановый порошок титана в криогеннную жидкость. Неотъемлемая часть при использования ториевого реактора block.cryofluidmixer.description = Смешивает воду и мелкий титановый порошок титана в криогеннную жидкость. Неотъемлемая часть при использования ториевого реактора
block.blast-mixer.description = Раздавливает и смешивает скопления спор с пиротитом для получения взрывчатого вещества. block.blast-mixer.description = Раздавливает и смешивает скопления спор с пиротитом для получения взрывчатого вещества.
block.pyratite-mixer.description = Смешивает уголь, свинец и песок в легковоспламеняющийся пиротит. block.pyratite-mixer.description = Смешивает уголь, свинец и песок в легковоспламеняющийся пиротит.
block.melter.description = Плавит металлолом в шлак для дальнейшей обработки или использования в башнях «Волна». block.melter.description = Плавит металлолом в шлак для дальнейшей обработки или использования в турелях «Волна».
block.separator.description = Разделяет шлак на его минеральные компоненты. Выводит охлажденный результат. block.separator.description = Разделяет шлак на его минеральные компоненты. Выводит охлажденный результат.
block.spore-press.description = Сжимает капсулы спор под сильным давлением для синтеза масла. block.spore-press.description = Сжимает капсулы спор под сильным давлением для синтеза масла.
block.pulverizer.description = Измельчает металлолом в мелкий песок. block.pulverizer.description = Измельчает металлолом в мелкий песок.
@@ -1063,12 +1122,12 @@ block.power-source.description = Бесконечно вводит энерги
block.item-source.description = Бесконечно выводит элементы. Только песочница. block.item-source.description = Бесконечно выводит элементы. Только песочница.
block.item-void.description = Уничтожает любые предметы. Только песочница. block.item-void.description = Уничтожает любые предметы. Только песочница.
block.liquid-source.description = Бесконечно выводит жидкости. Только песочница. block.liquid-source.description = Бесконечно выводит жидкости. Только песочница.
block.copper-wall.description = Дешёвый защитный блок.\nПолезно для защиты ядра и турелей в первые несколько волн. block.copper-wall.description = Дешёвый защитный блок.\nПолезен для защиты ядра и турелей в первые несколько волн.
block.copper-wall-large.description = Дешёвый защитный блок.\nПолезно для защиты ядра и турелей в первые несколько волн.\nРазмещается на нескольких плитках. block.copper-wall-large.description = Дешёвый защитный блок.\nПолезен для защиты ядра и турелей в первые несколько волн.\nРазмещается на нескольких плитках.
block.titanium-wall.description = Умеренно сильный защитный блок.\nОбеспечивает умеренную защиту от врагов. block.titanium-wall.description = Умеренно сильный защитный блок.\nОбеспечивает умеренную защиту от врагов.
block.titanium-wall-large.description = Умеренно сильный защитный блок.\nОбеспечивает умеренную защиту от врагов.\nРазмещается на нескольких плитках. block.titanium-wall-large.description = Умеренно сильный защитный блок.\nОбеспечивает умеренную защиту от врагов.\nРазмещается на нескольких плитках.
block.plastanium-wall.description = Специальный тип стены, который поглощает электрические разряды и блокирует автоматическое соединение между силовыми узлами.\nРазмещается на нескольких плитках. block.plastanium-wall.description = Специальный тип стены, который поглощает электрические разряды и блокирует автоматическое соединение между силовыми узлами.
block.plastanium-wall-large.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections.\nSpans multiple tiles. block.plastanium-wall-large.description = Специальный тип стены, который поглощает электрические разряды и блокирует автоматическое соединение между силовыми узлами.\nРазмещается на нескольких плитках.
block.thorium-wall.description = Сильный защитный блок.\nХорошая защита от врагов. block.thorium-wall.description = Сильный защитный блок.\nХорошая защита от врагов.
block.thorium-wall-large.description = Сильный защитный блок.\nХорошая защита от врагов.\nРазмещается на нескольких плитках. block.thorium-wall-large.description = Сильный защитный блок.\nХорошая защита от врагов.\nРазмещается на нескольких плитках.
block.phase-wall.description = Стена, покрытая специальным фазовым отражающим составом. Отражает большинство пуль при ударе. block.phase-wall.description = Стена, покрытая специальным фазовым отражающим составом. Отражает большинство пуль при ударе.
@@ -1077,37 +1136,39 @@ block.surge-wall.description = Очень прочный защитный бло
block.surge-wall-large.description = Очень прочный защитный блок.\nНакапливает заряд при контакте с пулей, выпуская его случайным образом.\nРазмещается на нескольких плитках. block.surge-wall-large.description = Очень прочный защитный блок.\nНакапливает заряд при контакте с пулей, выпуская его случайным образом.\nРазмещается на нескольких плитках.
block.door.description = Маленькая дверь. Можно открыть или закрыть нажатием. block.door.description = Маленькая дверь. Можно открыть или закрыть нажатием.
block.door-large.description = Большая дверь. Можно открыть и закрыть нажатием.\nРазмещается на нескольких плитках. block.door-large.description = Большая дверь. Можно открыть и закрыть нажатием.\nРазмещается на нескольких плитках.
block.mender.description = Периодически ремонтирует блоки в непосредственной близости. Сохраняет средства защиты, восстановленные между волнами.\nОпционально использует кремний для увеличения дальности и эффективности. block.mender.description = Периодически ремонтирует блоки в непосредственной близости. Сохраняет средства защиты в целостности между волнами.\nОпционально использует кремний для увеличения дальности и эффективности.
block.mend-projector.description = Обновлённая версия Регенератора. Ремонт блоков в непосредственной близости.\nОпционально использует фазовую ткань для увеличения дальности и эффективности. block.mend-projector.description = Обновлённая версия Регенератора. Ремонтирует блоки в непосредственной близости.\nОпционально использует фазовую ткань для увеличения дальности и эффективности.
block.overdrive-projector.description = Увеличивает скорость близлежащих зданий.\nОпционально использует фазовую ткань для увеличения дальности и эффективности. block.overdrive-projector.description = Увеличивает скорость близлежащих зданий.\nОпционально использует фазовую ткань для увеличения дальности и эффективности.
block.force-projector.description = Создает вокруг себя шестиугольное силовое поле, защищая здания и подразделения внутри от повреждений.\nПерегревается, если нанесено слишком большое количество повреждений. Опционально требуется охлаждающая жидкость для предотвращения перегрева. Фазовая ткань может быть использована для увеличения размера щита. block.force-projector.description = Создает вокруг себя шестиугольное силовое поле, защищая здания и подразделения внутри от повреждений.\nПерегревается, если нанесено слишком большое количество повреждений. Опционально использует охлаждающую жидкость для предотвращения перегрева. Фазовая ткань может быть использована для увеличения размера щита.
block.shock-mine.description = Наносит урон врагам, наступающим на мину. Почти невидима для врага. block.shock-mine.description = Наносит урон врагам, наступающим на мину. Почти невидима для врага.
block.conveyor.description = Базовый элемент транспортного блока. Перемещает предметы вперед и автоматически складывает их в блоки. Можно повернуть. block.conveyor.description = Базовый элемент транспортного блока. Перемещает предметы вперед и автоматически складывает их в блоки. Можно повернуть.
block.titanium-conveyor.description = Расширенный транспортный блок. Перемещает предметы быстрее, чем стандартные конвейеры. block.titanium-conveyor.description = Улучшенный транспортный блок. Перемещает предметы быстрее, чем стандартные конвейеры.
block.junction.description = Действует как мост для двух пересекающихся конвейерных лент. Полезно в ситуациях, когда два разных конвейера перевозят разные материалы в разные места. block.junction.description = Действует как мост для двух пересекающихся конвейерных лент. Полезен в ситуациях, когда два разных конвейера перевозят разные материалы в разные места.
block.bridge-conveyor.description = Улучшенный транспортный блок. Позволяет транспортировать предметы по 3 плиткам любой местности или здания. block.bridge-conveyor.description = Улучшенный транспортный блок. Позволяет транспортировать предметы над 3 плитками любой местности или здания.
block.phase-conveyor.description = Улучшенный транспортный блок. Использует энергию для телепортации предметов на подключенный фазовый конвейер по нескольким плиткам. block.phase-conveyor.description = Улучшенный транспортный блок. Использует энергию для телепортации предметов на подключенный фазовый конвейер над несколькими плитками.
block.sorter.description = Сортирует предметы. Если предмет соответствует выбору, он может пройти. В противном случае предмет выводится слева и справа. block.sorter.description = Сортирует предметы. Если предмет соответствует выбору, он может пройти. В противном случае предмет выводится слева и справа.
block.inverted-sorter.description = Работает с предметами так же, как и стандартный сортировщик, но выводит выбранный предмет по бокам, а не прямо. block.inverted-sorter.description = Работает с предметами так же, как и стандартный сортировщик, но выводит выбранный предмет по бокам, а не прямо.
block.router.description = Принимает предмет в одном направлении и выводит их до 3 других направлений в равной степени. Полезно для разделения материалов из одного источника на несколько целей.\n\n[scarlet]Никогда не используйте рядом с заводами и т.п., так как маршрутизатор будет забит выходными предметами.[] block.router.description = Принимает предмет в одном направлении и выводит их до 3 других направлений в равной степени. Полезен для разделения материалов из одного источника на несколько целей.\n\n[scarlet]Никогда не используйте рядом с заводами и т.п., так как маршрутизатор будет забит выходными предметами.[]
block.distributor.description = Расширенный маршрутизатор. Разделение элементов до 7 других направлений в равной степени. block.distributor.description = Расширенный маршрутизатор. Разделяет предметы до 7 других направлений в равной степени.
block.overflow-gate.description = Комбинированный разделитель и маршрутизатор. Выводит только влево и вправо, если передний путь заблокирован. block.overflow-gate.description = Выводит предметы влево и вправо, только если передний путь заблокирован.
block.mass-driver.description = Конечный транспортный блок. Собирает несколько предметов и затем стреляет ими в другую катапульту на большом расстоянии. Требуется энергия для работы. block.mass-driver.description = Самый продвинутый транспортного блока. Собирает несколько предметов и затем стреляет ими в другую катапульту на большом расстоянии. Требуется энергия для работы.
block.mechanical-pump.description = Дешёвый насос с низкой производительностью, но без энергопотребления. block.mechanical-pump.description = Дешёвый насос с низкой производительностью, но без энергопотребления.
block.rotary-pump.description = Продвинутый насос. Качает больше жидкости, но требуют энергию. block.rotary-pump.description = Продвинутый насос. Качает больше жидкости, но требуют энергию.
block.thermal-pump.description = Наилучший насос. block.thermal-pump.description = Наилучший насос.
block.conduit.description = Основной блок транспортировки жидкости. Перемещает жидкости вперед. Используется совместно с насосами и другими трубопроводами. block.conduit.description = Основной блок транспортировки жидкости. Перемещает жидкости вперед. Используется совместно с насосами и другими трубопроводами.
block.pulse-conduit.description = Расширенный блок транспортировки жидкости. Транспортирует жидкости быстрее и хранит больше, чем стандартные трубопроводы. block.pulse-conduit.description = Улучшенный блок транспортировки жидкости. Транспортирует жидкости быстрее и хранит больше, чем стандартные трубопроводы.
block.liquid-router.description = Принимает жидкости из одного направления и выводит их до 3 других направлений в равной степени. Можно также хранить определенное количество жидкости. Полезно для разделения жидкостей из одного источника на несколько целей. block.plated-conduit.description = Перемещает жидкости с той же скоростью, что и импульсные трубопроводы, но обладает большей прочностью. Не принимает жидкости со сторон, кроме как от других трубопроводов.\nПротекает меньше.
block.liquid-router.description = Принимает жидкости из одного направления и выводит их до 3 других направлений в равной степени. Также может хранить определенное количество жидкости. Полезен для разделения жидкостей из одного источника на несколько целей.
block.liquid-tank.description = Хранит большое количество жидкости. Используется для создания буферов в ситуациях с непостоянной потребностью в материалах или в качестве защиты для охлаждения жизненно важных блоков. block.liquid-tank.description = Хранит большое количество жидкости. Используется для создания буферов в ситуациях с непостоянной потребностью в материалах или в качестве защиты для охлаждения жизненно важных блоков.
block.liquid-junction.description = Действует как мост для двух пересекающихся каналов. Полезно в ситуациях, когда два разных трубопровода переносят разные жидкости в разные места. block.liquid-junction.description = Действует как мост для двух пересекающихся каналов. Полезен в ситуациях, когда два разных трубопровода переносят разные жидкости в разные места.
block.bridge-conduit.description = Расширенный блок транспортировки жидкости. Позволяет транспортировать жидкости над 3 плитками любой местности или здания. block.bridge-conduit.description = Расширенный блок транспортировки жидкости. Позволяет транспортировать жидкости над 3 плитками любой местности или здания.
block.phase-conduit.description = Расширенный блок транспортировки жидкости. Использует энергию для телепортации жидкостей в подключенный фазовый канал над несколькими плиткам. block.phase-conduit.description = Расширенный блок транспортировки жидкости. Использует энергию для телепортации жидкостей в подключенный фазовый канал над несколькими плиткам.
block.power-node.description = Передает питание на подключенные узлы. Узел будет получать питание или поставлять питание на любые соседние блоки. block.power-node.description = Передает питание на подключенные узлы. Узел будет получать питание или поставлять питание на любые соседние блоки.
block.power-node-large.description = Усовершенствованный силовой узел с большей дальностью и большим количеством соединений. block.power-node-large.description = Усовершенствованный силовой узел с большей дальностью.
block.surge-tower.description = Силовой узел с очень большим радиусом действия, но меньшим количеством доступных соединений. block.surge-tower.description = Силовой узел с очень большим радиусом действия, но меньшим количеством доступных соединений.
block.diode.description = Энергия из аккумуляторов имеет возможность перемещаться через этот блок в одну сторону, если на выходе имеется меньше энергии в запасе, чем на входе.
block.battery.description = Накапливает энергию как буфер во времена избытка энергии. Выводит энергию во времена дефицита. block.battery.description = Накапливает энергию как буфер во времена избытка энергии. Выводит энергию во времена дефицита.
block.battery-large.description = Хранит гораздо больше энергии, чем обычная батарея. block.battery-large.description = Хранит гораздо больше энергии, чем обычный аккумулятор.
block.combustion-generator.description = Вырабатывает энергию путём сжигания легковоспламеняющихся материалов, таких как уголь. block.combustion-generator.description = Вырабатывает энергию путём сжигания легковоспламеняющихся материалов, таких как уголь.
block.thermal-generator.description = Генерирует энергию, когда находится в горячих местах. block.thermal-generator.description = Генерирует энергию, когда находится в горячих местах.
block.turbine-generator.description = Усовершенствованный генератор сгорания. Более эффективен, но дополнительно требует воду для выработки пара. block.turbine-generator.description = Усовершенствованный генератор сгорания. Более эффективен, но дополнительно требует воду для выработки пара.
@@ -1116,28 +1177,28 @@ block.rtg-generator.description = Простой, надежный генера
block.solar-panel.description = Обеспечивает небольшое количество энергии от солнца. block.solar-panel.description = Обеспечивает небольшое количество энергии от солнца.
block.solar-panel-large.description = Значительно более эффективный вариант стандартной солнечной панели. block.solar-panel-large.description = Значительно более эффективный вариант стандартной солнечной панели.
block.thorium-reactor.description = Генерирует значительное количество энергии из тория. Требует постоянного охлаждения. Взорвётся с большой силой при недостаточном количестве охлаждающей жидкости. Выходная энергия зависит от наполненности, при этом базовая энергия генерируется на полную мощность. block.thorium-reactor.description = Генерирует значительное количество энергии из тория. Требует постоянного охлаждения. Взорвётся с большой силой при недостаточном количестве охлаждающей жидкости. Выходная энергия зависит от наполненности, при этом базовая энергия генерируется на полную мощность.
block.impact-reactor.description = Усовершенствованный генератор, способный создавать огромное количество энергии с максимальной эффективностью. Требуется значительное количество энергии для запуска процесса. block.impact-reactor.description = Усовершенствованный генератор, способный создавать огромное количество энергии на пике эффективности. Требуется значительное количество энергии для запуска процесса.
block.mechanical-drill.description = Дешёвый бур. При размещении на соответствующих плитках, предметы бесконечно выводятся в медленном темпе. Способен добывать только медь, свинец и уголь. block.mechanical-drill.description = Дешёвый бур. При размещении на соответствующих плитках, предметы бесконечно выводятся в медленном темпе. Способен добывать только базовые ресурсы.
block.pneumatic-drill.description = Улучшенный бур, способный добывать титан. Добывает быстрее, чем механический бур. block.pneumatic-drill.description = Улучшенный бур, способный добывать титан. Добывает быстрее, чем механический бур.
block.laser-drill.description = Позволяет сверлить еще быстрее с помощью лазерной технологии, но требует энергии. Способен добывать торий. block.laser-drill.description = Позволяет сверлить еще быстрее с помощью лазерной технологии, но требует энергии. Способен добывать торий.
block.blast-drill.description = Конечный бур. Требует большое количества энергии. block.blast-drill.description = Самый продвинутый бура. Требует большое количества энергии.
block.water-extractor.description = Выкачивает подземные воды. Используется в местах, где нет поверхностных вод. block.water-extractor.description = Выкачивает подземные воды. Используется в местах, где нет поверхностных вод.
block.cultivator.description = Выращивает крошечные концентрации спор в атмосфере в готовые к использованию споры. block.cultivator.description = Выращивает крошечные концентрации спор в атмосфере в готовые к использованию споры.
block.oil-extractor.description = Использует большое количество энергии, песка и воды для бурения, добывая нефть. block.oil-extractor.description = Использует большое количество энергии, песка и воды для бурения, добывая нефть.
block.core-shard.description = Первая итерация капсулы ядра. После уничтожения весь контакт с регионом теряется. Не позволяйте этому случиться. block.core-shard.description = Первая итерация капсулы ядра. После уничтожения, весь контакт с регионом теряется. Не позволяйте этому случиться.
block.core-foundation.description = Вторая версия ядра. Лучше бронировано. Хранит больше ресурсов. block.core-foundation.description = Вторая версия ядра. Лучше бронировано. Хранит больше ресурсов.
block.core-nucleus.description = Третья и последняя итерация капсулы ядра. Очень хорошо бронировано. Хранит огромное количество ресурсов. block.core-nucleus.description = Третья и последняя итерация капсулы ядра. Очень хорошо бронировано. Хранит огромное количество ресурсов.
block.vault.description = Хранит большое количество предметов каждого типа. Блок разгрузчика может быть использован для извлечения предметов из хранилища. block.vault.description = Хранит большое количество предметов каждого типа. Блок разгрузчика может быть использован для извлечения предметов из хранилища.
block.container.description = Хранит небольшое количество предметов каждого типа. Блок разгрузчика может быть использован для извлечения элементов из контейнера. block.container.description = Хранит небольшое количество предметов каждого типа. Блок разгрузчика может быть использован для извлечения элементов из контейнера.
block.unloader.description = Выгружает предметы из контейнера, хранилища или ядра на конвейер или непосредственно в соседний блок. Тип элемента, который необходимо Выгрузить, можно изменить, коснувшись. block.unloader.description = Выгружает предметы из любого нетранспортного блока. Тип предмета, который необходимо выгрузить, можно изменить нажатием.
block.launch-pad.description = Запускает партии предметов без необходимости запуска ядра. block.launch-pad.description = Запускает партии предметов без необходимости запуска ядра.
block.launch-pad-large.description = Улучшенная версия стартовой площадки. Хранит больше предметов. Запускается чаще. block.launch-pad-large.description = Улучшенная версия стартовой площадки. Хранит больше предметов. Запускается чаще.
block.duo.description = Маленькая, дешёвая турель. Полезна против наземных юнитов. block.duo.description = Маленькая, дешёвая турель. Полезна против наземных юнитов.
block.scatter.description = Основная противовоздушная турель. Распыляет куски свинца или металлолома на вражеские подразделения. block.scatter.description = Основная противовоздушная турель. Распыляет куски свинца или металлолома на вражеские подразделения.
block.scorch.description = Сжигает любых наземных врагов рядом с ним. Высокоэффективна на близком расстоянии. block.scorch.description = Сжигает любых наземных врагов рядом с ним. Высокоэффективен на близком расстоянии.
block.hail.description = Маленькая дальнобойная артиллерийская турель. block.hail.description = Маленькая дальнобойная артиллерийская турель.
block.wave.description = Турель среднего размера. Стреляет потоками жидкости по врагам. Автоматически тушит пожары при подаче воды. block.wave.description = Турель среднего размера. Стреляет потоками жидкости по врагам. Автоматически тушит пожары при подаче воды.
block.lancer.description = Лазерная турель среднего размера. Заряжает и стреляет мощными лучами энергии. block.lancer.description = Лазерная турель среднего размера. Заряжает и стреляет мощными лучами энергии по наземным целям.
block.arc.description = Небольшая электрическая турель ближнего радиуса действия. Выстреливает дуги электричества по врагам. block.arc.description = Небольшая электрическая турель ближнего радиуса действия. Выстреливает дуги электричества по врагам.
block.swarmer.description = Ракетная турель среднего размера. Атакует как воздушных, так и наземных врагов. Запускает самонаводящиеся ракеты. block.swarmer.description = Ракетная турель среднего размера. Атакует как воздушных, так и наземных врагов. Запускает самонаводящиеся ракеты.
block.salvo.description = Большая, более продвинутая версия двойной турели. Выпускает быстрые залпы из пуль по врагу. block.salvo.description = Большая, более продвинутая версия двойной турели. Выпускает быстрые залпы из пуль по врагу.
@@ -1147,21 +1208,21 @@ block.cyclone.description = Большая противовоздушная и
block.spectre.description = Массивная двуствольная пушка. Стреляет крупными бронебойными пулями по воздушным и наземным целям. block.spectre.description = Массивная двуствольная пушка. Стреляет крупными бронебойными пулями по воздушным и наземным целям.
block.meltdown.description = Массивная лазерная пушка. Заряжает и стреляет постоянным лазерным лучом в ближайших врагов. Требуется охлаждающая жидкость для работы. block.meltdown.description = Массивная лазерная пушка. Заряжает и стреляет постоянным лазерным лучом в ближайших врагов. Требуется охлаждающая жидкость для работы.
block.command-center.description = Командует перемещениями боевых единиц по всей карте.\nУказывает подразделениям [accent]собираться[] вокруг командного центра, [accent]атаковать[] вражеское ядро или [accent]отступать[] к ядру/фабрике. Если вражеское ядро отсутствует, единицы будут патрулировать при команде [accent]атаки[]. block.command-center.description = Командует перемещениями боевых единиц по всей карте.\nУказывает подразделениям [accent]собираться[] вокруг командного центра, [accent]атаковать[] вражеское ядро или [accent]отступать[] к ядру/фабрике. Если вражеское ядро отсутствует, единицы будут патрулировать при команде [accent]атаки[].
block.draug-factory.description = Производит добывающих дронов. block.draug-factory.description = Производит добывающих дронов «Драугр».
block.spirit-factory.description = Производит дронов, которые ремонтируют постройки. block.spirit-factory.description = Производит дронов «Дух», которые ремонтируют постройки.
block.phantom-factory.description = Производит улучшенных дронов, которые помогают в строительстве. block.phantom-factory.description = Производит улучшенных дронов, которые помогают в строительстве.
block.wraith-factory.description = Производит быстрые и летающие боевые единицы. block.wraith-factory.description = Производит быстрые и летающие боевые единицы.
block.ghoul-factory.description = Производит тяжёлых ковровых бомбардировщиков. block.ghoul-factory.description = Производит тяжёлые ковровые бомбардировщики.
block.revenant-factory.description = Производит тяжёлые летающие боевые единицы. block.revenant-factory.description = Производит тяжёлые летающие боевые единицы, вооружённые ракетами.
block.dagger-factory.description = Производит основных наземных боевые единиц. block.dagger-factory.description = Производит основные наземные боевые единицы.
block.crawler-factory.description = Производит быстрых саморозрушающихся боевые единиц. block.crawler-factory.description = Производит быстрые саморазрушающиеся боевые единицы.
block.titan-factory.description = Производит продвинутые бронированные боевые единицы. block.titan-factory.description = Производит продвинутые бронированные боевые единицы.
block.fortress-factory.description = Производит тяжёлые артиллерийские боевые единицы. block.fortress-factory.description = Производит тяжёлые артиллерийские боевые единицы.
block.repair-point.description = Непрерывно лечит ближайший поврежденную боевую единицу или мех, находящийся рядом. block.repair-point.description = Непрерывно лечит ближайшую поврежденную боевую единицу или мех в своём радиусе.
block.dart-mech-pad.description = Обеспечивает превращение в базовый атакующий мех. \nИспользуйте, нажав, стоя на нём. block.dart-mech-pad.description = Обеспечивает превращение в базовый атакующий мех.\nИспользуйте, нажав, стоя на нём.
block.delta-mech-pad.description = Обеспечивает превращение в легкобронированный атакующий мех.\nИспользуйте, нажав, стоя на нём. block.delta-mech-pad.description = Обеспечивает превращение в легкобронированный атакующий мех.\nИспользуйте, нажав, стоя на нём.
block.tau-mech-pad.description = Обеспечивает превращение в улучшенный мех поддержки.\nИспользуйте, нажав, стоя на нём. block.tau-mech-pad.description = Обеспечивает превращение в продвинутый мех поддержки.\nИспользуйте, нажав, стоя на нём.
block.omega-mech-pad.description = Обеспечивает превращение в тяжелобронированный ракетный мех.\nИспользуйте, нажав, стоя на нём. block.omega-mech-pad.description = Обеспечивает превращение в тяжелобронированный ракетный мех.\nИспользуйте, нажав, стоя на нём.
block.javelin-ship-pad.description = Обеспечивает превращение в быстрый перехватчик в лёгкой броне.\nИспользуйте, нажав, стоя на нём. block.javelin-ship-pad.description = Обеспечивает превращение в быстрый перехватчик в лёгкой броне.\nИспользуйте, нажав, стоя на нём.
block.trident-ship-pad.description = Обеспечивает превращение в тяжёлый бомбардировщик.\nИспользуйте, нажав, стоя на нём. block.trident-ship-pad.description = Обеспечивает превращение в тяжёлый бомбардировщик поддержки.\nИспользуйте, нажав, стоя на нём.
block.glaive-ship-pad.description = Обеспечивает превращение в большой, хорошо бронированный боевой корабль.\nИспользуйте, нажав, стоя на нём. block.glaive-ship-pad.description = Обеспечивает превращение в большой, хорошо бронированный боевой корабль.\nИспользуйте, нажав, стоя на нём.

View File

@@ -10,6 +10,7 @@ link.dev-builds.description = Нестабільні версії
link.trello.description = Офіційна дошка Trello для запланованих функцій link.trello.description = Офіційна дошка Trello для запланованих функцій
link.itch.io.description = Itch.io сторінка, на якій можна завантажити гру link.itch.io.description = Itch.io сторінка, на якій можна завантажити гру
link.google-play.description = Завантажити для Android з Google Play link.google-play.description = Завантажити для Android з Google Play
link.f-droid.description = Перелік каталогу F-Droid
link.wiki.description = Офіційна Mindustry wiki link.wiki.description = Офіційна Mindustry wiki
linkfail = Не вдалося відкрити посилання!\nURL-адреса скопійована в буфер обміну. linkfail = Не вдалося відкрити посилання!\nURL-адреса скопійована в буфер обміну.
screenshot = Зняток мапи збережено в {0} screenshot = Зняток мапи збережено в {0}
@@ -74,14 +75,23 @@ maps.browse = Перегляд мап
continue = Продовжити continue = Продовжити
maps.none = [lightgray]Мап не знайдено! maps.none = [lightgray]Мап не знайдено!
invalid = Недійсне invalid = Недійсне
pickcolor = Вибрати колір
preparingconfig = Підготовка конфігурації preparingconfig = Підготовка конфігурації
preparingcontent = Підготовка вмісту preparingcontent = Підготовка вмісту
uploadingcontent = Вивантаження вмісту uploadingcontent = Вивантаження вмісту
uploadingpreviewfile = Вивантаження файлу передперегляду uploadingpreviewfile = Вивантаження файлу передперегляду
committingchanges = Здійснення змін committingchanges = Здійснення змін
done = Зроблено done = Зроблено
feature.unsupported = Ваш пристрій не підтримує цю особливість. mods = Модифікації
mods.alphainfo = Майте на увазі, що модифікації знаходяться в альфі, і [scarlet]можуть бути дуже глючними[].\nПовідомте про будь-які проблеми, які ви знайдете до Mindustry GitHub або Discord. mods.alphainfo = Майте на увазі, що модифікації знаходяться в альфі, і [scarlet]може бути дуже глючними[].\nПовідомте про будь-які проблеми, які ви знайдете до Mindustry Github або Discord.
mods.alpha = [scarlet](Альфа)
mods.none = [LIGHT_GRAY]Модифікацій не знайдено!
mod.enabled = [lightgray]Увімкнено
mod.disabled = [scarlet]Вимкнено
mod.requiresrestart = А тепер гра закриється, щоб застосувати зміни модифікацій.
mod.import = Імпортувати модифікацію
mod.remove.confirm = Цю модифікацію буде видалено.
mod.author = [LIGHT_GRAY]Автор:[] {0}
mods.alpha = [scarlet](Альфа) mods.alpha = [scarlet](Альфа)
mods = Модифікації mods = Модифікації
mods.none = [LIGHT_GRAY]Модифікацій не знайдено! mods.none = [LIGHT_GRAY]Модифікацій не знайдено!
@@ -92,6 +102,7 @@ mod.enabled = [lightgray]Увімкнено
mod.disabled = [scarlet]Вимкнено mod.disabled = [scarlet]Вимкнено
mod.disable = Вимкнути mod.disable = Вимкнути
mod.delete.error = Неможливо видалити модифікацію. Файл, можливо, використовується. mod.delete.error = Неможливо видалити модифікацію. Файл, можливо, використовується.
mod.requiresversion = [scarlet]Необхідна версія гри: [accent]{0}
mod.missingdependencies = [scarlet]Відсутні залежності: {0} mod.missingdependencies = [scarlet]Відсутні залежності: {0}
mod.nowdisabled = [scarlet]Модифікації '{0}' не вистачає залежностей:[accent] {1}\n[lightgray]Ці модифікації потрібно завантажити спочатку.\nЦя модифікація буду автоматично вимкнена. mod.nowdisabled = [scarlet]Модифікації '{0}' не вистачає залежностей:[accent] {1}\n[lightgray]Ці модифікації потрібно завантажити спочатку.\nЦя модифікація буду автоматично вимкнена.
mod.enable = Увімкнути mod.enable = Увімкнути
@@ -237,10 +248,10 @@ quit.confirm.tutorial = Ви впевнені, що хочете вийти з
loading = [accent]Завантаження… loading = [accent]Завантаження…
reloading = [accent]Перезавантаження модифікацій… reloading = [accent]Перезавантаження модифікацій…
saving = [accent]Збереження… saving = [accent]Збереження…
cancelbuilding = [accent][[{0}][] to clear plan cancelbuilding = [accent][[{0}][], щоб очистити план
selectschematic = [accent][[{0}][] to select+copy selectschematic = [accent][[{0}][], щоб вибрати та скопіювати
pausebuilding = [accent][[{0}][] to pause building pausebuilding = [accent][[{0}][], щоб призупинити будування
resumebuilding = [scarlet][[{0}][] to resume building resumebuilding = [scarlet][[{0}][], щоб продовжити будування
wave = [accent]Хвиля {0} wave = [accent]Хвиля {0}
wave.waiting = Хвиля через {0} wave.waiting = Хвиля через {0}
wave.waveInProgress = [lightgray]Хвиля триває wave.waveInProgress = [lightgray]Хвиля триває
@@ -411,9 +422,9 @@ abandon = Покинути
abandon.text = Ця зона і всі її ресурси будуть втрачені. abandon.text = Ця зона і всі її ресурси будуть втрачені.
locked = Заблоковано locked = Заблоковано
complete = [lightgray]Досягнута: complete = [lightgray]Досягнута:
requirement.wave = Reach Wave {0} in {1} requirement.wave = Досягніть хвилі {0} у {1}
requirement.core = Destroy Enemy Core in {0} requirement.core = Знишьте вороже ядро у {0}
requirement.unlock = Unlock {0} requirement.unlock = Розблокуйте {0}
resume = Відновити зону:\n[lightgray]{0} resume = Відновити зону:\n[lightgray]{0}
bestwave = [lightgray]Найкраща хвиля: {0} bestwave = [lightgray]Найкраща хвиля: {0}
launch = < ЗАПУСК > launch = < ЗАПУСК >
@@ -424,8 +435,8 @@ launch.confirm = Це видалить всі ресурси у Вашому я
launch.skip.confirm = Якщо Ви пропустите зараз, Ви не зможете не запускати до більш пізніх хвиль. launch.skip.confirm = Якщо Ви пропустите зараз, Ви не зможете не запускати до більш пізніх хвиль.
uncover = Розкрити uncover = Розкрити
configure = Вивантажити конфігурацію configure = Вивантажити конфігурацію
bannedblocks = Banned Blocks bannedblocks = Заборонені блоки
addall = Add All addall = Додати все
configure.locked = [lightgray]Можливість розблокувати вивантаження ресурсів буде доступна на {0}-тій хвилі. configure.locked = [lightgray]Можливість розблокувати вивантаження ресурсів буде доступна на {0}-тій хвилі.
configure.invalid = Кількість повинна бути числом між 0 та {0}. configure.invalid = Кількість повинна бути числом між 0 та {0}.
zone.unlocked = Зона «[lightgray]{0}» тепер розблокована. zone.unlocked = Зона «[lightgray]{0}» тепер розблокована.
@@ -479,6 +490,7 @@ settings.language = Мова
settings.data = Ігрові дані settings.data = Ігрові дані
settings.reset = Скинути за замовчуванням settings.reset = Скинути за замовчуванням
settings.rebind = Зміна settings.rebind = Зміна
settings.resetKey = Скинути
settings.controls = Керування settings.controls = Керування
settings.game = Гра settings.game = Гра
settings.sound = Звук settings.sound = Звук
@@ -487,8 +499,8 @@ settings.cleardata = Очистити дані…
settings.clear.confirm = Ви впевнені, що хочете очистити ці дані?\nЦя дія не може бути скасовано! settings.clear.confirm = Ви впевнені, що хочете очистити ці дані?\nЦя дія не може бути скасовано!
settings.clearall.confirm = [scarlet]УВАГА![]\nЦе очистить всі дані, включаючи збереження, мапи, розблоковане та налаштування керування.\nПісля того, як ви натиснете ОК, гра видалить усі дані та автоматично закриється. settings.clearall.confirm = [scarlet]УВАГА![]\nЦе очистить всі дані, включаючи збереження, мапи, розблоковане та налаштування керування.\nПісля того, як ви натиснете ОК, гра видалить усі дані та автоматично закриється.
paused = Пауза paused = Пауза
clear = Clear clear = Очистити
banned = [scarlet]Banned banned = [scarlet]Заблоковано
yes = Так yes = Так
no = Ні no = Ні
info.title = Інформація info.title = Інформація
@@ -544,6 +556,8 @@ bar.heat = Нагрівання
bar.power = Енергія bar.power = Енергія
bar.progress = Хід будування bar.progress = Хід будування
bar.spawned = Бойов. од.: {0}/{1} bar.spawned = Бойов. од.: {0}/{1}
bar.input = Ввід
bar.output = Вивід
bullet.damage = [stat]{0}[lightgray] шкода bullet.damage = [stat]{0}[lightgray] шкода
bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat] {1}[lightgray] блок. bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat] {1}[lightgray] блок.
bullet.incendiary = [stat]запальний bullet.incendiary = [stat]запальний
@@ -559,6 +573,8 @@ unit.blocks = блоки
unit.powersecond = одиниць енергії за секунду unit.powersecond = одиниць енергії за секунду
unit.liquidsecond = одиниць рідини за секунду unit.liquidsecond = одиниць рідини за секунду
unit.itemssecond = предметів за секунду unit.itemssecond = предметів за секунду
unit.thousands = тис
unit.millions = млн
unit.liquidunits = одиниць рідини unit.liquidunits = одиниць рідини
unit.powerunits = одиниць енергії unit.powerunits = одиниць енергії
unit.degrees = град. unit.degrees = град.
@@ -578,7 +594,8 @@ setting.landscape.name = Тільки альбомний(гозинтальни
setting.shadows.name = Тіні setting.shadows.name = Тіні
setting.blockreplace.name = Пропозиції щодо автоматичної заміни блоків setting.blockreplace.name = Пропозиції щодо автоматичної заміни блоків
setting.linear.name = Лінійна фільтрація setting.linear.name = Лінійна фільтрація
setting.hints.name = Hints setting.hints.name = Підказки
setting.buildautopause.name = Автоматичне призупинення будування
setting.animatedwater.name = Анімована вода setting.animatedwater.name = Анімована вода
setting.animatedshields.name = Анімовані щити setting.animatedshields.name = Анімовані щити
setting.antialias.name = Згладжування[lightgray] (потребує перезапуску)[] setting.antialias.name = Згладжування[lightgray] (потребує перезапуску)[]
@@ -600,16 +617,19 @@ setting.difficulty.name = Складність:
setting.screenshake.name = Тряска екрану setting.screenshake.name = Тряска екрану
setting.effects.name = Ефекти setting.effects.name = Ефекти
setting.destroyedblocks.name = Показувати зруйновані блоки setting.destroyedblocks.name = Показувати зруйновані блоки
setting.conveyorpathfinding.name = Пошук шляху для встановлення конвейерівConveyor Placement Pathfinding setting.conveyorpathfinding.name = Пошук шляху для встановлення конвейерів
setting.sensitivity.name = Чутливість контролера setting.sensitivity.name = Чутливість контролера
setting.saveinterval.name = Інтервал збереження setting.saveinterval.name = Інтервал збереження
setting.seconds = {0} с setting.seconds = {0} с
setting.blockselecttimeout.name = Час вибору блока
setting.milliseconds = {0} мілісекунд
setting.fullscreen.name = Повноекранний режим setting.fullscreen.name = Повноекранний режим
setting.borderlesswindow.name = Вікно без полів[lightgray] (може потребувати перезапуску) setting.borderlesswindow.name = Вікно без полів[lightgray] (може потребувати перезапуску)
setting.fps.name = Показувати FPS і затримку до сервера setting.fps.name = Показувати FPS і затримку до сервера
setting.blockselectkeys.name = Показувати клавіші вибору блока
setting.vsync.name = Вертикальна синхронізація setting.vsync.name = Вертикальна синхронізація
setting.pixelate.name = Пікселізація[lightgray] (вимикає анімації) setting.pixelate.name = Пікселізація[lightgray] (вимикає анімації)
setting.minimap.name = Показувати міні-мапу setting.minimap.name = Показувати мінімапу
setting.position.name = Показувати координати гравця setting.position.name = Показувати координати гравця
setting.musicvol.name = Гучність музики setting.musicvol.name = Гучність музики
setting.ambientvol.name = Звуки навколишнього середовища setting.ambientvol.name = Звуки навколишнього середовища
@@ -620,10 +640,10 @@ setting.crashreport.name = Відсилати анонімні звіти про
setting.savecreate.name = Автоматичне створення збережень setting.savecreate.name = Автоматичне створення збережень
setting.publichost.name = Загальнодоступність гри setting.publichost.name = Загальнодоступність гри
setting.chatopacity.name = Непрозорість чату setting.chatopacity.name = Непрозорість чату
setting.lasersopacity.name = Power Laser Opacity setting.lasersopacity.name = Непрозорість лазерів енергопостачання
setting.playerchat.name = Відображати хмару чата над гравцями setting.playerchat.name = Відображати хмару чата над гравцями
public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[lightgray]Це можна змінити у Налаштування->Гра->Public Game Visibility. public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[lightgray]Це можна змінити у НалаштуванняГра→Загальнодоступність гри
public.beta = Note that beta versions of the game cannot make public lobbies. public.beta = Зауважте, що в бета-версії гри ви не можете робити публічні ігри.
uiscale.reset = Масштаб користувальницького інтерфейсу було змінено.\nНатисніть «ОК» для підтверждення цього масшатабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] … uiscale.reset = Масштаб користувальницького інтерфейсу було змінено.\nНатисніть «ОК» для підтверждення цього масшатабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] …
uiscale.cancel = Скасувати & Вийти uiscale.cancel = Скасувати & Вийти
setting.bloom.name = Світіння setting.bloom.name = Світіння
@@ -635,17 +655,37 @@ category.multiplayer.name = Мережева гра
command.attack = Атакувати command.attack = Атакувати
command.rally = Точка збору command.rally = Точка збору
command.retreat = Відступити command.retreat = Відступити
placement.blockselectkeys = \n[lightgray]Ключ: [{0},
keybind.clear_building.name = Очистити план будування keybind.clear_building.name = Очистити план будування
keybind.press = Натисніть клавішу… keybind.press = Натисніть клавішу…
keybind.press.axis = Натисніть клавішу… keybind.press.axis = Натисніть клавішу…
keybind.screenshot.name = Зняток мапи keybind.screenshot.name = Зняток мапи
keybind.toggle_power_lines.name = Показувати лазери енергопостачання
keybind.move_x.name = Рух по осі X keybind.move_x.name = Рух по осі X
keybind.move_y.name = Рух по осі Y keybind.move_y.name = Рух по осі Y
keybind.mouse_move.name = Слідкувати за мишею
keybind.dash.name = Прискорення
keybind.schematic_select.name = Вибрати ділянку keybind.schematic_select.name = Вибрати ділянку
keybind.schematic_menu.name = Меню схем keybind.schematic_menu.name = Меню схем
keybind.schematic_flip_x.name = Відобразити по осі X keybind.schematic_flip_x.name = Відобразити по осі X
keybind.schematic_flip_y.name = Відобразити по осі Y keybind.schematic_flip_y.name = Відобразити по осі Y
keybind.fullscreen.name = Повноекранний keybind.category_prev.name = Попередня категорія
keybind.category_next.name = Наступна категорія
keybind.block_select_left.name = Вибрати блок ліворуч
keybind.block_select_right.name = Вибрати блок ліворуч праворуч
keybind.block_select_up.name = Вибрати блок зверху
keybind.block_select_down.name = Вибрати блок знизу
keybind.block_select_01.name = Категорія/Вибрати перший блок
keybind.block_select_02.name = Категорія/Вибрати другий блок
keybind.block_select_03.name = Категорія/Вибрати третій блок
keybind.block_select_04.name = Категорія/Вибрати четвертий блок
keybind.block_select_05.name = Категорія/Вибрати п’ятий блок
keybind.block_select_06.name = Категорія/Вибрати шостий блок
keybind.block_select_07.name = Категорія/Вибрати сьомий блок
keybind.block_select_08.name = Категорія/Вибрати восьмий блок
keybind.block_select_09.name = Категорія/Вибрати дев’ятий блок
keybind.block_select_10.name = Категорія/Вибрати десятий блок
keybind.fullscreen.name = Повноекранний режим
keybind.select.name = Вибір/Постріл keybind.select.name = Вибір/Постріл
keybind.diagonal_placement.name = Діагональне розміщення keybind.diagonal_placement.name = Діагональне розміщення
keybind.pick.name = Вибрати блок keybind.pick.name = Вибрати блок
@@ -658,7 +698,6 @@ keybind.menu.name = Меню
keybind.pause.name = Пауза keybind.pause.name = Пауза
keybind.pause_building.name = Призупинити/Продовжити будування keybind.pause_building.name = Призупинити/Продовжити будування
keybind.minimap.name = Мінімапа keybind.minimap.name = Мінімапа
keybind.dash.name = Прискоритися & летіітати
keybind.chat.name = Чат keybind.chat.name = Чат
keybind.player_list.name = Список гравців keybind.player_list.name = Список гравців
keybind.console.name = Консоль keybind.console.name = Консоль
@@ -682,6 +721,7 @@ mode.attack.name = Атака
mode.attack.description = Зруйнуйте ворожу базу.\n[gray]Потрібно червоне ядро на мапі для гри. mode.attack.description = Зруйнуйте ворожу базу.\n[gray]Потрібно червоне ядро на мапі для гри.
mode.custom = Користувацькі правила mode.custom = Користувацькі правила
rules.infiniteresources = Нескінченні ресурси rules.infiniteresources = Нескінченні ресурси
rules.reactorexplosions = Вибухи реактора
rules.wavetimer = Таймер хвиль rules.wavetimer = Таймер хвиль
rules.waves = Хвилі rules.waves = Хвилі
rules.attack = Режим атаки rules.attack = Режим атаки
@@ -707,6 +747,9 @@ rules.title.resourcesbuilding = Ресурси & будування
rules.title.player = Гравці rules.title.player = Гравці
rules.title.enemy = Вороги rules.title.enemy = Вороги
rules.title.unit = Бойов. од. rules.title.unit = Бойов. од.
rules.title.experimental = Есперементальне!
rules.lighting = Світлотінь
rules.ambientlight = Навколишнє світло
content.item.name = Предмети content.item.name = Предмети
content.liquid.name = Рідини content.liquid.name = Рідини
content.unit.name = Бойові одиниці content.unit.name = Бойові одиниці
@@ -719,7 +762,7 @@ item.graphite.name = Графіт
item.titanium.name = Титан item.titanium.name = Титан
item.thorium.name = Торій item.thorium.name = Торій
item.silicon.name = Кремній item.silicon.name = Кремній
item.plastanium.name = Пластиній item.plastanium.name = Пластаній
item.phase-fabric.name = Фазова тканина item.phase-fabric.name = Фазова тканина
item.surge-alloy.name = Кінетичний сплав item.surge-alloy.name = Кінетичний сплав
item.spore-pod.name = Споровий стручок item.spore-pod.name = Споровий стручок
@@ -753,6 +796,7 @@ mech.trident-ship.name = Тризубець
mech.trident-ship.weapon = Бомби mech.trident-ship.weapon = Бомби
mech.glaive-ship.name = Спис mech.glaive-ship.name = Спис
mech.glaive-ship.weapon = Вогняний кулемет mech.glaive-ship.weapon = Вогняний кулемет
item.corestorable = [lightgray]Зберігання в ядрі: {0}
item.explosiveness = [lightgray]Вибухонебезпечність: {0}% item.explosiveness = [lightgray]Вибухонебезпечність: {0}%
item.flammability = [lightgray]Вогненебезпечність: {0}% item.flammability = [lightgray]Вогненебезпечність: {0}%
item.radioactivity = [lightgray]Радіоактивність: {0}% item.radioactivity = [lightgray]Радіоактивність: {0}%
@@ -864,8 +908,10 @@ block.junction.name = Перехрестя
block.router.name = Маршрутизатор block.router.name = Маршрутизатор
block.distributor.name = Розподілювач block.distributor.name = Розподілювач
block.sorter.name = Сортувальник block.sorter.name = Сортувальник
block.inverted-sorter.name = Inverted Sorter block.inverted-sorter.name = Зворотній сортувальник
block.message.name = Повідомлення block.message.name = Повідомлення
block.illuminator.name = Освітлювач
block.illuminator.description = Невелике, компактне, джерело світла, яку можна налаштувати. Для функціонування потрібна енергія.
block.overflow-gate.name = Надмірний затвор block.overflow-gate.name = Надмірний затвор
block.silicon-smelter.name = Кремнієвий плавильний завод block.silicon-smelter.name = Кремнієвий плавильний завод
block.phase-weaver.name = Фазовий ткач block.phase-weaver.name = Фазовий ткач
@@ -879,6 +925,7 @@ block.coal-centrifuge.name = Вугільна центрифуга
block.power-node.name = Енергійний вузол block.power-node.name = Енергійний вузол
block.power-node-large.name = Великий енергетичний вузол block.power-node-large.name = Великий енергетичний вузол
block.surge-tower.name = Кінетична вежа block.surge-tower.name = Кінетична вежа
block.diode.name = Діод
block.battery.name = Акумулятор block.battery.name = Акумулятор
block.battery-large.name = Великий акумулятор block.battery-large.name = Великий акумулятор
block.combustion-generator.name = Генератор горіння block.combustion-generator.name = Генератор горіння
@@ -931,6 +978,7 @@ block.fortress-factory.name = Завод мехів «Фортеця»
block.revenant-factory.name = Завод бомбардувальників «Потойбічний вбивця» block.revenant-factory.name = Завод бомбардувальників «Потойбічний вбивця»
block.repair-point.name = Ремонтний пункт block.repair-point.name = Ремонтний пункт
block.pulse-conduit.name = Імпульсний водопровід block.pulse-conduit.name = Імпульсний водопровід
block.plated-conduit.name = Зміцнений водопровід
block.phase-conduit.name = Фазовий водопровід block.phase-conduit.name = Фазовий водопровід
block.liquid-router.name = Рідкий маршрутизатор block.liquid-router.name = Рідкий маршрутизатор
block.liquid-tank.name = Рідкий резервуар block.liquid-tank.name = Рідкий резервуар
@@ -984,8 +1032,8 @@ unit.reaper.name = Жнець
tutorial.next = [lightgray]<Натисніть для продовження> tutorial.next = [lightgray]<Натисніть для продовження>
tutorial.intro = Ви розпочали[scarlet] навчання по Mindustry.[]\nРозпочніть з[accent] видобування міді[]. Використовуйте [[WASD] для руху.\n[accent] Утримуйте [[Ctrl] під час прокрутки миші[] для приближення і віддалення. Наблизьтесь, а потім натисність на мідну жилу біля вашого ядра, щоб зробити це.\n\n[accent]{0}/{1} міді tutorial.intro = Ви розпочали[scarlet] навчання по Mindustry.[]\nРозпочніть з[accent] видобування міді[]. Використовуйте [[WASD] для руху.\n[accent] Утримуйте [[Ctrl] під час прокрутки миші[] для приближення і віддалення. Наблизьтесь, а потім натисність на мідну жилу біля вашого ядра, щоб зробити це.\n\n[accent]{0}/{1} міді
tutorial.intro.mobile = Ви розпочали[scarlet] навчання по Mindustry.[]\nПроведіть екраном, щоб рухатися.\n[accent] Зведіть або розведіть 2 пальця [] для приближення і віддалення відповідно.\nз[accent] видобування міді.[] Наблизьтесь, а потім натисність на мідну жилу біля вашого ядра, щоб зробити це.\n\n[accent]{0}/{1} міді tutorial.intro.mobile = Ви розпочали[scarlet] навчання по Mindustry.[]\nПроведіть екраном, щоб рухатися.\n[accent] Зведіть або розведіть 2 пальця [] для приближення і віддалення відповідно.\nз[accent] видобування міді.[] Наблизьтесь, а потім натисність на мідну жилу біля вашого ядра, щоб зробити це.\n\n[accent]{0}/{1} міді
tutorial.drill = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисніть на вкладку свердла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням.\n[accent]Натисніть ПКМ[], щоб зупинити будування. tutorial.drill = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисніть на вкладку свердла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням.\nВи також можете вибрати бур, натиснувши [accent][[2][], а потім натиснути [accent][[1][] швидко, незалежно від того, яка вкладка відкрита.\n[accent]Натисніть ПКМ[], щоб зупинити будування.tutorial.drill.mobile = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисність на вкладку сведла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням, потім натисність на [accent] галочку[] нижче, щоб підтвердити розміщення .\nНатисніть[accent] клавішу X[], щоб скасувати розміщення.
tutorial.drill.mobile = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисність на вкладку сведла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням, потім натисність на [accent] галочку[] нижче, щоб підтвердити розміщення to confirm your selection.\nPress the[accent] X button[] to cancel placement. tutorial.drill.mobile = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисність на вкладку сведла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням, потім натисність на [accent] галочку[] нижче, щоб підтвердити розміщення.\nPress the[accent] X button[] to cancel placement.
tutorial.blockinfo = Кожен блок має різні характеристики. Кожний бур може видобувати тільки певні руди.\nЩоб переглянути інформацію та характеристики блока,[accent] натисність на кнопку «?», коли Ви вибрали блок у меню будування.[]\n\n[accent]Перегляньте характеристику Механічного бура прямо зараз.[] tutorial.blockinfo = Кожен блок має різні характеристики. Кожний бур може видобувати тільки певні руди.\nЩоб переглянути інформацію та характеристики блока,[accent] натисність на кнопку «?», коли Ви вибрали блок у меню будування.[]\n\n[accent]Перегляньте характеристику Механічного бура прямо зараз.[]
tutorial.conveyor = [accent]Конвеєри[] використовуються для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent]Утримуйте миш, щоб розмістити у лінію.[]\nУтримуйте[accent] CTRL[] під час вибору лінії для розміщення по діагоналі.\n\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено tutorial.conveyor = [accent]Конвеєри[] використовуються для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent]Утримуйте миш, щоб розмістити у лінію.[]\nУтримуйте[accent] CTRL[] під час вибору лінії для розміщення по діагоналі.\n\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено
tutorial.conveyor.mobile = [accent]Конвеєри[] використовується для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent] Розмістить у лінію, утримуючи палець кілька секунд[] і тягніть у напрямку, який Ви вибрали.\nВикористовуйте колесо прокрутки, щоб обертати блоки перед їх розміщенням\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено tutorial.conveyor.mobile = [accent]Конвеєри[] використовується для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent] Розмістить у лінію, утримуючи палець кілька секунд[] і тягніть у напрямку, який Ви вибрали.\nВикористовуйте колесо прокрутки, щоб обертати блоки перед їх розміщенням\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено
@@ -1026,7 +1074,7 @@ mech.alpha-mech.description = Стандартний керований мех.
mech.delta-mech.description = Швидкий, легкоброньований мех, зроблений для тактики «атакуй і біжи». Наносить мало шкоди будівлям, але може дуже швидко вбити великі групи підрозділів противника своєю дуговою блискавкою. mech.delta-mech.description = Швидкий, легкоброньований мех, зроблений для тактики «атакуй і біжи». Наносить мало шкоди будівлям, але може дуже швидко вбити великі групи підрозділів противника своєю дуговою блискавкою.
mech.tau-mech.description = Мех підтримки. Ремонтує союзні блоки, стріляючи по них. Може зцілювати союзників у радіусі його ремонтної здатності. mech.tau-mech.description = Мех підтримки. Ремонтує союзні блоки, стріляючи по них. Може зцілювати союзників у радіусі його ремонтної здатності.
mech.omega-mech.description = Об’ємний і добре броньований мех, зроблений для фронтових штурмів. Його броня може перекрити до 90% пошкоджень, що надходять. mech.omega-mech.description = Об’ємний і добре броньований мех, зроблений для фронтових штурмів. Його броня може перекрити до 90% пошкоджень, що надходять.
mech.dart-ship.description = Стандартний корабель управління. Розумно швидкий і легкий, але має мало наступальних можливостей і низьку швидкість видобутку. mech.dart-ship.description = Стандартний корабель управління. Швидко видобуває ресурси. Достатньо швидкий і легкий, але має мало наступальних можливостей.
mech.javelin-ship.description = Корабель для стратегії атакуй та біжи». Хоча спочатку він повільний, потім вже може розганятися до великих швидкостей і літати над ворожими форпостами, завдаючи великої кількості шкоди своїми блискавками та ракетами. mech.javelin-ship.description = Корабель для стратегії атакуй та біжи». Хоча спочатку він повільний, потім вже може розганятися до великих швидкостей і літати над ворожими форпостами, завдаючи великої кількості шкоди своїми блискавками та ракетами.
mech.trident-ship.description = Важкий бомбардувальник, побудований для будування та знищення ворожих укріплень. Дуже добре броньований. mech.trident-ship.description = Важкий бомбардувальник, побудований для будування та знищення ворожих укріплень. Дуже добре броньований.
mech.glaive-ship.description = Великий, добре броньований бойовий корабель. Оснащений запальним ретранслятором. Високо маневрений. mech.glaive-ship.description = Великий, добре броньований бойовий корабель. Оснащений запальним ретранслятором. Високо маневрений.
@@ -1046,7 +1094,7 @@ block.graphite-press.description = Стискає шматки вугілля в
block.multi-press.description = Модернізована версія графітового преса. Використовує воду та енергію для швидкої та ефективної переробки вугілля. block.multi-press.description = Модернізована версія графітового преса. Використовує воду та енергію для швидкої та ефективної переробки вугілля.
block.silicon-smelter.description = Змішує пісок з чистим вугіллям. Виробляє кремній. block.silicon-smelter.description = Змішує пісок з чистим вугіллям. Виробляє кремній.
block.kiln.description = Виплавляє пісок та свинець у сполуку, відому як метаскло. Для запуску потрібна невелика кількість енергії. block.kiln.description = Виплавляє пісок та свинець у сполуку, відому як метаскло. Для запуску потрібна невелика кількість енергії.
block.plastanium-compressor.description = Виробляє пластиній з нафти і титану. block.plastanium-compressor.description = Виробляє пластаній з нафти і титану.
block.phase-weaver.description = Синтезує фазову тканину з радіоактивного торію та піску. Для функціонування потрібна велика кількість енергії. block.phase-weaver.description = Синтезує фазову тканину з радіоактивного торію та піску. Для функціонування потрібна велика кількість енергії.
block.alloy-smelter.description = Поєднує титан, свинець, кремній і мідь для отримання кінетичного сплаву. block.alloy-smelter.description = Поєднує титан, свинець, кремній і мідь для отримання кінетичного сплаву.
block.cryofluidmixer.description = Змішує воду і дрібний порошок титану титану в кріогенну рідину. Основне використання у торієвому реактору. block.cryofluidmixer.description = Змішує воду і дрібний порошок титану титану в кріогенну рідину. Основне використання у торієвому реактору.
@@ -1091,13 +1139,14 @@ block.sorter.description = Сортує предмети. Якщо елемен
block.inverted-sorter.description = Обробляє елементи, як звичайний сортувальник, але виводить обрані елементи на сторони. block.inverted-sorter.description = Обробляє елементи, як звичайний сортувальник, але виводить обрані елементи на сторони.
block.router.description = Приймає елементи з одного напрямку та виводить їх до трьох інших напрямків порівну. Корисно для поділу матеріалів від одного джерела до кількох цілей.\n\n[scarlet]Ніколи не використовуйте поруч із входами до механізмів, оскільки вони будуть забиті вихідними предметами.[] block.router.description = Приймає елементи з одного напрямку та виводить їх до трьох інших напрямків порівну. Корисно для поділу матеріалів від одного джерела до кількох цілей.\n\n[scarlet]Ніколи не використовуйте поруч із входами до механізмів, оскільки вони будуть забиті вихідними предметами.[]
block.distributor.description = Розширений маршрутизатор. Розділяє предмети до 7 інших напрямків порівну. block.distributor.description = Розширений маршрутизатор. Розділяє предмети до 7 інших напрямків порівну.
block.overflow-gate.description = Комбінований розгалужувач і маршрутизатор. Виходи лише вліво і вправо, якщо передній шлях заблокований. block.overflow-gate.description = Виходи лише вліво і вправо, якщо передній шлях заблокований.
block.mass-driver.description = Кінцевий елемент транспортного блоку. Збирає кілька предметів, а потім вистрілює їх до іншої електромагнитної катапульти на великій відстані. Для роботи потрібна енергія. block.mass-driver.description = Кінцевий елемент транспортного блоку. Збирає кілька предметів, а потім вистрілює їх до іншої електромагнитної катапульти на великій відстані. Для роботи потрібна енергія.
block.mechanical-pump.description = Недорогий насос з повільним виходом, але без енергоспоживання. block.mechanical-pump.description = Недорогий насос з повільним виходом, але без енергоспоживання.
block.rotary-pump.description = Удосконалений насос. Насоси більше викачують, але потребують енергію. block.rotary-pump.description = Удосконалений насос. Насоси більше викачують, але потребують енергію.
block.thermal-pump.description = Найкращий насос. block.thermal-pump.description = Найкращий насос.
block.conduit.description = Основний блок транспортування рідини. Пересуває рідини вперед. Застосовується спільно з насосами та іншими трубопроводами. block.conduit.description = Основний блок транспортування рідини. Пересуває рідини вперед. Застосовується спільно з насосами та іншими трубопроводами.
block.pulse-conduit.description = Вдосконалений блок транспортування рідини. Транспортує рідини швидше і зберігає більше, ніж стандартні трубопроводи. block.pulse-conduit.description = Вдосконалений блок транспортування рідини. Транспортує рідини швидше і зберігає більше, ніж стандартні трубопроводи.
block.plated-conduit.description =Переміщує рідини з тією ж швидкістю, як і імпульсні трубопроводи, але має більше міцності. Не приймає рідин з боків окрім інших трубопроводів.\nПротікає менше.
block.liquid-router.description = Приймає рідини з одного напрямку та виводить їх до трьох інших напрямків порівну. Також можна зберігати певну кількість рідини. Корисно для розщеплення рідин від одного джерела до кількох мішеней. block.liquid-router.description = Приймає рідини з одного напрямку та виводить їх до трьох інших напрямків порівну. Також можна зберігати певну кількість рідини. Корисно для розщеплення рідин від одного джерела до кількох мішеней.
block.liquid-tank.description = Зберігає велику кількість рідини. Використовуйте для створення буферів у ситуаціях з непостійним попитом на матеріали або як гарантію охолодження життєво важливих блоків. block.liquid-tank.description = Зберігає велику кількість рідини. Використовуйте для створення буферів у ситуаціях з непостійним попитом на матеріали або як гарантію охолодження життєво важливих блоків.
block.liquid-junction.description = Діє як міст для двох каналів перетину. Корисно в ситуаціях, коли два різні трубопроводи перевозять різні рідини в різні місця. block.liquid-junction.description = Діє як міст для двох каналів перетину. Корисно в ситуаціях, коли два різні трубопроводи перевозять різні рідини в різні місця.
@@ -1106,6 +1155,7 @@ block.phase-conduit.description = Розширений блок транспор
block.power-node.description = Передає живлення на підключені вузли. Вузол буде отримувати живлення від будь-яких сусідніх блоків або подавати живлення до них. block.power-node.description = Передає живлення на підключені вузли. Вузол буде отримувати живлення від будь-яких сусідніх блоків або подавати живлення до них.
block.power-node-large.description = Удосконалений вузол живлення з більшим діапазоном. block.power-node-large.description = Удосконалений вузол живлення з більшим діапазоном.
block.surge-tower.description = Надзвичайно дальний вузол живлення з меншою кількістю доступних з’єднань. block.surge-tower.description = Надзвичайно дальний вузол живлення з меншою кількістю доступних з’єднань.
block.diode.description = Живлення акумулятора може протікати через цей блок лише в одному напрямку, але лише в тому випадку, якщо інша сторона має менше енергії.
block.battery.description = Зберігає енергію як буфер в часи надлишкової енергії. Виводить енергію у періоди дефіциту. block.battery.description = Зберігає енергію як буфер в часи надлишкової енергії. Виводить енергію у періоди дефіциту.
block.battery-large.description = Зберігає набагато більше енергії, ніж звичайний акумулятор. block.battery-large.description = Зберігає набагато більше енергії, ніж звичайний акумулятор.
block.combustion-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали, такі як вугілля. block.combustion-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали, такі як вугілля.

File diff suppressed because it is too large Load Diff

View File

@@ -10,13 +10,14 @@ link.dev-builds.description = 開發中版本
link.trello.description = 官方 Trello 功能規劃看板 link.trello.description = 官方 Trello 功能規劃看板
link.itch.io.description = itch.io 電腦版下載網頁 link.itch.io.description = itch.io 電腦版下載網頁
link.google-play.description = Google Play 商店頁面 link.google-play.description = Google Play 商店頁面
link.f-droid.description = F-Droid 目錄頁面
link.wiki.description = 官方 Mindustry 維基 link.wiki.description = 官方 Mindustry 維基
linkfail = 無法打開連結!\n我們已將該網址複製到您的剪貼簿。 linkfail = 無法打開連結!\n我們已將該網址複製到您的剪貼簿。
screenshot = 截圖保存到{0} screenshot = 截圖保存到{0}
screenshot.invalid = 地圖太大了,可能沒有足夠的內存用於截圖。 screenshot.invalid = 地圖太大了,可能沒有足夠的內存用於截圖。
gameover = 遊戲結束 gameover = 遊戲結束
gameover.pvp = [accent]{0}[]隊獲勝! gameover.pvp = [accent]{0}[]隊獲勝!
highscore = [accent]新的高分紀錄 highscore = [accent]新的高分紀錄!
copied = 已複製。 copied = 已複製。
load.sound = 音效載入中 load.sound = 音效載入中
@@ -52,7 +53,7 @@ stat.delivered = 發射的核心資源:
stat.rank = 最終排名:[accent]{0} stat.rank = 最終排名:[accent]{0}
launcheditems = [accent]已發射的物品 launcheditems = [accent]已發射的物品
launchinfo = [unlaunched][[LAUNCH]你的核心以獲得藍字部分的物品。 launchinfo = [unlaunched][[發射]核心以獲得藍字部分的物品。
map.delete = 確認要刪除「[accent]{0}[]」地圖嗎? map.delete = 確認要刪除「[accent]{0}[]」地圖嗎?
level.highscore = 最高分:[accent]{0} level.highscore = 最高分:[accent]{0}
level.select = 選擇關卡 level.select = 選擇關卡
@@ -78,6 +79,7 @@ maps.browse = 瀏覽地圖
continue = 繼續 continue = 繼續
maps.none = [lightgray]找不到地圖! maps.none = [lightgray]找不到地圖!
invalid = 無效 invalid = 無效
pickcolor = 選擇顏色
preparingconfig = 配置準備中 preparingconfig = 配置準備中
preparingcontent = 內容準備中 preparingcontent = 內容準備中
uploadingcontent = 內容上傳中 uploadingcontent = 內容上傳中
@@ -97,8 +99,9 @@ mod.disabled = [scarlet]已禁用
mod.enable = 啟用 mod.enable = 啟用
mod.disable = 禁用 mod.disable = 禁用
mod.delete.error = 無法刪除模組,檔案可能在使用中。 mod.delete.error = 無法刪除模組,檔案可能在使用中。
mod.requiresversion = [scarlet]遊戲版本要求:[accent]{0}
mod.missingdependencies = [scarlet]缺少依賴項目: {0} mod.missingdependencies = [scarlet]缺少依賴項目: {0}
mod.nowdisabled = [scarlet]「{0}'」模組缺少依賴項目:[accent] {1}\n[lightgray]必須先下載這些模組。\n此模組將被自動禁用。 mod.nowdisabled = [scarlet]「{0}」模組缺少必須項目:[accent] {1}\n[lightgray]必須先下載這些模組。\n此模組將被自動禁用。
mod.requiresrestart = 遊戲將立即關閉以套用模組變更。 mod.requiresrestart = 遊戲將立即關閉以套用模組變更。
mod.reloadrequired = [scarlet]需要重新載入 mod.reloadrequired = [scarlet]需要重新載入
mod.import = 匯入模組 mod.import = 匯入模組
@@ -138,7 +141,7 @@ server.kicked.idInUse = 你已經在伺服器中!不允許用兩個帳號。
server.kicked.customClient = 這個伺服器不支持自訂客戶端,請下載官方版本。 server.kicked.customClient = 這個伺服器不支持自訂客戶端,請下載官方版本。
server.kicked.gameover = 遊戲結束! server.kicked.gameover = 遊戲結束!
server.versions = 您的遊戲版本:[accent] {0}[]\n伺服器遊戲版本:[accent] {1}[] server.versions = 您的遊戲版本:[accent] {0}[]\n伺服器遊戲版本:[accent] {1}[]
host.info = 目前伺服器監聽於連接埠[scarlet]6567[]。\n所有跟您在同一個[lightgray]網路或區域網路[]環境的玩家應該能在他們的伺服器清單中找到您的伺服器。\n\n如果您希望網際網路上的玩家透過IP 位址連線到您的伺服器,您必須設定[accent]連接埠轉發[]。\n\n[lightgray]注意如果區域網路內有玩家無法連線至您的伺服器請務必確認您已於防火牆設定中開放Mindustry存取您的區域網路。請注意公共網路有時不允許搜尋伺服器。 host.info = [accent]建立伺服器[]按鍵會在連接埠[scarlet]6567[]建立一個伺服器。\n所有跟您在同一個[lightgray]網路或區域網路[]環境的玩家應該能在他們的伺服器清單中找到您的伺服器。\n\n如果您希望網際網路上的玩家透過IP 位址連線到您的伺服器,您必須設定[accent]連接埠轉發[]。\n\n[lightgray]注意如果區域網路內有玩家無法連線至您的伺服器請務必確認您已於防火牆設定中開放Mindustry存取您的區域網路。請注意公共網路有時不允許搜尋伺服器。
join.info = 您可以在此輸入欲連線的[accent]伺服器IP位址[],或尋找[accent]區域網路[]內的伺服器。目前支援區域網路與網際網路連線。\n\n[lightgray]注意並沒有自動的網際網路伺服器清單如果您想透過IP位址連線到他人的伺服器您必須向他們詢問IP位址。 join.info = 您可以在此輸入欲連線的[accent]伺服器IP位址[],或尋找[accent]區域網路[]內的伺服器。目前支援區域網路與網際網路連線。\n\n[lightgray]注意並沒有自動的網際網路伺服器清單如果您想透過IP位址連線到他人的伺服器您必須向他們詢問IP位址。
hostserver = 建立伺服器 hostserver = 建立伺服器
invitefriends = 邀請好友 invitefriends = 邀請好友
@@ -492,6 +495,7 @@ settings.language = 語言
settings.data = 遊戲數據 settings.data = 遊戲數據
settings.reset = 重設為預設設定 settings.reset = 重設為預設設定
settings.rebind = 重新綁定 settings.rebind = 重新綁定
settings.resetKey = 重設按鍵
settings.controls = 操作 settings.controls = 操作
settings.game = 遊戲 settings.game = 遊戲
settings.sound = 音效 settings.sound = 音效
@@ -558,8 +562,8 @@ bar.heat = 熱
bar.power = 能量 bar.power = 能量
bar.progress = 建造進度 bar.progress = 建造進度
bar.spawned = 單位:{0}/{1} bar.spawned = 單位:{0}/{1}
bar.input = 能量輸入 bar.input = 輸入
bar.output = 能量輸出 bar.output = 輸出
bullet.damage = [stat]{0}[lightgray]傷害 bullet.damage = [stat]{0}[lightgray]傷害
bullet.splashdamage = [stat]{0}[lightgray]範圍傷害 ~[stat] {1}[lightgray]格 bullet.splashdamage = [stat]{0}[lightgray]範圍傷害 ~[stat] {1}[lightgray]格
@@ -585,6 +589,8 @@ unit.persecond = /秒
unit.timesspeed = ×速度 unit.timesspeed = ×速度
unit.percent = % unit.percent = %
unit.items = 物品 unit.items = 物品
unit.thousands = k
unit.millions = mil
category.general = 一般 category.general = 一般
category.power = 能量 category.power = 能量
category.liquids = 液體 category.liquids = 液體
@@ -609,7 +615,7 @@ setting.fpscap.name = 最大FPS
setting.fpscap.none = 没有 setting.fpscap.none = 没有
setting.fpscap.text = {0}FPS setting.fpscap.text = {0}FPS
setting.uiscale.name = UI縮放[lightgray] (需要重啟遊戲)[] setting.uiscale.name = UI縮放[lightgray] (需要重啟遊戲)[]
setting.swapdiagonal.name = 始終對角線放置 setting.swapdiagonal.name = 預設對角線放置
setting.difficulty.training = 訓練 setting.difficulty.training = 訓練
setting.difficulty.easy = 簡單 setting.difficulty.easy = 簡單
setting.difficulty.normal = 普通 setting.difficulty.normal = 普通
@@ -645,19 +651,20 @@ public.confirm = 您想公開遊戲嗎?\n[accent]任何人都可以加入您
public.beta = 請注意該遊戲的Beta版本無法公開遊戲大廳。 public.beta = 請注意該遊戲的Beta版本無法公開遊戲大廳。
uiscale.reset = UI縮放已變更\n按下"確定"確認這個比例\n[scarlet][accent] {0}[] 秒後...退出並還原設定 uiscale.reset = UI縮放已變更\n按下"確定"確認這個比例\n[scarlet][accent] {0}[] 秒後...退出並還原設定
uiscale.cancel = 取消並退出 uiscale.cancel = 取消並退出
setting.bloom.name = 特效 setting.bloom.name = 粒子特效
keybind.title = 重新綁定按鍵 keybind.title = 重新綁定按鍵
keybinds.mobile = [scarlet]此處的大多數快捷鍵在移動設備上均不起作用。僅支援基本移動。 keybinds.mobile = [scarlet]此處的大多數快捷鍵在移動設備上均不起作用。僅支援基本移動。
category.general.name = 一般 category.general.name = 一般
category.view.name = 查看 category.view.name = 查看
category.multiplayer.name = 多人 category.multiplayer.name = 多人
command.attack = 攻擊 command.attack = 攻擊
command.rally = Rally command.rally = 集結
command.retreat = 撤退 command.retreat = 撤退
keybind.clear_building.name = 清除建築物 keybind.clear_building.name = 清除建築物
keybind.press = 按一下按鍵... keybind.press = 按一下按鍵...
keybind.press.axis = 按一下軸向或按鍵... keybind.press.axis = 按一下軸向或按鍵...
keybind.screenshot.name = 地圖截圖 keybind.screenshot.name = 地圖截圖
keybind.toggle_power_lines.name = 顯示能量激光
keybind.move_x.name = 水平移動 keybind.move_x.name = 水平移動
keybind.move_y.name = 垂直移動 keybind.move_y.name = 垂直移動
keybind.schematic_select.name = 選擇區域 keybind.schematic_select.name = 選擇區域
@@ -702,6 +709,7 @@ mode.attack.description = 沒有波次,目標是摧毀敵人的基地。
mode.custom = 自訂規則 mode.custom = 自訂規則
rules.infiniteresources = 無限資源 rules.infiniteresources = 無限資源
rules.reactorexplosions = 反應爐爆炸
rules.wavetimer = 波次時間 rules.wavetimer = 波次時間
rules.waves = 波次 rules.waves = 波次
rules.attack = 攻擊模式 rules.attack = 攻擊模式
@@ -727,6 +735,9 @@ rules.title.resourcesbuilding = 資源與建築
rules.title.player = 玩家 rules.title.player = 玩家
rules.title.enemy = 敵人 rules.title.enemy = 敵人
rules.title.unit = 單位 rules.title.unit = 單位
rules.title.experimental = 實驗中
rules.lighting = 光照
rules.ambientlight = 環境光照
content.item.name = 物品 content.item.name = 物品
content.liquid.name = 液體 content.liquid.name = 液體
@@ -775,6 +786,7 @@ mech.trident-ship.name = 三叉戟
mech.trident-ship.weapon = 轟炸艙 mech.trident-ship.weapon = 轟炸艙
mech.glaive-ship.name = 偃月刀 mech.glaive-ship.name = 偃月刀
mech.glaive-ship.weapon = 火焰機關槍 mech.glaive-ship.weapon = 火焰機關槍
item.corestorable = [lightgray]核心可儲存: {0}
item.explosiveness = [lightgray]爆炸性:{0} item.explosiveness = [lightgray]爆炸性:{0}
item.flammability = [lightgray]易燃性:{0} item.flammability = [lightgray]易燃性:{0}
item.radioactivity = [lightgray]放射性:{0} item.radioactivity = [lightgray]放射性:{0}
@@ -888,6 +900,8 @@ block.distributor.name = 大型分配器
block.sorter.name = 分類器 block.sorter.name = 分類器
block.inverted-sorter.name = 反向分類器 block.inverted-sorter.name = 反向分類器
block.message.name = 訊息板 block.message.name = 訊息板
block.illuminator.name = 照明燈
block.illuminator.description = 小、緊湊而且可調整的光源。需要能源來運作。
block.overflow-gate.name = 溢流器 block.overflow-gate.name = 溢流器
block.silicon-smelter.name = 煉矽廠 block.silicon-smelter.name = 煉矽廠
block.phase-weaver.name = 相織布編織器 block.phase-weaver.name = 相織布編織器
@@ -954,6 +968,7 @@ block.fortress-factory.name = 要塞機甲工廠
block.revenant-factory.name = 復仇鬼戰鬥機工廠 block.revenant-factory.name = 復仇鬼戰鬥機工廠
block.repair-point.name = 維修點 block.repair-point.name = 維修點
block.pulse-conduit.name = 脈衝管線 block.pulse-conduit.name = 脈衝管線
block.plated-conduit.name = 裝甲管線
block.phase-conduit.name = 相織管線 block.phase-conduit.name = 相織管線
block.liquid-router.name = 液體分配器 block.liquid-router.name = 液體分配器
block.liquid-tank.name = 液體儲存槽 block.liquid-tank.name = 液體儲存槽
@@ -1005,9 +1020,9 @@ unit.eradicator.name = 消除者
unit.lich.name = 巫妖 unit.lich.name = 巫妖
unit.reaper.name = 收掠者 unit.reaper.name = 收掠者
tutorial.next = [lightgray]<按下以繼續> tutorial.next = [lightgray]<按下以繼續>
tutorial.intro = 您已進入[scarlet] Mindustry 教學。[]\n從[accent] 挖掘銅礦[]開始吧。點擊靠近您核心的銅礦。\n\n[accent]{0}/{1}銅礦 tutorial.intro = 您已進入[scarlet] Mindustry 教學。[]\n使用[[WASD鍵]來移動.\n在滾動滾輪時[accent]按住 [[Ctrl][]來放大縮小畫面.\n從[accent]開採銅礦[]開始吧靠近它,然後在靠近核心的位置點擊銅礦。\n\n[accent]{0}/{1}銅礦
tutorial.intro.mobile = 您已進入[scarlet] Mindustry 教學。[]\n滑動螢幕即可移動。\n[accent]用兩指捏[]來縮放畫面。\n從[accent]開採銅礦[]開始吧。靠近它,然後在靠近核心的位置點擊銅礦。\n\n[accent]{0}/{1}銅礦 tutorial.intro.mobile = 您已進入[scarlet] Mindustry 教學。[]\n滑動螢幕即可移動。\n[accent]用兩指捏[]來縮放畫面。\n從[accent]開採銅礦[]開始吧。靠近它,然後在靠近核心的位置點擊銅礦。\n\n[accent]{0}/{1}銅礦
tutorial.drill = 手動挖掘礦石的效率很低。\n[accent]鑽頭[]能夠自動挖掘礦石。\n在銅脈上放置一個鑽頭。 tutorial.drill = 手動挖掘礦石的效率很低。\n[accent]鑽頭[]能夠自動挖掘礦石。\n在銅脈上放置一個鑽頭。
tutorial.drill.mobile = 手動挖掘礦石的效率很低。\n[accent]鑽頭[]能夠自動挖掘礦石。\n點選右下角的鑽頭選項\n選擇[accent]機械鑽頭[].\n通過點擊將其放置在銅礦上然後按下下方的[accent]確認標誌[]確認您的選擇\n按下[accent] X 按鈕[] 取消放置. tutorial.drill.mobile = 手動挖掘礦石的效率很低。\n[accent]鑽頭[]能夠自動挖掘礦石。\n點選右下角的鑽頭選項\n選擇[accent]機械鑽頭[].\n通過點擊將其放置在銅礦上然後按下下方的[accent]確認標誌[]確認您的選擇\n按下[accent] X 按鈕[] 取消放置.
tutorial.blockinfo = 每個方塊都有不同的屬性。每個鑽頭只能開採特定的礦石。\n查看方塊的資訊和屬性[accent]在建造目錄時按下"?"鈕。[]\n\n[accent]立即訪問機械鑽頭的屬性資料。[] tutorial.blockinfo = 每個方塊都有不同的屬性。每個鑽頭只能開採特定的礦石。\n查看方塊的資訊和屬性[accent]在建造目錄時按下"?"鈕。[]\n\n[accent]立即訪問機械鑽頭的屬性資料。[]
tutorial.conveyor = [accent]輸送帶[]能夠將物品運輸到核心。\n製作一條從鑽頭開始到核心的輸送帶。 tutorial.conveyor = [accent]輸送帶[]能夠將物品運輸到核心。\n製作一條從鑽頭開始到核心的輸送帶。
@@ -1018,16 +1033,15 @@ tutorial.pause = 在戰鬥中,你可以[accent]暫停遊戲。[]\n您可以在
tutorial.pause.mobile = 在戰鬥中,你可以[accent]暫停遊戲。[]\n您可以在暫停時規劃建築物並加入建造序列。\n\n[accent]按左上角的此按鈕暫停。 tutorial.pause.mobile = 在戰鬥中,你可以[accent]暫停遊戲。[]\n您可以在暫停時規劃建築物並加入建造序列。\n\n[accent]按左上角的此按鈕暫停。
tutorial.unpause = 現在再次按空格鍵即可取消暫停。 tutorial.unpause = 現在再次按空格鍵即可取消暫停。
tutorial.unpause.mobile = 現在再次按空格鍵即可取消暫停。 tutorial.unpause.mobile = 現在再次按空格鍵即可取消暫停。
tutorial.breaking = 方塊經常需要被銷毀。\n[accent]按住右鍵[]破壞選擇中的所有方塊。[]\n\n[accent]使用區域選擇銷毀核心左側的所有廢料方塊。 tutorial.breaking = 方塊經常需要被拆除。\n[accent]按住右鍵[]破壞選擇區域中的所有方塊。[]\n\n[accent]使用區域選擇拆除核心左側的所有廢料方塊。
tutorial.breaking.mobile = 方塊經常需要被銷毀。\n[accent]選擇解構模式[],然後點擊一個方塊開始破壞它。\n按住手指幾秒鐘以破壞區域[]並向一個方向拖動。\n按下複選標記按鈕以確認破壞。\n\n[accent]使用區域選擇銷毀核心左側的所有廢料方塊。 tutorial.breaking.mobile = 方塊經常需要被拆除。\n[accent]選擇拆除模式[],然後點擊一個方塊破壞它。\n按住螢幕幾秒鐘並向一個方向拖動以破壞一個範圍內的方塊[]。\n按下確認標記按鈕以確認拆除。\n\n[accent]使用區域選擇拆除核心左側的所有廢料方塊。
tutorial.withdraw = 在某些情況下,直接從方塊中取出物品是必要的。\n去做這個, [accent]點擊有物品的方塊[],然後[accent]點擊在方框中的物品[]。\n可以通過[accent]點擊或按[]來取出物品。\n\n[accent]從核心中取出一些銅。[] tutorial.withdraw = 在某些情況下,直接從方塊中取出物品是必要的。\n[accent]點擊有物品的方塊[],然後[accent]點擊在方框中的物品[]以將其取出。\n可以通過[accent]點擊或按[]來取出物品。\n\n[accent]從核心中取出一些銅。[]
tutorial.deposit = 通過將物品從船上拖到目標方塊,將物品放入塊中。\n\n[accent]將您的銅放到核心中。[] tutorial.deposit = 通過將物品從船上拖到目標方塊,將物品放入塊中。\n\n[accent]將您的銅放到核心中。[]
tutorial.waves = [lightgray]敵人[]來臨。\n\n防衛核心2波。建造更多的砲塔以防衛 tutorial.waves = [lightgray]敵人[]來臨。\n\n保護核心抵抗兩波攻擊。\n建造更多的砲塔和鑽頭。開採更多的銅
tutorial.waves.mobile = [lightgray]敵人[]接近。\n\n保護核心抵抗兩波攻擊。您的飛船將自動向敵人開火。\n建造更多的砲塔和鑽頭。開採更多的銅。
tutorial.launch = 一旦您達到特定的波數, 您就可以[accent] 發射核心[],放棄防禦並[accent]獲取核心中的所有資源。[]\n這些資源可以用於研究新科技。\n\n[accent]按下發射按鈕。 tutorial.launch = 一旦您達到特定的波數, 您就可以[accent] 發射核心[],放棄防禦並[accent]獲取核心中的所有資源。[]\n這些資源可以用於研究新科技。\n\n[accent]按下發射按鈕。
item.copper.description = 一種有用的結構材料。在各種類型的方塊中廣泛使用。 item.copper.description = 最基本的結構材料。在各種類型的方塊中廣泛使用。
item.lead.description = 一種基本的起始材料。被廣泛用於電子設備和運輸液體方塊。 item.lead.description = 一種基本的起始材料。被廣泛用於電子設備和液體運輸方塊。
item.metaglass.description = 一種高強度的玻璃。廣泛用於液體分配和存儲。 item.metaglass.description = 一種高強度的玻璃。廣泛用於液體分配和存儲。
item.graphite.description = 礦化的碳,用於彈藥和電氣絕緣。 item.graphite.description = 礦化的碳,用於彈藥和電氣絕緣。
item.sand.description = 一種常見的材料,廣泛用於冶煉,包括製作合金和助熔劑。 item.sand.description = 一種常見的材料,廣泛用於冶煉,包括製作合金和助熔劑。
item.coal.description = 遠在「播種」事件前就形成的植物化石。一種常見並容易獲得的燃料。 item.coal.description = 遠在「播種」事件前就形成的植物化石。一種常見並容易獲得的燃料。
@@ -1114,13 +1128,14 @@ block.sorter.description = 對物品進行分類。如果物品與所選種類
block.inverted-sorter.description = 處理物品的方式類似於分類器,但將所選擇的物品輸出到側面。 block.inverted-sorter.description = 處理物品的方式類似於分類器,但將所選擇的物品輸出到側面。
block.router.description = 接受來自一個方向的物品並將它們平均輸出到最多3個其他方向。用於將物品從一個來源分割為多個目標。 block.router.description = 接受來自一個方向的物品並將它們平均輸出到最多3個其他方向。用於將物品從一個來源分割為多個目標。
block.distributor.description = 高級的分配器可將物品均分到最多7個其他方向。 block.distributor.description = 高級的分配器可將物品均分到最多7個其他方向。
block.overflow-gate.description = 分離器和分配器的組合。如果前面被擋住,則向左邊和右邊輸出物品。 block.overflow-gate.description = 如果前面被擋住,則向左邊和右邊輸出物品。
block.mass-driver.description = 終極物品運輸方塊。收集大量物品,然後將它們射向另一個質量驅動器。需要能源以運作。 block.mass-driver.description = 終極物品運輸方塊。收集大量物品,然後將它們射向另一個質量驅動器。需要能源以運作。
block.mechanical-pump.description = 一種便宜的泵,輸出速度慢,但不使用能量。 block.mechanical-pump.description = 一種便宜的泵,輸出速度慢,但不使用能量。
block.rotary-pump.description = 高級的泵。抽更多液體,但需要能量。 block.rotary-pump.description = 高級的泵。抽更多液體,但需要能量。
block.thermal-pump.description = 終極的泵。 block.thermal-pump.description = 終極的泵。
block.conduit.description = 基本液體運輸方塊。將液體往前輸送。用於提取器、泵或其他管線。 block.conduit.description = 基本液體運輸方塊。將液體往前輸送。用於提取器、泵或其他管線。
block.pulse-conduit.description = 高級的液體運輸方塊。比標準管線更快地輸送並儲存更多液體。 block.pulse-conduit.description = 高級的液體運輸方塊。比標準管線更快地輸送並儲存更多液體。
block.plated-conduit.description = 用和脈衝管線相同的速率運送液體,但有更強的裝甲。除了其他管線以外,不會接受來自側面的其他液體\n比較不會漏液。
block.liquid-router.description = 接受來自一個方向的液體並將它們平均輸出到最多3個其他方向。可以儲存一定量的液體。用於將液體從一個來源分成多個目標。 block.liquid-router.description = 接受來自一個方向的液體並將它們平均輸出到最多3個其他方向。可以儲存一定量的液體。用於將液體從一個來源分成多個目標。
block.liquid-tank.description = 存儲大量液體。當液體需求非恆定時,使用它來創建緩衝或作為冷卻重要方塊的保障。 block.liquid-tank.description = 存儲大量液體。當液體需求非恆定時,使用它來創建緩衝或作為冷卻重要方塊的保障。
block.liquid-junction.description = 作為兩個交叉管線的橋樑。適用於兩條不同管線將不同液體運送到不同位置的情況。 block.liquid-junction.description = 作為兩個交叉管線的橋樑。適用於兩條不同管線將不同液體運送到不同位置的情況。

View File

@@ -0,0 +1,18 @@
#ifdef GL_ES
precision mediump float;
precision mediump int;
#endif
#define steprad 0.13
uniform sampler2D u_texture;
uniform vec4 u_ambient;
varying vec4 v_color;
varying vec2 v_texCoord;
void main(){
vec4 color = texture2D(u_texture, v_texCoord.xy);
//color.a = clamp(color.a, 0.0, 0.8);
gl_FragColor = clamp(vec4(mix(u_ambient.rgb, color.rgb, color.a), u_ambient.a - color.a), 0.0, 1.0);
}

View File

@@ -104,7 +104,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
public void resize(int width, int height){ public void resize(int width, int height){
if(assets == null) return; if(assets == null) return;
if(!assets.isFinished()){ if(!finished){
Draw.proj().setOrtho(0, 0, width, height); Draw.proj().setOrtho(0, 0, width, height);
}else{ }else{
super.resize(width, height); super.resize(width, height);

View File

@@ -32,8 +32,6 @@ import static io.anuke.arc.Core.settings;
public class Vars implements Loadable{ public class Vars implements Loadable{
/** Whether to load locales.*/ /** Whether to load locales.*/
public static boolean loadLocales = true; public static boolean loadLocales = true;
/** Maximum number of broken blocks. TODO implement or remove.*/
public static final int maxBrokenBlocks = 256;
/** Maximum schematic size.*/ /** Maximum schematic size.*/
public static final int maxSchematicSize = 32; public static final int maxSchematicSize = 32;
/** All schematic base64 starts with this string.*/ /** All schematic base64 starts with this string.*/
@@ -49,13 +47,15 @@ public class Vars implements Loadable{
/** URL for discord invite. */ /** URL for discord invite. */
public static final String discordURL = "https://discord.gg/mindustry"; public static final String discordURL = "https://discord.gg/mindustry";
/** URL for sending crash reports to */ /** URL for sending crash reports to */
public static final String crashReportURL = "http://mins.us.to/report"; public static final String crashReportURL = "http://192.99.169.18/report";
/** URL the links to the wiki's modding guide.*/ /** URL the links to the wiki's modding guide.*/
public static final String modGuideURL = "https://mindustrygame.github.io/wiki/modding/"; public static final String modGuideURL = "https://mindustrygame.github.io/wiki/modding/";
/** URL to the JSON file containing all the global, public servers. */
public static final String serverJsonURL = "https://raw.githubusercontent.com/Anuken/Mindustry/master/servers.json";
/** URL the links to the wiki's modding guide.*/ /** URL the links to the wiki's modding guide.*/
public static final String reportIssueURL = "https://github.com/Anuken/Mindustry/issues/new?template=bug_report.md"; public static final String reportIssueURL = "https://github.com/Anuken/Mindustry/issues/new?template=bug_report.md";
/** list of built-in servers.*/ /** list of built-in servers.*/
public static final Array<String> defaultServers = Array.with(/*"mins.us.to"*/); public static final Array<String> defaultServers = Array.with();
/** maximum distance between mine and core that supports automatic transferring */ /** maximum distance between mine and core that supports automatic transferring */
public static final float mineTransferRange = 220f; public static final float mineTransferRange = 220f;
/** team of the player by default */ /** team of the player by default */

View File

@@ -19,6 +19,8 @@ import io.anuke.mindustry.world.blocks.*;
import io.anuke.mindustry.world.blocks.defense.*; import io.anuke.mindustry.world.blocks.defense.*;
import io.anuke.mindustry.world.blocks.defense.turrets.*; import io.anuke.mindustry.world.blocks.defense.turrets.*;
import io.anuke.mindustry.world.blocks.distribution.*; import io.anuke.mindustry.world.blocks.distribution.*;
import io.anuke.mindustry.world.blocks.liquid.Conduit;
import io.anuke.mindustry.world.blocks.liquid.LiquidTank;
import io.anuke.mindustry.world.blocks.logic.*; import io.anuke.mindustry.world.blocks.logic.*;
import io.anuke.mindustry.world.blocks.power.*; import io.anuke.mindustry.world.blocks.power.*;
import io.anuke.mindustry.world.blocks.production.*; import io.anuke.mindustry.world.blocks.production.*;
@@ -48,18 +50,18 @@ public class Blocks implements ContentList{
melter, separator, sporePress, pulverizer, incinerator, coalCentrifuge, melter, separator, sporePress, pulverizer, incinerator, coalCentrifuge,
//sandbox //sandbox
powerSource, powerVoid, itemSource, itemVoid, liquidSource, message, powerSource, powerVoid, itemSource, itemVoid, liquidSource, message, illuminator,
//defense //defense
scrapWall, scrapWallLarge, scrapWallHuge, scrapWallGigantic, thruster, //ok, these names are getting ridiculous, but at least I don't have humongous walls yet
copperWall, copperWallLarge, titaniumWall, titaniumWallLarge, plastaniumWall, plastaniumWallLarge, thoriumWall, thoriumWallLarge, door, doorLarge, copperWall, copperWallLarge, titaniumWall, titaniumWallLarge, plastaniumWall, plastaniumWallLarge, thoriumWall, thoriumWallLarge, door, doorLarge,
phaseWall, phaseWallLarge, surgeWall, surgeWallLarge, mender, mendProjector, overdriveProjector, forceProjector, shockMine, phaseWall, phaseWallLarge, surgeWall, surgeWallLarge, mender, mendProjector, overdriveProjector, forceProjector, shockMine,
scrapWall, scrapWallLarge, scrapWallHuge, scrapWallGigantic, thruster, //ok, these names are getting ridiculous, but at least I don't have humongous walls yet
//transport //transport
conveyor, titaniumConveyor, armoredConveyor, distributor, junction, itemBridge, phaseConveyor, sorter, invertedSorter, router, overflowGate, massDriver, conveyor, titaniumConveyor, armoredConveyor, distributor, junction, itemBridge, phaseConveyor, sorter, invertedSorter, router, overflowGate, massDriver,
//liquids //liquids
mechanicalPump, rotaryPump, thermalPump, conduit, pulseConduit, liquidRouter, liquidTank, liquidJunction, bridgeConduit, phaseConduit, mechanicalPump, rotaryPump, thermalPump, conduit, pulseConduit, platedConduit, liquidRouter, liquidTank, liquidJunction, bridgeConduit, phaseConduit,
//power //power
combustionGenerator, thermalGenerator, turbineGenerator, differentialGenerator, rtgGenerator, solarPanel, largeSolarPanel, thoriumReactor, combustionGenerator, thermalGenerator, turbineGenerator, differentialGenerator, rtgGenerator, solarPanel, largeSolarPanel, thoriumReactor,
@@ -516,7 +518,7 @@ public class Blocks implements ContentList{
int bottomRegion = reg("-bottom"), weaveRegion = reg("-weave"); int bottomRegion = reg("-bottom"), weaveRegion = reg("-weave");
drawIcons = () -> new TextureRegion[]{Core.atlas.find(name + "-bottom"), Core.atlas.find(name)}; drawIcons = () -> new TextureRegion[]{Core.atlas.find(name + "-bottom"), Core.atlas.find(name), Core.atlas.find(name + "-weave")};
drawer = tile -> { drawer = tile -> {
GenericCrafterEntity entity = tile.entity(); GenericCrafterEntity entity = tile.entity();
@@ -721,69 +723,11 @@ public class Blocks implements ContentList{
consumes.power(0.50f); consumes.power(0.50f);
}}; }};
//endregion
//region sandbox
powerSource = new PowerSource("power-source"){{
requirements(Category.power, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true;
}};
powerVoid = new PowerVoid("power-void"){{
requirements(Category.power, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true;
}};
itemSource = new ItemSource("item-source"){{
requirements(Category.distribution, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true;
}};
itemVoid = new ItemVoid("item-void"){{
requirements(Category.distribution, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true;
}};
liquidSource = new LiquidSource("liquid-source"){{
requirements(Category.liquid, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true;
}};
message = new MessageBlock("message"){{
requirements(Category.effect, ItemStack.with(Items.graphite, 5));
}};
//endregion //endregion
//region defense //region defense
int wallHealthMultiplier = 4; int wallHealthMultiplier = 4;
scrapWall = new Wall("scrap-wall"){{
requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * wallHealthMultiplier;
variants = 5;
}};
scrapWallLarge = new Wall("scrap-wall-large"){{
requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * 4 * wallHealthMultiplier;
size = 2;
variants = 4;
}};
scrapWallHuge = new Wall("scrap-wall-huge"){{
requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * 9 * wallHealthMultiplier;
size = 3;
variants = 3;
}};
scrapWallGigantic = new Wall("scrap-wall-gigantic"){{
requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * 16 * wallHealthMultiplier;
size = 4;
}};
thruster = new Wall("thruster"){{
health = 55 * 16 * wallHealthMultiplier;
size = 4;
}};
copperWall = new Wall("copper-wall"){{ copperWall = new Wall("copper-wall"){{
requirements(Category.defense, ItemStack.with(Items.copper, 6)); requirements(Category.defense, ItemStack.with(Items.copper, 6));
health = 80 * wallHealthMultiplier; health = 80 * wallHealthMultiplier;
@@ -865,6 +809,37 @@ public class Blocks implements ContentList{
size = 2; size = 2;
}}; }};
scrapWall = new Wall("scrap-wall"){{
requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * wallHealthMultiplier;
variants = 5;
}};
scrapWallLarge = new Wall("scrap-wall-large"){{
requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * 4 * wallHealthMultiplier;
size = 2;
variants = 4;
}};
scrapWallHuge = new Wall("scrap-wall-huge"){{
requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * 9 * wallHealthMultiplier;
size = 3;
variants = 3;
}};
scrapWallGigantic = new Wall("scrap-wall-gigantic"){{
requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * 16 * wallHealthMultiplier;
size = 4;
}};
thruster = new Wall("thruster"){{
health = 55 * 16 * wallHealthMultiplier;
size = 4;
}};
mender = new MendProjector("mender"){{ mender = new MendProjector("mender"){{
requirements(Category.effect, ItemStack.with(Items.lead, 30, Items.copper, 25)); requirements(Category.effect, ItemStack.with(Items.lead, 30, Items.copper, 25));
consumes.power(0.3f); consumes.power(0.3f);
@@ -929,7 +904,7 @@ public class Blocks implements ContentList{
}}; }};
armoredConveyor = new ArmoredConveyor("armored-conveyor"){{ armoredConveyor = new ArmoredConveyor("armored-conveyor"){{
requirements(Category.distribution, ItemStack.with(Items.metaglass, 1, Items.thorium, 1)); requirements(Category.distribution, ItemStack.with(Items.plastanium, 1, Items.thorium, 1, Items.metaglass, 1));
health = 180; health = 180;
speed = 0.08f; speed = 0.08f;
}}; }};
@@ -1013,7 +988,7 @@ public class Blocks implements ContentList{
size = 3; size = 3;
}}; }};
conduit = new Conduit("conduit"){{ conduit = new io.anuke.mindustry.world.blocks.liquid.Conduit("conduit"){{
requirements(Category.liquid, ItemStack.with(Items.metaglass, 1)); requirements(Category.liquid, ItemStack.with(Items.metaglass, 1));
health = 45; health = 45;
}}; }};
@@ -1025,7 +1000,14 @@ public class Blocks implements ContentList{
health = 90; health = 90;
}}; }};
liquidRouter = new LiquidRouter("liquid-router"){{ platedConduit = new io.anuke.mindustry.world.blocks.liquid.ArmoredConduit("plated-conduit"){{
requirements(Category.liquid, ItemStack.with(Items.thorium, 2, Items.metaglass, 1));
liquidCapacity = 16f;
liquidPressure = 1.025f;
health = 220;
}};
liquidRouter = new io.anuke.mindustry.world.blocks.liquid.LiquidRouter("liquid-router"){{
requirements(Category.liquid, ItemStack.with(Items.graphite, 4, Items.metaglass, 2)); requirements(Category.liquid, ItemStack.with(Items.graphite, 4, Items.metaglass, 2));
liquidCapacity = 20f; liquidCapacity = 20f;
}}; }};
@@ -1037,17 +1019,17 @@ public class Blocks implements ContentList{
health = 500; health = 500;
}}; }};
liquidJunction = new LiquidJunction("liquid-junction"){{ liquidJunction = new io.anuke.mindustry.world.blocks.liquid.LiquidJunction("liquid-junction"){{
requirements(Category.liquid, ItemStack.with(Items.graphite, 2, Items.metaglass, 2)); requirements(Category.liquid, ItemStack.with(Items.graphite, 2, Items.metaglass, 2));
}}; }};
bridgeConduit = new LiquidExtendingBridge("bridge-conduit"){{ bridgeConduit = new io.anuke.mindustry.world.blocks.liquid.LiquidExtendingBridge("bridge-conduit"){{
requirements(Category.liquid, ItemStack.with(Items.graphite, 4, Items.metaglass, 8)); requirements(Category.liquid, ItemStack.with(Items.graphite, 4, Items.metaglass, 8));
range = 4; range = 4;
hasPower = false; hasPower = false;
}}; }};
phaseConduit = new LiquidBridge("phase-conduit"){{ phaseConduit = new io.anuke.mindustry.world.blocks.liquid.LiquidBridge("phase-conduit"){{
requirements(Category.liquid, ItemStack.with(Items.phasefabric, 5, Items.silicon, 7, Items.metaglass, 20, Items.titanium, 10)); requirements(Category.liquid, ItemStack.with(Items.phasefabric, 5, Items.silicon, 7, Items.metaglass, 20, Items.titanium, 10));
range = 12; range = 12;
hasPower = true; hasPower = true;
@@ -1152,7 +1134,7 @@ public class Blocks implements ContentList{
powerProduction = 14f; powerProduction = 14f;
consumes.item(Items.thorium); consumes.item(Items.thorium);
heating = 0.02f; heating = 0.02f;
consumes.liquid(Liquids.cryofluid, 0.1f).update(false); consumes.liquid(Liquids.cryofluid, heating / coolantPower).update(false);
}}; }};
impactReactor = new ImpactReactor("impact-reactor"){{ impactReactor = new ImpactReactor("impact-reactor"){{
@@ -1821,6 +1803,45 @@ public class Blocks implements ContentList{
consumes.power(1.2f); consumes.power(1.2f);
}}; }};
//endregion
//region sandbox
powerSource = new PowerSource("power-source"){{
requirements(Category.power, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true;
}};
powerVoid = new PowerVoid("power-void"){{
requirements(Category.power, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true;
}};
itemSource = new ItemSource("item-source"){{
requirements(Category.distribution, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true;
}};
itemVoid = new ItemVoid("item-void"){{
requirements(Category.distribution, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true;
}};
liquidSource = new LiquidSource("liquid-source"){{
requirements(Category.liquid, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true;
}};
message = new MessageBlock("message"){{
requirements(Category.effect, ItemStack.with(Items.graphite, 5));
}};
illuminator = new LightBlock("illuminator"){{
requirements(Category.effect, BuildVisibility.lightingOnly, ItemStack.with(Items.graphite, 4, Items.silicon, 2));
brightness = 0.67f;
radius = 120f;
consumes.power(0.05f);
}};
//endregion //endregion
} }
} }

View File

@@ -13,7 +13,7 @@ import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.ui.Cicon;
import static io.anuke.mindustry.Vars.tilesize; import static io.anuke.mindustry.Vars.*;
public class Fx implements ContentList{ public class Fx implements ContentList{
public static Effect public static Effect
@@ -456,6 +456,8 @@ public class Fx implements ContentList{
}); });
Draw.color(); Draw.color();
renderer.lights.add(e.x, e.y, 20f * e.fslope(), Pal.lightFlame, 0.5f);
}); });
fireSmoke = new Effect(35f, e -> { fireSmoke = new Effect(35f, e -> {

View File

@@ -19,6 +19,7 @@ public class Liquids implements ContentList{
temperature = 1f; temperature = 1f;
viscosity = 0.8f; viscosity = 0.8f;
effect = StatusEffects.melting; effect = StatusEffects.melting;
lightColor = Color.valueOf("f0511d").a(0.4f);
}}; }};
oil = new Liquid("oil", Color.valueOf("313131")){{ oil = new Liquid("oil", Color.valueOf("313131")){{
@@ -34,6 +35,7 @@ public class Liquids implements ContentList{
heatCapacity = 0.9f; heatCapacity = 0.9f;
temperature = 0.25f; temperature = 0.25f;
effect = StatusEffects.freezing; effect = StatusEffects.freezing;
lightColor = Color.valueOf("0097f5").a(0.2f);
}}; }};
} }
} }

View File

@@ -199,6 +199,10 @@ public class TechTree implements ContentList{
node(phaseConduit, () -> { node(phaseConduit, () -> {
}); });
node(platedConduit, () -> {
});
}); });
node(rotaryPump, () -> { node(rotaryPump, () -> {

View File

@@ -5,7 +5,7 @@ import io.anuke.arc.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
import io.anuke.mindustry.core.GameState.*; import io.anuke.mindustry.core.GameState.*;
import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.ctype.*;
import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.EventType.*;
@@ -189,6 +189,7 @@ public class Logic implements ApplicationListener{
for(Item item : content.items()){ for(Item item : content.items()){
if(tile == null || tile.entity == null || tile.entity.items == null) continue; if(tile == null || tile.entity == null || tile.entity.items == null) continue;
data.addItem(item, tile.entity.items.get(item)); data.addItem(item, tile.entity.items.get(item));
Events.fire(new LaunchItemEvent(item, tile.entity.items.get(item)));
} }
world.removeBlock(tile); world.removeBlock(tile);
} }

View File

@@ -292,7 +292,7 @@ public class NetServer implements ApplicationListener{
} }
//cooldown between votes //cooldown between votes
int voteTime = 60 * 5; int voteTime = 60 * 3;
Timekeeper vtime = new Timekeeper(voteTime); Timekeeper vtime = new Timekeeper(voteTime);
//current kick sessions //current kick sessions
VoteSession[] currentlyKicking = {null}; VoteSession[] currentlyKicking = {null};
@@ -484,7 +484,7 @@ public class NetServer implements ApplicationListener{
for(BuildRequest req : requests){ for(BuildRequest req : requests){
if(req == null) continue; if(req == null) continue;
Tile tile = world.tile(req.x, req.y); Tile tile = world.tile(req.x, req.y);
if(tile == null) continue; if(tile == null || (!req.breaking && req.block == null)) continue;
//auto-skip done requests //auto-skip done requests
if(req.breaking && tile.block() == Blocks.air){ if(req.breaking && tile.block() == Blocks.air){
continue; continue;

View File

@@ -32,6 +32,7 @@ public class Renderer implements ApplicationListener{
public final BlockRenderer blocks = new BlockRenderer(); public final BlockRenderer blocks = new BlockRenderer();
public final MinimapRenderer minimap = new MinimapRenderer(); public final MinimapRenderer minimap = new MinimapRenderer();
public final OverlayRenderer overlays = new OverlayRenderer(); public final OverlayRenderer overlays = new OverlayRenderer();
public final LightRenderer lights = new LightRenderer();
public final Pixelator pixelator = new Pixelator(); public final Pixelator pixelator = new Pixelator();
public FrameBuffer shieldBuffer = new FrameBuffer(2, 2); public FrameBuffer shieldBuffer = new FrameBuffer(2, 2);
@@ -256,6 +257,7 @@ public class Renderer implements ApplicationListener{
drawFlyerShadows(); drawFlyerShadows();
blocks.drawBlocks(Layer.power); blocks.drawBlocks(Layer.power);
blocks.drawBlocks(Layer.lights);
drawAllTeams(true); drawAllTeams(true);
@@ -298,6 +300,10 @@ public class Renderer implements ApplicationListener{
playerGroup.draw(p -> !p.isDead(), Player::drawName); playerGroup.draw(p -> !p.isDead(), Player::drawName);
if(state.rules.lighting){
lights.draw();
}
drawLanding(); drawLanding();
Draw.color(); Draw.color();

View File

@@ -70,6 +70,7 @@ public class UI implements ApplicationListener, Loadable{
public MinimapDialog minimap; public MinimapDialog minimap;
public SchematicsDialog schematics; public SchematicsDialog schematics;
public ModsDialog mods; public ModsDialog mods;
public ColorPicker picker;
public Cursor drillCursor, unloadCursor; public Cursor drillCursor, unloadCursor;
@@ -211,6 +212,7 @@ public class UI implements ApplicationListener, Loadable{
listfrag = new PlayerListFragment(); listfrag = new PlayerListFragment();
loadfrag = new LoadingFragment(); loadfrag = new LoadingFragment();
picker = new ColorPicker();
editor = new MapEditorDialog(); editor = new MapEditorDialog();
controls = new ControlsDialog(); controls = new ControlsDialog();
restart = new GameOverDialog(); restart = new GameOverDialog();
@@ -427,12 +429,15 @@ public class UI implements ApplicationListener, Loadable{
} }
public void showCustomConfirm(String title, String text, String yes, String no, Runnable confirmed){ public void showCustomConfirm(String title, String text, String yes, String no, Runnable confirmed, Runnable denied){
FloatingDialog dialog = new FloatingDialog(title); FloatingDialog dialog = new FloatingDialog(title);
dialog.cont.add(text).width(mobile ? 400f : 500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center); dialog.cont.add(text).width(mobile ? 400f : 500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center);
dialog.buttons.defaults().size(200f, 54f).pad(2f); dialog.buttons.defaults().size(200f, 54f).pad(2f);
dialog.setFillParent(false); dialog.setFillParent(false);
dialog.buttons.addButton(no, dialog::hide); dialog.buttons.addButton(no, () -> {
dialog.hide();
denied.run();
});
dialog.buttons.addButton(yes, () -> { dialog.buttons.addButton(yes, () -> {
dialog.hide(); dialog.hide();
confirmed.run(); confirmed.run();
@@ -456,11 +461,11 @@ public class UI implements ApplicationListener, Loadable{
public String formatAmount(int number){ public String formatAmount(int number){
if(number >= 1000000){ if(number >= 1000000){
return Strings.fixed(number / 1000000f, 1) + "[gray]mil[]"; return Strings.fixed(number / 1000000f, 1) + "[gray]" + Core.bundle.getOrNull("unit.millions") + "[]";
}else if(number >= 10000){ }else if(number >= 10000){
return number / 1000 + "[gray]k[]"; return number / 1000 + "[gray]k[]";
}else if(number >= 1000){ }else if(number >= 1000){
return Strings.fixed(number / 1000f, 1) + "[gray]k[]"; return Strings.fixed(number / 1000f, 1) + "[gray]" + Core.bundle.getOrNull("unit.thousands") + "[]";
}else{ }else{
return number + ""; return number + "";
} }

View File

@@ -5,6 +5,7 @@ import io.anuke.arc.*;
import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.scene.ui.layout.*;
import io.anuke.mindustry.*; import io.anuke.mindustry.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.ui.Cicon;
/** Base interface for an unlockable content type. */ /** Base interface for an unlockable content type. */
@@ -25,7 +26,7 @@ public abstract class UnlockableContent extends MappableContent{
/** Generate any special icons for this content. Called asynchronously.*/ /** Generate any special icons for this content. Called asynchronously.*/
@CallSuper @CallSuper
public void createIcons(PixmapPacker out, PixmapPacker editor){ public void createIcons(MultiPacker packer){
} }

View File

@@ -237,6 +237,12 @@ public class Puddle extends SolidEntity implements SaveTrait, Poolable, DrawTrai
seeds++; seeds++;
}); });
Draw.color(); Draw.color();
if(liquid.lightColor.a > 0.001f && f > 0){
Color color = liquid.lightColor;
float opacity = color.a * f;
renderer.lights.add(tile.drawx(), tile.drawy(), 30f * f, color, opacity * 0.8f);
}
} }
@Override @Override

View File

@@ -35,14 +35,14 @@ public interface BuilderTrait extends Entity, TeamTrait{
float finalPlaceDst = state.rules.infiniteResources ? Float.MAX_VALUE : placeDistance; float finalPlaceDst = state.rules.infiniteResources ? Float.MAX_VALUE : placeDistance;
Unit unit = (Unit)this; Unit unit = (Unit)this;
//remove already completed build requests Iterator<BuildRequest> it = buildQueue().iterator();
removal.clear(); while(it.hasNext()){
removal.addAll(buildQueue()); BuildRequest req = it.next();
Structs.filter(buildQueue(), req -> {
Tile tile = world.tile(req.x, req.y); Tile tile = world.tile(req.x, req.y);
return tile == null || (req.breaking && tile.block() == Blocks.air) || (!req.breaking && (tile.rotation() == req.rotation || !req.block.rotate) && tile.block() == req.block); if(tile == null || (req.breaking && tile.block() == Blocks.air) || (!req.breaking && (tile.rotation() == req.rotation || !req.block.rotate) && tile.block() == req.block)){
}); it.remove();
}
}
TileEntity core = unit.getClosestCore(); TileEntity core = unit.getClosestCore();
@@ -62,6 +62,8 @@ public interface BuilderTrait extends Entity, TeamTrait{
BuildRequest current = buildRequest(); BuildRequest current = buildRequest();
if(dst(current.tile()) > finalPlaceDst) return;
Tile tile = world.tile(current.x, current.y); Tile tile = world.tile(current.x, current.y);
if(!(tile.block() instanceof BuildBlock)){ if(!(tile.block() instanceof BuildBlock)){
@@ -113,7 +115,7 @@ public interface BuilderTrait extends Entity, TeamTrait{
/** @return whether this request should be skipped, in favor of the next one. */ /** @return whether this request should be skipped, in favor of the next one. */
default boolean shouldSkip(BuildRequest request, @Nullable TileEntity core){ default boolean shouldSkip(BuildRequest request, @Nullable TileEntity core){
//requests that you have at least *started* are considered //requests that you have at least *started* are considered
if(state.rules.infiniteResources || request.breaking || !request.initialized) return false; if(state.rules.infiniteResources || request.breaking || !request.initialized || core == null) return false;
return request.stuck && !core.items.has(request.block.requirements); return request.stuck && !core.items.has(request.block.requirements);
} }
@@ -228,7 +230,6 @@ public interface BuilderTrait extends Entity, TeamTrait{
//due to iOS weirdness, this is apparently required //due to iOS weirdness, this is apparently required
class BuildDataStatic{ class BuildDataStatic{
static Array<BuildRequest> removal = new Array<>();
static Vector2[] tmptr = new Vector2[]{new Vector2(), new Vector2(), new Vector2(), new Vector2()}; static Vector2[] tmptr = new Vector2[]{new Vector2(), new Vector2(), new Vector2(), new Vector2()};
} }

View File

@@ -11,6 +11,7 @@ import io.anuke.mindustry.entities.bullet.*;
import io.anuke.mindustry.entities.effect.*; import io.anuke.mindustry.entities.effect.*;
import io.anuke.mindustry.entities.traits.*; import io.anuke.mindustry.entities.traits.*;
import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
@@ -294,6 +295,7 @@ public class Bullet extends SolidEntity implements DamageTrait, ScaleTrait, Pool
@Override @Override
public void draw(){ public void draw(){
type.draw(this); type.draw(this);
renderer.lights.add(x, y, 16f, Pal.powerLight, 0.3f);
} }
@Override @Override

View File

@@ -24,9 +24,7 @@ import io.anuke.mindustry.io.*;
import io.anuke.mindustry.net.Administration.*; import io.anuke.mindustry.net.Administration.*;
import io.anuke.mindustry.net.*; import io.anuke.mindustry.net.*;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
import io.anuke.mindustry.type.TypeID;
import io.anuke.mindustry.ui.*; import io.anuke.mindustry.ui.*;
import io.anuke.mindustry.ui.Cicon;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.blocks.*;
@@ -352,6 +350,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
Draw.rect(getPowerCellRegion(), x + Angles.trnsx(rotation, mech.cellTrnsY, 0f), y + Angles.trnsy(rotation, mech.cellTrnsY, 0f), rotation - 90); Draw.rect(getPowerCellRegion(), x + Angles.trnsx(rotation, mech.cellTrnsY, 0f), y + Angles.trnsy(rotation, mech.cellTrnsY, 0f), rotation - 90);
Draw.reset(); Draw.reset();
drawBackItems(itemtime, isLocal); drawBackItems(itemtime, isLocal);
drawLight();
} }
@Override @Override

View File

@@ -15,6 +15,7 @@ import io.anuke.mindustry.game.*;
import io.anuke.mindustry.game.EventType.BlockDestroyEvent; import io.anuke.mindustry.game.EventType.BlockDestroyEvent;
import io.anuke.mindustry.gen.*; import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.consumers.*;
import io.anuke.mindustry.world.modules.*; import io.anuke.mindustry.world.modules.*;
import java.io.*; import java.io.*;
@@ -89,7 +90,7 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
/** Base efficiency. If this entity has non-buffered power, returns the power %, otherwise returns 1. */ /** Base efficiency. If this entity has non-buffered power, returns the power %, otherwise returns 1. */
public float efficiency(){ public float efficiency(){
return power != null && !block.consumes.getPower().buffered ? power.status : 1f; return power != null && (block.consumes.has(ConsumeType.power) && !block.consumes.getPower().buffered) ? power.status : 1f;
} }
/** Call when nothing is happening to the entity. This increments the internal sleep timer. */ /** Call when nothing is happening to the entity. This increments the internal sleep timer. */
@@ -311,13 +312,17 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
loops.play(block.idleSound, this, block.idleSoundVolume); loops.play(block.idleSound, this, block.idleSoundVolume);
} }
Block previous = block;
block.update(tile); block.update(tile);
if(block == previous && cons != null){
if(liquids != null){
liquids.update();
}
if(cons != null){
cons.update(); cons.update();
} }
if(block == previous && power != null){ if(power != null){
power.graph.update(); power.graph.update();
} }
} }

View File

@@ -167,6 +167,8 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
} }
public void writeSave(DataOutput stream, boolean net) throws IOException{ public void writeSave(DataOutput stream, boolean net) throws IOException{
if(item.item == null) item.item = Items.copper;
stream.writeByte(team.ordinal()); stream.writeByte(team.ordinal());
stream.writeBoolean(isDead()); stream.writeBoolean(isDead());
stream.writeFloat(net ? interpolator.target.x : x); stream.writeFloat(net ? interpolator.target.x : x);
@@ -399,6 +401,12 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
Draw.color(); Draw.color();
drawBackItems(item.amount > 0 ? 1f : 0f, false); drawBackItems(item.amount > 0 ? 1f : 0f, false);
drawLight();
}
public void drawLight(){
renderer.lights.add(x, y, 50f, Pal.powerLight, 0.6f);
} }
public void drawBackItems(float itemtime, boolean number){ public void drawBackItems(float itemtime, boolean number){

View File

@@ -37,6 +37,14 @@ public class EventType{
public static class LaunchEvent{} public static class LaunchEvent{}
public static class LaunchItemEvent{
public final ItemStack stack;
public LaunchItemEvent(Item item, int amount){
this.stack = new ItemStack(item, amount);
}
}
public static class MapMakeEvent{} public static class MapMakeEvent{}
public static class MapPublishEvent{} public static class MapPublishEvent{}
@@ -333,5 +341,39 @@ public class EventType{
} }
} }
public static class PlayerBanEvent{
public final Player player;
public PlayerBanEvent(Player player){
this.player = player;
}
}
public static class PlayerUnbanEvent{
public final Player player;
public PlayerUnbanEvent(Player player){
this.player = player;
}
}
public static class PlayerIpBanEvent{
public final String ip;
public PlayerIpBanEvent(String ip){
this.ip = ip;
}
}
public static class PlayerIpUnbanEvent{
public final String ip;
public PlayerIpUnbanEvent(String ip){
this.ip = ip;
}
}
} }

View File

@@ -2,6 +2,7 @@ package io.anuke.mindustry.game;
import io.anuke.annotations.Annotations.*; import io.anuke.annotations.Annotations.*;
import io.anuke.arc.collection.*; import io.anuke.arc.collection.*;
import io.anuke.arc.graphics.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
import io.anuke.mindustry.io.*; import io.anuke.mindustry.io.*;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
@@ -25,6 +26,8 @@ public class Rules{
public boolean pvp; public boolean pvp;
/** Whether enemy units drop random items on death. */ /** Whether enemy units drop random items on death. */
public boolean unitDrops = true; public boolean unitDrops = true;
/** Whether reactors can explode and damage other blocks. */
public boolean reactorExplosions = true;
/** How fast unit pads build units. */ /** How fast unit pads build units. */
public float unitBuildSpeedMultiplier = 1f; public float unitBuildSpeedMultiplier = 1f;
/** How much health units start with. */ /** How much health units start with. */
@@ -65,12 +68,16 @@ public class Rules{
public boolean attackMode = false; public boolean attackMode = false;
/** Whether this is the editor gamemode. */ /** Whether this is the editor gamemode. */
public boolean editor = false; public boolean editor = false;
/** Whether the tutorial is enabled. False by default.*/ /** Whether the tutorial is enabled. False by default. */
public boolean tutorial = false; public boolean tutorial = false;
/** Starting items put in cores */ /** Starting items put in cores */
public Array<ItemStack> loadout = Array.with(ItemStack.with(Items.copper, 100)); public Array<ItemStack> loadout = Array.with(ItemStack.with(Items.copper, 100));
/** Blocks that cannot be placed. */ /** Blocks that cannot be placed. */
public ObjectSet<Block> bannedBlocks = new ObjectSet<>(); public ObjectSet<Block> bannedBlocks = new ObjectSet<>();
/** Whether everything is dark. Enables lights. Experimental. */
public boolean lighting = false;
/** Ambient light color, used when lighting is enabled. */
public Color ambientLight = new Color(0.01f, 0.01f, 0.04f, 0.99f);
/** Copies this ruleset exactly. Not very efficient at all, do not use often. */ /** Copies this ruleset exactly. Not very efficient at all, do not use often. */
public Rules copy(){ public Rules copy(){

View File

@@ -9,7 +9,7 @@ import io.anuke.mindustry.type.*;
@Serialize @Serialize
public class Stats{ public class Stats{
/** Items delivered to global resoure counter. Zones only. */ /** Items delivered to global resoure counter. Zones only. */
public transient ObjectIntMap<Item> itemsDelivered = new ObjectIntMap<>(); public ObjectIntMap<Item> itemsDelivered = new ObjectIntMap<>();
/** Enemy (red team) units destroyed. */ /** Enemy (red team) units destroyed. */
public int enemyUnitsDestroyed; public int enemyUnitsDestroyed;
/** Total waves lasted. */ /** Total waves lasted. */

View File

@@ -9,11 +9,11 @@ import io.anuke.arc.graphics.glutils.*;
import io.anuke.arc.math.*; import io.anuke.arc.math.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
import io.anuke.mindustry.game.*;
import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.EventType.*;
import io.anuke.mindustry.game.Teams.*; import io.anuke.mindustry.game.Teams.*;
import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.ui.*;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.blocks.*;
import static io.anuke.arc.Core.camera; import static io.anuke.arc.Core.camera;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
@@ -219,6 +219,10 @@ public class BlockRenderer implements Disposable{
addRequest(tile, Layer.block); addRequest(tile, Layer.block);
} }
if(state.rules.lighting && tile.block().synthetic() && !(tile.block() instanceof BlockPart)){
addRequest(tile, Layer.lights);
}
if(block.expanded || !expanded){ if(block.expanded || !expanded){
if(block.layer != null){ if(block.layer != null){
@@ -274,6 +278,9 @@ public class BlockRenderer implements Disposable{
if(block.synthetic() && request.tile.getTeam() != player.getTeam()){ if(block.synthetic() && request.tile.getTeam() != player.getTeam()){
block.drawTeam(request.tile); block.drawTeam(request.tile);
} }
}else if(request.layer == Layer.lights){
block.drawLight(request.tile);
}else if(request.layer == block.layer){ }else if(request.layer == block.layer){
block.drawLayer(request.tile); block.drawLayer(request.tile);
}else if(request.layer == block.layer2){ }else if(request.layer == block.layer2){
@@ -282,39 +289,6 @@ public class BlockRenderer implements Disposable{
} }
} }
public void drawTeamBlocks(Layer layer, Team team){
int index = this.iterateidx;
for(; index < requestidx; index++){
if(index < requests.size && requests.get(index).layer.ordinal() > layer.ordinal()){
break;
}
BlockRequest req = requests.get(index);
if(req.tile.getTeam() != team) continue;
Block block = req.tile.block();
if(req.layer == Layer.block){
block.draw(req.tile);
}else if(req.layer == block.layer){
block.drawLayer(req.tile);
}else if(req.layer == block.layer2){
block.drawLayer2(req.tile);
}
}
}
public void skipLayer(Layer stopAt){
for(; iterateidx < requestidx; iterateidx++){
if(iterateidx < requests.size && requests.get(iterateidx).layer.ordinal() > stopAt.ordinal()){
break;
}
}
}
private void addRequest(Tile tile, Layer layer){ private void addRequest(Tile tile, Layer layer){
if(requestidx >= requests.size){ if(requestidx >= requests.size){
requests.add(new BlockRequest()); requests.add(new BlockRequest());

View File

@@ -6,6 +6,8 @@ import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.math.*; import io.anuke.arc.math.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import static io.anuke.mindustry.Vars.renderer;
public class Drawf{ public class Drawf{
public static void dashCircle(float x, float y, float rad, Color color){ public static void dashCircle(float x, float y, float rad, Color color){
@@ -40,15 +42,6 @@ public class Drawf{
square(x, y, radius, Pal.accent); square(x, y, radius, Pal.accent);
} }
/*
public static void square(float x, float y, float radius){
Lines.stroke(1f, Pal.gray);
Lines.square(x, y - 1f, radius + 1f, 45);
Lines.stroke(1f, Pal.accent);
Lines.square(x, y, radius + 1f, 45);
Draw.reset();
}*/
public static void arrow(float x, float y, float x2, float y2, float length, float radius){ public static void arrow(float x, float y, float x2, float y2, float length, float radius){
float angle = Angles.angle(x, y, x2, y2); float angle = Angles.angle(x, y, x2, y2);
float space = 2f; float space = 2f;
@@ -81,6 +74,8 @@ public class Drawf{
Lines.line(line, x + Tmp.v1.x, y + Tmp.v1.y, x2 - Tmp.v1.x, y2 - Tmp.v1.y, CapStyle.none, 0f); Lines.line(line, x + Tmp.v1.x, y + Tmp.v1.y, x2 - Tmp.v1.x, y2 - Tmp.v1.y, CapStyle.none, 0f);
Lines.precise(false); Lines.precise(false);
Lines.stroke(1f); Lines.stroke(1f);
renderer.lights.line(x, y, x2, y2);
} }
public static void tri(float x, float y, float width, float length, float rotation){ public static void tri(float x, float y, float width, float length, float rotation){

View File

@@ -10,5 +10,7 @@ public enum Layer{
/** "High" blocks, like turrets. */ /** "High" blocks, like turrets. */
turret, turret,
/** Power lasers. */ /** Power lasers. */
power power,
/** Extra layer that's always on top.*/
lights
} }

View File

@@ -0,0 +1,199 @@
package io.anuke.mindustry.graphics;
import io.anuke.arc.*;
import io.anuke.arc.collection.*;
import io.anuke.arc.graphics.*;
import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.graphics.glutils.*;
import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.*;
import static io.anuke.mindustry.Vars.state;
/** Renders overlay lights. Client only. */
public class LightRenderer{
private static final int scaling = 4;
private float[] vertices = new float[24];
private FrameBuffer buffer = new FrameBuffer(2, 2);
private Array<Runnable> lights = new Array<>();
public void add(Runnable run){
if(!enabled()) return;
lights.add(run);
}
public void add(float x, float y, float radius, Color color, float opacity){
if(!enabled()) return;
float res = color.toFloatBits();
add(() -> {
Draw.color(res);
Draw.alpha(opacity);
Draw.rect("circle-shadow", x, y, radius * 2, radius * 2);
});
}
public void add(float x, float y, TextureRegion region, Color color, float opacity){
if(!enabled()) return;
float res = color.toFloatBits();
add(() -> {
Draw.color(res);
Draw.alpha(opacity);
Draw.rect(region, x, y);
});
}
public void line(float x, float y, float x2, float y2){
if(!enabled()) return;
add(() -> {
Draw.color(Color.orange, 0.3f);
float stroke = 30f;
float rot = Mathf.angleExact(x2 - x, y2 - y);
TextureRegion ledge = Core.atlas.find("circle-end"), lmid = Core.atlas.find("circle-mid");
float color = Draw.getColor().toFloatBits();
float u = lmid.getU();
float v = lmid.getV2();
float u2 = lmid.getU2();
float v2 = lmid.getV();
Vector2 v1 = Tmp.v1.trnsExact(rot + 90f, stroke);
float lx1 = x - v1.x, ly1 = y - v1.y,
lx2 = x + v1.x, ly2 = y + v1.y,
lx3 = x2 + v1.x, ly3 = y2 + v1.y,
lx4 = x2 - v1.x, ly4 = y2 - v1.y;
vertices[0] = lx1;
vertices[1] = ly1;
vertices[2] = color;
vertices[3] = u;
vertices[4] = v;
vertices[5] = 0;
vertices[6] = lx2;
vertices[7] = ly2;
vertices[8] = color;
vertices[9] = u;
vertices[10] = v2;
vertices[11] = 0;
vertices[12] = lx3;
vertices[13] = ly3;
vertices[14] = color;
vertices[15] = u2;
vertices[16] = v2;
vertices[17] = 0;
vertices[18] = lx4;
vertices[19] = ly4;
vertices[20] = color;
vertices[21] = u2;
vertices[22] = v;
vertices[23] = 0;
Draw.vert(ledge.getTexture(), vertices, 0, vertices.length);
Vector2 v3 = Tmp.v2.trnsExact(rot, stroke);
u = ledge.getU();
v = ledge.getV2();
u2 = ledge.getU2();
v2 = ledge.getV();
vertices[0] = lx4;
vertices[1] = ly4;
vertices[2] = color;
vertices[3] = u;
vertices[4] = v;
vertices[5] = 0;
vertices[6] = lx3;
vertices[7] = ly3;
vertices[8] = color;
vertices[9] = u;
vertices[10] = v2;
vertices[11] = 0;
vertices[12] = lx3 + v3.x;
vertices[13] = ly3 + v3.y;
vertices[14] = color;
vertices[15] = u2;
vertices[16] = v2;
vertices[17] = 0;
vertices[18] = lx4 + v3.x;
vertices[19] = ly4 + v3.y;
vertices[20] = color;
vertices[21] = u2;
vertices[22] = v;
vertices[23] = 0;
Draw.vert(ledge.getTexture(), vertices, 0, vertices.length);
vertices[0] = lx2;
vertices[1] = ly2;
vertices[2] = color;
vertices[3] = u;
vertices[4] = v;
vertices[5] = 0;
vertices[6] = lx1;
vertices[7] = ly1;
vertices[8] = color;
vertices[9] = u;
vertices[10] = v2;
vertices[11] = 0;
vertices[12] = lx1 - v3.x;
vertices[13] = ly1 - v3.y;
vertices[14] = color;
vertices[15] = u2;
vertices[16] = v2;
vertices[17] = 0;
vertices[18] = lx2 - v3.x;
vertices[19] = ly2 - v3.y;
vertices[20] = color;
vertices[21] = u2;
vertices[22] = v;
vertices[23] = 0;
Draw.vert(ledge.getTexture(), vertices, 0, vertices.length);
});
}
public boolean enabled(){
return state.rules.lighting;
}
public void draw(){
if(buffer.getWidth() != Core.graphics.getWidth()/scaling || buffer.getHeight() != Core.graphics.getHeight()/scaling){
buffer.resize(Core.graphics.getWidth()/scaling, Core.graphics.getHeight()/scaling);
}
Draw.color();
buffer.beginDraw(Color.clear);
Draw.blend(Blending.normal);
for(Runnable run : lights){
run.run();
}
Draw.reset();
Draw.blend();
buffer.endDraw();
Draw.color();
Shaders.light.ambient.set(state.rules.ambientLight);
Draw.shader(Shaders.light);
Draw.rect(Draw.wrap(buffer.getTexture()), Core.camera.position.x, Core.camera.position.y, Core.camera.width, -Core.camera.height);
Draw.shader();
lights.clear();
}
}

View File

@@ -0,0 +1,61 @@
package io.anuke.mindustry.graphics;
import io.anuke.arc.graphics.*;
import io.anuke.arc.graphics.Pixmap.*;
import io.anuke.arc.graphics.Texture.*;
import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.util.*;
public class MultiPacker implements Disposable{
private PixmapPacker[] packers = new PixmapPacker[PageType.all.length];
public MultiPacker(){
for(int i = 0; i < packers.length; i++){
int pageSize = 2048;
packers[i] = new PixmapPacker(pageSize, pageSize, Format.RGBA8888, 2, true);
}
}
public boolean has(PageType type, String name){
return packers[type.ordinal()].getRect(name) != null;
}
public void add(PageType type, String name, PixmapRegion region){
packers[type.ordinal()].pack(name, region);
}
public void add(PageType type, String name, Pixmap pix){
packers[type.ordinal()].pack(name, pix);
}
public TextureAtlas flush(TextureFilter filter, TextureAtlas atlas){
for(PixmapPacker p : packers){
p.updateTextureAtlas(atlas, filter, filter, false, false);
}
return atlas;
}
@Override
public void dispose(){
for(PixmapPacker packer : packers){
packer.dispose();
}
}
//There are several pages for sprites.
//main page (sprites.png) - all sprites for units, weapons, placeable blocks, effects, bullets, etc
//environment page (sprites2.png) - all sprites for things in the environmental cache layer
//editor page (sprites3.png) - all sprites needed for rendering in the editor, including block icons and a few minor sprites
//zone page (sprites4.png) - zone previews
//ui page (sprites5.png) - content icons, white icons and UI elements
public enum PageType{
main,
environment,
editor,
zone,
ui;
public static final PageType[] all = values();
}
}

View File

@@ -15,6 +15,7 @@ public class Shaders{
public static UnitBuild build; public static UnitBuild build;
public static FogShader fog; public static FogShader fog;
public static MenuShader menu; public static MenuShader menu;
public static LightShader light;
public static SurfaceShader water, tar, slag; public static SurfaceShader water, tar, slag;
public static void init(){ public static void init(){
@@ -30,11 +31,26 @@ public class Shaders{
build = new UnitBuild(); build = new UnitBuild();
fog = new FogShader(); fog = new FogShader();
menu = new MenuShader(); menu = new MenuShader();
light = new LightShader();
water = new SurfaceShader("water"); water = new SurfaceShader("water");
tar = new SurfaceShader("tar"); tar = new SurfaceShader("tar");
slag = new SurfaceShader("slag"); slag = new SurfaceShader("slag");
} }
public static class LightShader extends LoadShader{
public Color ambient = new Color(0.01f, 0.01f, 0.04f, 0.99f);
public LightShader(){
super("light", "default");
}
@Override
public void apply(){
setUniformf("u_ambient", ambient);
}
}
public static class MenuShader extends LoadShader{ public static class MenuShader extends LoadShader{
float time = 0f; float time = 0f;

View File

@@ -24,6 +24,22 @@ public enum Binding implements KeyBind{
schematic_flip_x(KeyCode.Z), schematic_flip_x(KeyCode.Z),
schematic_flip_y(KeyCode.X), schematic_flip_y(KeyCode.X),
schematic_menu(KeyCode.T), schematic_menu(KeyCode.T),
category_prev(KeyCode.COMMA),
category_next(KeyCode.PERIOD),
block_select_left(KeyCode.LEFT),
block_select_right(KeyCode.RIGHT),
block_select_up(KeyCode.UP),
block_select_down(KeyCode.DOWN),
block_select_01(KeyCode.NUM_1),
block_select_02(KeyCode.NUM_2),
block_select_03(KeyCode.NUM_3),
block_select_04(KeyCode.NUM_4),
block_select_05(KeyCode.NUM_5),
block_select_06(KeyCode.NUM_6),
block_select_07(KeyCode.NUM_7),
block_select_08(KeyCode.NUM_8),
block_select_09(KeyCode.NUM_9),
block_select_10(KeyCode.NUM_0),
zoom_hold(KeyCode.CONTROL_LEFT, "view"), zoom_hold(KeyCode.CONTROL_LEFT, "view"),
zoom(new Axis(KeyCode.SCROLL)), zoom(new Axis(KeyCode.SCROLL)),
menu(Core.app.getType() == ApplicationType.Android ? KeyCode.BACK : KeyCode.ESCAPE), menu(Core.app.getType() == ApplicationType.Android ? KeyCode.BACK : KeyCode.ESCAPE),

View File

@@ -455,7 +455,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
} }
protected void drawRequest(BuildRequest request){ protected void drawRequest(BuildRequest request){
drawRequest(request.x, request.y, request.block, request.rotation); request.block.drawRequest(request, allRequests(), validPlace(request.x, request.y, request.block, request.rotation));
} }
/** Draws a placement icon for a specific block. */ /** Draws a placement icon for a specific block. */

View File

@@ -4,7 +4,7 @@ import io.anuke.arc.util.serialization.*;
import io.anuke.arc.util.serialization.Json.*; import io.anuke.arc.util.serialization.Json.*;
import io.anuke.mindustry.*; import io.anuke.mindustry.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
import io.anuke.mindustry.ctype.MappableContent; import io.anuke.mindustry.ctype.*;
import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.*;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
@@ -29,8 +29,20 @@ public class JsonIO{
super.writeValue(value, knownType, elementType); super.writeValue(value, knownType, elementType);
} }
} }
@Override
protected String convertToString(Object object){
if(object instanceof MappableContent){
return ((MappableContent)object).name;
}
return super.convertToString(object);
}
}; };
public static Json json(){
return json;
}
public static String write(Object object){ public static String write(Object object){
return json.toJson(object, object.getClass()); return json.toJson(object, object.getClass());
} }

View File

@@ -8,10 +8,12 @@ import io.anuke.arc.collection.IntSet.*;
import io.anuke.arc.files.*; import io.anuke.arc.files.*;
import io.anuke.arc.func.*; import io.anuke.arc.func.*;
import io.anuke.arc.graphics.*; import io.anuke.arc.graphics.*;
import io.anuke.arc.util.ArcAnnotate.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.arc.util.async.*; import io.anuke.arc.util.async.*;
import io.anuke.arc.util.io.*; import io.anuke.arc.util.io.*;
import io.anuke.arc.util.serialization.*; import io.anuke.arc.util.serialization.*;
import io.anuke.mindustry.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
import io.anuke.mindustry.ctype.*; import io.anuke.mindustry.ctype.*;
import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.EventType.*;
@@ -34,9 +36,30 @@ public class Maps{
/** Serializer for meta. */ /** Serializer for meta. */
private Json json = new Json(); private Json json = new Json();
private ShuffleMode shuffleMode = ShuffleMode.all;
private @Nullable MapProvider shuffler;
private AsyncExecutor executor = new AsyncExecutor(2); private AsyncExecutor executor = new AsyncExecutor(2);
private ObjectSet<Map> previewList = new ObjectSet<>(); private ObjectSet<Map> previewList = new ObjectSet<>();
public ShuffleMode getShuffleMode(){
return shuffleMode;
}
public void setShuffleMode(ShuffleMode mode){
this.shuffleMode = mode;
}
/** Set the provider for the map(s) to be played on. Will override the default shuffle mode setting.*/
public void setMapProvider(MapProvider provider){
this.shuffler = provider;
}
/** @return the next map to shuffle to. May be null, in which case the server should be stopped. */
public @Nullable Map getNextMap(@Nullable Map previous){
return shuffler != null ? shuffler.next(previous) : shuffleMode.next(previous);
}
/** Returns a list of all maps, including custom ones. */ /** Returns a list of all maps, including custom ones. */
public Array<Map> all(){ public Array<Map> all(){
return maps; return maps;
@@ -422,4 +445,37 @@ public class Maps{
return map; return map;
} }
public interface MapProvider{
@Nullable Map next(@Nullable Map previous);
}
public enum ShuffleMode implements MapProvider{
none(map -> null),
all(prev -> {
Array<Map> maps = Array.withArrays(Vars.maps.defaultMaps(), Vars.maps.customMaps());
maps.shuffle();
return maps.find(m -> m != prev || maps.size == 1);
}),
custom(prev -> {
Array<Map> maps = Array.withArrays(Vars.maps.customMaps().isEmpty() ? Vars.maps.defaultMaps() : Vars.maps.customMaps());
maps.shuffle();
return maps.find(m -> m != prev || maps.size == 1);
}),
builtin(prev -> {
Array<Map> maps = Array.withArrays(Vars.maps.defaultMaps());
maps.shuffle();
return maps.find(m -> m != prev || maps.size == 1);
});
private final MapProvider provider;
ShuffleMode(MapProvider provider){
this.provider = provider;
}
@Override
public Map next(@Nullable Map previous){
return provider.next(previous);
}
}
} }

View File

@@ -1,6 +1,7 @@
package io.anuke.mindustry.mod; package io.anuke.mindustry.mod;
import io.anuke.arc.*; import io.anuke.arc.*;
import io.anuke.arc.assets.*;
import io.anuke.arc.audio.*; import io.anuke.arc.audio.*;
import io.anuke.arc.audio.mock.*; import io.anuke.arc.audio.mock.*;
import io.anuke.arc.collection.Array; import io.anuke.arc.collection.Array;
@@ -10,8 +11,6 @@ import io.anuke.arc.func.*;
import io.anuke.arc.graphics.*; import io.anuke.arc.graphics.*;
import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.arc.util.ArcAnnotate.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.arc.util.reflect.Field;
import io.anuke.arc.util.reflect.*;
import io.anuke.arc.util.serialization.*; import io.anuke.arc.util.serialization.*;
import io.anuke.arc.util.serialization.Json.*; import io.anuke.arc.util.serialization.Json.*;
import io.anuke.arc.util.serialization.Jval.*; import io.anuke.arc.util.serialization.Jval.*;
@@ -71,9 +70,9 @@ public class ContentParser{
String name = "sounds/" + data.asString(); String name = "sounds/" + data.asString();
String path = Vars.tree.get(name + ".ogg").exists() && !Vars.ios ? name + ".ogg" : name + ".mp3"; String path = Vars.tree.get(name + ".ogg").exists() && !Vars.ios ? name + ".ogg" : name + ".mp3";
ModLoadingSound sound = new ModLoadingSound(); ModLoadingSound sound = new ModLoadingSound();
Core.assets.load(path, Sound.class).loaded = result -> { AssetDescriptor<?> desc = Core.assets.load(path, Sound.class);
sound.sound = (Sound)result; desc.loaded = result -> sound.sound = (Sound)result;
}; desc.errored = Throwable::printStackTrace;
return sound; return sound;
}); });
put(Objective.class, (type, data) -> { put(Objective.class, (type, data) -> {
@@ -106,7 +105,7 @@ public class ContentParser{
return t; return t;
} }
private <T> T internalRead(Class<T> type, Class elementType, JsonValue jsonData, Class keyType){ private <T> T internalRead(Class<T> type, Class elementType, JsonValue jsonData, Class keyType){
if(type != null){ if(type != null){
if(classParsers.containsKey(type)){ if(classParsers.containsKey(type)){
try{ try{
@@ -116,6 +115,29 @@ public class ContentParser{
} }
} }
//try to parse "item/amount" syntax
try{
if(type == ItemStack.class && jsonData.isString() && jsonData.asString().contains("/")){
String[] split = jsonData.asString().split("/");
return (T)fromJson(ItemStack.class, "{item: " + split[0] + ", amount: " + split[1] + "}");
}
}catch(Throwable ignored){
}
//try to parse "liquid/amount" syntax
try{
if(jsonData.isString() && jsonData.asString().contains("/")){
String[] split = jsonData.asString().split("/");
if(type == LiquidStack.class){
return (T)fromJson(LiquidStack.class, "{liquid: " + split[0] + ", amount: " + split[1] + "}");
}else if(type == ConsumeLiquid.class){
return (T)fromJson(ConsumeLiquid.class, "{liquid: " + split[0] + ", amount: " + split[1] + "}");
}
}
}catch(Throwable ignored){
}
if(Content.class.isAssignableFrom(type)){ if(Content.class.isAssignableFrom(type)){
ContentType ctype = contentTypes.getThrow(type, () -> new IllegalArgumentException("No content type for class: " + type.getSimpleName())); ContentType ctype = contentTypes.getThrow(type, () -> new IllegalArgumentException("No content type for class: " + type.getSimpleName()));
String prefix = currentMod != null ? currentMod.name + "-" : ""; String prefix = currentMod != null ? currentMod.name + "-" : "";
@@ -152,6 +174,7 @@ public class ContentParser{
"io.anuke.mindustry.world.blocks.defense", "io.anuke.mindustry.world.blocks.defense",
"io.anuke.mindustry.world.blocks.defense.turrets", "io.anuke.mindustry.world.blocks.defense.turrets",
"io.anuke.mindustry.world.blocks.distribution", "io.anuke.mindustry.world.blocks.distribution",
"io.anuke.mindustry.world.blocks.liquid",
"io.anuke.mindustry.world.blocks.logic", "io.anuke.mindustry.world.blocks.logic",
"io.anuke.mindustry.world.blocks.power", "io.anuke.mindustry.world.blocks.power",
"io.anuke.mindustry.world.blocks.production", "io.anuke.mindustry.world.blocks.production",
@@ -206,6 +229,9 @@ public class ContentParser{
postreads.add(() -> { postreads.add(() -> {
TechNode parnode = TechTree.all.find(t -> t.block == parent); TechNode parnode = TechTree.all.find(t -> t.block == parent);
if(parnode == null){
throw new ModLoadException("Block '" + parent.name + "' isn't in the tech tree, but '" + block.name + "' requires it to be researched.", block);
}
if(!parnode.children.contains(baseNode)){ if(!parnode.children.contains(baseNode)){
parnode.children.add(baseNode); parnode.children.add(baseNode);
} }
@@ -343,7 +369,13 @@ public class ContentParser{
init(); init();
} }
//remove extra # characters to make it valid json... apparently some people have *unquoted* # characters in their json
if(file.extension().equals("json")){
json = json.replace("#", "\\#");
}
JsonValue value = parser.fromJson(null, Jval.read(json).toString(Jformat.plain)); JsonValue value = parser.fromJson(null, Jval.read(json).toString(Jformat.plain));
if(!parsers.containsKey(type)){ if(!parsers.containsKey(type)){
throw new SerializationException("No parsers for content type '" + type + "'"); throw new SerializationException("No parsers for content type '" + type + "'");
} }
@@ -361,7 +393,7 @@ public class ContentParser{
private <T> T make(Class<T> type){ private <T> T make(Class<T> type){
try{ try{
java.lang.reflect.Constructor<T> cons = type.getDeclaredConstructor(); Constructor<T> cons = type.getDeclaredConstructor();
cons.setAccessible(true); cons.setAccessible(true);
return cons.newInstance(); return cons.newInstance();
}catch(Exception e){ }catch(Exception e){
@@ -371,7 +403,7 @@ public class ContentParser{
private <T> T make(Class<T> type, String name){ private <T> T make(Class<T> type, String name){
try{ try{
java.lang.reflect.Constructor<T> cons = type.getDeclaredConstructor(String.class); Constructor<T> cons = type.getDeclaredConstructor(String.class);
cons.setAccessible(true); cons.setAccessible(true);
return cons.newInstance(name); return cons.newInstance(name);
}catch(Exception e){ }catch(Exception e){
@@ -381,7 +413,7 @@ public class ContentParser{
private <T> Prov<T> supply(Class<T> type){ private <T> Prov<T> supply(Class<T> type){
try{ try{
java.lang.reflect.Constructor<T> cons = type.getDeclaredConstructor(); Constructor<T> cons = type.getDeclaredConstructor();
return () -> { return () -> {
try{ try{
return cons.newInstance(); return cons.newInstance();
@@ -457,7 +489,7 @@ public class ContentParser{
Field field = metadata.field; Field field = metadata.field;
try{ try{
field.set(object, parser.readValue(field.getType(), metadata.elementType, child, metadata.keyType)); field.set(object, parser.readValue(field.getType(), metadata.elementType, child, metadata.keyType));
}catch(ReflectionException ex){ }catch(IllegalAccessException ex){
throw new SerializationException("Error accessing field: " + field.getName() + " (" + type.getName() + ")", ex); throw new SerializationException("Error accessing field: " + field.getName() + " (" + type.getName() + ")", ex);
}catch(SerializationException ex){ }catch(SerializationException ex){
ex.addTrace(field.getName() + " (" + type.getName() + ")"); ex.addTrace(field.getName() + " (" + type.getName() + ")");

View File

@@ -6,7 +6,6 @@ import io.anuke.arc.collection.*;
import io.anuke.arc.files.*; import io.anuke.arc.files.*;
import io.anuke.arc.func.*; import io.anuke.arc.func.*;
import io.anuke.arc.graphics.*; import io.anuke.arc.graphics.*;
import io.anuke.arc.graphics.Pixmap.*;
import io.anuke.arc.graphics.Texture.*; import io.anuke.arc.graphics.Texture.*;
import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.graphics.g2d.TextureAtlas.*; import io.anuke.arc.graphics.g2d.TextureAtlas.*;
@@ -14,10 +13,13 @@ import io.anuke.arc.util.ArcAnnotate.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.arc.util.io.*; import io.anuke.arc.util.io.*;
import io.anuke.arc.util.serialization.*; import io.anuke.arc.util.serialization.*;
import io.anuke.arc.util.serialization.Jval.*;
import io.anuke.mindustry.core.*; import io.anuke.mindustry.core.*;
import io.anuke.mindustry.ctype.*; import io.anuke.mindustry.ctype.*;
import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.EventType.*;
import io.anuke.mindustry.gen.*; import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.graphics.MultiPacker.*;
import io.anuke.mindustry.plugin.*; import io.anuke.mindustry.plugin.*;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
@@ -33,7 +35,7 @@ public class Mods implements Loadable{
private ObjectSet<String> specialFolders = ObjectSet.with("bundles", "sprites"); private ObjectSet<String> specialFolders = ObjectSet.with("bundles", "sprites");
private int totalSprites; private int totalSprites;
private PixmapPacker packer; private MultiPacker packer;
private Array<LoadedMod> loaded = new Array<>(); private Array<LoadedMod> loaded = new Array<>();
private Array<LoadedMod> disabled = new Array<>(); private Array<LoadedMod> disabled = new Array<>();
@@ -50,7 +52,7 @@ public class Mods implements Loadable{
/** @return the loaded mod found by class, or null if not found. */ /** @return the loaded mod found by class, or null if not found. */
public @Nullable LoadedMod getMod(Class<? extends Mod> type){ public @Nullable LoadedMod getMod(Class<? extends Mod> type){
return loaded.find(l -> l.mod.getClass() == type); return loaded.find(l -> l.mod != null && l.mod.getClass() == type);
} }
/** Imports an external mod file.*/ /** Imports an external mod file.*/
@@ -79,68 +81,71 @@ public class Mods implements Loadable{
if(loaded.isEmpty()) return; if(loaded.isEmpty()) return;
Time.mark(); Time.mark();
packer = new PixmapPacker(2048, 2048, Format.RGBA8888, 2, true); packer = new MultiPacker();
for(LoadedMod mod : loaded){ for(LoadedMod mod : loaded){
int[] packed = {0}; Array<FileHandle> sprites = mod.root.child("sprites").findAll(f -> f.extension().equals("png"));
boolean[] failed = {false}; Array<FileHandle> overrides = mod.root.child("sprites-override").findAll(f -> f.extension().equals("png"));
mod.root.child("sprites").walk(file -> { packSprites(sprites, mod, true);
if(failed[0]) return; packSprites(overrides, mod, false);
if(file.extension().equals("png")){ Log.info("Packed {0} images for mod '{1}'.", sprites.size + overrides.size, mod.meta.name);
try(InputStream stream = file.read()){ totalSprites += sprites.size + overrides.size;
byte[] bytes = Streams.copyStreamToByteArray(stream, Math.max((int)file.length(), 512)); }
Pixmap pixmap = new Pixmap(bytes, 0, bytes.length);
packer.pack(mod.name + "-" + file.nameWithoutExtension(), pixmap); for(AtlasRegion region : Core.atlas.getRegions()){
pixmap.dispose(); PageType type = getPage(region);
packed[0] ++; if(!packer.has(type, region.name)){
totalSprites ++; packer.add(type, region.name, Core.atlas.getPixmap(region));
}catch(IOException e){ }
failed[0] = true;
Core.app.post(() -> {
Log.err("Error packing images for mod: {0}", mod.meta.name);
e.printStackTrace();
if(!headless) ui.showException(e);
});
}
}
});
Log.info("Packed {0} images for mod '{1}'.", packed[0], mod.meta.name);
} }
Log.info("Time to pack textures: {0}", Time.elapsed()); Log.info("Time to pack textures: {0}", Time.elapsed());
} }
private void packSprites(Array<FileHandle> sprites, LoadedMod mod, boolean prefix){
for(FileHandle file : sprites){
try(InputStream stream = file.read()){
byte[] bytes = Streams.copyStreamToByteArray(stream, Math.max((int)file.length(), 512));
Pixmap pixmap = new Pixmap(bytes, 0, bytes.length);
packer.add(getPage(file), (prefix ? mod.name + "-" : "") + file.nameWithoutExtension(), new PixmapRegion(pixmap));
pixmap.dispose();
}catch(IOException e){
Core.app.post(() -> {
Log.err("Error packing images for mod: {0}", mod.meta.name);
e.printStackTrace();
if(!headless) ui.showException(e);
});
break;
}
}
totalSprites += sprites.size;
}
@Override @Override
public void loadSync(){ public void loadSync(){
if(packer == null) return; if(packer == null) return;
Time.mark(); Time.mark();
Texture editor = Core.atlas.find("clear-editor").getTexture();
PixmapPacker editorPacker = new PixmapPacker(2048, 2048, Format.RGBA8888, 2, true);
for(AtlasRegion region : Core.atlas.getRegions()){
if(region.getTexture() == editor){
editorPacker.pack(region.name, Core.atlas.getPixmap(region).crop());
}
}
//get textures packed //get textures packed
if(totalSprites > 0){ if(totalSprites > 0){
TextureFilter filter = Core.settings.getBool("linear") ? TextureFilter.Linear : TextureFilter.Nearest; TextureFilter filter = Core.settings.getBool("linear") ? TextureFilter.Linear : TextureFilter.Nearest;
packer.updateTextureAtlas(Core.atlas, filter, filter, false); //flush so generators can use these sprites
packer.flush(filter, Core.atlas);
//generate new icons //generate new icons
for(Array<Content> arr : content.getContentMap()){ for(Array<Content> arr : content.getContentMap()){
arr.each(c -> { arr.each(c -> {
if(c instanceof UnlockableContent && c.mod != null){ if(c instanceof UnlockableContent && c.mod != null){
UnlockableContent u = (UnlockableContent)c; UnlockableContent u = (UnlockableContent)c;
u.createIcons(packer, editorPacker); u.createIcons(packer);
} }
}); });
} }
editorPacker.updateTextureAtlas(Core.atlas, filter, filter, false); Core.atlas = packer.flush(filter, new TextureAtlas());
packer.updateTextureAtlas(Core.atlas, filter, filter, false); Core.atlas.setErrorRegion("error");
Log.info("Total pages: {0}", Core.atlas.getTextures().size);
} }
packer.dispose(); packer.dispose();
@@ -148,6 +153,26 @@ public class Mods implements Loadable{
Log.info("Time to update textures: {0}", Time.elapsed()); Log.info("Time to update textures: {0}", Time.elapsed());
} }
private PageType getPage(AtlasRegion region){
return
region.getTexture() == Core.atlas.find("white").getTexture() ? PageType.main :
region.getTexture() == Core.atlas.find("stone1").getTexture() ? PageType.environment :
region.getTexture() == Core.atlas.find("clear-editor").getTexture() ? PageType.editor :
region.getTexture() == Core.atlas.find("zone-groundZero").getTexture() ? PageType.zone :
region.getTexture() == Core.atlas.find("whiteui").getTexture() ? PageType.ui :
PageType.main;
}
private PageType getPage(FileHandle file){
String parent = file.parent().name();
return
parent.equals("environment") ? PageType.environment :
parent.equals("editor") ? PageType.editor :
parent.equals("zones") ? PageType.zone :
parent.equals("ui") || file.parent().parent().name().equals("ui") ? PageType.ui :
PageType.main;
}
/** Removes a mod file and marks it for requiring a restart. */ /** Removes a mod file and marks it for requiring a restart. */
public void removeMod(LoadedMod mod){ public void removeMod(LoadedMod mod){
if(mod.root instanceof ZipFileHandle){ if(mod.root instanceof ZipFileHandle){
@@ -172,8 +197,7 @@ public class Mods implements Loadable{
/** Loads all mods from the folder, but does not call any methods on them.*/ /** Loads all mods from the folder, but does not call any methods on them.*/
public void load(){ public void load(){
for(FileHandle file : modDirectory.list()){ for(FileHandle file : modDirectory.list()){
if(!file.extension().equals("jar") && !file.extension().equals("zip") && !(file.isDirectory() && file.child("mod.json").exists())) continue; if(!file.extension().equals("jar") && !file.extension().equals("zip") && !(file.isDirectory() && (file.child("mod.json").exists() || file.child("mod.hjson").exists()))) continue;
Log.debug("[Mods] Loading mod {0}", file); Log.debug("[Mods] Loading mod {0}", file);
try{ try{
@@ -206,6 +230,7 @@ public class Mods implements Loadable{
} }
resolveDependencies(); resolveDependencies();
//sort mods to make sure servers handle them properly. //sort mods to make sure servers handle them properly.
loaded.sort(Structs.comparing(m -> m.name)); loaded.sort(Structs.comparing(m -> m.name));
@@ -213,6 +238,10 @@ public class Mods implements Loadable{
} }
private void resolveDependencies(){ private void resolveDependencies(){
Array<LoadedMod> incompatible = loaded.select(m -> !m.isSupported());
loaded.removeAll(incompatible);
disabled.addAll(incompatible);
for(LoadedMod mod : Array.<LoadedMod>withArrays(loaded, disabled)){ for(LoadedMod mod : Array.<LoadedMod>withArrays(loaded, disabled)){
updateDependencies(mod); updateDependencies(mod);
} }
@@ -354,7 +383,7 @@ public class Mods implements Loadable{
FileHandle folder = contentRoot.child(type.name().toLowerCase() + "s"); FileHandle folder = contentRoot.child(type.name().toLowerCase() + "s");
if(folder.exists()){ if(folder.exists()){
for(FileHandle file : folder.list()){ for(FileHandle file : folder.list()){
if(file.extension().equals("json") || file.extension().equals("hjson") || file.extension().equals("js")){ if(file.extension().equals("json") || file.extension().equals("hjson")){
runs.add(new LoadRun(type, file, mod)); runs.add(new LoadRun(type, file, mod));
} }
} }
@@ -482,13 +511,13 @@ public class Mods implements Loadable{
zip = zip.list()[0]; zip = zip.list()[0];
} }
FileHandle metaf = zip.child("mod.json").exists() ? zip.child("mod.json") : zip.child("plugin.json"); FileHandle metaf = zip.child("mod.json").exists() ? zip.child("mod.json") : zip.child("mod.hjson").exists() ? zip.child("mod.hjson") : zip.child("plugin.json");
if(!metaf.exists()){ if(!metaf.exists()){
Log.warn("Mod {0} doesn't have a 'mod.json'/'plugin.json' file, skipping.", sourceFile); Log.warn("Mod {0} doesn't have a 'mod.json'/'plugin.json'/'mod.js' file, skipping.", sourceFile);
throw new IllegalArgumentException("No mod.json found."); throw new IllegalArgumentException("No mod.json found.");
} }
ModMeta meta = json.fromJson(ModMeta.class, metaf.readString()); ModMeta meta = json.fromJson(ModMeta.class, Jval.read(metaf.readString()).toString(Jformat.plain));
String camelized = meta.name.replace(" ", ""); String camelized = meta.name.replace(" ", "");
String mainClass = meta.main == null ? camelized.toLowerCase() + "." + camelized + "Mod" : meta.main; String mainClass = meta.main == null ? camelized.toLowerCase() + "." + camelized + "Mod" : meta.main;
String baseName = meta.name.toLowerCase().replace(" ", "-"); String baseName = meta.name.toLowerCase().replace(" ", "-");
@@ -563,6 +592,18 @@ public class Mods implements Loadable{
return !missingDependencies.isEmpty(); return !missingDependencies.isEmpty();
} }
/** @return whether this mod is supported by the game verison */
public boolean isSupported(){
if(Version.build <= 0 || meta.minGameVersion == null) return true;
if(meta.minGameVersion.contains(".")){
String[] split = meta.minGameVersion.split("\\.");
if(split.length == 2){
return Version.build >= Strings.parseInt(split[0], 0) && Version.revision >= Strings.parseInt(split[1], 0);
}
}
return Version.build >= Strings.parseInt(meta.minGameVersion, 0);
}
@Override @Override
public String getSteamID(){ public String getSteamID(){
return Core.settings.getString(name + "-steamid", null); return Core.settings.getString(name + "-steamid", null);
@@ -632,7 +673,7 @@ public class Mods implements Loadable{
/** Plugin metadata information.*/ /** Plugin metadata information.*/
public static class ModMeta{ public static class ModMeta{
public String name, author, description, version, main; public String name, author, description, version, main, minGameVersion;
public Array<String> dependencies = Array.with(); public Array<String> dependencies = Array.with();
/** Hidden mods are only server-side or client-side, and do not support adding new content. */ /** Hidden mods are only server-side or client-side, and do not support adding new content. */
public boolean hidden; public boolean hidden;
@@ -662,5 +703,13 @@ public class Mods implements Loadable{
this.mod = content.mod; this.mod = content.mod;
} }
} }
public ModLoadException(String message, @Nullable Content content){
super(message);
this.content = content;
if(content != null){
this.mod = content.mod;
}
}
} }
} }

View File

@@ -3,8 +3,11 @@ package io.anuke.mindustry.net;
import io.anuke.annotations.Annotations.*; import io.anuke.annotations.Annotations.*;
import io.anuke.arc.*; import io.anuke.arc.*;
import io.anuke.arc.collection.*; import io.anuke.arc.collection.*;
import io.anuke.mindustry.Vars;
import static io.anuke.mindustry.Vars.headless; import static io.anuke.mindustry.Vars.headless;
import static io.anuke.mindustry.game.EventType.*;
public class Administration{ public class Administration{
/** All player info. Maps UUIDs to info. This persists throughout restarts. */ /** All player info. Maps UUIDs to info. This persists throughout restarts. */
@@ -76,7 +79,7 @@ public class Administration{
bannedIPs.add(ip); bannedIPs.add(ip);
save(); save();
Events.fire(new PlayerIpBanEvent(ip));
return true; return true;
} }
@@ -88,7 +91,7 @@ public class Administration{
getCreateInfo(id).banned = true; getCreateInfo(id).banned = true;
save(); save();
Events.fire(new PlayerBanEvent(Vars.playerGroup.find(p -> id.equals(p.uuid))));
return true; return true;
} }
@@ -108,8 +111,10 @@ public class Administration{
bannedIPs.removeValue(ip, false); bannedIPs.removeValue(ip, false);
if(found) save(); if(found){
save();
Events.fire(new PlayerIpUnbanEvent(ip));
}
return found; return found;
} }
@@ -126,7 +131,7 @@ public class Administration{
info.banned = false; info.banned = false;
bannedIPs.removeAll(info.ips, false); bannedIPs.removeAll(info.ips, false);
save(); save();
Events.fire(new PlayerUnbanEvent(Vars.playerGroup.find(p -> id.equals(p.uuid))));
return true; return true;
} }

View File

@@ -80,7 +80,7 @@ public class Packets{
buffer.put(mobile ? (byte)1 : 0); buffer.put(mobile ? (byte)1 : 0);
buffer.putInt(color); buffer.putInt(color);
buffer.put(Base64Coder.decode(uuid)); buffer.put(Base64Coder.decode(uuid));
buffer.putInt(mods.size); buffer.put((byte)mods.size);
for(int i = 0; i < mods.size; i++){ for(int i = 0; i < mods.size; i++){
TypeIO.writeString(buffer, mods.get(i)); TypeIO.writeString(buffer, mods.get(i));
} }
@@ -97,7 +97,7 @@ public class Packets{
byte[] idbytes = new byte[8]; byte[] idbytes = new byte[8];
buffer.get(idbytes); buffer.get(idbytes);
uuid = new String(Base64Coder.encode(idbytes)); uuid = new String(Base64Coder.encode(idbytes));
int totalMods = buffer.getInt(); int totalMods = buffer.get();
mods = new Array<>(totalMods); mods = new Array<>(totalMods);
for(int i = 0; i < totalMods; i++){ for(int i = 0; i < totalMods; i++){
mods.add(TypeIO.readString(buffer)); mods.add(TypeIO.readString(buffer));

View File

@@ -23,4 +23,12 @@ public enum Category{
effect; effect;
public static final Category[] all = values(); public static final Category[] all = values();
public Category prev(){
return all[(this.ordinal() - 1 + all.length) % all.length];
}
public Category next(){
return all[(this.ordinal() + 1) % all.length];
}
} }

View File

@@ -13,6 +13,8 @@ public class Liquid extends UnlockableContent{
/** Color used in bars. */ /** Color used in bars. */
public @Nullable Color barColor; public @Nullable Color barColor;
/** Color used to draw lights. Note that the alpha channel is used to dictate brightness. */
public Color lightColor = Color.clear.cpy();
/** 0-1, 0 is completely inflammable, anything above that may catch fire when exposed to heat, 0.5+ is very flammable. */ /** 0-1, 0 is completely inflammable, anything above that may catch fire when exposed to heat, 0.5+ is very flammable. */
public float flammability; public float flammability;
/** temperature: 0.5 is 'room' temperature, 0 is very cold, 1 is molten hot */ /** temperature: 0.5 is 'room' temperature, 0 is very cold, 1 is molten hot */

View File

@@ -85,6 +85,9 @@ public class ContentDisplay{
table.left().defaults().fillX(); table.left().defaults().fillX();
table.add(Core.bundle.format("item.corestorable", item.type == ItemType.material ? Core.bundle.format("yes") : Core.bundle.format("no")));
table.row();
table.add(Core.bundle.format("item.explosiveness", (int)(item.explosiveness * 100))); table.add(Core.bundle.format("item.explosiveness", (int)(item.explosiveness * 100)));
table.row(); table.row();
table.add(Core.bundle.format("item.flammability", (int)(item.flammability * 100))); table.add(Core.bundle.format("item.flammability", (int)(item.flammability * 100)));

View File

@@ -17,6 +17,7 @@ public class Links{
new LinkEntry("reddit", "https://www.reddit.com/r/Mindustry/", Color.valueOf("ee593b")), new LinkEntry("reddit", "https://www.reddit.com/r/Mindustry/", Color.valueOf("ee593b")),
new LinkEntry("itch.io", "https://anuke.itch.io/mindustry", Color.valueOf("fa5c5c")), new LinkEntry("itch.io", "https://anuke.itch.io/mindustry", Color.valueOf("fa5c5c")),
new LinkEntry("google-play", "https://play.google.com/store/apps/details?id=io.anuke.mindustry", Color.valueOf("689f38")), new LinkEntry("google-play", "https://play.google.com/store/apps/details?id=io.anuke.mindustry", Color.valueOf("689f38")),
new LinkEntry("f-droid", "https://f-droid.org/packages/io.anuke.mindustry/", Color.valueOf("026aa7")),
new LinkEntry("github", "https://github.com/Anuken/Mindustry/", Color.valueOf("24292e")), new LinkEntry("github", "https://github.com/Anuken/Mindustry/", Color.valueOf("24292e")),
new LinkEntry("dev-builds", "https://github.com/Anuken/MindustryBuilds", Color.valueOf("fafbfc")) new LinkEntry("dev-builds", "https://github.com/Anuken/MindustryBuilds", Color.valueOf("fafbfc"))
}; };

View File

@@ -16,7 +16,7 @@ import static io.anuke.mindustry.Vars.*;
public class AboutDialog extends FloatingDialog{ public class AboutDialog extends FloatingDialog{
private Array<String> contributors = new Array<>(); private Array<String> contributors = new Array<>();
private static ObjectSet<String> bannedItems = ObjectSet.with("google-play", "itch.io", "dev-builds"); private static ObjectSet<String> bannedItems = ObjectSet.with("google-play", "itch.io", "dev-builds", "f-droid");
public AboutDialog(){ public AboutDialog(){
super("$about.button"); super("$about.button");

View File

@@ -0,0 +1,63 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.func.*;
import io.anuke.arc.graphics.*;
import io.anuke.arc.scene.ui.*;
import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*;
public class ColorPicker extends FloatingDialog{
private Cons<Color> cons = c -> {};
private Color current = new Color();
public ColorPicker(){
super("$pickcolor");
}
public void show(Color color, Cons<Color> consumer){
show(color, true, consumer);
}
public void show(Color color, boolean alpha, Cons<Color> consumer){
this.current.set(color);
this.cons = consumer;
show();
cont.clear();
cont.pane(t -> {
t.table(Tex.pane, i -> {
i.stack(new Image(Tex.alphaBg), new Image(){{
setColor(current);
update(() -> setColor(current));
}}).size(200f);
}).colspan(2).padBottom(5);
float w = 150f;
t.row();
t.defaults().padBottom(4);
t.add("R").color(Pal.remove);
t.addSlider(0f, 1f, 0.01f, current.r, current::r).width(w);
t.row();
t.add("G").color(Color.lime);
t.addSlider(0f, 1f, 0.01f, current.g, current::g).width(w);
t.row();
t.add("B").color(Color.royal);
t.addSlider(0f, 1f, 0.01f, current.b, current::b).width(w);
t.row();
if(alpha){
t.add("A");
t.addSlider(0f, 1f, 0.01f, current.a, current::a).width(w);
t.row();
}
});
buttons.clear();
addCloseButton();
buttons.addImageTextButton("$ok", Icon.checkSmall, () -> {
cons.get(current);
hide();
});
}
}

View File

@@ -116,7 +116,7 @@ public class CustomRulesDialog extends FloatingDialog{
void setup(){ void setup(){
cont.clear(); cont.clear();
cont.pane(m -> main = m); cont.pane(m -> main = m).get().setScrollingDisabled(true, false);
main.margin(10f); main.margin(10f);
main.addButton("$settings.reset", () -> { main.addButton("$settings.reset", () -> {
rules = resetter.get(); rules = resetter.get();
@@ -135,13 +135,11 @@ public class CustomRulesDialog extends FloatingDialog{
number("$rules.dropzoneradius", false, f -> rules.dropZoneRadius = f * tilesize, () -> rules.dropZoneRadius / tilesize, () -> true); number("$rules.dropzoneradius", false, f -> rules.dropZoneRadius = f * tilesize, () -> rules.dropZoneRadius / tilesize, () -> true);
title("$rules.title.respawns"); title("$rules.title.respawns");
//limited respawns don't work on PvP, commented out until they're fixed
//check("$rules.limitedRespawns", b -> rules.limitedRespawns = b, () -> rules.limitedRespawns);
//number("$rules.respawns", true, f -> rules.respawns = (int)f, () -> rules.respawns, () -> rules.limitedRespawns);
number("$rules.respawntime", f -> rules.respawnTime = f * 60f, () -> rules.respawnTime / 60f); number("$rules.respawntime", f -> rules.respawnTime = f * 60f, () -> rules.respawnTime / 60f);
title("$rules.title.resourcesbuilding"); title("$rules.title.resourcesbuilding");
check("$rules.infiniteresources", b -> rules.infiniteResources = b, () -> rules.infiniteResources); check("$rules.infiniteresources", b -> rules.infiniteResources = b, () -> rules.infiniteResources);
check("$rules.reactorexplosions", b -> rules.reactorExplosions = b, () -> rules.reactorExplosions);
number("$rules.buildcostmultiplier", false, f -> rules.buildCostMultiplier = f, () -> rules.buildCostMultiplier, () -> !rules.infiniteResources); number("$rules.buildcostmultiplier", false, f -> rules.buildCostMultiplier = f, () -> rules.buildCostMultiplier, () -> !rules.infiniteResources);
number("$rules.buildspeedmultiplier", f -> rules.buildSpeedMultiplier = f, () -> rules.buildSpeedMultiplier); number("$rules.buildspeedmultiplier", f -> rules.buildSpeedMultiplier = f, () -> rules.buildSpeedMultiplier);
@@ -171,6 +169,20 @@ public class CustomRulesDialog extends FloatingDialog{
check("$rules.attack", b -> rules.attackMode = b, () -> rules.attackMode); check("$rules.attack", b -> rules.attackMode = b, () -> rules.attackMode);
check("$rules.enemyCheat", b -> rules.enemyCheat = b, () -> rules.enemyCheat); check("$rules.enemyCheat", b -> rules.enemyCheat = b, () -> rules.enemyCheat);
number("$rules.enemycorebuildradius", f -> rules.enemyCoreBuildRadius = f * tilesize, () -> Math.min(rules.enemyCoreBuildRadius / tilesize, 200)); number("$rules.enemycorebuildradius", f -> rules.enemyCoreBuildRadius = f * tilesize, () -> Math.min(rules.enemyCoreBuildRadius / tilesize, 200));
title("$rules.title.experimental");
check("$rules.lighting", b -> rules.lighting = b, () -> rules.lighting);
main.addButton(b -> {
b.left();
b.table(Tex.pane, in -> {
in.stack(new Image(Tex.alphaBg), new Image(Tex.whiteui){{
update(() -> setColor(rules.ambientLight));
}}).grow();
}).margin(4).size(50f).padRight(10);
b.add("$rules.ambientlight");
}, () -> ui.picker.show(rules.ambientLight, rules.ambientLight::set)).left().width(250f);
main.row();
} }
void number(String text, Floatc cons, Floatp prov){ void number(String text, Floatc cons, Floatp prov){
@@ -200,7 +212,9 @@ public class CustomRulesDialog extends FloatingDialog{
} }
void title(String text){ void title(String text){
main.add(text).color(Pal.accent).padTop(20).padBottom(20).padRight(100f); main.add(text).color(Pal.accent).padTop(20).padRight(100f).padBottom(-3);
main.row();
main.addImage().color(Pal.accent).height(3f).padRight(100f).padBottom(20);
main.row(); main.row();
} }
} }

View File

@@ -31,7 +31,7 @@ public class HostDialog extends FloatingDialog{
}).grow().pad(8).get().setMaxLength(40); }).grow().pad(8).get().setMaxLength(40);
ImageButton button = t.addImageButton(Tex.whiteui, Styles.clearFulli, 40, () -> { ImageButton button = t.addImageButton(Tex.whiteui, Styles.clearFulli, 40, () -> {
new ColorPickDialog().show(color -> { new PaletteDialog().show(color -> {
player.color.set(color); player.color.set(color);
Core.settings.put("color-0", Color.rgba8888(color)); Core.settings.put("color-0", Color.rgba8888(color));
Core.settings.save(); Core.settings.save();
@@ -74,6 +74,9 @@ public class HostDialog extends FloatingDialog{
ui.showCustomConfirm("$setting.publichost.name", "$public.confirm", "$yes", "$no", () -> { ui.showCustomConfirm("$setting.publichost.name", "$public.confirm", "$yes", "$no", () -> {
Core.settings.putSave("publichost", true); Core.settings.putSave("publichost", true);
platform.updateLobby(); platform.updateLobby();
}, () -> {
Core.settings.putSave("publichost", false);
platform.updateLobby();
}); });
})); }));
} }

View File

@@ -9,6 +9,7 @@ import io.anuke.arc.math.*;
import io.anuke.arc.scene.ui.*; import io.anuke.arc.scene.ui.*;
import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.scene.ui.layout.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.arc.util.serialization.*;
import io.anuke.mindustry.*; import io.anuke.mindustry.*;
import io.anuke.mindustry.core.*; import io.anuke.mindustry.core.*;
import io.anuke.mindustry.gen.*; import io.anuke.mindustry.gen.*;
@@ -247,7 +248,7 @@ public class JoinDialog extends FloatingDialog{
} }
ImageButton button = t.addImageButton(Tex.whiteui, Styles.clearFulli, 40, () -> { ImageButton button = t.addImageButton(Tex.whiteui, Styles.clearFulli, 40, () -> {
new ColorPickDialog().show(color -> { new PaletteDialog().show(color -> {
player.color.set(color); player.color.set(color);
Core.settings.put("color-0", Color.rgba8888(color)); Core.settings.put("color-0", Color.rgba8888(color));
Core.settings.save(); Core.settings.save();
@@ -359,6 +360,20 @@ public class JoinDialog extends FloatingDialog{
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void loadServers(){ private void loadServers(){
servers = Core.settings.getObject("server-list", Array.class, Array::new); servers = Core.settings.getObject("server-list", Array.class, Array::new);
//get servers
Core.net.httpGet(serverJsonURL, result -> {
try{
Jval val = Jval.read(result.getResultAsString());
Core.app.post(() -> {
try{
defaultServers.clear();
val.asArray().each(child -> defaultServers.add(child.getString("address", "<invalid>")));
Log.info("Fetched {0} global servers.", defaultServers.size);
}catch(Throwable ignored){}
});
}catch(Throwable ignored){}
}, t -> {});
} }
private void saveServers(){ private void saveServers(){

View File

@@ -132,7 +132,7 @@ public class ModsDialog extends FloatingDialog{
title.addImageTextButton(mod.enabled() ? "$mod.disable" : "$mod.enable", mod.enabled() ? Icon.arrowDownSmall : Icon.arrowUpSmall, Styles.cleart, () -> { title.addImageTextButton(mod.enabled() ? "$mod.disable" : "$mod.enable", mod.enabled() ? Icon.arrowDownSmall : Icon.arrowUpSmall, Styles.cleart, () -> {
mods.setEnabled(mod, !mod.enabled()); mods.setEnabled(mod, !mod.enabled());
setup(); setup();
}).height(50f).margin(8f).width(130f); }).height(50f).margin(8f).width(130f).disabled(!mod.isSupported());
if(steam && !mod.hasSteamID()){ if(steam && !mod.hasSteamID()){
title.addImageButton(Icon.loadMapSmall, Styles.cleari, () -> { title.addImageButton(Icon.loadMapSmall, Styles.cleari, () -> {
@@ -161,7 +161,10 @@ public class ModsDialog extends FloatingDialog{
t.labelWrap("[lightgray]" + mod.meta.description).growX(); t.labelWrap("[lightgray]" + mod.meta.description).growX();
t.row(); t.row();
} }
if(mod.hasUnmetDependencies()){ if(!mod.isSupported()){
t.labelWrap(Core.bundle.format("mod.requiresversion", mod.meta.minGameVersion)).growX();
t.row();
}else if(mod.hasUnmetDependencies()){
t.labelWrap(Core.bundle.format("mod.missingdependencies", mod.missingDependencies.toString(", "))).growX(); t.labelWrap(Core.bundle.format("mod.missingdependencies", mod.missingDependencies.toString(", "))).growX();
t.row(); t.row();
} }

View File

@@ -10,10 +10,10 @@ import io.anuke.mindustry.ui.*;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class ColorPickDialog extends Dialog{ public class PaletteDialog extends Dialog{
private Cons<Color> cons; private Cons<Color> cons;
public ColorPickDialog(){ public PaletteDialog(){
super(""); super("");
build(); build();
} }

View File

@@ -62,12 +62,12 @@ public class SchematicsDialog extends FloatingDialog{
t.clear(); t.clear();
int i = 0; int i = 0;
if(!schematics.all().contains(s -> search.isEmpty() || s.name().contains(search))){ if(!schematics.all().contains(s -> search.isEmpty() || s.name().toLowerCase().contains(search.toLowerCase()))){
t.add("$none"); t.add("$none");
} }
for(Schematic s : schematics.all()){ for(Schematic s : schematics.all()){
if(!search.isEmpty() && !s.name().contains(search)) continue; if(!search.isEmpty() && !s.name().toLowerCase().contains(search.toLowerCase())) continue;
Button[] sel = {null}; Button[] sel = {null};
sel[0] = t.addButton(b -> { sel[0] = t.addButton(b -> {

View File

@@ -221,6 +221,8 @@ public class SettingsMenuDialog extends SettingsDialog{
game.sliderPref("saveinterval", 60, 10, 5 * 120, 10, i -> Core.bundle.format("setting.seconds", i)); game.sliderPref("saveinterval", 60, 10, 5 * 120, 10, i -> Core.bundle.format("setting.seconds", i));
if(!mobile){ if(!mobile){
game.sliderPref("blockselecttimeout", 750, 0, 2000, 50, i -> Core.bundle.format("setting.milliseconds", i));
game.checkPref("crashreport", true); game.checkPref("crashreport", true);
} }
@@ -251,7 +253,7 @@ public class SettingsMenuDialog extends SettingsDialog{
} }
}); });
graphics.sliderPref("uiscale", 100, 25, 400, 5, s -> { graphics.sliderPref("uiscale", 100, 25, 300, 25, s -> {
if(ui.settings != null){ if(ui.settings != null){
Core.settings.put("uiscalechanged", true); Core.settings.put("uiscalechanged", true);
} }
@@ -306,6 +308,9 @@ public class SettingsMenuDialog extends SettingsDialog{
graphics.checkPref("minimap", !mobile); graphics.checkPref("minimap", !mobile);
graphics.checkPref("position", false); graphics.checkPref("position", false);
graphics.checkPref("fps", false); graphics.checkPref("fps", false);
if(!mobile){
graphics.checkPref("blockselectkeys", true);
}
graphics.checkPref("indicators", true); graphics.checkPref("indicators", true);
graphics.checkPref("animatedwater", !mobile); graphics.checkPref("animatedwater", !mobile);
if(Shaders.shield != null){ if(Shaders.shield != null){

View File

@@ -189,9 +189,9 @@ public class BlockInventoryFragment extends Fragment{
private String round(float f){ private String round(float f){
f = (int)f; f = (int)f;
if(f >= 1000000){ if(f >= 1000000){
return (int)(f / 1000000f) + "[gray]mil[]"; return (int)(f / 1000000f) + "[gray]" + Core.bundle.getOrNull("unit.millions") + "[]";
}else if(f >= 1000){ }else if(f >= 1000){
return (int)(f / 1000) + "k"; return (int)(f / 1000) + Core.bundle.getOrNull("unit.thousands");
}else{ }else{
return (int)f + ""; return (int)f + "";
} }

View File

@@ -64,9 +64,7 @@ public class HudFragment extends Fragment{
select.addImageButton(Icon.menuLargeSmall, style, ui.paused::show); select.addImageButton(Icon.menuLargeSmall, style, ui.paused::show);
flip = select.addImageButton(Icon.arrowUpSmall, style, this::toggleMenus).get(); flip = select.addImageButton(Icon.arrowUpSmall, style, this::toggleMenus).get();
select.addImageButton(Icon.pasteSmall, style, () -> { select.addImageButton(Icon.pasteSmall, style, ui.schematics::show);
ui.schematics.show();
});
select.addImageButton(Icon.pauseSmall, style, () -> { select.addImageButton(Icon.pauseSmall, style, () -> {
if(net.active()){ if(net.active()){
@@ -347,7 +345,7 @@ public class HudFragment extends Fragment{
@Remote(targets = Loc.both, forward = true, called = Loc.both) @Remote(targets = Loc.both, forward = true, called = Loc.both)
public static void setPlayerTeamEditor(Player player, Team team){ public static void setPlayerTeamEditor(Player player, Team team){
if(state.isEditor()){ if(state.isEditor() && player != null){
player.setTeam(team); player.setTeam(team);
} }
} }

View File

@@ -17,7 +17,6 @@ import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.ui.*; import io.anuke.mindustry.ui.*;
import static io.anuke.arc.Core.assets;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class MenuFragment extends Fragment{ public class MenuFragment extends Fragment{
@@ -26,8 +25,6 @@ public class MenuFragment extends Fragment{
private MenuRenderer renderer; private MenuRenderer renderer;
public MenuFragment(){ public MenuFragment(){
assets.load("sprites/logo.png", Texture.class);
assets.finishLoading();
Events.on(DisposeEvent.class, event -> { Events.on(DisposeEvent.class, event -> {
renderer.dispose(); renderer.dispose();
}); });
@@ -67,7 +64,7 @@ public class MenuFragment extends Fragment{
String versionText = "[#ffffffba]" + ((Version.build == -1) ? "[#fc8140aa]custom build" : (Version.type.equals("official") ? Version.modifier : Version.type) + " build " + Version.build + (Version.revision == 0 ? "" : "." + Version.revision)); String versionText = "[#ffffffba]" + ((Version.build == -1) ? "[#fc8140aa]custom build" : (Version.type.equals("official") ? Version.modifier : Version.type) + " build " + Version.build + (Version.revision == 0 ? "" : "." + Version.revision));
parent.fill((x, y, w, h) -> { parent.fill((x, y, w, h) -> {
Texture logo = Core.assets.get("sprites/logo.png"); TextureRegion logo = Core.atlas.find("logo");
float logoscl = Scl.scl(1); float logoscl = Scl.scl(1);
float logow = Math.min(logo.getWidth() * logoscl, Core.graphics.getWidth() - Scl.scl(20)); float logow = Math.min(logo.getWidth() * logoscl, Core.graphics.getWidth() - Scl.scl(20));
float logoh = logow * (float)logo.getHeight() / logo.getWidth(); float logoh = logow * (float)logo.getHeight() / logo.getWidth();
@@ -76,7 +73,7 @@ public class MenuFragment extends Fragment{
float fy = (int)(Core.graphics.getHeight() - 6 - logoh) + logoh / 2 - (Core.graphics.isPortrait() ? Scl.scl(30f) : 0f); float fy = (int)(Core.graphics.getHeight() - 6 - logoh) + logoh / 2 - (Core.graphics.isPortrait() ? Scl.scl(30f) : 0f);
Draw.color(); Draw.color();
Draw.rect(Draw.wrap(logo), fx, fy, logow, logoh); Draw.rect(logo, fx, fy, logow, logoh);
Fonts.def.setColor(Color.white); Fonts.def.setColor(Color.white);
Fonts.def.draw(versionText, fx, fy - logoh/2f, Align.center); Fonts.def.draw(versionText, fx, fy - logoh/2f, Align.center);

View File

@@ -36,6 +36,25 @@ public class PlacementFragment extends Fragment{
Tile hoverTile; Tile hoverTile;
Table blockTable, toggler, topTable; Table blockTable, toggler, topTable;
boolean lastGround; boolean lastGround;
boolean blockSelectEnd;
int blockSelectSeq;
long blockSelectSeqMillis;
Binding[] blockSelect = {
Binding.block_select_01,
Binding.block_select_02,
Binding.block_select_03,
Binding.block_select_04,
Binding.block_select_05,
Binding.block_select_06,
Binding.block_select_07,
Binding.block_select_08,
Binding.block_select_09,
Binding.block_select_10,
Binding.block_select_left,
Binding.block_select_right,
Binding.block_select_up,
Binding.block_select_down
};
public PlacementFragment(){ public PlacementFragment(){
Events.on(WorldLoadEvent.class, event -> { Events.on(WorldLoadEvent.class, event -> {
@@ -83,6 +102,78 @@ public class PlacementFragment extends Fragment{
return true; return true;
} }
} }
if(ui.chatfrag.chatOpen()) return false;
for(int i = 0; i < blockSelect.length; i++){
if(Core.input.keyTap(blockSelect[i])){
if(i > 9) { //select block directionally
Array<Block> blocks = getByCategory(currentCategory);
Block currentBlock = getSelectedBlock(currentCategory);
for(int j = 0; j < blocks.size; j++){
if(blocks.get(j) == currentBlock){
switch(i){
case 10: //left
j = (j - 1 + blocks.size) % blocks.size;
break;
case 11: //right
j = (j + 1) % blocks.size;
break;
case 12: //up
j = (j > 3 ? j - 4 : blocks.size - blocks.size % 4 + j);
j -= (j < blocks.size ? 0 : 4);
break;
case 13: //down
j = (j < blocks.size - 4 ? j + 4 : j % 4);
}
input.block = blocks.get(j);
selectedBlocks.put(currentCategory, input.block);
break;
}
}
}else if(blockSelectEnd || Time.timeSinceMillis(blockSelectSeqMillis) > Core.settings.getInt("blockselecttimeout")){ //1st number of combo, select category
//select only visible categories
if(!getByCategory(Category.all[i]).isEmpty()){
currentCategory = Category.all[i];
if(input.block != null){
input.block = getSelectedBlock(currentCategory);
}
blockSelectEnd = false;
blockSelectSeq = 0;
blockSelectSeqMillis = Time.millis();
}
}else{ //select block
if(blockSelectSeq == 0){ //2nd number of combo
blockSelectSeq = i + 1;
}else{ //3rd number of combo
//entering "X,1,0" selects the same block as "X,0"
i += (blockSelectSeq - (i != 9 ? 0 : 1)) * 10;
blockSelectEnd = true;
}
Array<Block> blocks = getByCategory(currentCategory);
input.block = (i < blocks.size) ? blocks.get(i) : null;
selectedBlocks.put(currentCategory, input.block);
blockSelectSeqMillis = Time.millis();
}
return true;
}
}
if(Core.input.keyTap(Binding.category_prev)){
do{
currentCategory = currentCategory.prev();
}while(categoryEmpty[currentCategory.ordinal()]);
input.block = getSelectedBlock(currentCategory);
return true;
}
if(Core.input.keyTap(Binding.category_next)){
do{
currentCategory = currentCategory.next();
}while(categoryEmpty[currentCategory.ordinal()]);
input.block = getSelectedBlock(currentCategory);
return true;
}
return false; return false;
} }
@@ -109,11 +200,6 @@ public class PlacementFragment extends Fragment{
blockTable.row(); blockTable.row();
} }
if(!unlocked(block)){
blockTable.add().size(46);
continue;
}
ImageButton button = blockTable.addImageButton(Icon.lockedSmall, Styles.selecti, () -> { ImageButton button = blockTable.addImageButton(Icon.lockedSmall, Styles.selecti, () -> {
if(unlocked(block)){ if(unlocked(block)){
control.input.block = control.input.block == block ? null : block; control.input.block = control.input.block == block ? null : block;
@@ -170,9 +256,22 @@ public class PlacementFragment extends Fragment{
lastGround = false; lastGround = false;
topTable.table(header -> { topTable.table(header -> {
String keyCombo = "";
if(!mobile && Core.settings.getBool("blockselectkeys")){
Array<Block> blocks = getByCategory(currentCategory);
for(int i = 0; i < blocks.size; i++){
if(blocks.get(i) == lastDisplay){
keyCombo = Core.bundle.format("placement.blockselectkeys", Core.keybinds.get(blockSelect[currentCategory.ordinal()]).key.toString())
+ (i < 10 ? "" : Core.keybinds.get(blockSelect[(i + 1) / 10 - 1]).key.toString() + ",")
+ Core.keybinds.get(blockSelect[i % 10]).key.toString() + "]";
break;
}
}
}
final String keyComboFinal = keyCombo;
header.left(); header.left();
header.add(new Image(lastDisplay.icon(Cicon.medium))).size(8 * 4); header.add(new Image(lastDisplay.icon(Cicon.medium))).size(8 * 4);
header.labelWrap(() -> !unlocked(lastDisplay) ? Core.bundle.get("block.unknown") : lastDisplay.localizedName) header.labelWrap(() -> !unlocked(lastDisplay) ? Core.bundle.get("block.unknown") : lastDisplay.localizedName + keyComboFinal)
.left().width(190f).padLeft(5); .left().width(190f).padLeft(5);
header.add().growX(); header.add().growX();
if(unlocked(lastDisplay)){ if(unlocked(lastDisplay)){
@@ -265,7 +364,7 @@ public class PlacementFragment extends Fragment{
//update category empty values //update category empty values
for(Category cat : Category.all){ for(Category cat : Category.all){
Array<Block> blocks = getByCategory(cat); Array<Block> blocks = getByCategory(cat);
categoryEmpty[cat.ordinal()] = blocks.isEmpty() || !unlocked(blocks.first()); categoryEmpty[cat.ordinal()] = blocks.isEmpty();
} }
int f = 0; int f = 0;
@@ -280,10 +379,7 @@ public class PlacementFragment extends Fragment{
categories.addImageButton(Core.atlas.drawable("icon-" + cat.name() + "-smaller"), Styles.clearToggleTransi, () -> { categories.addImageButton(Core.atlas.drawable("icon-" + cat.name() + "-smaller"), Styles.clearToggleTransi, () -> {
currentCategory = cat; currentCategory = cat;
if(control.input.block != null){ if(control.input.block != null){
if(selectedBlocks.get(currentCategory) == null){ control.input.block = getSelectedBlock(currentCategory);
selectedBlocks.put(currentCategory, getByCategory(currentCategory).find(this::unlocked));
}
control.input.block = selectedBlocks.get(currentCategory);
} }
rebuildCategory.run(); rebuildCategory.run();
}).group(group).update(i -> i.setChecked(currentCategory == cat)).name("category-" + cat.name()); }).group(group).update(i -> i.setChecked(currentCategory == cat)).name("category-" + cat.name());
@@ -308,7 +404,7 @@ public class PlacementFragment extends Fragment{
Array<Block> getByCategory(Category cat){ Array<Block> getByCategory(Category cat){
returnArray.clear(); returnArray.clear();
for(Block block : content.blocks()){ for(Block block : content.blocks()){
if(block.category == cat && block.isVisible()){ if(block.category == cat && block.isVisible() && unlocked(block)){
returnArray.add(block); returnArray.add(block);
} }
} }
@@ -320,6 +416,13 @@ public class PlacementFragment extends Fragment{
return returnArray; return returnArray;
} }
Block getSelectedBlock(Category cat){
if(selectedBlocks.get(cat) == null){
selectedBlocks.put(cat, getByCategory(cat).find(this::unlocked));
}
return selectedBlocks.get(cat);
}
boolean unlocked(Block block){ boolean unlocked(Block block){
return !world.isZone() || data.isUnlocked(block); return !world.isZone() || data.isUnlocked(block);
} }

View File

@@ -24,6 +24,7 @@ import io.anuke.mindustry.entities.traits.BuilderTrait.*;
import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.gen.*; import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.graphics.MultiPacker.*;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
import io.anuke.mindustry.ui.*; import io.anuke.mindustry.ui.*;
import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.blocks.*;
@@ -89,6 +90,8 @@ public class Block extends BlockStorage{
public boolean configurable; public boolean configurable;
/** Whether this block consumes touchDown events when tapped. */ /** Whether this block consumes touchDown events when tapped. */
public boolean consumesTap; public boolean consumesTap;
/** Whether to draw the glow of the liquid for this block, if it has one. */
public boolean drawLiquidLight = true;
/** Whether the config is positional and needs to be shifted. */ /** Whether the config is positional and needs to be shifted. */
public boolean posConfig; public boolean posConfig;
/** Whether this block uses conveyor-type placement mode.*/ /** Whether this block uses conveyor-type placement mode.*/
@@ -137,6 +140,7 @@ public class Block extends BlockStorage{
protected TextureRegion[] cacheRegions = {}; protected TextureRegion[] cacheRegions = {};
protected Array<String> cacheRegionStrings = new Array<>(); protected Array<String> cacheRegionStrings = new Array<>();
protected Prov<TileEntity> entityType = TileEntity::new;
protected Array<Tile> tempTiles = new Array<>(); protected Array<Tile> tempTiles = new Array<>();
protected TextureRegion[] generatedIcons; protected TextureRegion[] generatedIcons;
@@ -292,6 +296,23 @@ public class Block extends BlockStorage{
Draw.rect(region, tile.drawx(), tile.drawy(), rotate ? tile.rotation() * 90 : 0); Draw.rect(region, tile.drawx(), tile.drawy(), rotate ? tile.rotation() * 90 : 0);
} }
public void drawLight(Tile tile){
if(tile.entity != null && hasLiquids && drawLiquidLight && tile.entity.liquids.current().lightColor.a > 0.001f){
drawLiquidLight(tile, tile.entity.liquids.current(), tile.entity.liquids.smoothAmount());
}
}
public void drawLiquidLight(Tile tile, Liquid liquid, float amount){
if(amount > 0.01f){
Color color = liquid.lightColor;
float fract = 1f;
float opacity = color.a * fract;
if(opacity > 0.001f){
renderer.lights.add(tile.drawx(), tile.drawy(), size * 30f * fract, color, opacity);
}
}
}
public void drawTeam(Tile tile){ public void drawTeam(Tile tile){
Draw.color(tile.getTeam().color); Draw.color(tile.getTeam().color);
Draw.rect("block-border", tile.drawx() - size * tilesize / 2f + 4, tile.drawy() - size * tilesize / 2f + 4); Draw.rect("block-border", tile.drawx() - size * tilesize / 2f + 4, tile.drawy() - size * tilesize / 2f + 4);
@@ -363,6 +384,16 @@ public class Block extends BlockStorage{
return sum; return sum;
} }
public float percentSolid(int x, int y){
Tile tile = world.tile(x, y);
if(tile == null) return 0;
float sum = 0;
for(Tile other : tile.getLinkedTilesAs(this, tempTiles)){
sum += !other.floor.isLiquid ? 1f : 0f;
}
return sum / size / size;
}
@Override @Override
public String localizedName(){ public String localizedName(){
return localizedName; return localizedName;
@@ -596,7 +627,7 @@ public class Block extends BlockStorage{
if(hasLiquids){ if(hasLiquids){
tile.entity.liquids.forEach((liquid, amount) -> { tile.entity.liquids.each((liquid, amount) -> {
float splash = Mathf.clamp(amount / 4f, 0f, 10f); float splash = Mathf.clamp(amount / 4f, 0f, 10f);
for(int i = 0; i < Mathf.clamp(amount / 5, 0, 30); i++){ for(int i = 0; i < Mathf.clamp(amount / 5, 0, 30); i++){
@@ -706,10 +737,12 @@ public class Block extends BlockStorage{
Color color = content instanceof Item ? ((Item)content).color : content instanceof Liquid ? ((Liquid)content).color : null; Color color = content instanceof Item ? ((Item)content).color : content instanceof Liquid ? ((Liquid)content).color : null;
if(color == null) return; if(color == null) return;
float prev = Draw.scl;
Draw.color(color); Draw.color(color);
Draw.scl *= req.animScale; Draw.scl *= req.animScale;
Draw.rect(region, req.drawx(), req.drawy()); Draw.rect(region, req.drawx(), req.drawy());
Draw.scl /= req.animScale; Draw.scl = prev;
Draw.color(); Draw.color();
} }
@@ -723,10 +756,10 @@ public class Block extends BlockStorage{
} }
@Override @Override
public void createIcons(PixmapPacker packer, PixmapPacker editor){ public void createIcons(MultiPacker packer){
super.createIcons(packer, editor); super.createIcons(packer);
editor.pack(name + "-icon-editor", Core.atlas.getPixmap((AtlasRegion)icon(Cicon.full)).crop()); packer.add(PageType.editor, name + "-icon-editor", Core.atlas.getPixmap((AtlasRegion)icon(Cicon.full)));
if(!synthetic()){ if(!synthetic()){
PixmapRegion image = Core.atlas.getPixmap((AtlasRegion)icon(Cicon.full)); PixmapRegion image = Core.atlas.getPixmap((AtlasRegion)icon(Cicon.full));
@@ -766,7 +799,7 @@ public class Block extends BlockStorage{
} }
last = out; last = out;
packer.pack(name, out); packer.add(PageType.main, name, out);
} }
if(generatedIcons.length > 1){ if(generatedIcons.length > 1){
@@ -778,7 +811,7 @@ public class Block extends BlockStorage{
base.draw(Core.atlas.getPixmap(generatedIcons[i])); base.draw(Core.atlas.getPixmap(generatedIcons[i]));
} }
} }
packer.pack("block-" + name + "-full", base); packer.add(PageType.main, "block-" + name + "-full", base);
generatedIcons = null; generatedIcons = null;
Arrays.fill(cicons, null); Arrays.fill(cicons, null);
} }
@@ -825,8 +858,8 @@ public class Block extends BlockStorage{
return destructible || update; return destructible || update;
} }
public TileEntity newEntity(){ public final TileEntity newEntity(){
return new TileEntity(); return entityType.get();
} }
/** Offset for placing and drawing multiblocks. */ /** Offset for placing and drawing multiblocks. */

View File

@@ -116,9 +116,9 @@ public abstract class BlockStorage extends UnlockableContent{
Tile other = proximity.get((i + dump) % proximity.size); Tile other = proximity.get((i + dump) % proximity.size);
Tile in = Edges.getFacingEdge(tile, other); Tile in = Edges.getFacingEdge(tile, other);
other = other.block().getLiquidDestination(other, tile); other = other.block().getLiquidDestination(other, in, liquid);
if(other.getTeam() == tile.getTeam() && other.block().hasLiquids && canDumpLiquid(tile, other, liquid) && other.entity.liquids != null){ if(other != null && other.getTeam() == tile.getTeam() && other.block().hasLiquids && canDumpLiquid(tile, other, liquid) && other.entity.liquids != null){
float ofract = other.entity.liquids.get(liquid) / other.block().liquidCapacity; float ofract = other.entity.liquids.get(liquid) / other.block().liquidCapacity;
float fract = tile.entity.liquids.get(liquid) / liquidCapacity; float fract = tile.entity.liquids.get(liquid) / liquidCapacity;
@@ -142,10 +142,14 @@ public abstract class BlockStorage extends UnlockableContent{
} }
public float tryMoveLiquid(Tile tile, Tile next, boolean leak, Liquid liquid){ public float tryMoveLiquid(Tile tile, Tile next, boolean leak, Liquid liquid){
return tryMoveLiquid(tile, next, leak ? 1.5f : 100, liquid);
}
public float tryMoveLiquid(Tile tile, Tile next, float leakResistance, Liquid liquid){
if(next == null) return 0; if(next == null) return 0;
next = next.link(); next = next.link();
next = next.block().getLiquidDestination(next, tile); next = next.block().getLiquidDestination(next, tile, liquid);
if(next.getTeam() == tile.getTeam() && next.block().hasLiquids && tile.entity.liquids.get(liquid) > 0f){ if(next.getTeam() == tile.getTeam() && next.block().hasLiquids && tile.entity.liquids.get(liquid) > 0f){
@@ -175,15 +179,15 @@ public abstract class BlockStorage extends UnlockableContent{
} }
} }
} }
}else if(leak && !next.block().solid && !next.block().hasLiquids){ }else if(leakResistance != 100f && !next.block().solid && !next.block().hasLiquids){
float leakAmount = tile.entity.liquids.get(liquid) / 1.5f; float leakAmount = tile.entity.liquids.get(liquid) / leakResistance;
Puddle.deposit(next, tile, liquid, leakAmount); Puddle.deposit(next, tile, liquid, leakAmount);
tile.entity.liquids.remove(liquid, leakAmount); tile.entity.liquids.remove(liquid, leakAmount);
} }
return 0; return 0;
} }
public Tile getLiquidDestination(Tile tile, Tile from){ public Tile getLiquidDestination(Tile tile, Tile from, Liquid liquid){
return tile; return tile;
} }

View File

@@ -327,19 +327,19 @@ public class Tile implements Position, TargetTrait{
} }
// ▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ B A // ▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ B A
public Tile front(){ public @Nullable Tile front(){
return getNearbyLink((rotation + 4) % 4); return getNearbyLink((rotation + 4) % 4);
} }
public Tile right(){ public @Nullable Tile right(){
return getNearbyLink((rotation + 3) % 4); return getNearbyLink((rotation + 3) % 4);
} }
public Tile back(){ public @Nullable Tile back(){
return getNearbyLink((rotation + 2) % 4); return getNearbyLink((rotation + 2) % 4);
} }
public Tile left(){ public @Nullable Tile left(){
return getNearbyLink((rotation + 1) % 4); return getNearbyLink((rotation + 1) % 4);
} }

View File

@@ -87,6 +87,12 @@ public interface Autotiler{
return other != null && blends(tile, rotation, other.x, other.y, other.rotation(), other.block()); return other != null && blends(tile, rotation, other.x, other.y, other.rotation(), other.block());
} }
default boolean blendsArmored(Tile tile, int rotation, int otherx, int othery, int otherrot, Block otherblock){
return (Point2.equals(tile.x + Geometry.d4(rotation).x, tile.y + Geometry.d4(rotation).y, otherx, othery)
|| ((!otherblock.rotate && Edges.getFacingEdge(otherblock, otherx, othery, tile) != null &&
Edges.getFacingEdge(otherblock, otherx, othery, tile).relativeTo(tile) == rotation) || (otherblock.rotate && Point2.equals(otherx + Geometry.d4(otherrot).x, othery + Geometry.d4(otherrot).y, tile.x, tile.y))));
}
default boolean lookingAt(Tile tile, int rotation, int otherx, int othery, int otherrot, Block otherblock){ default boolean lookingAt(Tile tile, int rotation, int otherx, int othery, int otherrot, Block otherblock){
return (Point2.equals(tile.x + Geometry.d4(rotation).x, tile.y + Geometry.d4(rotation).y, otherx, othery) return (Point2.equals(tile.x + Geometry.d4(rotation).x, tile.y + Geometry.d4(rotation).y, otherx, othery)
|| (!otherblock.rotate || Point2.equals(otherx + Geometry.d4(otherrot).x, othery + Geometry.d4(otherrot).y, tile.x, tile.y))); || (!otherblock.rotate || Point2.equals(otherx + Geometry.d4(otherrot).x, othery + Geometry.d4(otherrot).y, tile.x, tile.y)));

View File

@@ -42,6 +42,7 @@ public class BuildBlock extends Block{
layer = Layer.placement; layer = Layer.placement;
consumesTap = true; consumesTap = true;
solidifes = true; solidifes = true;
entityType = BuildEntity::new;
buildBlocks[size - 1] = this; buildBlocks[size - 1] = this;
} }
@@ -197,11 +198,6 @@ public class BuildBlock extends Block{
} }
} }
@Override
public TileEntity newEntity(){
return new BuildEntity();
}
public class BuildEntity extends TileEntity{ public class BuildEntity extends TileEntity{
/** /**
* The recipe of the block that is being constructed. * The recipe of the block that is being constructed.

View File

@@ -10,8 +10,10 @@ import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.arc.util.ArcAnnotate.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
import io.anuke.mindustry.entities.Effects.*; import io.anuke.mindustry.entities.Effects.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.graphics.MultiPacker.*;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.ui.*;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
import static io.anuke.mindustry.Vars.tilesize; import static io.anuke.mindustry.Vars.tilesize;
@@ -87,9 +89,9 @@ public class Floor extends Block{
} }
@Override @Override
public void createIcons(PixmapPacker out, PixmapPacker editor){ public void createIcons(MultiPacker packer){
super.createIcons(out, editor); super.createIcons(packer);
editor.pack("editor-" + name, Core.atlas.getPixmap((AtlasRegion)icon(Cicon.full)).crop()); packer.add(PageType.editor, "editor-" + name, Core.atlas.getPixmap((AtlasRegion)icon(Cicon.full)).crop());
if(blendGroup != this){ if(blendGroup != this){
return; return;
@@ -98,7 +100,7 @@ public class Floor extends Block{
if(variants > 0){ if(variants > 0){
for(int i = 0; i < variants; i++){ for(int i = 0; i < variants; i++){
String rname = name + (i + 1); String rname = name + (i + 1);
editor.pack("editor-" + rname, Core.atlas.getPixmap(rname).crop()); packer.add(PageType.editor, "editor-" + rname, Core.atlas.getPixmap(rname).crop());
} }
} }
@@ -115,7 +117,7 @@ public class Floor extends Block{
} }
} }
out.pack(name + "-edge", result); packer.add(PageType.environment, name + "-edge", result);
} }
@Override @Override

View File

@@ -4,6 +4,8 @@ import io.anuke.annotations.Annotations.*;
import io.anuke.arc.*; import io.anuke.arc.*;
import io.anuke.arc.graphics.*; import io.anuke.arc.graphics.*;
import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.graphics.g2d.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.graphics.MultiPacker.*;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
@@ -34,7 +36,7 @@ public class OreBlock extends OverlayFloor{
@Override @Override
@OverrideCallSuper @OverrideCallSuper
public void createIcons(PixmapPacker out, PixmapPacker editor){ public void createIcons(MultiPacker packer){
for(int i = 0; i < variants; i++){ for(int i = 0; i < variants; i++){
Pixmap image = new Pixmap(32, 32); Pixmap image = new Pixmap(32, 32);
PixmapRegion shadow = Core.atlas.getPixmap(itemDrop.name + (i + 1)); PixmapRegion shadow = Core.atlas.getPixmap(itemDrop.name + (i + 1));
@@ -55,12 +57,12 @@ public class OreBlock extends OverlayFloor{
image.draw(shadow); image.draw(shadow);
out.pack(name + (i + 1), image); packer.add(PageType.environment, name + (i + 1), image);
editor.pack("editor-" + name + (i + 1), image); packer.add(PageType.editor, "editor-" + name + (i + 1), image);
if(i == 0){ if(i == 0){
editor.pack("editor-block-" + name + "-full", image); packer.add(PageType.editor, "editor-block-" + name + "-full", image);
out.pack("block-" + name + "-full", image); packer.add(PageType.main, "block-" + name + "-full", image);
} }
} }
} }

View File

@@ -20,6 +20,7 @@ public class DeflectorWall extends Wall{
public DeflectorWall(String name){ public DeflectorWall(String name){
super(name); super(name);
entityType = DeflectorEntity::new;
} }
@Override @Override
@@ -72,11 +73,6 @@ public class DeflectorWall extends Wall{
((DeflectorEntity)entity).hit = 1f; ((DeflectorEntity)entity).hit = 1f;
} }
@Override
public TileEntity newEntity(){
return new DeflectorEntity();
}
public static class DeflectorEntity extends TileEntity{ public static class DeflectorEntity extends TileEntity{
public float hit; public float hit;
} }

View File

@@ -31,6 +31,7 @@ public class Door extends Wall{
solid = false; solid = false;
solidifes = true; solidifes = true;
consumesTap = true; consumesTap = true;
entityType = DoorEntity::new;
} }
@Remote(called = Loc.server) @Remote(called = Loc.server)
@@ -89,11 +90,6 @@ public class Door extends Wall{
Call.onDoorToggle(null, tile, !entity.open); Call.onDoorToggle(null, tile, !entity.open);
} }
@Override
public TileEntity newEntity(){
return new DoorEntity();
}
public class DoorEntity extends TileEntity{ public class DoorEntity extends TileEntity{
public boolean open = false; public boolean open = false;

View File

@@ -54,6 +54,7 @@ public class ForceProjector extends Block{
hasLiquids = true; hasLiquids = true;
hasItems = true; hasItems = true;
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.1f)).boost().update(false); consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.1f)).boost().update(false);
entityType = ForceEntity::new;
} }
@Override @Override
@@ -98,7 +99,7 @@ public class ForceProjector extends Block{
entity.phaseHeat = Mathf.lerpDelta(entity.phaseHeat, Mathf.num(phaseValid), 0.1f); entity.phaseHeat = Mathf.lerpDelta(entity.phaseHeat, Mathf.num(phaseValid), 0.1f);
if(phaseValid && !entity.broken && entity.timer.get(timerUse, phaseUseTime)){ if(phaseValid && !entity.broken && entity.timer.get(timerUse, phaseUseTime) && entity.efficiency() > 0){
entity.cons.trigger(); entity.cons.trigger();
} }
@@ -179,11 +180,6 @@ public class ForceProjector extends Block{
Draw.reset(); Draw.reset();
} }
@Override
public TileEntity newEntity(){
return new ForceEntity();
}
class ForceEntity extends TileEntity{ class ForceEntity extends TileEntity{
ShieldEntity shield; ShieldEntity shield;
boolean broken = true; boolean broken = true;

View File

@@ -38,6 +38,7 @@ public class MendProjector extends Block{
update = true; update = true;
hasPower = true; hasPower = true;
hasItems = true; hasItems = true;
entityType = MendEntity::new;
} }
@Override @Override
@@ -133,8 +134,8 @@ public class MendProjector extends Block{
} }
@Override @Override
public TileEntity newEntity(){ public void drawLight(Tile tile){
return new MendEntity(); renderer.lights.add(tile.drawx(), tile.drawy(), 50f * tile.entity.efficiency(), color, 0.7f * tile.entity.efficiency());
} }
class MendEntity extends TileEntity{ class MendEntity extends TileEntity{

View File

@@ -37,6 +37,7 @@ public class OverdriveProjector extends Block{
hasPower = true; hasPower = true;
hasItems = true; hasItems = true;
canOverdrive = false; canOverdrive = false;
entityType = OverdriveEntity::new;
} }
@Override @Override
@@ -66,6 +67,11 @@ public class OverdriveProjector extends Block{
stats.add(BlockStat.boostEffect, (int)((speedBoost + speedBoostPhase) * 100f), StatUnit.percent); stats.add(BlockStat.boostEffect, (int)((speedBoost + speedBoostPhase) * 100f), StatUnit.percent);
} }
@Override
public void drawLight(Tile tile){
renderer.lights.add(tile.drawx(), tile.drawy(), 50f * tile.entity.efficiency(), color, 0.7f * tile.entity.efficiency());
}
@Override @Override
public void update(Tile tile){ public void update(Tile tile){
OverdriveEntity entity = tile.entity(); OverdriveEntity entity = tile.entity();
@@ -132,11 +138,6 @@ public class OverdriveProjector extends Block{
Draw.reset(); Draw.reset();
} }
@Override
public TileEntity newEntity(){
return new OverdriveEntity();
}
class OverdriveEntity extends TileEntity{ class OverdriveEntity extends TileEntity{
float heat; float heat;
float charge = Mathf.random(reload); float charge = Mathf.random(reload);

Some files were not shown because too many files have changed in this diff Show More