Merge branch 'master' into master

This commit is contained in:
Anuken
2019-10-15 19:49:39 -04:00
committed by GitHub
256 changed files with 21933 additions and 15334 deletions

View File

@@ -4,4 +4,4 @@ about: Suggest an idea for this project
--- ---
Do not make a new issue for feature requests. Instead, post it in #545. **Do not make a new issue for feature requests!** Instead, post it in #545.

View File

@@ -6,14 +6,14 @@
A sandbox tower defense game written in Java. 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](http://mindustry.wikia.com/wiki/Mindustry_Wiki)_ _[Wiki](https://mindustrygame.github.io/wiki)_
### Building ### Building
Bleeding-edge live builds are generated automatically for every commit. You can see them [here](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/).
If you'd rather compile on your own, follow these instructions. If you'd rather compile on your own, follow these instructions.
First, make sure you have Java 8 and JDK 8 installed. Open a terminal in the root directory, `cd` to the Mindustry folder and run the following commands: First, make sure you have [Java 8](https://www.java.com/en/download/) and [JDK 8](https://adoptopenjdk.net/) installed. Open a terminal in the root directory, `cd` to the Mindustry folder and run the following commands:
#### Windows #### Windows

View File

@@ -22,20 +22,6 @@ public class Annotations{
public @interface OverrideCallSuper { public @interface OverrideCallSuper {
} }
/** Indicates that a method return or field can be null.*/
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface Nullable{
}
/** Indicates that a method return or field cannot be null.*/
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface NonNull{
}
/** Marks a class as serializable. */ /** Marks a class as serializable. */
@Target(ElementType.TYPE) @Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)

View File

@@ -37,6 +37,7 @@ public class AssetsAnnotationProcessor extends AbstractProcessor{
path = Paths.get(Utils.filer.createResource(StandardLocation.CLASS_OUTPUT, "no", "no") path = Paths.get(Utils.filer.createResource(StandardLocation.CLASS_OUTPUT, "no", "no")
.toUri().toURL().toString().substring(System.getProperty("os.name").contains("Windows") ? 6 : "file:".length())) .toUri().toURL().toString().substring(System.getProperty("os.name").contains("Windows") ? 6 : "file:".length()))
.getParent().getParent().getParent().getParent().getParent().getParent().toString(); .getParent().getParent().getParent().getParent().getParent().getParent().toString();
path = path.replace("%20", " ");
processSounds("Sounds", path + "/assets/sounds", "io.anuke.arc.audio.Sound"); processSounds("Sounds", path + "/assets/sounds", "io.anuke.arc.audio.Sound");
processSounds("Musics", path + "/assets/music", "io.anuke.arc.audio.Music"); processSounds("Musics", path + "/assets/music", "io.anuke.arc.audio.Music");
@@ -139,7 +140,7 @@ public class AssetsAnnotationProcessor extends AbstractProcessor{
loadBegin.addStatement("io.anuke.arc.Core.assets.load("+filename +", "+rtype+".class).loaded = a -> " + name + " = ("+rtype+")a", filepath, filepath.replace(".ogg", ".mp3")); loadBegin.addStatement("io.anuke.arc.Core.assets.load("+filename +", "+rtype+".class).loaded = a -> " + name + " = ("+rtype+")a", filepath, filepath.replace(".ogg", ".mp3"));
dispose.addStatement(name + ".dispose()"); dispose.addStatement("io.anuke.arc.Core.assets.unload(" + filename + ")");
dispose.addStatement(name + " = null"); dispose.addStatement(name + " = null");
type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), name, Modifier.STATIC, Modifier.PUBLIC).initializer("new io.anuke.arc.audio.mock.Mock" + rtype.substring(rtype.lastIndexOf(".") + 1)+ "()").build()); type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), name, Modifier.STATIC, Modifier.PUBLIC).initializer("new io.anuke.arc.audio.mock.Mock" + rtype.substring(rtype.lastIndexOf(".") + 1)+ "()").build());
}); });

View File

@@ -1,32 +1,29 @@
package io.anuke.annotations; package io.anuke.annotations;
import com.sun.source.util.TreePath; import com.sun.source.util.*;
import com.sun.source.util.Trees; import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.*;
import com.sun.tools.javac.tree.JCTree.JCExpressionStatement; import io.anuke.annotations.Annotations.*;
import io.anuke.annotations.Annotations.OverrideCallSuper;
import javax.annotation.processing.*; import javax.annotation.processing.*;
import javax.lang.model.SourceVersion; import javax.lang.model.*;
import javax.lang.model.element.Element; import javax.lang.model.element.*;
import javax.lang.model.element.TypeElement; import javax.tools.Diagnostic.*;
import javax.tools.Diagnostic.Kind; import java.util.*;
import java.util.List;
import java.util.Set;
@SupportedAnnotationTypes("java.lang.Override") @SupportedAnnotationTypes({"java.lang.Override"})
public class CallSuperAnnotationProcessor extends AbstractProcessor{ public class CallSuperAnnotationProcessor extends AbstractProcessor{
private Trees trees; private Trees trees;
@Override @Override
public void init (ProcessingEnvironment pe) { public void init(ProcessingEnvironment pe){
super.init(pe); super.init(pe);
trees = Trees.instance(pe); trees = Trees.instance(pe);
} }
public boolean process (Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){
for (Element e : roundEnv.getElementsAnnotatedWith(Override.class)) { for(Element e : roundEnv.getElementsAnnotatedWith(Override.class)){
if (e.getAnnotation(OverrideCallSuper.class) != null) return false; if(e.getAnnotation(OverrideCallSuper.class) != null) return false;
CodeAnalyzerTreeScanner codeScanner = new CodeAnalyzerTreeScanner(); CodeAnalyzerTreeScanner codeScanner = new CodeAnalyzerTreeScanner();
codeScanner.setMethodName(e.getSimpleName().toString()); codeScanner.setMethodName(e.getSimpleName().toString());
@@ -34,10 +31,10 @@ public class CallSuperAnnotationProcessor extends AbstractProcessor{
TreePath tp = trees.getPath(e.getEnclosingElement()); TreePath tp = trees.getPath(e.getEnclosingElement());
codeScanner.scan(tp, trees); codeScanner.scan(tp, trees);
if (codeScanner.isCallSuperUsed()) { if(codeScanner.isCallSuperUsed()){
List list = codeScanner.getMethod().getBody().getStatements(); List list = codeScanner.getMethod().getBody().getStatements();
if (!doesCallSuper(list, codeScanner.getMethodName())) { if(!doesCallSuper(list, codeScanner.getMethodName())){
processingEnv.getMessager().printMessage(Kind.ERROR, "Overriding method '" + codeScanner.getMethodName() + "' must explicitly call super method from its parent class.", e); processingEnv.getMessager().printMessage(Kind.ERROR, "Overriding method '" + codeScanner.getMethodName() + "' must explicitly call super method from its parent class.", e);
} }
} }
@@ -46,12 +43,12 @@ public class CallSuperAnnotationProcessor extends AbstractProcessor{
return false; return false;
} }
private boolean doesCallSuper (List list, String methodName) { private boolean doesCallSuper(List list, String methodName){
for (Object object : list) { for(Object object : list){
if (object instanceof JCTree.JCExpressionStatement) { if(object instanceof JCTree.JCExpressionStatement){
JCTree.JCExpressionStatement expr = (JCExpressionStatement) object; JCTree.JCExpressionStatement expr = (JCExpressionStatement)object;
String exprString = expr.toString(); String exprString = expr.toString();
if (exprString.startsWith("super." + methodName) && exprString.endsWith(");")) return true; if(exprString.startsWith("super." + methodName) && exprString.endsWith(");")) return true;
} }
} }
@@ -59,7 +56,7 @@ public class CallSuperAnnotationProcessor extends AbstractProcessor{
} }
@Override @Override
public SourceVersion getSupportedSourceVersion () { public SourceVersion getSupportedSourceVersion(){
return SourceVersion.RELEASE_8; return SourceVersion.RELEASE_8;
} }
} }

View File

@@ -152,7 +152,7 @@ project(":desktop"){
compile "com.code-disaster.steamworks4j:steamworks4j-server:$steamworksVersion" compile "com.code-disaster.steamworks4j:steamworks4j-server:$steamworksVersion"
compile arcModule("backends:backend-sdl") compile arcModule("backends:backend-sdl")
compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.2' compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.1'
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -22,6 +22,7 @@ load.map = Maps
load.image = Images load.image = Images
load.content = Content load.content = Content
load.system = System load.system = System
load.mod = Mods
stat.wave = Waves Defeated:[accent] {0} stat.wave = Waves Defeated:[accent] {0}
stat.enemiesDestroyed = Enemies Destroyed:[accent] {0} stat.enemiesDestroyed = Enemies Destroyed:[accent] {0}
@@ -32,6 +33,7 @@ stat.delivered = Resources Launched:
stat.rank = Final Rank: [accent]{0} stat.rank = Final Rank: [accent]{0}
launcheditems = [accent]Launched Items launcheditems = [accent]Launched Items
launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue.
map.delete = Are you sure you want to delete the map "[accent]{0}[]"? map.delete = Are you sure you want to delete the map "[accent]{0}[]"?
level.highscore = High Score: [accent]{0} level.highscore = High Score: [accent]{0}
level.select = Level Select level.select = Level Select
@@ -43,11 +45,11 @@ database = Core Database
savegame = Save Game savegame = Save Game
loadgame = Load Game loadgame = Load Game
joingame = Join Game joingame = Join Game
addplayers = Add/Remove Players
customgame = Custom Game customgame = Custom Game
newgame = New Game newgame = New Game
none = <none> none = <none>
minimap = Minimap minimap = Minimap
position = Position
close = Close close = Close
website = Website website = Website
quit = Quit quit = Quit
@@ -64,6 +66,24 @@ uploadingpreviewfile = Uploading Preview File
committingchanges = Comitting Changes committingchanges = Comitting Changes
done = Done done = Done
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 = Mods
mods.none = [LIGHT_GRAY]No mods found!
mods.guide = Modding Guide
mods.report = Report Bug
mod.enabled = [lightgray]Enabled
mod.disabled = [scarlet]Disabled
mod.disable = Disable
mod.enable = Enable
mod.requiresrestart = The game will now close to apply the mod changes.
mod.reloadrequired = [scarlet]Reload Required
mod.import = Import Mod
mod.import.github = Import Github Mod
mod.remove.confirm = This mod will be deleted.
mod.author = [LIGHT_GRAY]Author:[] {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}
about.button = About about.button = About
name = Name: name = Name:
noname = Pick a[accent] player name[] first. noname = Pick a[accent] player name[] first.
@@ -144,7 +164,6 @@ server.port = Port:
server.addressinuse = Address already in use! server.addressinuse = Address already in use!
server.invalidport = Invalid port number! server.invalidport = Invalid port number!
server.error = [crimson]Error hosting server. server.error = [crimson]Error hosting server.
save.old = This save is for an older version of the game, and can no longer be used.\n\n[lightgray]Save backwards compatibility will be implemented in the full 4.0 release.
save.new = New Save save.new = New Save
save.overwrite = Are you sure you want to overwrite\nthis save slot? save.overwrite = Are you sure you want to overwrite\nthis save slot?
overwrite = Overwrite overwrite = Overwrite
@@ -164,7 +183,7 @@ save.rename.text = New name:
selectslot = Select a save. selectslot = Select a save.
slot = [accent]Slot {0} slot = [accent]Slot {0}
editmessage = Edit Message editmessage = Edit Message
save.corrupted = [accent]Save file corrupted or invalid!\nIf you have just updated your game, this is probably a change in the save format and [scarlet]not[] a bug. save.corrupted = Save file corrupted or invalid!
empty = <empty> empty = <empty>
on = On on = On
off = Off off = Off
@@ -178,6 +197,7 @@ warning = Warning.
confirm = Confirm confirm = Confirm
delete = Delete delete = Delete
view.workshop = View In Workshop view.workshop = View In Workshop
workshop.listing = Edit Workshop Listing
ok = OK ok = OK
open = Open open = Open
customize = Customize Rules customize = Customize Rules
@@ -195,7 +215,11 @@ classic.export.text = [accent]Mindustry[] has just had a major update.\nClassic
quit.confirm = Are you sure you want to quit? quit.confirm = Are you sure you want to quit?
quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial can be re-taken in[accent] Settings->Game->Re-Take Tutorial.[] quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial can be re-taken in[accent] Settings->Game->Re-Take Tutorial.[]
loading = [accent]Loading... loading = [accent]Loading...
reloading = [accent]Reloading Mods...
saving = [accent]Saving... saving = [accent]Saving...
cancelbuilding = [accent][[{0}][] to clear plan
pausebuilding = [accent][[{0}][] to pause building
resumebuilding = [scarlet][[{0}][] to resume building
wave = [accent]Wave {0} wave = [accent]Wave {0}
wave.waiting = [lightgray]Wave in {0} wave.waiting = [lightgray]Wave in {0}
wave.waveInProgress = [lightgray]Wave in progress wave.waveInProgress = [lightgray]Wave in progress
@@ -215,7 +239,12 @@ map.nospawn.pvp = This map does not have any enemy cores for player to spawn int
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor. map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Error loading map: corrupted or invalid map file. map.invalid = Error loading map: corrupted or invalid map file.
map.publish.error = Error publishing map: {0} map.publish.error = Error publishing map: {0}
map.update = Update Map
map.load.error = Error fetching workshop details: {0}
map.missing = This map has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked from the map.
map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up!
map.menu = Select what you would like to do with this map.
map.changelog = Changelog (optional):
eula = Steam EULA eula = Steam EULA
map.publish = Map published. map.publish = Map published.
map.publishing = [accent]Publishing map... map.publishing = [accent]Publishing map...
@@ -351,7 +380,6 @@ campaign = Campaign
load = Load load = Load
save = Save save = Save
fps = FPS: {0} fps = FPS: {0}
tps = TPS: {0}
ping = Ping: {0}ms ping = Ping: {0}ms
language.restart = Please restart your game for the language settings to take effect. language.restart = Please restart your game for the language settings to take effect.
settings = Settings settings = Settings
@@ -363,8 +391,10 @@ mapeditor = Map Editor
abandon = Abandon abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy. abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked locked = Locked
complete = [lightgray]Reach: complete = [lightgray]Complete:
zone.requirement = Wave {0} in zone {1} requirement.wave = Reach Wave {0} in {1}
requirement.core = Destroy Enemy Core in {0}
requirement.unlock = Unlock {0}
resume = Resume Zone:\n[lightgray]{0} resume = Resume Zone:\n[lightgray]{0}
bestwave = [lightgray]Best Wave: {0} bestwave = [lightgray]Best Wave: {0}
launch = < LAUNCH > launch = < LAUNCH >
@@ -375,11 +405,13 @@ launch.confirm = This will launch all resources in your core.\nYou will not be a
launch.skip.confirm = If you skip now, you will not be able to launch until later waves. launch.skip.confirm = If you skip now, you will not be able to launch until later waves.
uncover = Uncover uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [lightgray]Unlock configuring loadout: Wave {0}. bannedblocks = Banned Blocks
addall = Add All
configure.locked = [lightgray]Unlock configuring loadout: {0}.
configure.invalid = Amount must be a number between 0 and {0}. configure.invalid = Amount must be a number between 0 and {0}.
zone.unlocked = [lightgray]{0} unlocked. zone.unlocked = [lightgray]{0} unlocked.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met. zone.requirement.complete = Requirement for {0} completed:[lightgray]\n{1}
zone.config.complete = Wave {0} reached:\nLoadout config unlocked. zone.config.unlocked = Loadout unlocked:[lightgray]\n{0}
zone.resources = [lightgray]Resources Detected: zone.resources = [lightgray]Resources Detected:
zone.objective = [lightgray]Objective: [accent]{0} zone.objective = [lightgray]Objective: [accent]{0}
zone.objective.survival = Survive zone.objective.survival = Survive
@@ -440,12 +472,13 @@ settings.cleardata = Clear Game Data...
settings.clear.confirm = Are you sure you want to clear this data?\nWhat is done cannot be undone! settings.clear.confirm = Are you sure you want to clear this data?\nWhat is done cannot be undone!
settings.clearall.confirm = [scarlet]WARNING![]\nThis will clear all data, including saves, maps, unlocks and keybinds.\nOnce you press 'ok' the game will wipe all data and automatically exit. settings.clearall.confirm = [scarlet]WARNING![]\nThis will clear all data, including saves, maps, unlocks and keybinds.\nOnce you press 'ok' the game will wipe all data and automatically exit.
paused = [accent]< Paused > paused = [accent]< Paused >
clear = Clear
banned = [scarlet]Banned
yes = Yes yes = Yes
no = No no = No
info.title = Info info.title = Info
error.title = [crimson]An error has occured error.title = [crimson]An error has occured
error.crashtitle = An error has occured error.crashtitle = An error has occured
attackpvponly = [scarlet]Only available in Attack/PvP modes
blocks.input = Input blocks.input = Input
blocks.output = Output blocks.output = Output
blocks.booster = Booster blocks.booster = Booster
@@ -530,6 +563,7 @@ category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.linear.name = Linear Filtering setting.linear.name = Linear Filtering
setting.hints.name = Hints
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[lightgray] (requires restart)[] setting.antialias.name = Antialias[lightgray] (requires restart)[]
@@ -557,9 +591,9 @@ 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 setting.fps.name = Show FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Show Power Lasers
setting.pixelate.name = Pixelate[lightgray] (disables animations) setting.pixelate.name = Pixelate[lightgray] (disables animations)
setting.minimap.name = Show Minimap setting.minimap.name = Show Minimap
setting.position.name = Show Player Position
setting.musicvol.name = Music Volume setting.musicvol.name = Music Volume
setting.ambientvol.name = Ambient Volume setting.ambientvol.name = Ambient Volume
setting.mutemusic.name = Mute Music setting.mutemusic.name = Mute Music
@@ -569,7 +603,10 @@ setting.crashreport.name = Send Anonymous Crash Reports
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Auto-Create Saves
setting.publichost.name = Public Game Visibility setting.publichost.name = Public Game Visibility
setting.chatopacity.name = Chat Opacity setting.chatopacity.name = Chat Opacity
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Display Player Bubble Chat setting.playerchat.name = Display Player Bubble Chat
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.
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds... uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds...
uiscale.cancel = Cancel & Exit uiscale.cancel = Cancel & Exit
setting.bloom.name = Bloom setting.bloom.name = Bloom
@@ -583,6 +620,7 @@ command.rally = Rally
command.retreat = Retreat command.retreat = Retreat
keybind.gridMode.name = Block Select keybind.gridMode.name = Block Select
keybind.gridModeShift.name = Category Select keybind.gridModeShift.name = Category Select
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
@@ -599,12 +637,14 @@ keybind.zoom_hold.name = Zoom Hold
keybind.zoom.name = Zoom keybind.zoom.name = Zoom
keybind.menu.name = Menu keybind.menu.name = Menu
keybind.pause.name = Pause keybind.pause.name = Pause
keybind.pause_building.name = Pause/Resume Building
keybind.minimap.name = Minimap keybind.minimap.name = Minimap
keybind.dash.name = Dash 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
keybind.rotate.name = Rotate keybind.rotate.name = Rotate
keybind.rotateplaced.name = Rotate Existing (Hold)
keybind.toggle_menus.name = Toggle menus keybind.toggle_menus.name = Toggle menus
keybind.chat_history_prev.name = Chat history prev keybind.chat_history_prev.name = Chat history prev
keybind.chat_history_next.name = Chat history next keybind.chat_history_next.name = Chat history next
@@ -801,11 +841,12 @@ block.lancer.name = Lancer
block.conveyor.name = Conveyor block.conveyor.name = Conveyor
block.titanium-conveyor.name = Titanium Conveyor block.titanium-conveyor.name = Titanium Conveyor
block.armored-conveyor.name = Armored Conveyor block.armored-conveyor.name = Armored Conveyor
block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyor belts.
block.junction.name = Junction block.junction.name = Junction
block.router.name = Router block.router.name = Router
block.distributor.name = Distributor block.distributor.name = Distributor
block.sorter.name = Sorter block.sorter.name = Sorter
block.inverted-sorter.name = Inverted Sorter
block.message.name = Message block.message.name = Message
block.overflow-gate.name = Overflow Gate block.overflow-gate.name = Overflow Gate
block.silicon-smelter.name = Silicon Smelter block.silicon-smelter.name = Silicon Smelter
@@ -923,11 +964,11 @@ unit.eradicator.name = Eradicator
unit.lich.name = Lich unit.lich.name = Lich
unit.reaper.name = Reaper 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.[]\nBegin by[accent] mining copper[]. 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 [[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.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, and[accent] Hold Ctrl while scrolling[] to zoom in and out. 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.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.\n\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.
tutorial.conveyor.mobile = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent] Place in a line by holding down your finger for a few seconds[] and dragging in a direction.\n\n[accent]Place 2 conveyors with the line tool, then deliver an item into the core. tutorial.conveyor.mobile = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent] Place in a line by holding down your finger for a few seconds[] and dragging in a direction.\n\n[accent]Place 2 conveyors with the line tool, then deliver an item into the core.
tutorial.turret = Once an item enters your core, it can be used for building.\nKeep in mind that not all items can be used for building.\nItems that are not used for building, such as[accent] coal[] or[accent] scrap[], cannot be put into the core.\nDefensive structures must be built to repel the[lightgray] enemy[].\nBuild a[accent] duo turret[] near your base. tutorial.turret = Once an item enters your core, it can be used for building.\nKeep in mind that not all items can be used for building.\nItems that are not used for building, such as[accent] coal[] or[accent] scrap[], cannot be put into the core.\nDefensive structures must be built to repel the[lightgray] enemy[].\nBuild a[accent] duo turret[] near your base.
tutorial.drillturret = Duo turrets require[accent] copper ammo []to shoot.\nPlace a drill near the turret.\nLead conveyors into the turret to supply it with copper.\n\n[accent]Ammo delivered: 0/1 tutorial.drillturret = Duo turrets require[accent] copper ammo []to shoot.\nPlace a drill near the turret.\nLead conveyors into the turret to supply it with copper.\n\n[accent]Ammo delivered: 0/1
@@ -941,7 +982,7 @@ tutorial.withdraw = In some situations, taking items directly from blocks is nec
tutorial.deposit = Deposit items into blocks by dragging from your ship to the destination block.\n\n[accent]Deposit your copper back into the core.[] tutorial.deposit = Deposit items into blocks by dragging from your ship to the destination block.\n\n[accent]Deposit your copper back into the core.[]
tutorial.waves = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves.[accent] Click[] to shoot.\nBuild more turrets and drills. Mine more copper. tutorial.waves = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves.[accent] Click[] to shoot.\nBuild more turrets and drills. Mine more copper.
tutorial.waves.mobile = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves. Your ship will automatically fire at enemies.\nBuild more turrets and drills. Mine more copper. tutorial.waves.mobile = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves. Your ship will automatically fire at enemies.\nBuild more turrets and drills. Mine more copper.
tutorial.launch = Once you reach a specific wave, you are able to[accent] launch the core[], leaving your defenses behind and[accent] obtaining all the resources in your core.[]\nThese resources can then be used to research new technology.\n\n[accent]Press the launch button. tutorial.launch = Once you reach a specific wave, you are able to[accent] launch the core[], leaving your defenses behind and[accent] obtaining all the resources in your core.[]\nThese obtained resources can then be used to research new technology.\n\n[accent]Press the launch button.
item.copper.description = The most basic structural material. Used extensively in all types of blocks. item.copper.description = The most basic structural material. Used extensively in all types of blocks.
item.lead.description = A basic starter material. Used extensively in electronics and liquid transportation blocks. item.lead.description = A basic starter material. Used extensively in electronics and liquid transportation blocks.
@@ -1027,6 +1068,7 @@ block.junction.description = Acts as a bridge for two crossing conveyor belts. U
block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building.
block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles.
block.sorter.description = Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right. block.sorter.description = Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right.
block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead.
block.router.description = Accepts items, then outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets.\n\n[scarlet]Never use next to production inputs, as they will get clogged by output.[] block.router.description = Accepts items, then outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets.\n\n[scarlet]Never use next to production inputs, as they will get clogged by output.[]
block.distributor.description = An advanced router. Splits items to up to 7 other directions equally. block.distributor.description = An advanced router. Splits items to up to 7 other directions equally.
block.overflow-gate.description = A combination splitter and router. Only outputs to the left and right if the front path is blocked. block.overflow-gate.description = A combination splitter and router. Only outputs to the left and right if the front path is blocked.
@@ -1067,7 +1109,7 @@ block.core-foundation.description = The second version of the core. Better armor
block.core-nucleus.description = The third and final iteration of the core capsule. Extremely well armored. Stores massive amounts of resources. block.core-nucleus.description = The third and final iteration of the core capsule. Extremely well armored. Stores massive amounts of resources.
block.vault.description = Stores a large amount of items of each type. An unloader block can be used to retrieve items from the vault. block.vault.description = Stores a large amount of items of each type. An unloader block can be used to retrieve items from the vault.
block.container.description = Stores a small amount of items of each type. An unloader block can be used to retrieve items from the container. block.container.description = Stores a small amount of items of each type. An unloader block can be used to retrieve items from the container.
block.unloader.description = Unloads items from a container, vault or core onto a conveyor or directly into an adjacent block. The type of item to be unloaded can be changed by tapping. block.unloader.description = Unloads items from any nearby non-transportation block. The type of item to be unloaded can be changed by tapping.
block.launch-pad.description = Launches batches of items without any need for a core launch. block.launch-pad.description = Launches batches of items without any need for a core launch.
block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently. block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently.
block.duo.description = A small, cheap turret. Useful against ground units. block.duo.description = A small, cheap turret. Useful against ground units.

View File

@@ -545,7 +545,6 @@ setting.fullscreen.name = Celá obrazovka
setting.borderlesswindow.name = Borderless Window[LIGHT_GRAY] (may require restart) setting.borderlesswindow.name = Borderless Window[LIGHT_GRAY] (may require restart)
setting.fps.name = Ukázat snímky/sekundu setting.fps.name = Ukázat snímky/sekundu
setting.vsync.name = Vertikální synchronizace setting.vsync.name = Vertikální synchronizace
setting.lasers.name = Ukázat laser energie
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance) setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Ukázat minimapu setting.minimap.name = Ukázat minimapu
setting.musicvol.name = Hlasitost hudby setting.musicvol.name = Hlasitost hudby
@@ -557,6 +556,7 @@ setting.crashreport.name = Poslat anonymní spis o zhroucení hry
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Auto-Create Saves
setting.publichost.name = Public Game Visibility setting.publichost.name = Public Game Visibility
setting.chatopacity.name = Chat Opacity setting.chatopacity.name = Chat Opacity
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Display In-Game Chat setting.playerchat.name = Display In-Game Chat
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings... uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings...
uiscale.cancel = Cancel & Exit uiscale.cancel = Cancel & Exit

View File

@@ -545,7 +545,6 @@ setting.fullscreen.name = Vollbild
setting.borderlesswindow.name = Randloses Fenster[LIGHT_GRAY] (Neustart teilweise erforderlich) setting.borderlesswindow.name = Randloses Fenster[LIGHT_GRAY] (Neustart teilweise erforderlich)
setting.fps.name = Zeige FPS setting.fps.name = Zeige FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Zeige Stromlaser
setting.pixelate.name = Verpixeln [LIGHT_GRAY](Könnte die Leistung beeinträchtigen) setting.pixelate.name = Verpixeln [LIGHT_GRAY](Könnte die Leistung beeinträchtigen)
setting.minimap.name = Zeige die Minimap setting.minimap.name = Zeige die Minimap
setting.musicvol.name = Musiklautstärke setting.musicvol.name = Musiklautstärke
@@ -557,6 +556,7 @@ setting.crashreport.name = Anonyme Absturzberichte senden
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Auto-Create Saves
setting.publichost.name = Public Game Visibility setting.publichost.name = Public Game Visibility
setting.chatopacity.name = Chat Deckkraft setting.chatopacity.name = Chat Deckkraft
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Chat im Spiel anzeigen setting.playerchat.name = Chat im Spiel anzeigen
uiscale.reset = UI-Skalierung wurde geändert.\nDrücke "OK", um diese Skalierung zu bestätigen.\n[scarlet]Zurückkehren und Beenden in[accent] {0}[] Einstellungen... uiscale.reset = UI-Skalierung wurde geändert.\nDrücke "OK", um diese Skalierung zu bestätigen.\n[scarlet]Zurückkehren und Beenden in[accent] {0}[] Einstellungen...
uiscale.cancel = Abbrechen & Beenden uiscale.cancel = Abbrechen & Beenden
@@ -645,7 +645,7 @@ item.lead.name = Blei
item.coal.name = Kohle item.coal.name = Kohle
item.graphite.name = Graphit item.graphite.name = Graphit
item.titanium.name = Titan item.titanium.name = Titan
item.thorium.name = Uran item.thorium.name = Thorium
item.silicon.name = Silizium item.silicon.name = Silizium
item.plastanium.name = Plastanium item.plastanium.name = Plastanium
item.phase-fabric.name = Phasengewebe item.phase-fabric.name = Phasengewebe
@@ -784,7 +784,7 @@ block.hail.name = Streuer
block.lancer.name = Lanzer block.lancer.name = Lanzer
block.conveyor.name = Förderband block.conveyor.name = Förderband
block.titanium-conveyor.name = Titan-Förderband block.titanium-conveyor.name = Titan-Förderband
block.armored-conveyor.name = Armored Conveyor block.armored-conveyor.name = Gepanzertes-Förderband
block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors.
block.junction.name = Kreuzung block.junction.name = Kreuzung
block.router.name = Verteiler block.router.name = Verteiler
@@ -864,7 +864,7 @@ block.bridge-conduit.name = Kanalbrücke
block.rotary-pump.name = Rotierende Pumpe block.rotary-pump.name = Rotierende Pumpe
block.thorium-reactor.name = Thorium-Reaktor block.thorium-reactor.name = Thorium-Reaktor
block.mass-driver.name = Massenbeschleuniger block.mass-driver.name = Massenbeschleuniger
block.blast-drill.name = Sprengbohrer block.blast-drill.name = Sprengluftbohrer
block.thermal-pump.name = Thermische Pumpe block.thermal-pump.name = Thermische Pumpe
block.thermal-generator.name = Thermischer Generator block.thermal-generator.name = Thermischer Generator
block.alloy-smelter.name = Legierungsschmelze block.alloy-smelter.name = Legierungsschmelze
@@ -1014,7 +1014,7 @@ block.router.description = Akzeptiert Materialien aus einer Richtung und leitet
block.distributor.description = Ein weiterentwickelter Verteiler, der Materialien in bis zu sieben Richtungen gleichmäßig verteilt. block.distributor.description = Ein weiterentwickelter Verteiler, der Materialien in bis zu sieben Richtungen gleichmäßig verteilt.
block.overflow-gate.description = Ein Verteiler, der nur Materialien nach links oder rechts ausgibt, falls der Weg gerade aus blockiert ist. block.overflow-gate.description = Ein Verteiler, der nur Materialien nach links oder rechts ausgibt, falls der Weg gerade aus blockiert ist.
block.mass-driver.description = Ultimativer Transportblock. Sammelt mehrere Materialien und schießt sie zu einem verbundenen Massenbeschleuniger über eine große Reichweite. block.mass-driver.description = Ultimativer Transportblock. Sammelt mehrere Materialien und schießt sie zu einem verbundenen Massenbeschleuniger über eine große Reichweite.
block.mechanical-pump.description = Eine günstige, langsame Pumpe, die keine Strom benötigt. block.mechanical-pump.description = Eine günstige, langsame Pumpe, die keinen Strom benötigt.
block.rotary-pump.description = Eine fortgeschrittene Pumpe, die mithilfe von Strom doppelt so schnell pumpt. block.rotary-pump.description = Eine fortgeschrittene Pumpe, die mithilfe von Strom doppelt so schnell pumpt.
block.thermal-pump.description = Die ultimative Pumpe, dreimal so schnell wie eine mechanische Pumpe und die einzige Pumpe, die Lava fördern kann. block.thermal-pump.description = Die ultimative Pumpe, dreimal so schnell wie eine mechanische Pumpe und die einzige Pumpe, die Lava fördern kann.
block.conduit.description = Standard Flüssigkeits-Transportblock. Funktioniert wie ein Förderband, nur für Flüssigkeiten. Wird am Besten mit Extraktoren, Pumpen oder anderen Kanälen benutzt. block.conduit.description = Standard Flüssigkeits-Transportblock. Funktioniert wie ein Förderband, nur für Flüssigkeiten. Wird am Besten mit Extraktoren, Pumpen oder anderen Kanälen benutzt.

View File

@@ -16,11 +16,14 @@ screenshot.invalid = Mapa demasiado grande, no hay suficiente memoria para la ca
gameover = Tu núcleo ha sido destruido. gameover = Tu núcleo ha sido destruido.
gameover.pvp = ¡El equipo[accent] {0}[] ha ganado! gameover.pvp = ¡El equipo[accent] {0}[] ha ganado!
highscore = [accent]¡Nueva mejor puntuación! highscore = [accent]¡Nueva mejor puntuación!
load.sound = Sounds
load.map = Maps load.sound = Sonidos
load.image = Images load.map = Mapas
load.content = Content load.image = Imágenes
load.system = System load.content = Contenido
load.system = Sistema
load.mod = Mods
stat.wave = Oleadas Derrotadas:[accent] {0} stat.wave = Oleadas Derrotadas:[accent] {0}
stat.enemiesDestroyed = Enemigos Destruidos:[accent] {0} stat.enemiesDestroyed = Enemigos Destruidos:[accent] {0}
stat.built = Estructuras Construidas:[accent] {0} stat.built = Estructuras Construidas:[accent] {0}
@@ -28,14 +31,16 @@ stat.destroyed = Estructuras Destruidas:[accent] {0}
stat.deconstructed = Estructuras Desconstruidas:[accent] {0} stat.deconstructed = Estructuras Desconstruidas:[accent] {0}
stat.delivered = Recursos Lanzados: stat.delivered = Recursos Lanzados:
stat.rank = Rango final: [accent]{0} stat.rank = Rango final: [accent]{0}
launcheditems = [accent]Recursos Lanzados launcheditems = [accent]Recursos Lanzados
launchinfo = [unlaunched][[LAUNCH] tu núcleo core obtenga los objetos indicados en azul.
map.delete = ¿Estás seguro que quieres borrar el mapa "[accent]{0}[]"? map.delete = ¿Estás seguro que quieres borrar el mapa "[accent]{0}[]"?
level.highscore = Puntuación más alta: [accent]{0} level.highscore = Puntuación más alta: [accent]{0}
level.select = Selección de nivel level.select = Selección de nivel
level.mode = Modo de juego: level.mode = Modo de juego:
showagain = No mostrar otra vez en la próxima sesión showagain = No mostrar otra vez en la próxima sesión
coreattack = < ¡El núcleo está bajo ataque! > coreattack = < ¡El núcleo está bajo ataque! >
nearpoint = [[ [scarlet]ABANDONA EL PUNTO DE APARICIÓN IMNEDIATAMENTE[] ]\naniquilación inminente nearpoint = [[ [scarlet]ABANDONA EL PUNTO DE APARICIÓN INMEDIATAMENTE[] ]\naniquilación inminente
database = Base de datos del núcleo database = Base de datos del núcleo
savegame = Guardar Partida savegame = Guardar Partida
loadgame = Cargar Partida loadgame = Cargar Partida
@@ -48,18 +53,34 @@ minimap = Minimapa
close = Cerrar close = Cerrar
website = Sitio web website = Sitio web
quit = Salir quit = Salir
save.quit = Save & Quit save.quit = Guardar & Salir
maps = Mapas maps = Mapas
maps.browse = Browse Maps maps.browse = Navegar por los Mapas
continue = Continuar continue = Continuar
maps.none = [LIGHT_GRAY]¡No se han encontrado mapas! maps.none = [LIGHT_GRAY]¡No se han encontrado mapas!
invalid = Invalid invalid = Invalido
preparingconfig = Preparing Config preparingconfig = Preparing Config
preparingcontent = Preparing Content preparingcontent = Preparing Content
uploadingcontent = Uploading Content uploadingcontent = Uploading Content
uploadingpreviewfile = Uploading Preview File uploadingpreviewfile = Uploading Preview File
committingchanges = Comitting Changes committingchanges = Comitting Changes
done = Done done = Hecho
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 = Mods
mods.none = [LIGHT_GRAY]No mods found!
mod.enabled = [lightgray]Enabled
mod.disabled = [scarlet]Disabled
mod.disable = Disable
mod.enable = Enable
mod.requiresrestart = The game will now close to apply the mod changes.
mod.reloadrequired = [scarlet]Reload Required
mod.import = Import Mod
mod.remove.confirm = This mod will be deleted.
mod.author = [LIGHT_GRAY]Author:[] {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}
about.button = Acerca de about.button = Acerca de
name = Nombre: name = Nombre:
noname = Elige un[accent] nombre de jugador[] primero. noname = Elige un[accent] nombre de jugador[] primero.
@@ -92,9 +113,9 @@ server.versions = Your version:[accent] {0}[]\nVersión del servidor:[accent] {1
host.info = El botón [accent]host[] hostea un servidor en el puerto [scarlet]6567[]. \nCualquier persona en la misma [LIGHT_GRAY]wifi o red local[] debería poder ver tu servidor en la lista de servidores.\n\nSi quieres que cualquier persona se pueda conectar de cualquier lugar por IP, la [accent]asignación de puertos[] es requerida.\n\n[LIGHT_GRAY]Nota: Si alguien experimenta problemas conectándose a tu partida LAN, asegúrate de permitir a Mindustry acceso a tu red local mediante la configuración de tu firewall. host.info = El botón [accent]host[] hostea un servidor en el puerto [scarlet]6567[]. \nCualquier persona en la misma [LIGHT_GRAY]wifi o red local[] debería poder ver tu servidor en la lista de servidores.\n\nSi quieres que cualquier persona se pueda conectar de cualquier lugar por IP, la [accent]asignación de puertos[] es requerida.\n\n[LIGHT_GRAY]Nota: Si alguien experimenta problemas conectándose a tu partida LAN, asegúrate de permitir a Mindustry acceso a tu red local mediante la configuración de tu firewall.
join.info = Aquí, puedes escribir la [accent]IP de un server[] para conectarte, o descubrir servidores de [accent]red local[] para conectarte.\nLAN y WAN es soportado para jugar en multijugador.\n\n[LIGHT_GRAY]Nota: No hay una lista automática global de servidores; si quieres conectarte por IP, tendrás que preguntarle al anfitrión por la IP. join.info = Aquí, puedes escribir la [accent]IP de un server[] para conectarte, o descubrir servidores de [accent]red local[] para conectarte.\nLAN y WAN es soportado para jugar en multijugador.\n\n[LIGHT_GRAY]Nota: No hay una lista automática global de servidores; si quieres conectarte por IP, tendrás que preguntarle al anfitrión por la IP.
hostserver = Hostear Servidor hostserver = Hostear Servidor
invitefriends = Invite Friends invitefriends = Invitar Amigos
hostserver.mobile = Hostear\nJuego hostserver.mobile = Hostear\nJuego
host = Hostear host = Servidor
hosting = [accent]Abriendo servidor... hosting = [accent]Abriendo servidor...
hosts.refresh = Actualizar hosts.refresh = Actualizar
hosts.discovering = Descubrir partidas LAN hosts.discovering = Descubrir partidas LAN
@@ -129,11 +150,11 @@ confirmunadmin = ¿Estás seguro de querer quitar los permisos de administrador
joingame.title = Unirse a la partida joingame.title = Unirse a la partida
joingame.ip = IP: joingame.ip = IP:
disconnect = Desconectado. disconnect = Desconectado.
disconnect.error = Connection error. disconnect.error = Error en la conexión.
disconnect.closed = Connection closed. disconnect.closed = Conexión cerrada.
disconnect.timeout = Timed out. disconnect.timeout = Timed out.
disconnect.data = ¡Se ha fallado la carga de datos del mundo! disconnect.data = ¡Se ha fallado la carga de datos del mundo!
cantconnect = Unable to join game ([accent]{0}[]). cantconnect = No es posible unirse a la partida ([accent]{0}[]).
connecting = [accent]Conectando... connecting = [accent]Conectando...
connecting.data = [accent]Cargando datos del mundo... connecting.data = [accent]Cargando datos del mundo...
server.port = Puerto: server.port = Puerto:
@@ -159,7 +180,7 @@ save.rename = Renombrar
save.rename.text = Nuevo nombre: save.rename.text = Nuevo nombre:
selectslot = Selecciona un Punto de Guardado. selectslot = Selecciona un Punto de Guardado.
slot = [accent]Casilla {0} slot = [accent]Casilla {0}
editmessage = Edit Message editmessage = Editar mensaje
save.corrupted = [accent]¡El punto de guardado está corrupto o es inválido!\nSi acabas de actualizar el juego, esto debe ser probablemente un cambio en el formato de guardado y[scarlet] no[] un error. save.corrupted = [accent]¡El punto de guardado está corrupto o es inválido!\nSi acabas de actualizar el juego, esto debe ser probablemente un cambio en el formato de guardado y[scarlet] no[] un error.
empty = <vacío> empty = <vacío>
on = Encendido on = Encendido
@@ -167,13 +188,14 @@ off = Apagado
save.autosave = Autoguardado: {0} save.autosave = Autoguardado: {0}
save.map = Mapa: {0} save.map = Mapa: {0}
save.wave = Oleada {0} save.wave = Oleada {0}
save.mode = Gamemode: {0} save.mode = ModoJuego: {0}
save.date = Última vez guardado: {0} save.date = Última vez guardado: {0}
save.playtime = Tiempo de juego: {0} save.playtime = Tiempo de juego: {0}
warning = Aviso. warning = Aviso.
confirm = Confirmar confirm = Confirmar
delete = Borrar delete = Borrar
view.workshop = View In Workshop view.workshop = View In Workshop
workshop.listing = Edit Workshop Listing
ok = OK ok = OK
open = Abrir open = Abrir
customize = Personalizar customize = Personalizar
@@ -181,9 +203,9 @@ cancel = Cancelar
openlink = Abrir Enlace openlink = Abrir Enlace
copylink = Copiar Enlace copylink = Copiar Enlace
back = Atrás back = Atrás
data.export = Export Data data.export = Exportar Datos
data.import = Import Data data.import = Importar Datos
data.exported = Data exported. data.exported = Datos exportados.
data.invalid = This isn't valid game data. data.invalid = This isn't valid game data.
data.import.confirm = Importing external data will erase[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. data.import.confirm = Importing external data will erase[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately.
classic.export = Export Classic Data classic.export = Export Classic Data
@@ -191,6 +213,7 @@ classic.export.text = [accent]Mindustry[] has just had a major update.\nClassic
quit.confirm = ¿Estás seguro de querer salir de la partida? quit.confirm = ¿Estás seguro de querer salir de la partida?
quit.confirm.tutorial = ¿Estás seguro de que sabes qué estas haciendo?\nSe puede hacer el tutorial de nuevo in[accent] Ajustes->Juego->Volver a hacer tutorial.[] quit.confirm.tutorial = ¿Estás seguro de que sabes qué estas haciendo?\nSe puede hacer el tutorial de nuevo in[accent] Ajustes->Juego->Volver a hacer tutorial.[]
loading = [accent]Cargando... loading = [accent]Cargando...
reloading = [accent]Reloading Mods...
saving = [accent]Guardando... saving = [accent]Guardando...
wave = [accent]Oleada {0} wave = [accent]Oleada {0}
wave.waiting = Oleada en {0} wave.waiting = Oleada en {0}
@@ -211,10 +234,15 @@ map.nospawn.pvp = ¡Este mapa no tiene ningún núcleo enemigo para que aparezca
map.nospawn.attack = ¡Este mapa no tiene núcleos para que el jugador ataque! Añade núcleos[SCARLET] red[] a este mapa en el editor. map.nospawn.attack = ¡Este mapa no tiene núcleos para que el jugador ataque! Añade núcleos[SCARLET] red[] a este mapa en el editor.
map.invalid = Error cargando el mapa: archivo corrupto o inválido. map.invalid = Error cargando el mapa: archivo corrupto o inválido.
map.publish.error = Error publishing map: {0} map.publish.error = Error publishing map: {0}
map.update = Actualizar Mapa
map.load.error = Error fetching workshop details: {0}
map.missing = This map has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked from the map.
map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up!
map.menu = Select what you would like to do with this map.
map.changelog = Lista de cambios (opcional):
eula = Steam EULA eula = Steam EULA
map.publish = Map published. map.publish = Mapa publicado.
map.publishing = [accent]Publishing map... map.publishing = [accent]Publicando Mapa...
editor.brush = Pincel editor.brush = Pincel
editor.openin = Abrir en el Editor editor.openin = Abrir en el Editor
editor.oregen = Generación de Minerales editor.oregen = Generación de Minerales
@@ -246,7 +274,7 @@ waves.invalid = Oleadas inválidaas en el portapapeles.
waves.copied = Oleadas copiadas. waves.copied = Oleadas copiadas.
waves.none = No hay enemigos definidos.\nNótese que las listas de oleadas vacías se sustituirán por la lista por defecto. waves.none = No hay enemigos definidos.\nNótese que las listas de oleadas vacías se sustituirán por la lista por defecto.
editor.default = [LIGHT_GRAY]<Por defecto> editor.default = [LIGHT_GRAY]<Por defecto>
details = Details... details = Detalles...
edit = Editar... edit = Editar...
editor.name = Nombre: editor.name = Nombre:
editor.spawn = Spawn Unit editor.spawn = Spawn Unit
@@ -256,7 +284,7 @@ editor.errorload = Error cargando el archivo:\n[accent]{0}
editor.errorsave = Error guardando el archivo:\n[accent]{0} editor.errorsave = Error guardando el archivo:\n[accent]{0}
editor.errorimage = Eso es una imagen, no un mapa. No cambies las extensiones del archivo esperando que funcione.\nSi quieres importar un mapa viejo, usa el botón de 'import legacy map' en el editor. editor.errorimage = Eso es una imagen, no un mapa. No cambies las extensiones del archivo esperando que funcione.\nSi quieres importar un mapa viejo, usa el botón de 'import legacy map' en el editor.
editor.errorlegacy = Este mapa es demasiado viejo y usa un formato de mapa que ya no es soportado. editor.errorlegacy = Este mapa es demasiado viejo y usa un formato de mapa que ya no es soportado.
editor.errornot = This is not a map file. editor.errornot = Esto no es un fichero de mapa.
editor.errorheader = Este mapa es inválido o está corrupto. editor.errorheader = Este mapa es inválido o está corrupto.
editor.errorname = El mapa no tiene un nombre definido. editor.errorname = El mapa no tiene un nombre definido.
editor.update = Actualizar editor.update = Actualizar
@@ -291,6 +319,7 @@ editor.overwrite = [accent]¡Advertencia!\nEsto sobrescribe un mapa ya existente
editor.overwrite.confirm = [scarlet]¡Advertencia![] Un mapa con ese nombre ya existe. ¿Estás seguro de querer sobrescribirlo? editor.overwrite.confirm = [scarlet]¡Advertencia![] Un mapa con ese nombre ya existe. ¿Estás seguro de querer sobrescribirlo?
editor.exists = A map with this name already exists. editor.exists = A map with this name already exists.
editor.selectmap = Selecciona un mapa para cargar: editor.selectmap = Selecciona un mapa para cargar:
toolmode.replace = Sustituir toolmode.replace = Sustituir
toolmode.replace.description = Solo dibuja en bloques sólidos. toolmode.replace.description = Solo dibuja en bloques sólidos.
toolmode.replaceall = Sustituir Todo toolmode.replaceall = Sustituir Todo
@@ -305,6 +334,7 @@ toolmode.fillteams = Llenar Equipos
toolmode.fillteams.description = Llena equipos en vez de bloques. toolmode.fillteams.description = Llena equipos en vez de bloques.
toolmode.drawteams = Dibujar Equipos toolmode.drawteams = Dibujar Equipos
toolmode.drawteams.description = Dibuja equipos en vez de bloques. toolmode.drawteams.description = Dibuja equipos en vez de bloques.
filters.empty = [LIGHT_GRAY]¡No hay filtros! Añade uno con el botón de abajo. filters.empty = [LIGHT_GRAY]¡No hay filtros! Añade uno con el botón de abajo.
filter.distort = Distorsionar filter.distort = Distorsionar
filter.noise = Ruido filter.noise = Ruido
@@ -336,6 +366,7 @@ filter.option.floor2 = Secondary Floor
filter.option.threshold2 = Secondary Threshold filter.option.threshold2 = Secondary Threshold
filter.option.radius = Radio filter.option.radius = Radio
filter.option.percentile = Porcentaje filter.option.percentile = Porcentaje
width = Ancho: width = Ancho:
height = Alto: height = Alto:
menu = Menú menu = Menú
@@ -353,6 +384,7 @@ tutorial.retake = Volver a hacer tutorial
editor = Editor editor = Editor
mapeditor = Editor de Mapa mapeditor = Editor de Mapa
donate = Donar donate = Donar
abandon = Abandonar abandon = Abandonar
abandon.text = Esta zona y sus recursos se perderán ante el enemigo. abandon.text = Esta zona y sus recursos se perderán ante el enemigo.
locked = Bloqueado locked = Bloqueado
@@ -369,7 +401,7 @@ launch.skip.confirm = Si saltas la oleada ahora, no podrás lanzar recursos hast
uncover = Descubrir uncover = Descubrir
configure = Configurar carga inicial configure = Configurar carga inicial
configure.locked = [LIGHT_GRAY]Alcanza la oleada {0}\npara configurar la carga inicial. configure.locked = [LIGHT_GRAY]Alcanza la oleada {0}\npara configurar la carga inicial.
configure.invalid = Amount must be a number between 0 and {0}. configure.invalid = La cantidad debe estar entre 0 y {0}.
zone.unlocked = [LIGHT_GRAY]{0} desbloqueado. zone.unlocked = [LIGHT_GRAY]{0} desbloqueado.
zone.requirement.complete = Oleada {0} alcanzada:\nrequerimientos de la zona {1} cumplidos. zone.requirement.complete = Oleada {0} alcanzada:\nrequerimientos de la zona {1} cumplidos.
zone.config.complete = Oleada {0} alcanzada:\nconfiguración de carga inicial desbloqueada. zone.config.complete = Oleada {0} alcanzada:\nconfiguración de carga inicial desbloqueada.
@@ -379,6 +411,7 @@ zone.objective.survival = Sobrevivir
zone.objective.attack = Destruir Núcleo Enemigo zone.objective.attack = Destruir Núcleo Enemigo
add = Añadir... add = Añadir...
boss.health = Salud del Jefe boss.health = Salud del Jefe
connectfail = [crimson]Ha fallado la conexión con el servidor: [accent]{0} connectfail = [crimson]Ha fallado la conexión con el servidor: [accent]{0}
error.unreachable = Servidor inaccesible. error.unreachable = Servidor inaccesible.
error.invalidaddress = Dirección inválida. error.invalidaddress = Dirección inválida.
@@ -389,6 +422,7 @@ error.mapnotfound = ¡Archivo de mapa no encontrado!
error.io = Error I/O de conexión. error.io = Error I/O de conexión.
error.any = Error de red desconocido. error.any = Error de red desconocido.
error.bloom = Failed to initialize bloom.\nYour device may not support it. error.bloom = Failed to initialize bloom.\nYour device may not support it.
zone.groundZero.name = Terreno Cero zone.groundZero.name = Terreno Cero
zone.desertWastes.name = Ruinas del Desierto zone.desertWastes.name = Ruinas del Desierto
zone.craters.name = Los Cráteres zone.craters.name = Los Cráteres
@@ -403,6 +437,7 @@ zone.saltFlats.name = Salinas
zone.impact0078.name = Impacto 0078 zone.impact0078.name = Impacto 0078
zone.crags.name = Riscos zone.crags.name = Riscos
zone.fungalPass.name = Fungal Pass zone.fungalPass.name = Fungal Pass
zone.groundZero.description = La zona óptima para empear una vez más. Riesgo bajo de los enemigos. Pocos recursos.\nConsigue tanto plomo y cobre como puedas.\nSigue avanzando. zone.groundZero.description = La zona óptima para empear una vez más. Riesgo bajo de los enemigos. Pocos recursos.\nConsigue tanto plomo y cobre como puedas.\nSigue avanzando.
zone.frozenForest.description = Incluso aquí, cerca de las montañas, las esporas se han expandido. Las temperaturas gélidas no pueden contenerlas para siempre.\n\nEmpieza a investigar sobre energía. Cnstruye generadores de combustión. Aprende a usar reparadores. zone.frozenForest.description = Incluso aquí, cerca de las montañas, las esporas se han expandido. Las temperaturas gélidas no pueden contenerlas para siempre.\n\nEmpieza a investigar sobre energía. Cnstruye generadores de combustión. Aprende a usar reparadores.
zone.desertWastes.description = Estas ruinas son vastas, impredecibles y entrecruzadas con sectores de estructuras abandonadas.\nHay carbñon presente en la región. Quémalo para energía, o sintetiza grafito.\n\n[lightgray]La zona de aparición no puede ser garantizada. zone.desertWastes.description = Estas ruinas son vastas, impredecibles y entrecruzadas con sectores de estructuras abandonadas.\nHay carbñon presente en la región. Quémalo para energía, o sintetiza grafito.\n\n[lightgray]La zona de aparición no puede ser garantizada.
@@ -415,10 +450,11 @@ zone.tarFields.description = Las afueras de una zona de producción de petróleo
zone.desolateRift.description = Una zona extremadamente peligrosa. Tiene muchos recursos pero poco espacio. Riesgo alto de destrucción. Abandona lo antes posible. No te dejes engañar por la gran separación de tiempo entre oleadas enemigas. zone.desolateRift.description = Una zona extremadamente peligrosa. Tiene muchos recursos pero poco espacio. Riesgo alto de destrucción. Abandona lo antes posible. No te dejes engañar por la gran separación de tiempo entre oleadas enemigas.
zone.nuclearComplex.description = Una antigua facilidad para la producción y el procesamiento del torio reducido a ruinas.\n[lightgray]Investiga el torio y sus diversos usos.\n\nEl enemigo está presente en números grandes, constantemente buscando atacantes. zone.nuclearComplex.description = Una antigua facilidad para la producción y el procesamiento del torio reducido a ruinas.\n[lightgray]Investiga el torio y sus diversos usos.\n\nEl enemigo está presente en números grandes, constantemente buscando atacantes.
zone.fungalPass.description = Una zona transitoria entre alta montaña y zonas más bajas con esporas. Una base enemiga pequeña de reconocimiento se ubica aquí.\nDestrúyela.nUsa Dagas y Orugas. Destruye los dos núcleos. zone.fungalPass.description = Una zona transitoria entre alta montaña y zonas más bajas con esporas. Una base enemiga pequeña de reconocimiento se ubica aquí.\nDestrúyela.nUsa Dagas y Orugas. Destruye los dos núcleos.
zone.impact0078.description = <insert description here> zone.impact0078.description = <insertar descripción aquí>
zone.crags.description = <insert description here> zone.crags.description = <insertar descripción aquí>
settings.language = Idioma settings.language = Idioma
settings.data = Game Data settings.data = Datos del Juego
settings.reset = Reiniciar por los de defecto settings.reset = Reiniciar por los de defecto
settings.rebind = Reasignar settings.rebind = Reasignar
settings.controls = Controles settings.controls = Controles
@@ -427,10 +463,8 @@ settings.sound = Sonido
settings.graphics = Gráficos settings.graphics = Gráficos
settings.cleardata = Limpiar Datos del Juego... settings.cleardata = Limpiar Datos del Juego...
settings.clear.confirm = ¿Estas seguro de querer limpiar estos datos?\n¡Esta acción no puede deshacerse! settings.clear.confirm = ¿Estas seguro de querer limpiar estos datos?\n¡Esta acción no puede deshacerse!
settings.clearall.confirm = [scarlet]ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y keybinds.\nUna vez presiones 'ok', el juego va a borrrar todos tus datos y saldrá del juego automáticamente. settings.clearall.confirm = [scarlet]ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y atajos de teclado.\nUna vez presiones 'ok', el juego va a borrrar todos tus datos y saldrá del juego automáticamente.
settings.clearunlocks = Eliminar Desbloqueos paused = [accent] < Pausado >
settings.clearall = Eliminar Todo
paused = Pausado
yes = yes =
no = No no = No
info.title = [accent]Información info.title = [accent]Información
@@ -466,25 +500,27 @@ blocks.boosteffect = Efecto del Potenciador
blocks.maxunits = Máximo de Unidades Activas blocks.maxunits = Máximo de Unidades Activas
blocks.health = Vida blocks.health = Vida
blocks.buildtime = Tiempo de construcción blocks.buildtime = Tiempo de construcción
blocks.buildcost = Build Cost blocks.buildcost = Coste de construcción
blocks.inaccuracy = Imprecisión blocks.inaccuracy = Imprecisión
blocks.shots = Disparos blocks.shots = Disparos
blocks.reload = Recarga blocks.reload = Recarga
blocks.ammo = Munición blocks.ammo = Munición
bar.drilltierreq = Se requiere un mejor taladro. bar.drilltierreq = Se requiere un mejor taladro.
bar.drillspeed = Velocidad del Taladro: {0}/s bar.drillspeed = Velocidad del Taladro: {0}/s
bar.efficiency = Eficiencia: {0}% bar.efficiency = Eficiencia: {0}%
bar.powerbalance = Energía: {0} bar.powerbalance = Energía: {0}
bar.powerstored = Stored: {0}/{1} bar.powerstored = Almacenados: {0}/{1}
bar.poweramount = Energía: {0} bar.poweramount = Energía: {0}
bar.poweroutput = Salida de Energía: {0} bar.poweroutput = Salida de Energía: {0}
bar.items = Items: {0} bar.items = Objetos: {0}
bar.capacity = Capacity: {0} bar.capacity = Capacidad: {0}
bar.liquid = Líquido bar.liquid = Líquido
bar.heat = Calor bar.heat = Calor
bar.power = Energía bar.power = Energía
bar.progress = Progreso de construcción bar.progress = Progreso de construcción
bar.spawned = Unidades: {0}/{1} bar.spawned = Unidades: {0}/{1}
bullet.damage = [stat]{0}[lightgray] daño bullet.damage = [stat]{0}[lightgray] daño
bullet.splashdamage = [stat]{0}[lightgray] daño de área ~[stat] {1}[lightgray] casillas bullet.splashdamage = [stat]{0}[lightgray] daño de área ~[stat] {1}[lightgray] casillas
bullet.incendiary = [stat]incendiaria bullet.incendiary = [stat]incendiaria
@@ -496,6 +532,7 @@ bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munición bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munición
bullet.reload = [stat]{0}[lightgray]x recarga bullet.reload = [stat]{0}[lightgray]x recarga
unit.blocks = bloques unit.blocks = bloques
unit.powersecond = unidades de energía/segundo unit.powersecond = unidades de energía/segundo
unit.liquidsecond = unidades de líquido/segundo unit.liquidsecond = unidades de líquido/segundo
@@ -504,7 +541,7 @@ unit.liquidunits = unidades de líquido
unit.powerunits = unidades de energía unit.powerunits = unidades de energía
unit.degrees = grados unit.degrees = grados
unit.seconds = segundos unit.seconds = segundos
unit.persecond = /sec unit.persecond = /seg
unit.timesspeed = x velocidad unit.timesspeed = x velocidad
unit.percent = % unit.percent = %
unit.items = objetos unit.items = objetos
@@ -520,7 +557,7 @@ setting.shadows.name = Sombras
setting.linear.name = Linear Filtering setting.linear.name = Linear Filtering
setting.animatedwater.name = Agua Animada setting.animatedwater.name = Agua Animada
setting.animatedshields.name = Escudos Animados setting.animatedshields.name = Escudos Animados
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (necesita reiniciar)[]
setting.indicators.name = Indicadores de Aliados setting.indicators.name = Indicadores de Aliados
setting.autotarget.name = Auto apuntado setting.autotarget.name = Auto apuntado
setting.keyboard.name = Controles de Ratón+Teclado setting.keyboard.name = Controles de Ratón+Teclado
@@ -528,7 +565,7 @@ setting.touchscreen.name = Touchscreen Controls
setting.fpscap.name = Máx FPS setting.fpscap.name = Máx FPS
setting.fpscap.none = Nada setting.fpscap.none = Nada
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.uiscale.name = Escala de IU[lightgray] (necesita reinicio)[] setting.uiscale.name = Escala de IU[lightgray] (necesita reiniciar)[]
setting.swapdiagonal.name = Siempre Colocar Diagonalmente setting.swapdiagonal.name = Siempre Colocar Diagonalmente
setting.difficulty.training = entrenamiento setting.difficulty.training = entrenamiento
setting.difficulty.easy = fácil setting.difficulty.easy = fácil
@@ -544,7 +581,7 @@ setting.seconds = {0} Segundos
setting.fullscreen.name = Pantalla Completa setting.fullscreen.name = Pantalla Completa
setting.borderlesswindow.name = Ventana sin Bordes[LIGHT_GRAY] (podría requerir un reinicio) setting.borderlesswindow.name = Ventana sin Bordes[LIGHT_GRAY] (podría requerir un reinicio)
setting.fps.name = Mostrar FPS setting.fps.name = Mostrar FPS
setting.vsync.name = VSync setting.vsync.name = SincV
setting.lasers.name = Mostrar Energía de los Láseres setting.lasers.name = Mostrar Energía de los Láseres
setting.pixelate.name = Pixelar [LIGHT_GRAY](podría reducir el rendimiento) setting.pixelate.name = Pixelar [LIGHT_GRAY](podría reducir el rendimiento)
setting.minimap.name = Mostrar Minimapa setting.minimap.name = Mostrar Minimapa
@@ -557,11 +594,13 @@ setting.crashreport.name = Enviar informes de fallos anónimos
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Auto-Create Saves
setting.publichost.name = Public Game Visibility setting.publichost.name = Public Game Visibility
setting.chatopacity.name = Opacidad del Chat setting.chatopacity.name = Opacidad del Chat
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Display In-Game Chat setting.playerchat.name = Display In-Game Chat
public.confirm = Do you want to make your game public?\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility.
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds... uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds...
uiscale.cancel = Cancel & Exit uiscale.cancel = Cancelar & Salir
setting.bloom.name = Bloom setting.bloom.name = Bloom
keybind.title = Rebind Keys keybind.title = Cambiar accesos de teclado
keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported.
category.general.name = General category.general.name = General
category.view.name = Visión category.view.name = Visión
@@ -576,7 +615,7 @@ keybind.press.axis = Pulsa un eje o botón...
keybind.screenshot.name = Captura de pantalla de Mapa keybind.screenshot.name = Captura de pantalla de Mapa
keybind.move_x.name = Mover x keybind.move_x.name = Mover x
keybind.move_y.name = Mover y keybind.move_y.name = Mover y
keybind.fullscreen.name = Toggle Fullscreen keybind.fullscreen.name = Intercambiar con Pantalla Completa
keybind.select.name = Seleccionar keybind.select.name = Seleccionar
keybind.diagonal_placement.name = Construcción Diagonal keybind.diagonal_placement.name = Construcción Diagonal
keybind.pick.name = Pick Block keybind.pick.name = Pick Block
@@ -593,6 +632,7 @@ keybind.chat.name = Chat
keybind.player_list.name = Lista de jugadores keybind.player_list.name = Lista de jugadores
keybind.console.name = Consola keybind.console.name = Consola
keybind.rotate.name = Rotar keybind.rotate.name = Rotar
keybind.rotateplaced.name = Rotate Existing (Hold)
keybind.toggle_menus.name = Alternar menús keybind.toggle_menus.name = Alternar menús
keybind.chat_history_prev.name = Historial de chat anterior keybind.chat_history_prev.name = Historial de chat anterior
keybind.chat_history_next.name = Historial de chat siguiente keybind.chat_history_next.name = Historial de chat siguiente
@@ -604,11 +644,13 @@ mode.survival.name = Supervivencia
mode.survival.description = El modo normal. Recursos limitados y oleadas automáticas. mode.survival.description = El modo normal. Recursos limitados y oleadas automáticas.
mode.sandbox.name = Sandbox mode.sandbox.name = Sandbox
mode.sandbox.description = Recursos ilimitados y sin temporizador para las oleadas. mode.sandbox.description = Recursos ilimitados y sin temporizador para las oleadas.
mode.editor.name = Editor
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = Pelea contra otros jugadores localmente. mode.pvp.description = Pelea contra otros jugadores localmente.
mode.attack.name = Attack mode.attack.name = Ataque
mode.attack.description = No hay oleadas, el objetivo es destruir la base enemiga. mode.attack.description = No hay oleadas, el objetivo es destruir la base enemiga.
mode.custom = Normas personalizadas mode.custom = Normas personalizadas
rules.infiniteresources = Recursos Infinitos rules.infiniteresources = Recursos Infinitos
rules.wavetimer = Temportzador de Oleadas rules.wavetimer = Temportzador de Oleadas
rules.waves = Oleadas rules.waves = Oleadas
@@ -635,6 +677,7 @@ rules.title.resourcesbuilding = Recursos y Construcción
rules.title.player = Jugadores rules.title.player = Jugadores
rules.title.enemy = Enemigos rules.title.enemy = Enemigos
rules.title.unit = Unidades rules.title.unit = Unidades
content.item.name = Objetos content.item.name = Objetos
content.liquid.name = Líquidos content.liquid.name = Líquidos
content.unit.name = Unidades content.unit.name = Unidades
@@ -646,7 +689,7 @@ item.coal.name = Carbón
item.graphite.name = Grafito item.graphite.name = Grafito
item.titanium.name = Titanio item.titanium.name = Titanio
item.thorium.name = Torio item.thorium.name = Torio
item.silicon.name = Silicona item.silicon.name = Silicio
item.plastanium.name = Plastanio item.plastanium.name = Plastanio
item.phase-fabric.name = Tejido de fase item.phase-fabric.name = Tejido de fase
item.surge-alloy.name = Aleación Eléctrica item.surge-alloy.name = Aleación Eléctrica
@@ -657,7 +700,7 @@ item.pyratite.name = Pirotita
item.metaglass.name = Metacristal item.metaglass.name = Metacristal
item.scrap.name = Chatarra item.scrap.name = Chatarra
liquid.water.name = Agua liquid.water.name = Agua
liquid.slag.name = Slag liquid.slag.name = Escoria
liquid.oil.name = Petróleo liquid.oil.name = Petróleo
liquid.cryofluid.name = Criogénico liquid.cryofluid.name = Criogénico
mech.alpha-mech.name = Alpha mech.alpha-mech.name = Alpha
@@ -696,6 +739,7 @@ mech.buildspeed = [LIGHT_GRAY]Velocidad de Construcción: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacidad Térmica: {0} liquid.heatcapacity = [LIGHT_GRAY]Capacidad Térmica: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosidad: {0} liquid.viscosity = [LIGHT_GRAY]Viscosidad: {0}
liquid.temperature = [LIGHT_GRAY]Temperatura: {0} liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
block.sand-boulder.name = Piedra de Arena block.sand-boulder.name = Piedra de Arena
block.grass.name = Hierba block.grass.name = Hierba
block.salt.name = Sal block.salt.name = Sal
@@ -792,7 +836,7 @@ block.distributor.name = Distribuidor
block.sorter.name = Clasificador block.sorter.name = Clasificador
block.message.name = Message block.message.name = Message
block.overflow-gate.name = Compuerta de Desborde block.overflow-gate.name = Compuerta de Desborde
block.silicon-smelter.name = Horno para Silicona block.silicon-smelter.name = Horno para Silicio
block.phase-weaver.name = Tejedor de Fase block.phase-weaver.name = Tejedor de Fase
block.pulverizer.name = Pulverizador block.pulverizer.name = Pulverizador
block.cryofluidmixer.name = Mezclador de Criogénicos block.cryofluidmixer.name = Mezclador de Criogénicos
@@ -885,8 +929,8 @@ block.container.name = Contenedor
block.launch-pad.name = Pad de Lanzamiento block.launch-pad.name = Pad de Lanzamiento
block.launch-pad-large.name = Pad de Lanzammiento Grande block.launch-pad-large.name = Pad de Lanzammiento Grande
team.blue.name = Azul team.blue.name = Azul
team.crux.name = red team.crux.name = rojo
team.sharded.name = orange team.sharded.name = naranja
team.orange.name = Naranja team.orange.name = Naranja
team.derelict.name = derelict team.derelict.name = derelict
team.green.name = Verde team.green.name = Verde
@@ -926,6 +970,7 @@ tutorial.deposit = Deposita recursos en bloques arrastrándolos de tu nave al bl
tutorial.waves = El[LIGHT_GRAY] enemigo[] se acerca.\n\nDefiende tu núcleo por 2 oleadas. Construye más torretas y taladros. Mina más cobre. tutorial.waves = El[LIGHT_GRAY] enemigo[] se acerca.\n\nDefiende tu núcleo por 2 oleadas. Construye más torretas y taladros. Mina más cobre.
tutorial.waves.mobile = El[lightgray] enemigo[] se acerca.\n\nDefiende tu núcleo por 2 oleadas. Tu nave disparará automáticamente a los enemigos.\nConstruye más torretas y taladros. Mina más cobre. tutorial.waves.mobile = El[lightgray] enemigo[] se acerca.\n\nDefiende tu núcleo por 2 oleadas. Tu nave disparará automáticamente a los enemigos.\nConstruye más torretas y taladros. Mina más cobre.
tutorial.launch = Una vez llegues a cierta oleada, podrás[accent]lanzar el núcleo[], dejando atrás tus defensas y los recursos en tu núcleo.[]\nEstos recursos pueden ser usados para investigar nueva tecnología.\n\n[accent]Pulsa el botón de lanzamiento. tutorial.launch = Una vez llegues a cierta oleada, podrás[accent]lanzar el núcleo[], dejando atrás tus defensas y los recursos en tu núcleo.[]\nEstos recursos pueden ser usados para investigar nueva tecnología.\n\n[accent]Pulsa el botón de lanzamiento.
item.copper.description = Un útil material estructural. Usado extensivamente en todo tipo de bloques. item.copper.description = Un útil material estructural. Usado extensivamente en todo tipo de bloques.
item.lead.description = Un material básico. Usado extensivamente en electrónicos y bloques de transferencia de líquidos. item.lead.description = Un material básico. Usado extensivamente en electrónicos y bloques de transferencia de líquidos.
item.metaglass.description = Un compuesto muy duro de cristal. Usado extensivamente para almacenamiento y distribución de líquidos. item.metaglass.description = Un compuesto muy duro de cristal. Usado extensivamente para almacenamiento y distribución de líquidos.
@@ -968,11 +1013,11 @@ unit.revenant.description = Una unidad aérea pesada con misiles.
block.message.description = Stores a message. Used for communication between allies. block.message.description = Stores a message. Used for communication between allies.
block.graphite-press.description = Comprime carbón en piezas de grafito puro. block.graphite-press.description = Comprime carbón en piezas de grafito puro.
block.multi-press.description = Una versión mejorada de la prensa de grafito. Utiliza agua y energía para procesar carbón rápida y eficientemente. block.multi-press.description = Una versión mejorada de la prensa de grafito. Utiliza agua y energía para procesar carbón rápida y eficientemente.
block.silicon-smelter.description = Reduce arena con coque de alta pureza para producir silicona. block.silicon-smelter.description = Reduce la arena con carbón puro. Produce silicio.
block.kiln.description = Funde arena y plomo en metacristal. Requiere cantidades pequeñas de energía. block.kiln.description = Funde arena y plomo en metacristal. Requiere cantidades pequeñas de energía.
block.plastanium-compressor.description = Produce plastanio con aceite y titanio. block.plastanium-compressor.description = Produce plastanio con aceite y titanio.
block.phase-weaver.description = Produce tejido de fase del torio radioactivo y altas cantidades de arena. block.phase-weaver.description = Produce tejido de fase del torio radioactivo y altas cantidades de arena.
block.alloy-smelter.description = Produce "surge alloy" con titanio, plomo, silicona y cobre. block.alloy-smelter.description = Produce "surge alloy" con titanio, plomo, silicio y cobre.
block.cryofluidmixer.description = Combina agua y titanio en líquido criogénico, que es mucho más eficiente para enfriar. block.cryofluidmixer.description = Combina agua y titanio en líquido criogénico, que es mucho más eficiente para enfriar.
block.blast-mixer.description = Usa aceite para transformar pirotita en un objeto menos inflamable pero más explosivo: compuesto explosivo. block.blast-mixer.description = Usa aceite para transformar pirotita en un objeto menos inflamable pero más explosivo: compuesto explosivo.
block.pyratite-mixer.description = Mezcla carbón, plomo y arena en pirotita altamente inflamable. block.pyratite-mixer.description = Mezcla carbón, plomo y arena en pirotita altamente inflamable.
@@ -999,7 +1044,7 @@ block.surge-wall.description = El bloque defensivo más fuerte.\nTiene una peque
block.surge-wall-large.description = El bloque defensivo más fuerte.\nTiene una pequeña probabilidad de disparar rayos al atacante.\nOcupa múltiplies casillas. block.surge-wall-large.description = El bloque defensivo más fuerte.\nTiene una pequeña probabilidad de disparar rayos al atacante.\nOcupa múltiplies casillas.
block.door.description = Una puerta pequeña que puede ser abierta y cerrada tocándola.\nSi está abirta, los enemigos pueden moverse y disparar a través de ella. block.door.description = Una puerta pequeña que puede ser abierta y cerrada tocándola.\nSi está abirta, los enemigos pueden moverse y disparar a través de ella.
block.door-large.description = Una puerta grande que puede ser abierta y cerrada tocándola.\nSi está abirta, los enemigos pueden moverse y disparar a través de ella.\nOcupa múltiples casillas. block.door-large.description = Una puerta grande que puede ser abierta y cerrada tocándola.\nSi está abirta, los enemigos pueden moverse y disparar a través de ella.\nOcupa múltiples casillas.
block.mender.description = Repara bloques cercanos periódicamente. Mantiene a las defensas reparadas entre oleadas.Puede usar silicona opcionalmente para mejorar el alcance y la eficiencia. block.mender.description = Repara bloques cercanos periódicamente. Mantiene a las defensas reparadas entre oleadas. Puede usar silicio opcionalmente para mejorar el alcance y la eficiencia.
block.mend-projector.description = Regenera edificios cercanos periódcamente. block.mend-projector.description = Regenera edificios cercanos periódcamente.
block.overdrive-projector.description = Aumenta la velocidad de edificios cercanos como taladros y transportadores. block.overdrive-projector.description = Aumenta la velocidad de edificios cercanos como taladros y transportadores.
block.force-projector.description = Crea un área de fuerza hexagonal alrededor de él, protegiendo edificios y unidades dentro de él del daño de las balas. block.force-projector.description = Crea un área de fuerza hexagonal alrededor de él, protegiendo edificios y unidades dentro de él del daño de las balas.

File diff suppressed because it is too large Load Diff

View File

@@ -48,18 +48,18 @@ minimap = Mapatxoa
close = Itxi close = Itxi
website = Webgunea website = Webgunea
quit = Irten quit = Irten
save.quit = Save & Quit save.quit = Gorde eta irten
maps = Mapak maps = Mapak
maps.browse = Browse Maps maps.browse = Arakatu mapak
continue = Jarraitu continue = Jarraitu
maps.none = [lightgray]Ez da maparik aurkitu! maps.none = [lightgray]Ez da maparik aurkitu!
invalid = Invalid invalid = Baliogabea
preparingconfig = Preparing Config preparingconfig = Konfigurazioa prestatzen
preparingcontent = Preparing Content preparingcontent = Edukia prestatzen
uploadingcontent = Uploading Content uploadingcontent = Edukia igotzen
uploadingpreviewfile = Uploading Preview File uploadingpreviewfile = Aurrebista fitxategia igotzen
committingchanges = Comitting Changes committingchanges = Aldaketak aplikatzen
done = Done done = Egina
about.button = Honi buruz about.button = Honi buruz
name = Izena: name = Izena:
noname = Hautatu[accent] jokalari-izena[] aurretik. noname = Hautatu[accent] jokalari-izena[] aurretik.
@@ -74,14 +74,14 @@ players = {0} jokalari konektatuta
players.single = Jokalari {0} konektatuta players.single = Jokalari {0} konektatuta
server.closing = [accent]Zerbitzaria ixten... server.closing = [accent]Zerbitzaria ixten...
server.kicked.kick = Zerbitzaritik kanporatu zaituzte! server.kicked.kick = Zerbitzaritik kanporatu zaituzte!
server.kicked.whitelist = You are not whitelisted here. server.kicked.whitelist = Ez zaude hemengo zerrenda zurian.
server.kicked.serverClose = Zerbitzaria itxita. server.kicked.serverClose = Zerbitzaria itxita.
server.kicked.vote = Botoen bidez kanporatu zaituzte. Agur. server.kicked.vote = Botoen bidez kanporatu zaituzte. Agur.
server.kicked.clientOutdated = Bezero zaharkitua! Eguneratu zure jolasa! server.kicked.clientOutdated = Bezero zaharkitua! Eguneratu zure jolasa!
server.kicked.serverOutdated = Zerbitzari zaharkitua! Eskatu ostalariari eguneratzeko! server.kicked.serverOutdated = Zerbitzari zaharkitua! Eskatu ostalariari eguneratzeko!
server.kicked.banned = Zerbitzari honetan debekatuta zaude. server.kicked.banned = Zerbitzari honetan debekatuta zaude.
server.kicked.typeMismatch = Zerbitzari hau ez da zure konpilazio motarekin bateragarria. server.kicked.typeMismatch = Zerbitzari hau ez da zure konpilazio motarekin bateragarria.
server.kicked.playerLimit = This server is full. Wait for an empty slot. server.kicked.playerLimit = Zerbitzari hau beteta dago. Itxaron zirrikitu bat libratu arte.
server.kicked.recentKick = Duela gutxi kanporatu zaituzte.\nItxaron berriro konektatzeko. server.kicked.recentKick = Duela gutxi kanporatu zaituzte.\nItxaron berriro konektatzeko.
server.kicked.nameInUse = Badago izen bereko beste norbait\nzerbitzari honetan jada. server.kicked.nameInUse = Badago izen bereko beste norbait\nzerbitzari honetan jada.
server.kicked.nameEmpty = Aukeratu duzun izena baliogabea da. server.kicked.nameEmpty = Aukeratu duzun izena baliogabea da.
@@ -92,13 +92,13 @@ server.versions = Zure bertsioa:[accent] {0}[]\nZerbitzariaren bertsioa:[accent]
host.info = [accent]Ostalaria[] botoiak zerbitzari bat abiatzen du [scarlet]6567[] atakan.\n[lightgray]wifi edo sare lokal[] berean dagoen edonor zure zerbitzaria ikusi ahal beharko luke.\n\nJendea edonondik IP-a erabilita konektatu ahal izatea nahi baduzu, [accent]ataka birbidaltzea[] ezinbestekoa da.\n\n[lightgray]Oharra: Inork zure sare lokalean partidara elkartzeko arazoak baditu, egiaztatu Mindustry-k baimena duela sare lokalera elkartzeko suebakiaren ezarpenetan. Kontuan izan sare publiko batzuk ez dutela zerbitzarien bilaketa baimentzen. host.info = [accent]Ostalaria[] botoiak zerbitzari bat abiatzen du [scarlet]6567[] atakan.\n[lightgray]wifi edo sare lokal[] berean dagoen edonor zure zerbitzaria ikusi ahal beharko luke.\n\nJendea edonondik IP-a erabilita konektatu ahal izatea nahi baduzu, [accent]ataka birbidaltzea[] ezinbestekoa da.\n\n[lightgray]Oharra: Inork zure sare lokalean partidara elkartzeko arazoak baditu, egiaztatu Mindustry-k baimena duela sare lokalera elkartzeko suebakiaren ezarpenetan. Kontuan izan sare publiko batzuk ez dutela zerbitzarien bilaketa baimentzen.
join.info = Hemen, konektatzeko [accent]zerbitzari baten IP-a[] sartu dezakezu konektatzeko, edo [accent]sare lokaleko[] zerbitzariak bilatu.\nLAN zein WAN sareetan onartzen dira hainbat jokalarien partidak .\n\n[lightgray]Oharra: Ez dago zerbitzarien zerrenda global automatikorik, beste inorekin IP bidez konektatu nahi baduzu, ostalariari bere IP helbidea eskatu beharko diozu. join.info = Hemen, konektatzeko [accent]zerbitzari baten IP-a[] sartu dezakezu konektatzeko, edo [accent]sare lokaleko[] zerbitzariak bilatu.\nLAN zein WAN sareetan onartzen dira hainbat jokalarien partidak .\n\n[lightgray]Oharra: Ez dago zerbitzarien zerrenda global automatikorik, beste inorekin IP bidez konektatu nahi baduzu, ostalariari bere IP helbidea eskatu beharko diozu.
hostserver = Ostatatu hainbat jokalarien partida hostserver = Ostatatu hainbat jokalarien partida
invitefriends = Invite Friends invitefriends = Gonbidatu lagunak
hostserver.mobile = Ostatatu\npartida hostserver.mobile = Ostatatu\npartida
host = Ostatatu host = Ostatatu
hosting = [accent]Zerbitzaria irekitzen... hosting = [accent]Zerbitzaria irekitzen...
hosts.refresh = Freskatu hosts.refresh = Freskatu
hosts.discovering = LAN partidak bilatzen hosts.discovering = LAN partidak bilatzen
hosts.discovering.any = Discovering games hosts.discovering.any = Partidak bilatzen
server.refreshing = Zerbitzaria freskatzen server.refreshing = Zerbitzaria freskatzen
hosts.none = [lightgray]Ez da partida lokalik aurkitu! hosts.none = [lightgray]Ez da partida lokalik aurkitu!
host.invalid = [scarlet]Ezin da ostalarira konektatu. host.invalid = [scarlet]Ezin da ostalarira konektatu.
@@ -122,7 +122,7 @@ server.version = [gray]v{0} {1}
server.custombuild = [yellow]Konpilazio pertsonalizatua server.custombuild = [yellow]Konpilazio pertsonalizatua
confirmban = Ziur jokalari hau debekatu nahi duzula? confirmban = Ziur jokalari hau debekatu nahi duzula?
confirmkick = Ziur jokalari hau kanporatu nahi duzula? confirmkick = Ziur jokalari hau kanporatu nahi duzula?
confirmvotekick = Are you sure you want to vote-kick this player? confirmvotekick = Ziur hokalari hau botatzearen alde bozkaytu nahi duzula?
confirmunban = Ziur jokalari hau debekatzeari utzi nahi nahi diozula? confirmunban = Ziur jokalari hau debekatzeari utzi nahi nahi diozula?
confirmadmin = Ziur jokalari hau admin bihurtu nahi duzula? confirmadmin = Ziur jokalari hau admin bihurtu nahi duzula?
confirmunadmin = Ziur jokalari honi admin eskubidea kendu nahi diozula? confirmunadmin = Ziur jokalari honi admin eskubidea kendu nahi diozula?
@@ -133,7 +133,7 @@ disconnect.error = Konexio errorea.
disconnect.closed = Konexioa itxita. disconnect.closed = Konexioa itxita.
disconnect.timeout = Denbor-muga agortuta. disconnect.timeout = Denbor-muga agortuta.
disconnect.data = Huts egin du munduaren datuak eskuratzean! disconnect.data = Huts egin du munduaren datuak eskuratzean!
cantconnect = Unable to join game ([accent]{0}[]). cantconnect = Ezin izan da partidara elkartu ([accent]{0}[]).
connecting = [accent]Konektatzen... connecting = [accent]Konektatzen...
connecting.data = [accent]Munduaren datuak kargatzen... connecting.data = [accent]Munduaren datuak kargatzen...
server.port = Ataka: server.port = Ataka:
@@ -159,7 +159,7 @@ save.rename = Aldatu izena
save.rename.text = Gordetako partida berria: save.rename.text = Gordetako partida berria:
selectslot = Hautatu gordetako partida bat. selectslot = Hautatu gordetako partida bat.
slot = [accent]{0}. tartea slot = [accent]{0}. tartea
editmessage = Edit Message editmessage = Editatu mezua
save.corrupted = [accent]Gordetako partidaren fitxategia hondatuta dago edo baliogabea da!\nBerriki eguneratu baduzu jolasa, gordetzeko formatuan aldaketaren bat izan daiteke eta [scarlet]ez[] akats bat. save.corrupted = [accent]Gordetako partidaren fitxategia hondatuta dago edo baliogabea da!\nBerriki eguneratu baduzu jolasa, gordetzeko formatuan aldaketaren bat izan daiteke eta [scarlet]ez[] akats bat.
empty = <hutsik> empty = <hutsik>
on = Piztuta on = Piztuta
@@ -167,13 +167,13 @@ off = Itzalita
save.autosave = Gordetze automatikoa: {0} save.autosave = Gordetze automatikoa: {0}
save.map = Mapa: {0} save.map = Mapa: {0}
save.wave = {0}. bolada save.wave = {0}. bolada
save.mode = Gamemode: {0} save.mode = Jolas-modua: {0}
save.date = Azkenekoz gordeta: {0} save.date = Azkenekoz gordeta: {0}
save.playtime = Jolastua: {0} save.playtime = Jolastua: {0}
warning = Abisua. warning = Abisua.
confirm = Baieztatu confirm = Baieztatu
delete = Ezabatu delete = Ezabatu
view.workshop = View In Workshop view.workshop = Ikusi lantegian
ok = Ados ok = Ados
open = Ireki open = Ireki
customize = Aldatu arauak customize = Aldatu arauak
@@ -210,10 +210,10 @@ 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.
map.publish.error = Error publishing map: {0} map.publish.error = Errorea mapa argitaratzean: {0}
map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! 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!
eula = Steam EULA eula = Steam EULA
map.publish = Map published. map.publish = Mapa argitaratuta.
map.publishing = [accent]Publishing map... map.publishing = [accent]Publishing map...
editor.brush = Brotxa editor.brush = Brotxa
editor.openin = Ireki editorean editor.openin = Ireki editorean
@@ -222,14 +222,14 @@ editor.oregen.info = Mea sorrera:
editor.mapinfo = Mapa info editor.mapinfo = Mapa info
editor.author = Egilea: editor.author = Egilea:
editor.description = Deskripzioa: editor.description = Deskripzioa:
editor.nodescription = A map must have a description of at least 4 characters before being published. editor.nodescription = Mapek deskripzio bat izan behar dute argitaratu aurretik, gutxienez 4 karakteretakoa.
editor.waves = Boladak: editor.waves = Boladak:
editor.rules = Arauak: editor.rules = Arauak:
editor.generation = Sorrarazi: editor.generation = Sorrarazi:
editor.ingame = Editatu jolasean editor.ingame = Editatu jolasean
editor.publish.workshop = Publish On Workshop editor.publish.workshop = Argitaratu lantegian
editor.newmap = Mapa berria editor.newmap = Mapa berria
workshop = Workshop workshop = Lantegia
waves.title = Boladak waves.title = Boladak
waves.remove = Kendu waves.remove = Kendu
waves.never = <beti> waves.never = <beti>
@@ -246,7 +246,7 @@ waves.invalid = Bolada baliogabeak arbelean.
waves.copied = Boladak kopiatuta. waves.copied = Boladak kopiatuta.
waves.none = Ez da etsairik zehaztu.\nKontuan izan bolada hutsak lehenetsitako diseinuarekin ordeztuko direla. waves.none = Ez da etsairik zehaztu.\nKontuan izan bolada hutsak lehenetsitako diseinuarekin ordeztuko direla.
editor.default = [lightgray]<Lehenetsia> editor.default = [lightgray]<Lehenetsia>
details = Details... details = Xehetasunak...
edit = Editatu... edit = Editatu...
editor.name = Izena: editor.name = Izena:
editor.spawn = Sortu unitatea editor.spawn = Sortu unitatea
@@ -256,7 +256,7 @@ editor.errorload = Errorea fitxategia kargatzen:\n[accent]{0}
editor.errorsave = Errorea fitxategia gordetzen:\n[accent]{0} editor.errorsave = Errorea fitxategia gordetzen:\n[accent]{0}
editor.errorimage = Hori irudi bat da, ez mapa bat. Ez aldatu luzapena funtzionatuko duelakoan.\n\nMapa zahar bat inportatu nahi baduzu, erabili 'inportatu mapa zaharra' botoia editorean. editor.errorimage = Hori irudi bat da, ez mapa bat. Ez aldatu luzapena funtzionatuko duelakoan.\n\nMapa zahar bat inportatu nahi baduzu, erabili 'inportatu mapa zaharra' botoia editorean.
editor.errorlegacy = Mapa hau zaharregia da, eta jada onartzen ez den formatu zahar bat darabil. editor.errorlegacy = Mapa hau zaharregia da, eta jada onartzen ez den formatu zahar bat darabil.
editor.errornot = This is not a map file. editor.errornot = Hau ez da mapa-fitxategi bat.
editor.errorheader = Mapa hau hondatuta dago edo baliogabea da. editor.errorheader = Mapa hau hondatuta dago edo baliogabea da.
editor.errorname = Mapak ez du zehaztutako izenik. Gordetako partida bat kargatzen saiatu zara? editor.errorname = Mapak ez du zehaztutako izenik. Gordetako partida bat kargatzen saiatu zara?
editor.update = Eguneratu editor.update = Eguneratu
@@ -289,7 +289,7 @@ editor.resizemap = Aldatu maparen neurria
editor.mapname = Maparen izena: editor.mapname = Maparen izena:
editor.overwrite = [accent]Abisua!\nHonek badagoen mapa bat gainidatziko du. editor.overwrite = [accent]Abisua!\nHonek badagoen mapa bat gainidatziko du.
editor.overwrite.confirm = [scarlet]Abisua![] Badago izen bereko beste mapa bat. Ziur gainidatzi nahi duzula? editor.overwrite.confirm = [scarlet]Abisua![] Badago izen bereko beste mapa bat. Ziur gainidatzi nahi duzula?
editor.exists = A map with this name already exists. editor.exists = Badago izen bereko beste mapa bat.
editor.selectmap = Hautatu mapa kargatzeko: editor.selectmap = Hautatu mapa kargatzeko:
toolmode.replace = Ordeztu toolmode.replace = Ordeztu
toolmode.replace.description = Marraztu bloke zurrunak bakarrik. toolmode.replace.description = Marraztu bloke zurrunak bakarrik.
@@ -369,7 +369,7 @@ launch.skip.confirm = Orain ez eginez gero, geroagoko beste bolada batera itxaro
uncover = Estalgabetu uncover = Estalgabetu
configure = Konfiguratu zuzkidura configure = Konfiguratu zuzkidura
configure.locked = [lightgray]Zuzkiduraren konfigurazioa desblokeatzeko: {0} bolada. configure.locked = [lightgray]Zuzkiduraren konfigurazioa desblokeatzeko: {0} bolada.
configure.invalid = Amount must be a number between 0 and {0}. 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.complete = {0}. boladara iritsia:\nZuzkiduraren konfigurazioa desblokeatuta. zone.config.complete = {0}. boladara iritsia:\nZuzkiduraren konfigurazioa desblokeatuta.
@@ -466,7 +466,7 @@ blocks.boosteffect = Indartze-efektua
blocks.maxunits = Gehieneko unitate aktiboak blocks.maxunits = Gehieneko unitate aktiboak
blocks.health = Osasuna blocks.health = Osasuna
blocks.buildtime = Eraikitze-denbora blocks.buildtime = Eraikitze-denbora
blocks.buildcost = Build Cost blocks.buildcost = Eraikitze-kostua
blocks.inaccuracy = Zehazgabetasuna blocks.inaccuracy = Zehazgabetasuna
blocks.shots = Tiroak blocks.shots = Tiroak
blocks.reload = Tiroak/segundoko blocks.reload = Tiroak/segundoko
@@ -475,11 +475,11 @@ bar.drilltierreq = Zulagailu hobea behar da
bar.drillspeed = Ustiatze-abiadura: {0}/s bar.drillspeed = Ustiatze-abiadura: {0}/s
bar.efficiency = Eraginkortasuna: {0}% bar.efficiency = Eraginkortasuna: {0}%
bar.powerbalance = Energia: {0}/s bar.powerbalance = Energia: {0}/s
bar.powerstored = Stored: {0}/{1} bar.powerstored = Bilduta: {0}/{1}
bar.poweramount = Energia: {0} bar.poweramount = Energia: {0}
bar.poweroutput = Energia irteera: {0} bar.poweroutput = Energia irteera: {0}
bar.items = Elementuak: {0} bar.items = Elementuak: {0}
bar.capacity = Capacity: {0} bar.capacity = Edukiera: {0}
bar.liquid = Likidoa bar.liquid = Likidoa
bar.heat = Beroa bar.heat = Beroa
bar.power = Energia bar.power = Energia
@@ -524,7 +524,7 @@ setting.antialias.name = Antialias[lightgray] (berrabiarazi behar da)[]
setting.indicators.name = Etsai/Aliatu adierazleak setting.indicators.name = Etsai/Aliatu adierazleak
setting.autotarget.name = Punteria automatikoa setting.autotarget.name = Punteria automatikoa
setting.keyboard.name = Sagu+Teklatu kontrolak setting.keyboard.name = Sagu+Teklatu kontrolak
setting.touchscreen.name = Touchscreen Controls setting.touchscreen.name = Ukitze-pantailaren kontrolak
setting.fpscap.name = Max FPS setting.fpscap.name = Max FPS
setting.fpscap.none = Bat ere ez setting.fpscap.none = Bat ere ez
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
@@ -545,7 +545,6 @@ setting.fullscreen.name = Pantaila osoa
setting.borderlesswindow.name = Ertzik gabeko leihoa[lightgray] (berrabiaraztea behar lezake) setting.borderlesswindow.name = Ertzik gabeko leihoa[lightgray] (berrabiaraztea behar lezake)
setting.fps.name = Erakutsi FPS setting.fps.name = Erakutsi FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Erakutsi energia laserrak
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.musicvol.name = Musikaren bolumena setting.musicvol.name = Musikaren bolumena
@@ -555,8 +554,9 @@ setting.sfxvol.name = Efektuen bolumena
setting.mutesound.name = Isilarazi soinua setting.mutesound.name = Isilarazi soinua
setting.crashreport.name = Bidali kraskatze txosten automatikoak setting.crashreport.name = Bidali kraskatze txosten automatikoak
setting.savecreate.name = Gorde automatikoki setting.savecreate.name = Gorde automatikoki
setting.publichost.name = Public Game Visibility setting.publichost.name = Partidaren ikusgaitasun publikoa
setting.chatopacity.name = Txataren opakotasuna setting.chatopacity.name = Txataren opakotasuna
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Erakutsi jolas barneko txata setting.playerchat.name = Erakutsi jolas barneko txata
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
@@ -567,7 +567,7 @@ category.general.name = Orokorra
category.view.name = Bistaratzea category.view.name = Bistaratzea
category.multiplayer.name = Hainbat jokalari category.multiplayer.name = Hainbat jokalari
command.attack = Eraso command.attack = Eraso
command.rally = Rally command.rally = Batu
command.retreat = Erretreta command.retreat = Erretreta
keybind.gridMode.name = Bloke-hautua keybind.gridMode.name = Bloke-hautua
keybind.gridModeShift.name = Kategoria-hautua keybind.gridModeShift.name = Kategoria-hautua
@@ -588,7 +588,7 @@ keybind.zoom.name = Zoom
keybind.menu.name = Menua keybind.menu.name = Menua
keybind.pause.name = Pausatu keybind.pause.name = Pausatu
keybind.minimap.name = Mapatxoa keybind.minimap.name = Mapatxoa
keybind.dash.name = Dash 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
@@ -613,7 +613,7 @@ rules.infiniteresources = Baliabide amaigabeak
rules.wavetimer = Boladen denboragailua rules.wavetimer = Boladen denboragailua
rules.waves = Boladak rules.waves = Boladak
rules.attack = Eraso modua rules.attack = Eraso modua
rules.enemyCheat = AI-k (talde gorriak) baliabide amaigabeak ditu rules.enemyCheat = IA-k (talde gorriak) baliabide amaigabeak ditu
rules.unitdrops = Unitate-sorrerak rules.unitdrops = Unitate-sorrerak
rules.unitbuildspeedmultiplier = Unitateen sorrerarako abiadura-biderkatzailea rules.unitbuildspeedmultiplier = Unitateen sorrerarako abiadura-biderkatzailea
rules.unithealthmultiplier = Unitateen osasun-biderkatzailea rules.unithealthmultiplier = Unitateen osasun-biderkatzailea
@@ -784,13 +784,13 @@ block.hail.name = Txingor
block.lancer.name = Lantzari block.lancer.name = Lantzari
block.conveyor.name = Garraio-zinta block.conveyor.name = Garraio-zinta
block.titanium-conveyor.name = Titaniozko garraio-zinta block.titanium-conveyor.name = Titaniozko garraio-zinta
block.armored-conveyor.name = Armored Conveyor block.armored-conveyor.name = Blindatutako garraio-zinta
block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. block.armored-conveyor.description = Titaniozko garraio-zinten abiadura berean darmatza elementuak, baina bildaje hobea du. Ez du onartzen albotik kargatzea ez bada beste garraio-zinta batetik.
block.junction.name = Lotunea 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.message.name = Message 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
block.phase-weaver.name = Fase ehulea block.phase-weaver.name = Fase ehulea
@@ -902,8 +902,8 @@ unit.wraith.name = Iratxo ehiza-hegazkina
unit.fortress.name = Gotorleku unit.fortress.name = Gotorleku
unit.revenant.name = Mamu unit.revenant.name = Mamu
unit.eruptor.name = Sumendi unit.eruptor.name = Sumendi
unit.chaos-array.name = Chaos Array unit.chaos-array.name = Kaos
unit.eradicator.name = Eradicator unit.eradicator.name = Ezerezle
unit.lich.name = Litxe unit.lich.name = Litxe
unit.reaper.name = Segalaria unit.reaper.name = Segalaria
tutorial.next = [lightgray]<Sakatu jarraitzeko> tutorial.next = [lightgray]<Sakatu jarraitzeko>
@@ -949,7 +949,7 @@ liquid.cryofluid.description = Ur eta titanioz egindako likido bizigabe eta ez k
mech.alpha-mech.description = Kontrolerako meka arrunta. Daga unitatean oinarritutakoa, blindaje hobetua eta eraikitze gaitasunek. Dardo ontzi batek baino kalte gehiago eragiten du. mech.alpha-mech.description = Kontrolerako meka arrunta. Daga unitatean oinarritutakoa, blindaje hobetua eta eraikitze gaitasunek. Dardo ontzi batek baino kalte gehiago eragiten du.
mech.delta-mech.description = Jo eta ihes motako erasoetarako egindako meka azkar eta zertxobait blindatua. Estrukturei kalte gutxi eragiten die, baina etsaien talde handiak azkar deuseztatu ditzake bere tximista arku armekin. mech.delta-mech.description = Jo eta ihes motako erasoetarako egindako meka azkar eta zertxobait blindatua. Estrukturei kalte gutxi eragiten die, baina etsaien talde handiak azkar deuseztatu ditzake bere tximista arku armekin.
mech.tau-mech.description = Mantenu meka. Blokea aliatuak osatzen ditu urrunetik. Bere konpontze gaitasun erradio barruko aliatuak sendatzen ditu. mech.tau-mech.description = Mantenu meka. Blokea aliatuak osatzen ditu urrunetik. Bere konpontze gaitasun erradio barruko aliatuak sendatzen ditu.
mech.omega-mech.description = meka handikote eta ondo blindatua, lehen lerroko erasoetarako egina. Bere blindajeak jasotako kaltearen %90 arte gelditu dezake. mech.omega-mech.description = Meka handikote eta ondo blindatua, lehen lerroko erasoetarako egina. Bere blindajeak jasotako kaltearen %90 arte gelditu dezake.
mech.dart-ship.description = Kontrol ontzi arrunta. Nahiko azkar eta arina, baina erasorako gaitasun eta ustiatzeko abiadura txikia gutxi du. mech.dart-ship.description = Kontrol ontzi arrunta. Nahiko azkar eta arina, baina erasorako gaitasun eta ustiatzeko abiadura txikia gutxi du.
mech.javelin-ship.description = Jo eta iheserako eraso ontzia. Hasieran motela bada ere, abiadura oso azkarretara arte azeleratu dezake eta etsaien base aitzindarietara hegaz egin, kalte nabarmena eragin dezake bere tximista eta misilekin. mech.javelin-ship.description = Jo eta iheserako eraso ontzia. Hasieran motela bada ere, abiadura oso azkarretara arte azeleratu dezake eta etsaien base aitzindarietara hegaz egin, kalte nabarmena eragin dezake bere tximista eta misilekin.
mech.trident-ship.description = Bonbari astuna, eraikuntzarako eta etsaiaren babesak suntsitzeko egina. Nahiko ondo blindatua. mech.trident-ship.description = Bonbari astuna, eraikuntzarako eta etsaiaren babesak suntsitzeko egina. Nahiko ondo blindatua.
@@ -965,11 +965,11 @@ unit.eruptor.description = Estrukturak behera botatzeko diseinatutako meka astun
unit.wraith.description = Jo eta iheseko unitate harrapari azkarra. Energia sorgailuak ditu xede. unit.wraith.description = Jo eta iheseko unitate harrapari azkarra. Energia sorgailuak ditu xede.
unit.ghoul.description = Azal bonbaketari astuna. Etsaiaren estrukturak urratzen ditu, azpiegitura kritikoa xede duela. unit.ghoul.description = Azal bonbaketari astuna. Etsaiaren estrukturak urratzen ditu, azpiegitura kritikoa xede duela.
unit.revenant.description = Misil planeatzailedun tramankulu astuna. unit.revenant.description = Misil planeatzailedun tramankulu astuna.
block.message.description = Stores a message. Used for communication between allies. block.message.description = Mezu bat gordetzen du. Aliatuen arteko komunikaziorako erabilia.
block.graphite-press.description = Ikatz puskak zanpatzen ditu grafito hutsezko xaflak sortuz. block.graphite-press.description = Ikatz puskak zanpatzen ditu grafito hutsezko xaflak sortuz.
block.multi-press.description = Grafito prentsaren bertsio hobetu bat. Ura eta energia behar ditu ikatza azkar eta eraginkorki prozesatzeko. block.multi-press.description = Grafito prentsaren bertsio hobetu bat. Ura eta energia behar ditu ikatza azkar eta eraginkorki prozesatzeko.
block.silicon-smelter.description = Hondarra eta ikatz hutsa txikitzen ditu silizioa sortzeko. block.silicon-smelter.description = Hondarra eta ikatz hutsa txikitzen ditu silizioa sortzeko.
block.kiln.description = Jondarra eta beruna galdatzen ditu metabeira izeneko konposatua sortzeko. Energia apur bat behar du jarduteko. block.kiln.description = Hondarra eta beruna galdatzen ditu metabeira izeneko konposatua sortzeko. Energia apur bat behar du jarduteko.
block.plastanium-compressor.description = Plastanioa ekoizten du olioa eta titanioa erabiliz. block.plastanium-compressor.description = Plastanioa ekoizten du olioa eta titanioa erabiliz.
block.phase-weaver.description = Fasezko ehuna sintetizatzen du torio erradioaktiboa eta hondarra erabiliz. Energia kopurua handia behar du jarduteko. block.phase-weaver.description = Fasezko ehuna sintetizatzen du torio erradioaktiboa eta hondarra erabiliz. Energia kopurua handia behar du jarduteko.
block.alloy-smelter.description = Titanioa, beruna, silizioa eta kobrea konbinatzen ditu tirain aleazioa ekoizteko. block.alloy-smelter.description = Titanioa, beruna, silizioa eta kobrea konbinatzen ditu tirain aleazioa ekoizteko.
@@ -1059,7 +1059,7 @@ block.scorch.description = Inguruko lurreko etsaiak kiskaltzen ditu. Oso eragink
block.hail.description = Irismen luzeko kanoiteria dorre txikia. block.hail.description = Irismen luzeko kanoiteria dorre txikia.
block.wave.description = Neurri ertaineko dorrea. Likido jarioak isurtzen dizkie etsaiei. Suak automatikoki itzaltzen ditu ura hornitzen bazaio. block.wave.description = Neurri ertaineko dorrea. Likido jarioak isurtzen dizkie etsaiei. Suak automatikoki itzaltzen ditu ura hornitzen bazaio.
block.lancer.description = Lurreko unitateen aurkako laser dorre ertaina. Energia izpi indartsuak kargatu eta jaurtitzen ditu. block.lancer.description = Lurreko unitateen aurkako laser dorre ertaina. Energia izpi indartsuak kargatu eta jaurtitzen ditu.
block.arc.description = irismen hurbileko dorre elektriko txikia. Elektrizitate arkuak jaurtitzen dizkie etsaiei. block.arc.description = Irismen hurbileko dorre elektriko txikia. Elektrizitate arkuak jaurtitzen dizkie etsaiei.
block.swarmer.description = Misil dorre ertaina. Lurrezko zein airezko etsaiak erasotzen ditu. Misil gidatuak jaurtitzen ditu. block.swarmer.description = Misil dorre ertaina. Lurrezko zein airezko etsaiak erasotzen ditu. Misil gidatuak jaurtitzen ditu.
block.salvo.description = Duo dorrearen bertsio handiago eta aurreratuago bat. Tiro-segida azkarrak botatzen dizkie etsaiei. block.salvo.description = Duo dorrearen bertsio handiago eta aurreratuago bat. Tiro-segida azkarrak botatzen dizkie etsaiei.
block.fuse.description = Irismen hurbileko energia dorre handia. Hiru izpi zulatzaile isurtzen dizkie inguruko etsaiei. block.fuse.description = Irismen hurbileko energia dorre handia. Hiru izpi zulatzaile isurtzen dizkie inguruko etsaiei.

View File

@@ -10,17 +10,20 @@ 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.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é à votre presse papier. linkfail = Erreur lors de l'ouverture du lien !\nL'URL a été copié dans votre presse papier.
screenshot = Capture d'écran sauvegardée à {0} screenshot = Capture d'écran sauvegardée à {0}
screenshot.invalid = La carte est trop large, il n'y a potentiellement pas assez de mémoire pour la capture d'écran. screenshot.invalid = La carte est trop large, il n'y a potentiellement pas assez de mémoire pour la capture d'écran.
gameover = Game over gameover = Game over
gameover.pvp = L'équipe [accent] {0}[] a gagnée ! gameover.pvp = L'équipe [accent] {0}[] a gagnée !
highscore = [accent]Nouveau meilleur score! highscore = [accent]Nouveau meilleur score!
load.sound = Sons load.sound = Sons
load.map = Cartes load.map = Cartes
load.image = Images load.image = Images
load.content = Contenus load.content = Contenus
load.system = Système load.system = Système
load.mod = Mods
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}
@@ -28,10 +31,12 @@ 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ées en bleu.
map.delete = Êtes-vous sûr de vouloir supprimer cette carte "[accent]{0}[]"? map.delete = Êtes-vous sûr de vouloir supprimer cette carte "[accent]{0}[]"?
level.highscore = Meilleur score: [accent]{0} level.highscore = Meilleur score: [accent]{0}
level.select = Sélection de niveau level.select = Sélection du niveau
level.mode = Mode de jeu: level.mode = Mode de jeu:
showagain = Ne pas montrer la prochaine fois showagain = Ne pas montrer la prochaine fois
coreattack = [scarlet]<La base est attaquée> coreattack = [scarlet]<La base est attaquée>
@@ -40,7 +45,6 @@ database = Base de données
savegame = Sauvegarder la partie savegame = Sauvegarder la partie
loadgame = Charger la partie loadgame = Charger la partie
joingame = Rejoindre une partie joingame = Rejoindre une partie
addplayers = Ajouter/Enlever des joueurs
customgame = Partie customisée customgame = Partie customisée
newgame = Nouvelle partie newgame = Nouvelle partie
none = <vide> none = <vide>
@@ -48,18 +52,37 @@ minimap = Minimap
close = Fermer close = Fermer
website = Site Web website = Site Web
quit = Quitter quit = Quitter
save.quit = Save & Quit save.quit = Sauvegarder et Quitter
maps = Cartes maps = Cartes
maps.browse = Parcourir les Cartes 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
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
uploadingpreviewfile = Publication du Fichier d'Aperçu uploadingpreviewfile = Publication du fichier d'aperçu
committingchanges = Validation des Modifications committingchanges = Validation des modifications
done = Fait done = Fait
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 = Mods
mods.none = [LIGHT_GRAY]Aucun mod trouvé!
mods.guide = Guide de Modding
mods.report = Signaler un Bug
mod.enabled = [lightgray]Activé
mod.disabled = [scarlet]Désactivé
mod.disable = Désactiver
mod.enable = Activer
mod.requiresrestart = Le jeu va maintenant s'arrêter pour appliquer les modification du mod.
mod.reloadrequired = [scarlet]Rechargement requis
mod.import = Importer un mod
mod.import.github = Importer un mod Github
mod.remove.confirm = Ce mod sera supprimé.
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}
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[].
@@ -74,21 +97,21 @@ players = {0} joueurs en ligne
players.single = {0} joueur en ligne players.single = {0} joueur en ligne
server.closing = [accent]Fermeture du serveur... server.closing = [accent]Fermeture du serveur...
server.kicked.kick = Vous avez été expulsé du serveur! server.kicked.kick = Vous avez été expulsé du serveur!
server.kicked.whitelist = You are not whitelisted here. server.kicked.whitelist = Vous n'êtes pas whitelisté ici.
server.kicked.serverClose = Serveur fermé. server.kicked.serverClose = Serveur fermé.
server.kicked.vote = Vous avez été expulsé suite à un vote. Au revoir. server.kicked.vote = Vous avez été expulsé suite à un vote. Au revoir.
server.kicked.clientOutdated = Client obsolète! Mettez à votre jeu à jour! server.kicked.clientOutdated = Client obsolète! Mettez à votre jeu à jour!
server.kicked.serverOutdated = Serveur obsolète! Demandez à l'hôte de le mettre à jour! server.kicked.serverOutdated = Serveur obsolète! Demandez à l'hôte de le mettre à jour!
server.kicked.banned = Vous avez été banni sur ce serveur. server.kicked.banned = Vous avez été banni de ce serveur.
server.kicked.typeMismatch = Ce serveur n'est pas compatible avec votre version du jeu. server.kicked.typeMismatch = Ce serveur n'est pas compatible avec votre version du jeu.
server.kicked.playerLimit = Ce serveur est plein. Veuillez attendre qu'une place se libére. server.kicked.playerLimit = Ce serveur est plein. Veuillez attendre qu'une place se libère.
server.kicked.recentKick = Vous avez été expulsé récemment.\nAttendez avant de vous connecter à nouveau. server.kicked.recentKick = Vous avez été expulsé récemment.\nAttendez avant de vous connecter à nouveau.
server.kicked.nameInUse = Il y a déjà quelqu'un avec\nce nom sur ce serveur. server.kicked.nameInUse = Il y a déjà quelqu'un avec\nce nom sur ce serveur.
server.kicked.nameEmpty = Votre nom est invalide. server.kicked.nameEmpty = Votre nom est invalide.
server.kicked.idInUse = Vous êtes déjà sur ce serveur! Se connecter avec deux comptes n'est pas permis. server.kicked.idInUse = Vous êtes déjà sur ce serveur! Se connecter avec deux comptes n'est pas permis.
server.kicked.customClient = Ce serveur ne supporte pas les versions personnalisées (Custom builds). Téléchargez une version officielle. server.kicked.customClient = Ce serveur ne supporte pas les versions personnalisées (Custom builds). Téléchargez une version officielle.
server.kicked.gameover = Game over! server.kicked.gameover = Game over!
server.versions = Votre version:[accent] {0}[]\nLa version du serveur:[accent] {1}[] server.versions = Votre version:[accent] {0}[]\nVersion du serveur:[accent] {1}[]
host.info = Le bouton [accent]Héberger[] héberge un serveur sur le port [scarlet]6567[]. \nN'importe qui sur le même [lightgray]wifi ou réseau local []devrait voir votre serveur sur leur liste des serveurs.\n\nSi vous voulez que les gens puissent s'y connecter de partout à l'aide de votre IP, [accent]le transfert de port (port forwarding)[] est requis.\n\n[lightgray]Note: Si quelqu'un a des problèmes de connexion à votre partie LAN, vérifiez que vous avez autorisé l'accès à Mindustry sur votre réseau local dans les paramètres de votre pare-feu. host.info = Le bouton [accent]Héberger[] héberge un serveur sur le port [scarlet]6567[]. \nN'importe qui sur le même [lightgray]wifi ou réseau local []devrait voir votre serveur sur leur liste des serveurs.\n\nSi vous voulez que les gens puissent s'y connecter de partout à l'aide de votre IP, [accent]le transfert de port (port forwarding)[] est requis.\n\n[lightgray]Note: Si quelqu'un a des problèmes de connexion à votre partie LAN, vérifiez que vous avez autorisé l'accès à Mindustry sur votre réseau local dans les paramètres de votre pare-feu.
join.info = Ici vous pouvez entrez [accent]l'adresse IP d'un serveur []pour s'y connecter, ou découvrir un serveur en [accent]réseau local[].\nLe multijoueur en LAN ainsi qu'en WAN est supporté.\n\n[lightgray]Note: Il n'y a pas de liste de serveurs globaux automatiques; Si vous voulez vous connectez à quelqu'un par IP, il faudra d'abord demander à l'hébergeur leur IP. join.info = Ici vous pouvez entrez [accent]l'adresse IP d'un serveur []pour s'y connecter, ou découvrir un serveur en [accent]réseau local[].\nLe multijoueur en LAN ainsi qu'en WAN est supporté.\n\n[lightgray]Note: Il n'y a pas de liste de serveurs globaux automatiques; Si vous voulez vous connectez à quelqu'un par IP, il faudra d'abord demander à l'hébergeur leur IP.
hostserver = Héberger une partie hostserver = Héberger une partie
@@ -108,7 +131,7 @@ trace.ip = IP: [accent]{0}
trace.id = ID Unique : [accent]{0} trace.id = ID Unique : [accent]{0}
trace.mobile = Client mobile: [accent]{0} trace.mobile = Client mobile: [accent]{0}
trace.modclient = Client personnalisé: [accent]{0} trace.modclient = Client personnalisé: [accent]{0}
invalidid = ID du client invalide! Veillez soumettre un rapport d'erreur. invalidid = ID du client invalide! Veuillez soumettre un rapport d'erreur.
server.bans = Bannis server.bans = Bannis
server.bans.none = Aucun joueur banni trouvé! server.bans.none = Aucun joueur banni trouvé!
server.admins = Administrateurs server.admins = Administrateurs
@@ -140,7 +163,6 @@ server.port = Port:
server.addressinuse = Adresse déjà utilisée! server.addressinuse = Adresse déjà utilisée!
server.invalidport = numéro de port invalide! server.invalidport = numéro de port invalide!
server.error = [crimson]Erreur d'hébergement: [accent]{0} server.error = [crimson]Erreur d'hébergement: [accent]{0}
save.old = Cette sauvegarde provient d'une ancienne version du jeu, et ne peut plus être utilisée.\n\n[lightgray]la compatibilité des anciennes sauvegardes sera bientôt ajoutée dans la version 4.0 stable.
save.new = Nouvelle sauvegarde save.new = Nouvelle sauvegarde
save.overwrite = Êtes-vous sûr de vouloir\n écraser cette sauvegarde ? save.overwrite = Êtes-vous sûr de vouloir\n écraser cette sauvegarde ?
overwrite = Écraser overwrite = Écraser
@@ -174,27 +196,29 @@ warning = Avertissement.
confirm = Confirmer confirm = Confirmer
delete = Supprimer delete = Supprimer
view.workshop = Voir dans le Workshop view.workshop = Voir dans le Workshop
workshop.listing = Éditer le listing du Workshop
ok = OK ok = OK
open = Ouverture open = Ouverture
customize = Personaliser customize = Personnaliser
cancel = Annuler cancel = Annuler
openlink = Ouvrir le lien openlink = Ouvrir le lien
copylink = Copier le lien copylink = Copier le lien
back = Retour back = Retour
data.export = Exporter les Données data.export = Exporter les données
data.import = Importer les Données data.import = Importer les données
data.exported = Données Exportées. data.exported = Données exportées.
data.invalid = Ce ne sont pas des données de jeu valides. data.invalid = Ce ne sont pas des données de jeu valides.
data.import.confirm = L'importation des données externes va effacer[scarlet] toutes[] vos actuelles données de jeu.\n[accent]Ceci ne pourra pas être annulé![]\n\nUne fois les données importées, le jeu quittera immédiatement. data.import.confirm = L'importation des données externes va effacer[scarlet] toutes[] vos actuelles données de jeu.\n[accent]Ceci ne pourra pas être annulé![]\n\nUne fois les données importées, le jeu quittera immédiatement.
classic.export = Exporter les données Classic classic.export = Exporter les données Classic
classic.export.text = [accent]Mindustry[] vient d'avoir une mise à jour majeure.\nDes sauvegardes et/ou des cartes de la version Classic (v3.5 build 40) ont été détectées. Souhaitez-vous exporter ces sauvegardes dans le dossier accueil de votre télephone, pour les utiliser dans Mindustry Classic ? classic.export.text = [accent]Mindustry[] vient d'avoir une mise à jour majeure.\nDes sauvegardes et/ou des cartes de la version Classic (v3.5 build 40) ont été détectées. Souhaitez-vous exporter ces sauvegardes dans le dossier accueil de votre téléphone, pour les utiliser dans Mindustry Classic ?
quit.confirm = Êtes-vous sûr de vouloir quitter? quit.confirm = Êtes-vous sûr de vouloir quitter?
quit.confirm.tutorial = Êtes-vous sur de ce que vous faites?\nLe tutoriel peut être repris dans [accent]Paramètres->Jeu->Reprendre le tutoriel.[] quit.confirm.tutorial = Êtes-vous sur de ce que vous faites?\nLe tutoriel peut être repris dans [accent]Paramètres->Jeu->Reprendre le tutoriel.[]
loading = [accent]Chargement... loading = [accent]Chargement...
reloading = [accent]Rechargement des Mods...
saving = [accent]Sauvegarde... saving = [accent]Sauvegarde...
wave = [accent]Vague {0} wave = [accent]Vague {0}
wave.waiting = [lightgray]Vague dans {0} wave.waiting = [lightgray]Vague dans {0}
wave.waveInProgress = [lightgray]Wave en cours wave.waveInProgress = [lightgray]Vague en cours
waiting = [lightgray]En attente... waiting = [lightgray]En attente...
waiting.players = En attente de joueurs... waiting.players = En attente de joueurs...
wave.enemies = [lightgray]{0} Ennemis restants wave.enemies = [lightgray]{0} Ennemis restants
@@ -210,8 +234,13 @@ map.nospawn = Cette carte n'a pas de base pour qu'un joueur puisse y apparaisse!
map.nospawn.pvp = Cette carte n'a pas de base ennemies pour qu'un joueur ennemi y apparaisse! Ajouter au moins une base [SCARLET] non-orange[] dans l'éditeur. map.nospawn.pvp = Cette carte n'a pas de base ennemies pour qu'un joueur ennemi y apparaisse! Ajouter au moins une base [SCARLET] non-orange[] dans l'éditeur.
map.nospawn.attack = Cette carte n'a aucune base ennemie à attaquer! Veuillez ajouter une base[SCARLET] rouge[] sur cette carte dans l'éditeur. map.nospawn.attack = Cette carte n'a aucune base ennemie à attaquer! Veuillez ajouter une base[SCARLET] rouge[] sur cette carte dans l'éditeur.
map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide. map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide.
map.publish.error = Erreur de Publication de la Carte: {0} map.publish.error = Erreur de publication de la carte: {0}
map.update = Mise à jour de la carte
map.load.error = Erreur lors de la récupération des details depuis le workshop: {0}
map.missing = Cette carte a été supprimée ou déplacée.\n[lightgray]Cette carte a été automatiquement retirée du listing du workshop.
map.publish.confirm = Êtes-vous sûr de vouloir publier cette carte?\n\n[lightgray]Assurez-vous daccepter dabord les CGU du Workshop, sinon vos cartes ne seront pas affichées! map.publish.confirm = Êtes-vous sûr de vouloir publier cette carte?\n\n[lightgray]Assurez-vous daccepter dabord les CGU du Workshop, sinon vos cartes ne seront pas affichées!
map.menu = Sélectionnez ce que vous voulez faire avec cette carte.
map.changelog = Changelog (optionnel):
eula = CGU de Steam eula = CGU de Steam
map.publish = Carte publiée. map.publish = Carte publiée.
map.publishing = [accent]Publication de la carte... map.publishing = [accent]Publication de la carte...
@@ -240,11 +269,11 @@ waves.to = à
waves.boss = Boss waves.boss = Boss
waves.preview = Prévisualiser waves.preview = Prévisualiser
waves.edit = Modifier... waves.edit = Modifier...
waves.copy = Copier dans le Presse-papiers waves.copy = Copier dans le presse-papiers
waves.load = Coller depuis le Presse-papiers waves.load = Coller depuis le presse-papiers
waves.invalid = Vagues invalides dans le Presse-papiers. waves.invalid = Vagues invalides dans le presse-papiers.
waves.copied = Vagues copiées waves.copied = Vagues copiées
waves.none = Aucun enemies définis.\nNotez que les vagues vides seront automatiquement remplacées par une vague générée par défaut. waves.none = Aucun ennemi défini.\nNotez que les vagues vides seront automatiquement remplacées par une vague générée par défaut.
editor.default = [lightgray]<par défaut> editor.default = [lightgray]<par défaut>
details = Détails... details = Détails...
edit = Modifier... edit = Modifier...
@@ -254,11 +283,11 @@ editor.removeunit = Enlever l'unité
editor.teams = Équipe editor.teams = Équipe
editor.errorload = Erreur lors du chargement du fichier:\n[accent]{0} editor.errorload = Erreur lors du chargement du fichier:\n[accent]{0}
editor.errorsave = Erreur lors de la sauvegarde du fichier:\n[accent]{0} editor.errorsave = Erreur lors de la sauvegarde du fichier:\n[accent]{0}
editor.errorimage = Ceci est une image, et non une carte. \n\nSi vous voulez importer une carte provenant de la version 3.5 (build 40), utilisez le bouton 'importer une carte obsolète (image)' dans l'éditeur. editor.errorimage = Ceci est une image, et non une carte.\n\nSi vous voulez importer une carte provenant de la version 3.5 (build 40), utilisez le bouton 'importer une carte obsolète (image)' dans l'éditeur.
editor.errorlegacy = Cette carte est trop ancienne, et utilise un format de carte qui n'est plus supporté. editor.errorlegacy = Cette carte est trop ancienne, et utilise un format de carte qui n'est plus supporté.
editor.errornot = Ceci n'est pas un fichier de carte. editor.errornot = Ceci n'est pas un fichier de carte.
editor.errorheader = Le fichier de carte est invalide ou corrompu. editor.errorheader = Le fichier de carte est invalide ou corrompu.
editor.errorname = La carte n'a pas de nom, essayez vous de charger une sauvegarde? editor.errorname = La carte n'a pas de nom, essayez vous de charger une sauvegarde?
editor.update = Mettre à jour editor.update = Mettre à jour
editor.randomize = Rendre aléatoire editor.randomize = Rendre aléatoire
editor.apply = Appliquer editor.apply = Appliquer
@@ -291,6 +320,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
@@ -301,10 +331,11 @@ toolmode.square = Carré
toolmode.square.description = Pinceau carré. toolmode.square.description = Pinceau carré.
toolmode.eraseores = Effacer les minéraux toolmode.eraseores = Effacer les minéraux
toolmode.eraseores.description = Efface seulement les minéraux. toolmode.eraseores.description = Efface seulement les minéraux.
toolmode.fillteams = Remplire les équipes 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
@@ -336,6 +367,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
@@ -344,20 +376,22 @@ campaign = Campagne
load = Charger load = Charger
save = Sauvegarder save = Sauvegarder
fps = FPS: {0} fps = FPS: {0}
tps = TPS: {0}
ping = Ping: {0}ms ping = Ping: {0}ms
language.restart = Veuillez redémarrez votre jeu pour le changement de langue prenne effet. language.restart = Veuillez redémarrez votre jeu pour que le changement de langue prenne effet.
settings = Paramètres settings = Paramètres
tutorial = Tutoriel tutorial = Tutoriel
tutorial.retake = Re-Take Tutorial tutorial.retake = Rejouer le Tutoriel
editor = Éditeur editor = Éditeur
mapeditor = Éditeur de carte mapeditor = Éditeur de carte
donate = Faire un\ndon donate = Faire un\ndon
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é
complete = [lightgray]Compléter: complete = [lightgray]Compléter:
zone.requirement = Vague {0} dans la zone {1} requirement.wave = Vague {0} dans {1}
requirement.core = Détruire le Noyau ennemi dans {0}
requirement.unlock = Débloque {0}
resume = Reprendre la partie:\n[lightgray]{0} resume = Reprendre la partie:\n[lightgray]{0}
bestwave = [lightgray]Meilleur: {0} bestwave = [lightgray]Meilleur: {0}
launch = < Lancement > launch = < Lancement >
@@ -368,58 +402,64 @@ launch.confirm = Cela va transférer toutes les ressources de votre noyau.\nVous
launch.skip.confirm = Si vous passez à la vague suivante, vous ne pourrez pas effectuer le lancement avant les prochaines vagues. launch.skip.confirm = Si vous passez à la vague suivante, vous ne pourrez pas effectuer le lancement avant les prochaines vagues.
uncover = Découvrir uncover = Découvrir
configure = Modifier les ressources emportées. configure = Modifier les ressources emportées.
configure.locked = [lightgray]Atteignez la vague {0}\npour configurer les ressources emportées. bannedblocks = Blocs bannis
addall = Ajouter tous
configure.locked = [lightgray]Déloquer la configuration des ressources emportées: {0}.
configure.invalid = Le montant doit être un nombre compris entre 0 et {0}. configure.invalid = Le montant doit être un nombre compris entre 0 et {0}.
zone.unlocked = [lightgray]{0} Débloquée. zone.unlocked = [lightgray]{0} Débloquée.
zone.requirement.complete = Vague {0} atteinte:\n{1} Exigences de la zone complétées zone.requirement.complete = Exigences pour {0} complétées:[lightgray]\n{1}
zone.config.complete = Vague {0} atteinte:\nConfiguration des ressources emportées possible. zone.config.unlocke = Configuration des ressources emportées débloquée:[lightgray]\n{0}
zone.resources = [lightgray]Ressources détectées: zone.resources = [lightgray]Ressources détectées:
zone.objective = [lightgray]Objective: [accent]{0} zone.objective = [lightgray]Objectif: [accent]{0}
zone.objective.survival = Survivre 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.
error.timedout = Délai de connexion dépassé!\nAssurez-vous que l'hôte a autorisé l'accès au port (port forwarding), et que l'adresse soit correcte! error.timedout = Délai de connexion dépassé!\nAssurez-vous que l'hôte a autorisé l'accès au port (port forwarding), et que l'adresse soit correcte!
error.mismatch = Erreur de paquet:\nPossible différence de verison entre le client et le serveur .\nVérifiez que vous et l'hôte avez la version de Mindustry la plus recente! error.mismatch = Erreur de paquet:\nPossible différence de version entre le client et le serveur .\nVérifiez que vous et l'hôte avez la version de Mindustry la plus récente!
error.alreadyconnected = Déjà connecté. error.alreadyconnected = Déjà connecté.
error.mapnotfound = Carte introuvable! 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 = Echec 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
zone.frozenForest.name = Forêt Glaciale zone.frozenForest.name = Forêt Glaciale
zone.ruinousShores.name = Rives en Ruine zone.ruinousShores.name = Rives en Ruine
zone.stainedMountains.name = Montagnes Tâchetées zone.stainedMountains.name = Montagnes Tachetées
zone.desolateRift.name = Ravin Abandonné zone.desolateRift.name = Ravin Abandonné
zone.nuclearComplex.name = Complexe Nucléaire zone.nuclearComplex.name = Complexe Nucléaire
zone.overgrowth.name = Surcroissance Végétale zone.overgrowth.name = Friche Végétale
zone.tarFields.name = Champs de Pétrole zone.tarFields.name = Champs de Pétrole
zone.saltFlats.name = Marais Salants 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. Aprenez 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évisibles. On y croise des structures abandonnées.\nLe charbon est présent dans la région. Brulez-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.
zone.saltFlats.description = Aux abords du désert se trouvent les Marais Salants. Peu de ressources peuvent être trouvées à cet endroit.\n\nL'ennemi y a érigé un stockage de ressources. Éradiquez leur présence. zone.saltFlats.description = Aux abords du désert se trouvent les Marais Salants. Peu de ressources peuvent être trouvées à cet endroit.\n\nL'ennemi y a érigé un stockage de ressources. Éradiquez leur présence.
zone.craters.description = L'eau s'est accumulée dans ce cratère, vestige des guerres anciennes. Récupérez la zone. Recueilliez du sable pour le transformer en verre trempé. Pompez de l'eau pour refroidir les tourelles et les perceuses. zone.craters.description = L'eau s'est accumulée dans ce cratère, vestige des guerres anciennes. Récupérez la zone. Recueilliez du sable pour le transformer en verre trempé. Pompez de l'eau pour refroidir les tourelles et les perceuses.
zone.ruinousShores.description = Passé les contrées désertiques, c'est le rivage. Auparavent, cet endroit a abrité un réseau de défense côtière. Il n'en reste pas beaucoup. Seules les structures de défense les plus élémentaires sont restées indemnes, tout le reste étant réduit à néant.\nÉtendez vous. Redécouvrez la technologie. zone.ruinousShores.description = Passé les contrées désertiques, c'est le rivage. Auparavant, cet endroit a abrité un réseau de défense côtière. Il n'en reste pas grand chose. Seules les structures de défense les plus élémentaires sont restées indemnes, tout le reste étant réduit à néant.\nÉtendez vous. Redécouvrez la technologie.
zone.stainedMountains.description = A l'intérieur des terres se trouvent des montagnes, épargnées par les spores. Extrayez le titane qui abonde dans cette région. Apprenez à vous en servir. La menace ennemi se fait plus présente ici. Ne leur donnez pas le temps de rallier leurs puissantes unités. zone.stainedMountains.description = A l'intérieur des terres se trouvent des montagnes, épargnées par les spores. Extrayez le titane qui abonde dans cette région. Apprenez à vous en servir. La menace ennemi se fait plus présente ici. Ne leur donnez pas le temps de rallier leurs puissantes unités.
zone.overgrowth.description = Cette zone est étouffée par la végétation, et proche de la source des spores.\nLennemi a établi une base ici. Construisez des unitées Titan pour le détruire. Reprennez ce qui a été perdu. zone.overgrowth.description = Cette zone est envahie par la végétation, et proche de la source des spores.\nLennemi a établi une base ici. Construisez des unités Titan pour le détruire. Reprenez ce qui a été perdu.
zone.tarFields.description = La périphérie d'une zone de puits pétroliers, entre montagnes et désert. Une des rares zones disposant de réserves de Pétrole utilisables. Bien qu'abandonnée, cette zone compte des forces ennemies dangereuses à proximité. Ne les sous-estimez pas.\n\n[lightgray]Si possible, recherchez les technologie de traitement d'huile. zone.tarFields.description = La périphérie d'une zone de puits pétroliers, entre montagnes et désert. Une des rares zones disposant de réserves de Pétrole utilisables. Bien qu'abandonnée, cette zone compte des forces ennemies dangereuses à proximité. Ne les sous-estimez pas.\n\n[lightgray]Si possible, recherchez les technologies de traitement du pétrole
zone.desolateRift.description = Une zone extrêmement dangereuse. Ressources abondantes, mais peu d'espace. Fort risque de destruction. Repartez le plus vite possible. Ne vous laissez pas berner par une longue attente entre deux vagues ennemies. zone.desolateRift.description = Une zone extrêmement dangereuse. Ressources abondantes, mais peu d'espace. Fort risque de destruction. Repartez le plus vite possible. Ne vous laissez pas berner par une longue attente entre deux vagues ennemies.
zone.nuclearComplex.description = Une ancienne installation de production et traitement de thorium réduite en ruines.\n[lightgray]Faites des recherches sur le thorium et ses nombreuses utilisations.\n\nL'ennemi est présent ici en grand nombre, à l'affut constant. zone.nuclearComplex.description = Une ancienne installation de production et traitement de thorium réduite en ruines.\n[lightgray]Faites des recherches sur le thorium et ses nombreuses utilisations.\n\nL'ennemi est présent ici en grand nombre, constamment à l'affut.
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
settings.rebind = Réattribuer settings.rebind = Réattribuer
settings.controls = Contrôles settings.controls = Contrôles
settings.game = Jeu settings.game = Jeu
@@ -427,16 +467,15 @@ settings.sound = Son
settings.graphics = Graphismes settings.graphics = Graphismes
settings.cleardata = Effacer les données du jeu... settings.cleardata = Effacer les données du jeu...
settings.clear.confirm = Êtes-vous sûr d'effacer ces données ?\nAucun retour en arrière n'est possible! settings.clear.confirm = Êtes-vous sûr d'effacer ces données ?\nAucun retour en arrière n'est possible!
settings.clearall.confirm = [scarlet]ATTENTION![]\nCet action effacera toutes les données, y conpris les sauvegarges, les cartes, la progression et la configuration des touches.\nUne fois que vous aurez pressé 'ok' le jeu effacera TOUTES les données et se fermera. settings.clearall.confirm = [scarlet]ATTENTION![]\nCette action effacera toutes les données, y compris les sauvegardes, les cartes, la progression et la configuration des touches.\nUne fois que vous aurez pressé 'ok' le jeu effacera TOUTES les données et se fermera.
settings.clearunlocks = Effacer la progression
settings.clearall = Tout effacer
paused = [accent]< Pause > paused = [accent]< Pause >
clear = Effacer
banned = [scarlet]Bannis
yes = Oui yes = Oui
no = Non 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
attackpvponly = [scarlet]Seulement disponible dans les modes Attaque et PvP
blocks.input = Input blocks.input = Input
blocks.output = Output blocks.output = Output
blocks.booster = Booster blocks.booster = Booster
@@ -458,20 +497,21 @@ blocks.itemcapacity = Stockage
blocks.basepowergeneration = Taux d'énergie normale blocks.basepowergeneration = Taux d'énergie normale
blocks.productiontime = Durée de production blocks.productiontime = Durée de production
blocks.repairtime = Durée de Réparation Complète du Bloc blocks.repairtime = Durée de Réparation Complète du Bloc
blocks.speedincrease = Accéleration blocks.speedincrease = Accélération
blocks.range = Portée blocks.range = Portée
blocks.drilltier = Forable blocks.drilltier = Forable
blocks.drillspeed = Vitesse de forage de base blocks.drillspeed = Vitesse de forage de base
blocks.boosteffect = Boost Effect blocks.boosteffect = Effet du Boost
blocks.maxunits = Unités actives max blocks.maxunits = Unités actives max
blocks.health = Santé blocks.health = Santé
blocks.buildtime = Durée de construction blocks.buildtime = Durée de construction
blocks.buildcost = Coût de Construction blocks.buildcost = Coût de construction
blocks.inaccuracy = Imprécision 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 Ameliorée Requise
bar.drilltierreq = Foreuse Améliorée Requise
bar.drillspeed = Vitesse de forage: {0}/s bar.drillspeed = Vitesse de forage: {0}/s
bar.efficiency = Efficacité: {0}% bar.efficiency = Efficacité: {0}%
bar.powerbalance = Énergie: {0}/s bar.powerbalance = Énergie: {0}/s
@@ -485,6 +525,7 @@ 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}
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
@@ -496,6 +537,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
@@ -520,15 +562,15 @@ setting.shadows.name = Ombres
setting.linear.name = Filtrage Linéaire setting.linear.name = Filtrage Linéaire
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écéssaire)[] setting.antialias.name = Antialias[lightgray] (redémarrage du jeu nécessaire)[]
setting.indicators.name = Indicateurs Alliés/Ennemis setting.indicators.name = Indicateurs Alliés/Ennemis
setting.autotarget.name = Visée automatique setting.autotarget.name = Visée automatique
setting.keyboard.name = Controles Sourie+Clavier setting.keyboard.name = Contrôles Souris+Clavier
setting.touchscreen.name = Commandes d'Écran Tactile setting.touchscreen.name = Commandes d'Écran Tactile
setting.fpscap.name = FPS Max setting.fpscap.name = FPS Max
setting.fpscap.none = Aucun setting.fpscap.none = Aucun
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.uiscale.name = Échelle de l'interface[lightgray] (redémarrage du jeu nécéssaire)[] setting.uiscale.name = Échelle de l'interface[lightgray] (redémarrage du jeu nécessaire)[]
setting.swapdiagonal.name = Autoriser le placement en diagonale setting.swapdiagonal.name = Autoriser le placement en diagonale
setting.difficulty.training = Entraînement setting.difficulty.training = Entraînement
setting.difficulty.easy = Facile setting.difficulty.easy = Facile
@@ -542,12 +584,11 @@ 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.fullscreen.name = Plein Écran setting.fullscreen.name = Plein Écran
setting.borderlesswindow.name = Fenêtre sans bords (Borderless)[lightgray] (peut requérir 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.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Afficher les connections Électriques
setting.pixelate.name = Pixeliser[lightgray] (désactive les animations) setting.pixelate.name = Pixeliser[lightgray] (désactive les animations)
setting.minimap.name = Montrer la Minimap setting.minimap.name = Afficher la Minimap
setting.musicvol.name = Volume Musique setting.musicvol.name = Volume Musique
setting.ambientvol.name = Volume Ambiant setting.ambientvol.name = Volume Ambiant
setting.mutemusic.name = Couper la Musique setting.mutemusic.name = Couper la Musique
@@ -557,12 +598,14 @@ setting.crashreport.name = Envoyer un Rapport de Crash Anonyme
setting.savecreate.name = Sauvegardes Auto setting.savecreate.name = Sauvegardes Auto
setting.publichost.name = Visibilité de la Partie Publique setting.publichost.name = Visibilité de la Partie Publique
setting.chatopacity.name = Opacité du Chat setting.chatopacity.name = Opacité du Chat
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Montrer le Chat setting.playerchat.name = Montrer le Chat
uiscale.reset = L'échelle de l'interface a été modifiée.\nAppuyez sur "OK" pour confirmer.\n[scarlet]Rétablissement aux parametres d'avant et fermeture dans [accent] {0}[]... public.confirm = Voulez-vous rendre votre partie publique?\n[lightgray]Ce paramètre peut être changé plus tard dans Paramètres->Jeu->Visibilité de la Partie Publique
uiscale.reset = L'échelle de l'interface a été modifiée.\nAppuyez sur "OK" pour confirmer.\n[scarlet]Rétablissement aux paramètres d'avant et fermeture dans [accent] {0}[]...
uiscale.cancel = Annuler & Quitter uiscale.cancel = Annuler & Quitter
setting.bloom.name = Flou lumineux setting.bloom.name = Flou lumineux
keybind.title = Racourcis Clavier keybind.title = Raccourcis Clavier
keybinds.mobile = [scarlet]La plupart des racourcis claviers ne sont pas fonctionnels sur mobile. Seuls les mouvements basiques sont supportés. keybinds.mobile = [scarlet]La plupart des raccourcis claviers ne sont pas fonctionnels sur mobile. Seuls les mouvements basiques sont supportés.
category.general.name = Général category.general.name = Général
category.view.name = Voir category.view.name = Voir
category.multiplayer.name = Multijoueur category.multiplayer.name = Multijoueur
@@ -580,10 +623,10 @@ 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
keybind.pick.name = Choisir un bloc keybind.pick.name = Choisir un bloc
keybind.break_block.name = Suppprimer un bloc keybind.break_block.name = Supprimer un bloc
keybind.deselect.name = Désélectionner keybind.deselect.name = Désélectionner
keybind.shoot.name = Tirer keybind.shoot.name = Tirer
keybind.zoom_hold.name = Maintenir le zoom keybind.zoom_hold.name = Maintenir pour zoomer
keybind.zoom.name = Zoom keybind.zoom.name = Zoom
keybind.menu.name = Menu keybind.menu.name = Menu
keybind.pause.name = Pause keybind.pause.name = Pause
@@ -593,6 +636,7 @@ 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.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
@@ -601,14 +645,16 @@ 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écéssite 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.
mode.sandbox.name = Bac à sable mode.sandbox.name = Bac à sable
mode.sandbox.description = Ressources infinies et pas de minuterie pour les vagues. mode.sandbox.description = Ressources infinies et pas de minuterie pour les vagues.
mode.editor.name = Editeur
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = Battez-vous contre d'autres joueurs en local.\n[gray]Requiert aux moins 2 noyaux de couleur différentes dans la carte pour y jouer. mode.pvp.description = Battez-vous contre d'autres joueurs en local.\n[gray]Requiert aux moins 2 noyaux de couleur différentes dans la carte pour y jouer.
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.wavetimer = Minuterie pour les vagues rules.wavetimer = Minuterie pour les vagues
rules.waves = Vagues rules.waves = Vagues
@@ -619,9 +665,9 @@ rules.unitbuildspeedmultiplier = Multiplicateur de Vitesse de Construction d'Uni
rules.unithealthmultiplier = Multiplicateur de Santé des Unités rules.unithealthmultiplier = Multiplicateur de Santé des Unités
rules.playerhealthmultiplier = Multiplicateur de Santé des Joueurs rules.playerhealthmultiplier = Multiplicateur de Santé des Joueurs
rules.playerdamagemultiplier = Multiplicateur des Dégâts Joueurs rules.playerdamagemultiplier = Multiplicateur des Dégâts Joueurs
rules.unitdamagemultiplier = Multiplicateur des Dégats Unité rules.unitdamagemultiplier = Multiplicateur des dégâts Unité
rules.enemycorebuildradius = Périmètre de non-construction du noyau ennemi:[lightgray] (blocs) rules.enemycorebuildradius = Périmètre de non-construction du noyau ennemi:[lightgray] (blocs)
rules.respawntime = Durée de réaparition:[lightgray] (sec) rules.respawntime = Durée de réapparition:[lightgray] (sec)
rules.wavespacing = Espacement des vagues:[lightgray] (sec) rules.wavespacing = Espacement des vagues:[lightgray] (sec)
rules.buildcostmultiplier = Multiplicateur du prix de construction rules.buildcostmultiplier = Multiplicateur du prix de construction
rules.buildspeedmultiplier = Multiplicateur du temps de construction rules.buildspeedmultiplier = Multiplicateur du temps de construction
@@ -635,6 +681,7 @@ 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
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
@@ -674,7 +721,7 @@ mech.omega-mech.weapon = Missiles Essaim
mech.omega-mech.ability = Armure mech.omega-mech.ability = Armure
mech.dart-ship.name = Dard mech.dart-ship.name = Dard
mech.dart-ship.weapon = Mitraillette mech.dart-ship.weapon = Mitraillette
mech.javelin-ship.name = Javelin mech.javelin-ship.name = Javelot
mech.javelin-ship.weapon = Missiles Rafale mech.javelin-ship.weapon = Missiles Rafale
mech.javelin-ship.ability = Décharge de Propulseur mech.javelin-ship.ability = Décharge de Propulseur
mech.trident-ship.name = Trident mech.trident-ship.name = Trident
@@ -696,6 +743,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
@@ -706,14 +754,14 @@ block.sandrocks.name = Roches de sable
block.spore-pine.name = Pin Sporifié block.spore-pine.name = Pin Sporifié
block.sporerocks.name = Roche Sporeuse block.sporerocks.name = Roche Sporeuse
block.rock.name = Roche block.rock.name = Roche
block.snowrock.name = Roches enneigés block.snowrock.name = Roches enneigées
block.snow-pine.name = Pin enneigé block.snow-pine.name = Pin enneigé
block.shale.name = Schiste block.shale.name = Schiste
block.shale-boulder.name = Blocs de Schiste block.shale-boulder.name = Blocs de Schiste
block.moss.name = Mousse block.moss.name = Mousse
block.shrubs.name = Arbustes block.shrubs.name = Arbustes
block.spore-moss.name = Mousse Sporeuse block.spore-moss.name = Mousse Sporeuse
block.shalerocks.name = Rochets de de Schiste Argileux block.shalerocks.name = Rochers de Schiste Argileux
block.scrap-wall.name = Mur de Ferraille block.scrap-wall.name = Mur de Ferraille
block.scrap-wall-large.name = Mur de Ferraille Large block.scrap-wall-large.name = Mur de Ferraille Large
block.scrap-wall-huge.name = Mur de Ferraille Énorme block.scrap-wall-huge.name = Mur de Ferraille Énorme
@@ -729,8 +777,8 @@ block.core-foundation.name = Noyau: Fondation
block.core-nucleus.name = Noyau: Épicentre block.core-nucleus.name = Noyau: Épicentre
block.deepwater.name = Eau profonde block.deepwater.name = Eau profonde
block.water.name = Eau block.water.name = Eau
block.tainted-water.name = Eau Teintée block.tainted-water.name = Eau Contaminée
block.darksand-tainted-water.name = Sable Teinté d'Eau Sombre block.darksand-tainted-water.name = Sable Sombre Mouillé Contaminé
block.tar.name = Pétrole block.tar.name = Pétrole
block.stone.name = Roche block.stone.name = Roche
block.sand.name = Sable block.sand.name = Sable
@@ -739,7 +787,7 @@ block.ice.name = Glace
block.snow.name = Neige block.snow.name = Neige
block.craters.name = Cratères block.craters.name = Cratères
block.sand-water.name = Sable Mouillé block.sand-water.name = Sable Mouillé
block.darksand-water.name = Sable Mouillé Sombre block.darksand-water.name = Sable Sombre Mouillé
block.char.name = Cendre block.char.name = Cendre
block.holostone.name = Pierre Holographique block.holostone.name = Pierre Holographique
block.ice-snow.name = Neige Gelée block.ice-snow.name = Neige Gelée
@@ -800,9 +848,9 @@ block.melter.name = Four à Fusion
block.incinerator.name = Incinérateur block.incinerator.name = Incinérateur
block.spore-press.name = Presse à Spore block.spore-press.name = Presse à Spore
block.separator.name = Séparateur block.separator.name = Séparateur
block.coal-centrifuge.name = Centrifuge à Charbon 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 = Gros 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.battery.name = Batterie block.battery.name = Batterie
block.battery-large.name = Grande Batterie block.battery-large.name = Grande Batterie
@@ -817,7 +865,7 @@ block.water-extractor.name = Extracteur d'Eau
block.cultivator.name = Cultivateur block.cultivator.name = Cultivateur
block.dart-mech-pad.name = Reconstructeur de Mécha Dard block.dart-mech-pad.name = Reconstructeur de Mécha Dard
block.delta-mech-pad.name = Reconstructeur de Mécha Delta block.delta-mech-pad.name = Reconstructeur de Mécha Delta
block.javelin-ship-pad.name = Reconstructeur de Vaisseau Javelin block.javelin-ship-pad.name = Reconstructeur de Vaisseau Javelot
block.trident-ship-pad.name = Reconstructeur de Vaisseau Trident block.trident-ship-pad.name = Reconstructeur de Vaisseau Trident
block.glaive-ship-pad.name = Reconstructeur de Vaisseau Glaive block.glaive-ship-pad.name = Reconstructeur de Vaisseau Glaive
block.omega-mech-pad.name = Reconstructeur de Mécha Oméga block.omega-mech-pad.name = Reconstructeur de Mécha Oméga
@@ -852,7 +900,7 @@ block.ghoul-factory.name = Usine de Bombardiers Goules
block.dagger-factory.name = Usine de Méchas Poignards block.dagger-factory.name = Usine de Méchas Poignards
block.crawler-factory.name = Usine de Méchas Rampeurs block.crawler-factory.name = Usine de Méchas Rampeurs
block.titan-factory.name = Usine de Méchas Titans block.titan-factory.name = Usine de Méchas Titans
block.fortress-factory.name = Usine de Méchas Forteresse 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
@@ -908,26 +956,27 @@ 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.[]\nCommence en minant du [accent]cuivre[]. Pour cela, appuyez sur une veine de minerai de cuivre près de votre noyau.\n\n[accent]{0}/{1} cuivre tutorial.intro = Vous venez de commencer le [scarlet]Tutoriel de Mindustry.[]\nCommence en minant du [accent]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.\nSelectionnez 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.\nSelectionnez 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]boutton 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.
tutorial.blockinfo = Chaque bloc a des statistiques différentes. Chaque foreuse ne peut miner que certains minerais.\nPour vérifier les informations et les statistiques d'un bloc, appuyez sur le [accent]bouton "?" tout en le sélectionnant dans le menu de construction.[]\n\n[accent]Maintenant, accédez aux statistiques de la foreuse mécanique.[] tutorial.blockinfo = Chaque bloc a des statistiques différentes. Chaque foreuse ne peut miner que certains minerais.\nPour vérifier les informations et les statistiques d'un bloc, appuyez sur le [accent]bouton "?" tout en le sélectionnant dans le menu de construction.[]\n\n[accent]Maintenant, accédez aux statistiques de la foreuse mécanique.[]
tutorial.conveyor = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaite une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent]Maintenez votre souris pour les placer en ligne.[]\nGardez la touche[accent] CTRL[] enfoncé pour pouvoir les placer en diagonale.\n\n[accent]{0}/{1} convoyeurs placé en ligne\n[accent]0/1 ressources acheminées tutorial.conveyor = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaite une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent]Maintenez votre souris pour les placer en ligne.[]\nGardez la touche[accent] CTRL[] enfoncé pour pouvoir les placer en diagonale.\n\n[accent]{0}/{1} convoyeurs placé en ligne\n[accent]0/1 ressources acheminées
tutorial.conveyor.mobile = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaite une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent] Maintenez votre doigt enfoncé[] et deplacez-le pour former une ligne.\n\n[accent]{0}/{1} convoyeurs placé en ligne\n[accent]0/1 ressources acheminées tutorial.conveyor.mobile = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaite une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent] Maintenez votre doigt enfoncé[] et déplacez-le pour former une ligne.\n\n[accent]{0}/{1} convoyeurs placé en ligne\n[accent]0/1 ressources acheminées
tutorial.turret = Une fois qu'une ressource rentre dans votre noyau, elle peut être utilisé pour la construction.\nGardez à l'esprit que certaines ressources ne peuvent pas être utilisés pour la construction.\nCes ressources, tel que[accent] le charbon[] ou[accent] la ferraille[], ne peuvent pas rentrer dans votre noyau.\nDes structures défensives doivent être construites pour repousser l'[lightgray] ennemi[].\nConstruisez une [accent]tourrelle Duo[] non loin de votre noyau. tutorial.turret = Une fois qu'une ressource rentre dans votre noyau, elle peut être utilisée pour la construction.\nGardez à l'esprit que certaines ressources ne peuvent pas être utilisées pour la construction.\nCes ressources, tel que[accent] le charbon[] ou[accent] la ferraille[], ne peuvent pas rentrer dans votre noyau.\nDes structures défensives doivent être construites pour repousser l'[lightgray] ennemi[].\nConstruisez une [accent]tourelle Duo[] non loin de votre noyau.
tutorial.drillturret = Les tourrelles Duo ont besoin de[accent] munitions en cuivre []pour tirer.\nPlacez une foreuse près de la tourelle.\nA l'aide de convoyeurs, alimentez la tourelle en cuivre.\n\n[accent]Munitions livrées: 0/1 tutorial.drillturret = Les tourelles Duo ont besoin de[accent] munitions en cuivre []pour tirer.\nPlacez une foreuse près de la tourelle.\nA l'aide de convoyeurs, alimentez la tourelle en cuivre.\n\n[accent]Munitions livrées: 0/1
tutorial.pause = Pendant les batailles, vous pouvez mettre [accent]le jeu en pause.[]\nVous pouvez placer des batiments à construire tout en étant en pause.\n\n[accent]Appuyez sur la barre espace pour pauser. tutorial.pause = Pendant les batailles, vous pouvez mettre [accent]le jeu en pause.[]\nVous pouvez placer des bâtiments à construire tout en étant en pause.\n\n[accent]Appuyez sur la barre espace pour pauser.
tutorial.pause.mobile = Pendant les batailles, vous pouvez mettre [accent]le jeu en pause.[]\nVous pouvez placer des batiments à construire tout en étant en pause.\n\n[accent]Appuyez sur ce bouton en haut à gauche pour pauser. tutorial.pause.mobile = Pendant les batailles, vous pouvez mettre [accent]le jeu en pause.[]\nVous pouvez placer des bâtiments à construire tout en étant en pause.\n\n[accent]Appuyez sur ce bouton en haut à gauche pour pauser.
tutorial.unpause = Maintenant, appuyez à nouveau sur espace pour continuer à jouer. tutorial.unpause = Maintenant, appuyez à nouveau sur espace pour continuer à jouer.
tutorial.unpause.mobile = Appuyez à nouveau dessus pour continuer à jouer. tutorial.unpause.mobile = Appuyez à nouveau dessus pour continuer à jouer.
tutorial.breaking = Les blocs doivent souvent être détruits.\n[accent]Gardez enfoncé le boutton de droite de votre souri[] pour détruire tous les blocs en une sélection.[]\n\n[accent]Détruisez tous les blocs de ferraille situés à gauche de votre noyau à l'aide de la sélection de zone. tutorial.breaking = Les blocs doivent souvent être détruits.\n[accent]Gardez enfoncé le bouton droit de votre souris[] pour détruire tous les blocs en une sélection.[]\n\n[accent]Détruisez tous les blocs de ferraille situés à gauche de votre noyau à l'aide de la sélection de zone.
tutorial.breaking.mobile = Les blocs doivent souvent être détruits.\n[accent]Selectionnez le mode de déconstruction[], puis appuyez sur un bloc pour commencer à le détruire.\nDétruisez une zone en maintenant votre doigt appuyé pendant quelques secondes[] et en le déplacant dans une direction.\nAppuyez sur le bouton coche pour confirmer.\n\n[accent]Détruisez tous les blocs de ferraille situés à gauche de votre noyau à l'aide de la sélection de zone. tutorial.breaking.mobile = Les blocs doivent souvent être détruits.\n[accent]Sélectionnez le mode de déconstruction[], puis appuyez sur un bloc pour commencer à le détruire.\nDétruisez une zone en maintenant votre doigt appuyé pendant quelques secondes[] et en le déplaçant dans une direction.\nAppuyez sur le bouton coche pour confirmer.\n\n[accent]Détruisez tous les blocs de ferraille situés à gauche de votre noyau à l'aide de la sélection de zone.
tutorial.withdraw = Dans certaines situations, il est nécessaire de prendre des éléments directement à partir de blocs.\nPour faire cela, [accent]appuyez sur un bloc[] qui contient des ressources, puis [accent]appuyez sur une ressource[] dans son inventaire.\nPlusieurs ressources peuvent être retirés en [accent]appuyant pendant quelque secondes[].\n\n[accent]Retirez du cuivre du noyau.[] tutorial.withdraw = Dans certaines situations, il est nécessaire de prendre des éléments directement à partir de blocs.\nPour faire cela, [accent]appuyez sur un bloc[] qui contient des ressources, puis [accent]appuyez sur une ressource[] dans son inventaire.\nPlusieurs ressources peuvent être retirées en [accent]appuyant pendant quelques secondes[].\n\n[accent]Retirez du cuivre du noyau.[]
tutorial.deposit = Déposez des ressources dans des blocs en les faisant glisser de votre vaisseau vers le bloc de destination.\n\n[accent]Déposez le cuivre récupéré précedemment dans le noyau.[] tutorial.deposit = Déposez des ressources dans des blocs en les faisant glisser de votre vaisseau vers le bloc de destination.\n\n[accent]Déposez le cuivre récupéré précédemment dans le noyau.[]
tutorial.waves = L'[lightgray] ennemi[] approche.\n\nDefend le noyau pendant 2 vagues.[accent] Clique[] 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\nDefend 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 atteind une vague spécifique, vous aurez la possibilité de[accent] faire décoler le noyau[], abandonant vos défenses mais en [accent]sécurisant toutes les ressources de 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 trasports 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.
item.graphite.description = Du carbone minéralisé, utilisé pour les munitions et lisolation électrique. item.graphite.description = Du carbone minéralisé, utilisé pour les munitions et lisolation électrique.
item.sand.description = Un matériau commun utilisé largement dans la fonte, à la fois dans l'alliage et comme un flux. item.sand.description = Un matériau commun utilisé largement dans la fonte, à la fois dans l'alliage et comme un flux.
@@ -938,150 +987,150 @@ item.scrap.description = Restes de vieilles structures et unités. Contient des
item.silicon.description = Un matériau semi-conducteur extrêmement utile, avec des utilisations dans les panneaux solaires et dans beaucoup d'autre composants électroniques complexes. item.silicon.description = Un matériau semi-conducteur extrêmement utile, avec des utilisations dans les panneaux solaires et dans beaucoup d'autre composants électroniques complexes.
item.plastanium.description = Un matériau léger et ductile utilisé dans l'aviation avancée et dans les munitions à fragmentation. item.plastanium.description = Un matériau léger et ductile utilisé dans l'aviation avancée et dans les munitions à fragmentation.
item.phase-fabric.description = Une substance au poids quasiment inexistant utilisé pour l'électronique avancé et la technologie auto-réparatrice. item.phase-fabric.description = Une substance au poids quasiment inexistant utilisé pour l'électronique avancé et la technologie auto-réparatrice.
item.surge-alloy.description = Un alliage avancé avec des propriétés électriques avancées. item.surge-alloy.description = Un alliage avancé avec des propriétés électriques uniques.
item.spore-pod.description = Une gousse de spores synthétiques, synthétisées à partir de concentrations atmosphériques à des fins industrielles. Utilisé pour la conversion en huile, explosifs et carburant. item.spore-pod.description = Une gousse de spores synthétiques, synthétisées à partir de concentrations atmosphériques à des fins industrielles. Utilisé pour la conversion en pétrole, explosifs et carburant.
item.blast-compound.description = Un composé volatile utilisé dans les bombes et les explosifs. Bien qu'il puisse être utilisé comme carburant, ce n'est pas conseillé. item.blast-compound.description = Un composé volatile utilisé dans les bombes et les explosifs. Bien qu'il puisse être utilisé comme carburant, ce n'est pas conseillé.
item.pyratite.description = Une substance extrêmement inflammable utilisée dans les armes incendiaires. item.pyratite.description = Une substance extrêmement inflammable utilisée dans les armes incendiaires.
liquid.water.description = Le liquide le plus utile. Couramment utilisé pour le refroidissement et le traitement des déchets. liquid.water.description = Le liquide le plus utile. Couramment utilisé pour le refroidissement et le traitement des déchets.
liquid.slag.description = Différents types de métaux en fusion mélangés. Peut être séparé en ses minéraux constitutifs ou tout simplement pulvérisé sur les unités ennemies. liquid.slag.description = Différents types de métaux en fusion mélangés. Peut être séparé en ses minéraux constitutifs ou tout simplement pulvérisé sur les unités ennemies.
liquid.oil.description = Un liquide utilisé dans la production de matériaux avancés. Peut être brûlé, utilisé comme explosif ou comme liquide de refroidissement. liquid.oil.description = Un liquide utilisé dans la production de matériaux avancés. Peut être transformé en charbon ou pulvérisé sur les ennemis puis enflammé.
liquid.cryofluid.description = Un liquide inerte, non corrosif, créé à partir deau et de titane. A une capacité d'absorption de chaleur extrêmement élevée. Utilisé intensivement comme liquide de refroidissement. liquid.cryofluid.description = Un liquide inerte, non corrosif, créé à partir deau et de titane. A une capacité d'absorption de chaleur extrêmement élevée. Utilisé intensivement comme liquide de refroidissement.
mech.alpha-mech.description = Le mécha standard. Est basé sur une unité Poignard, avec une armure améliorée et des capacités de construction. Inflige plus de dégâts qu'un vaisseau Dard. mech.alpha-mech.description = Le mécha standard. Est basé sur une unité Poignard, avec une armure améliorée et des capacités de construction. Inflige plus de dégâts qu'un vaisseau Dard.
mech.delta-mech.description = Un mécha rapide, avec une armure légère, concu pour les attaques de frappe. Il inflige, par contre, peu de dégâts aux structures. Néanmoins il peut tuer de grand groupes d'ennemis très rapidement avec ses arcs électriques. mech.delta-mech.description = Un mécha rapide, avec une armure légère, conçu pour les attaques de frappe. Il inflige, par contre, peu de dégâts aux structures. Néanmoins il peut tuer de grand groupes d'ennemis très rapidement avec ses arcs électriques.
mech.tau-mech.description = Un mécha de support. Soigne les blocs alliés en tirant dessus. Il peut aussi éteindre les feux et soigner ses alliés en zone avec sa compétence. mech.tau-mech.description = Un mécha de support. Soigne les blocs alliés en tirant dessus. Il peut aussi éteindre les feux et soigner ses alliés en zone avec sa compétence.
mech.omega-mech.description = Un mécha cuirassé et large fait pour les assauts frontaux. Sa compétence lui permet de bloquer 90% des dégâts. mech.omega-mech.description = Un mécha cuirassé et large fait pour les assauts frontaux. Sa compétence lui permet de bloquer 90% des dégâts.
mech.dart-ship.description = Le vaisseau standard. Raisonnablement rapide et léger. Il a néanmoins peu d'attaque et une faible vitesse de minage. mech.dart-ship.description = Le vaisseau standard. Raisonnablement rapide et léger. Il a néanmoins peu d'attaque et une faible vitesse de minage.
mech.javelin-ship.description = Un vaisseau de frappe qui, bien que lent au départ, peut accélerer pour atteindre de très grandes vitesses et voler jusqu'aux avant-postes ennemis, faisant d'énormes dégâts avec ses arc électriques obtenus à vitesse maximum et ses missiles. mech.javelin-ship.description = Un vaisseau de frappe éclair qui, bien que lent au départ, peut accélérer pour atteindre de très grandes vitesses et voler jusqu'aux avant-postes ennemis, faisant d'énormes dégâts avec ses arc électriques obtenus à vitesse maximum et ses missiles.
mech.trident-ship.description = Un bombardier lourd, concu pour la construction et pour la destruction des fortifications ennemies. Assez bien blindé. mech.trident-ship.description = Un bombardier lourd, conçu pour la construction et pour la destruction des fortifications ennemies. Assez bien blindé.
mech.glaive-ship.description = Un grand vaisseau de combat cuirassé. Equipé avec un fusil automatique à munitions incendiaires. Est très maniable. mech.glaive-ship.description = Un grand vaisseau de combat cuirassé. Équipé avec un fusil automatique à munitions incendiaires. Est très maniable.
unit.draug.description = Un drone de minage primitif pas cher à produire. Sacrifiable. Mine automatiquement le cuivre et le plomb dans les environs. Fournit les ressources minées au noyau le plus proche. unit.draug.description = Un drone de minage primitif pas cher à produire. Sacrifiable. Mine automatiquement le cuivre et le plomb dans les environs. Fournit les ressources minées au noyau le plus proche.
unit.spirit.description = Un drone Draug modifié, conçu pour réparer au lieu dexploiter. Répare automatiquement tous les blocs endommagés dans la zone. unit.spirit.description = Un drone Draug modifié, conçu pour réparer au lieu dexploiter. Répare automatiquement tous les blocs endommagés dans la zone.
unit.phantom.description = Une unité de drone avancée qui vous suit et vous aide à la construction de blocs. unit.phantom.description = Une unité de drone avancée qui vous suit et vous aide à la construction de blocs.
unit.dagger.description = L'unité de sol de base. Coute pas cher à produire. Est écrasant lorsqu'il est utilisé en essaims. unit.dagger.description = L'unité terrestre de base. Coûte peu cher à produire. Implacable lorsqu'il est utilisé en essaims.
unit.crawler.description = Une unité de sol composée dun cadre dépouillé sur lequel sont fixés des explosifs puissants. Pas particulièrement durable. Explose au contact des ennemis. unit.crawler.description = Une unité terrestre composée dun cadre dépouillé sur lequel sont fixés des explosifs puissants. Pas particulièrement durable. Explose au contact des ennemis.
unit.titan.description = Une unité terrestre avancée et blindée. Attaque les cibles aériennes et terrestres. Equipé de deux lance-flammes miniatures de type Brûleur. unit.titan.description = Une unité terrestre avancée et blindée. Attaque les cibles aériennes et terrestres. Équipé de deux lance-flammes miniatures de type Brûleur.
unit.fortress.description = Une unité d'artillerie lourde. Equipé de deux canons de type Grêle modifiés pour l'assaut à longue portée contre les structures et les unités ennemies. unit.fortress.description = Une unité d'artillerie lourde. Équipé de deux canons de type Grêle modifiés pour l'assaut à longue portée contre les structures et les unités ennemies.
unit.eruptor.description = Une unité lourde conçue pour détruire les structures. Tire un flot de scories sur les fortifications ennemies, les faisant fondre et brûler. unit.eruptor.description = Une unité lourde conçue pour détruire les structures. Tire un flot de scories sur les fortifications ennemies, les faisant fondre et brûler.
unit.wraith.description = Une unité d'interception rapide et de frappe. Cible les générateurs d'énergie. unit.wraith.description = Une unité d'interception rapide de harcelement. Cible les générateurs d'énergie.
unit.ghoul.description = Un bombardier lourd de saturation. Déchire a travert les structures ennemies, ciblant les infrastructures critiques. unit.ghoul.description = Un bombardier lourd de barrage. Fend a travers les lignes ennemies, ciblant les infrastructures critiques.
unit.revenant.description = Un arsenal de missiles lourd et planant. unit.revenant.description = Une plateforme aérienne lançant des missiles lourds.
block.message.description = Enregistre un message. Utilisé pour la communication entre alliés. block.message.description = Enregistre un message. Utilisé pour la communication entre alliés.
block.graphite-press.description = Compresse des morceaux de charbon en feuilles de graphite pur. block.graphite-press.description = Compresse des morceaux de charbon en feuilles de graphite pur.
block.multi-press.description = Une version améliorée de la presse à graphite. Utilise de l'eau et de l'électricité pour traiter le charbon rapidement et efficacement. block.multi-press.description = Une version améliorée de la presse à graphite. Utilise de l'eau et de l'électricité pour traiter le charbon rapidement et efficacement.
block.silicon-smelter.description = Réduit le sable avec du charbon pur. Produit du silicone. block.silicon-smelter.description = Réduit le sable avec du charbon pur. Produit du silicone.
block.kiln.description = Fait fondre le sable et le plomb en verre trempé. Nécessite de petites quantités d'énergie. block.kiln.description = Fait fondre le sable et le plomb en verre trempé. Nécessite de petites quantités d'énergie.
block.plastanium-compressor.description = Produit du plastanium à partir d'huile et de titane. block.plastanium-compressor.description = Produit du plastanium à partir de pétrole et de titane.
block.phase-weaver.description = Produit du tissu phasé à partir de thorium et de grandes quantités de sable. Nécessite des quantités massives d'énergie pour fonctionner. block.phase-weaver.description = Produit du tissu phasé à partir de thorium et de grandes quantités de sable. Nécessite des quantités massives d'énergie pour fonctionner.
block.alloy-smelter.description = Produit un alliage superchargé à l'aide de titane, de plomb, de silicone et de cuivre. block.alloy-smelter.description = Produit un alliage superchargé à l'aide de titane, de plomb, de silicone et de cuivre.
block.cryofluidmixer.description = Mélange de leau et de la fine poudre de titane pour former du liquide cryogénique. Indispensable pour l'utilisation du réacteur au thorium. block.cryofluidmixer.description = Mélange de leau et de la fine poudre de titane pour former du liquide cryogénique. Indispensable pour l'utilisation du réacteur au thorium.
block.blast-mixer.description = Écrase et mélange les amas de spores avec de la pyratite pour produire un mélange explosif. block.blast-mixer.description = Écrase et mélange les amas de spores avec de la pyratite pour produire un mélange explosif.
block.pyratite-mixer.description = Mélange le charbon, le plomb et le sable en pyratite hautement inflammable. block.pyratite-mixer.description = Mélange le charbon, le plomb et le sable en pyratite hautement inflammable.
block.melter.description = Fait fondre la ferraille en scories pour un traitement ultérieur ou une utilisation dans des tourelles Vague. block.melter.description = Fait fondre la ferraille en scories pour un traitement ultérieur ou une utilisation dans des tourelles Vague.
block.separator.description = Expose la pierre à de l'eau sous pression afin d'obtenir différents minéraux contenus dans la pierre. block.separator.description = Expose la scorie à de l'eau sous pression afin d'obtenir différents minéraux qu'elle contient.
block.spore-press.description = Compresses spore pods into oil. block.spore-press.description = Compresse les glandes de spore sous une pression extrême pour synthétiser du pétrole.
block.pulverizer.description = Écrase la pierre pour en faire du sable. Utile quand il y a un manque de sable naturel. block.pulverizer.description = Écrase la ferraille pour en faire du sable. Utile quand il y a un manque de sable naturel.
block.coal-centrifuge.description = Solidifes oil into chunks of coal. block.coal-centrifuge.description = Solidifie le pétrole en blocs de charbon.
block.incinerator.description = Permet de se débarasser de n'importe quel objet ou liquide en exces . block.incinerator.description = Permet de se débarrasser de n'importe quel objet ou liquide en excès.
block.power-void.description = Supprime toute l'énergie allant à l'intérieur. Bac à sable uniquement block.power-void.description = Supprime toute l'énergie allant à l'intérieur. Bac à sable uniquement
block.power-source.description = Produit de l'énergie à l'infini. Bac à sable uniquement. block.power-source.description = Produit de l'énergie à l'infini. Bac à sable uniquement.
block.item-source.description = Produit des objets à l'infini. Bac à sable uniquement . block.item-source.description = Produit des objets à l'infini. Bac à sable uniquement .
block.item-void.description = Désintègre n'importe quel objet qui va à l'intérieur sans utiliser d'énergie. Bac à sable uniquement. block.item-void.description = Désintègre n'importe quel objet qui va à l'intérieur sans utiliser d'énergie. Bac à sable uniquement.
block.liquid-source.description = Source de liquide infinie . Bac à sable uniquement. block.liquid-source.description = Source de liquide infinie . Bac à sable uniquement.
block.copper-wall.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles dans les premières lors des premières vagues. block.copper-wall.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles dans les premières lors des premières vagues.
block.copper-wall-large.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles dans les premières lors des premières vagues.\nFait du 2 sur 2. block.copper-wall-large.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles dans les premières lors des premières vagues.\n2 x 2.
block.titanium-wall.description = A moderately strong defensive block.\nProvides moderate protection from enemies. block.titanium-wall.description = Un bloc défensif standard.\nProcure une protection modérée contre les ennemis.
block.titanium-wall-large.description = A moderately strong defensive block.\nProvides moderate protection from enemies.\nSpans multiple tiles. block.titanium-wall-large.description = Un bloc défensif standard.\nProcure une protection modérée contre les ennemis.\nCouvre plusieurs cases.
block.thorium-wall.description = Un bloc défensif puissant.\nProcure une très bonne protection contre les ennemis. block.thorium-wall.description = Un bloc défensif puissant.\nProcure une très bonne protection contre les ennemis.
block.thorium-wall-large.description = Un bloc défensif puissant.\nProcure une très bonne protection contre les ennemis.\nFait du 2 sur 2. block.thorium-wall-large.description = Un bloc défensif puissant.\nProcure une très bonne protection contre les ennemis.\nCouvre plusieurs cases.
block.phase-wall.description = Moins puissant qu'un mur en Thorium mais déviera les balles sauf si elles sont trop puissantes. block.phase-wall.description = Moins puissant qu'un mur en Thorium mais déviera les balles sauf si elles sont trop puissantes.
block.phase-wall-large.description = Moins puissant qu'un mur en Thorium mais déviera les balles sauf si elles sont trop puissantes.\nFait du 2 sur 2. block.phase-wall-large.description = Moins puissant qu'un mur en Thorium mais déviera les balles sauf si elles sont trop puissantes.\n2 x 2.
block.surge-wall.description = Le plus puissant bloc défensif .\nA une faible chance de créer des éclairs vers les ennemis . block.surge-wall.description = Le plus puissant bloc défensif .\nA une faible chance de créer des éclairs vers les ennemis .
block.surge-wall-large.description = Le plus puissant bloc défensif .\nA une faible chance de créer des éclairs vers les ennemis .\nFait du 2 sur 2. block.surge-wall-large.description = Le plus puissant bloc défensif .\nA une faible chance de créer des éclairs vers les ennemis .\n2 x 2.
block.door.description = Une petite porte pouvant être ouverte et fermée en appuyant dessus.\nSi elle est ouverte les ennemis peuvent tirer et passer à travers. block.door.description = Une petite porte pouvant être ouverte et fermée en appuyant dessus.\nSi elle est ouverte les ennemis peuvent tirer et passer à travers.
block.door-large.description = Une large porte pouvant être ouverte et fermée en appuyant dessus.\nSi elle est ouverte les ennemis peuvent tirer et passer à travers.\nFait du 2 sur 2. block.door-large.description = Une large porte pouvant être ouverte et fermée en appuyant dessus.\nSi elle est ouverte les ennemis peuvent tirer et passer à travers.\n2 x 2.
block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. block.mender.description = Soigne périodiquement les bâtiments autour de lui. Permet de garder les défenses en bon état entre les vagues ennemies.\nPeut utiliser de la Silice pour booster la portée et l'efficacié.
block.mend-projector.description = Soigne périodiquement les batiments autour de lui. block.mend-projector.description = Une version améliorée du Réparateur. Soigne périodiquement les bâtiments autour de lui.\nPeut utiliser du tissu phasé pour booster la portée et l'efficacié.
block.overdrive-projector.description = Accélère les batiments autour de lui, notamment les foreuses et les convoyeurs. block.overdrive-projector.description = Accélère les bâtiments autour de lui, notamment les foreuses et les convoyeurs.\nPeut utiliser du tissu phasé pour booster la portée et l'efficacié.
block.force-projector.description = Crée un champ de force hexagonal autour de lui qui protège les batiments et les unités à l'intérieur de prendre des dégâts à cause des balles. 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 invisble 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 batiments. 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 ligne 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 batiment. 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 rcorrespond à la sélection, il peut passer. Autrement, l'article est distribué vers la gauche ou la droite. 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.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 = 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.mass-driver.description = Batiment 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 = 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.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 consomme pas d'énergie.
block.rotary-pump.description = Une pompe avancée qui double sa vitesse en 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. Trois fois 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. Beaucoup plus rapide qu'une pompe mécanique et la seule pompe capable de récupérer de la lave.
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 = 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.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.liquid-router.description = Accepte les liquide en une direction et les rejete de tout 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 batiments 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.
block.bridge-conduit.description = Bloc de transport de liquide avancé. Permet le transport de liquides jusqu'à 3 blocs de n'importe quel terrain ou batiment . block.bridge-conduit.description = Bloc de transport de liquide avancé. Permet le transport de liquides jusqu'à 3 blocs de n'importe quel terrain ou bâtiment .
block.phase-conduit.description = Tuyau très avancé permettant le transport de liquide. Utilise de l'énergie pour téléporter les liquides à un autre tuyau phasé sur une longue distance. block.phase-conduit.description = Tuyau très avancé permettant le transport de liquide. Utilise de l'énergie pour téléporter les liquides à un autre tuyau phasé sur une longue distance.
block.power-node.description = Transmet l'énergie aux transmetteurs énergétiques connectés . Jusqu'à quatre sources d'énergie, consommateurs ou transmetteurs peuvent être connectés. Le transmetteur recevra de l'énergie ou le transmettra à n'importe quel batiment 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 et jusqu'à six sources d'énergie, consommateurs ou transmetteurs peuvent être connectés. 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 = An extremely long-range power node with fewer available connections. block.surge-tower.description = Un transmetteur énergétique de très grande portée mais avec moins de connections disponibles.
block.battery.description = Stocke l'énergie quand elle est en abondance et le distribue si il y a trop peu d'énergie tant qu'il lui reste de l'énergie. 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 pétrole ou des matériaux inflammables. block.combustion-generator.description = Génère de l'énergie en brûlant du charbon ou des matériaux inflammables.
block.thermal-generator.description = Génère une grande quantité d'énergie à partir de lave . 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 = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite. 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 . block.solar-panel.description = Génère une faible quantité d'énergie grace au rayons du soleil.
block.solar-panel-large.description = Génère bien plus d'énergie qu'un panneau solaire standard, Mais est aussi bien plus cher à construire. block.solar-panel-large.description = Génère bien plus d'énergie qu'un panneau solaire standard, mais est aussi bien plus cher à construire.
block.thorium-reactor.description = Génère énormément d'énergie à l'aide de la radioactivité du thorium. Requiert néanmoins un refroidissement constant. Explosera violemment en cas de surchauffe. block.thorium-reactor.description = Génère énormément d'énergie à l'aide de la radioactivité du thorium. Requiert néanmoins un refroidissement constant. Explosera violemment en cas de surchauffe.
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 = Un générateur avancé, capable de produire une quantité d'énergie gigantesque lorsqu'il atteint son efficacité maximale. Nécessite une quantité significative d'énergie pour lancer le générateur.
block.mechanical-drill.description = Une foreuse de faible coût. Si elle est placée sur à un endroit approprié, produit des matériaux lentement à l'infini. block.mechanical-drill.description = Une foreuse de faible coût. Si elle est placée sur à un endroit approprié, produit des matériaux lentement à l'infini.
block.pneumatic-drill.description = Une foreuse amélioré plus rapide et capable de forer des matériaux plus dur grâce à l'usage de vérins à air comprimé. block.pneumatic-drill.description = Une foreuse améliorée plus rapide et capable de forer des matériaux plus dur comme le titane grâce à l'usage de vérins à air comprimé.
block.laser-drill.description = Permet de forer bien plus vite grâce à la technologie laser, cela demande néanmoins de l'énergie . Additionnellement, le thorium, un matériau radioactif, peut-être récupéré avec cette foreuse. block.laser-drill.description = Permet de forer bien plus vite grâce à la technologie laser, mais requiert de l'énergie . Permet de miner le Thorium, un matériau radioactif.
block.blast-drill.description = La Foreuse ultime . Demande une grande quantité d'énergie . block.blast-drill.description = La Foreuse ultime . Demande une grande quantité d'énergie.
block.water-extractor.description = Extrait l'eau des nappes phréatiques. Utile quand il n'y a pas d'eau à proximité. block.water-extractor.description = Extrait l'eau des nappes phréatiques. Utile quand il n'y a pas d'eau à proximité.
block.cultivator.description = Cultive le sol avec de l'eau afin d'obtenir de la biomasse. block.cultivator.description = Cultive le sol avec de l'eau afin d'obtenir de la biomasse.
block.oil-extractor.description = Utilise une grande quantité d'énergie afin d'extraire du pétrole du sable . Utile quand il n'y a pas de lacs de pétrole à proximité. block.oil-extractor.description = Utilise une grande quantité d'énergie afin d'extraire du pétrole du sable . Utile quand il n'y a pas de lacs de pétrole à proximité.
block.core-shard.description = The first iteration of the core capsule. Once destroyed, all contact to the region is lost. Do not let this happen. block.core-shard.description = La première version du noyau. Une fois détruite tout contact avec la région est perdu. Ne laissez pas cela se produire.
block.core-foundation.description = La deuxième version du noyau. Meilleur blindage. Stocke plus de ressources. block.core-foundation.description = La deuxième version du noyau. Meilleur blindage. Stocke plus de ressources.
block.core-nucleus.description = La troisième et dernière iteraction de la capsule centrale. Extrêmement bien blindée. Stocke des quantités massive de ressources. block.core-nucleus.description = La troisième et dernière iteration du noyau. Extrêmement bien blindée. Stocke des quantités importante de ressources.
block.vault.description = Stocke un grand nombre d'objets. Utile pour réguler le flux d'objet quand la demande de matériaux est inconstante.un [lightgray] déchargeur[] peut être utilisé pour récupérer des objets depuis le coffre-fort. block.vault.description = Stocke un grand nombre d'objets. Utile pour réguler le flux d'objet quand la demande de matériaux est inconstante.un [lightgray] déchargeur[] peut être utilisé pour récupérer des objets depuis le coffre-fort.
block.container.description = Stocke un petit nombre d'objet . Utile pour réguler le flux d'objet quand la demande de matériaux est inconstante.un [lightgray] déchargeur[] peut être utilisé pour récupérer des objets depuis le conteneur. block.container.description = Stocke un petit nombre d'objet. Utile pour réguler le flux d'objet quand la demande de matériaux est inconstante.un [lightgray] déchargeur[] peut être utilisé pour récupérer des objets depuis le conteneur.
block.unloader.description = Décharge des objets depuis des conteneurs, coffres-forts ou de la base sur un convoyeur ou directement dans un bloc adjacent . Le type d'objet peut être changé en appuyant sur le déchargeur. block.unloader.description = Décharge des objets depuis des conteneurs, coffres-forts ou de la base sur un convoyeur ou directement dans un bloc adjacent. Le type d'objet peut être changé en appuyant sur le déchargeur.
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished. block.launch-pad.description = Permet de transférer des ressources sans attendre le lancement du noyau.
block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently. block.launch-pad-large.description = Une version améliorée de la plateforme de lancement. Stocke plus de ressources et les envoies plus fréquemment.
block.duo.description = Une petite tourelle avec un coût faible. block.duo.description = Une petite tourelle avec un coût faible.
block.scatter.description = Une tourrelle anti-aérien de taille moyenne. Sprays clumps of lead or scrap flak at enemy units. block.scatter.description = Une tourelle anti-aérien de taille moyenne. Asperge les ennemis de débris de plomb ou de ferraille.
block.scorch.description = Brûle les ennemis au sol proche de lui. Très efficace a courte portée. block.scorch.description = Brûle les ennemis au sol proche de lui. Très efficace a courte portée.
block.hail.description = Une petite tourelle d'artillerie. block.hail.description = Une petite tourelle d'artillerie.
block.wave.description = Une tourelle de taille moyenne tirant rapidement des bulles de liquide. block.wave.description = Une tourelle de taille moyenne tirant rapidement des bulles de liquide. Peut éteindre les incendies à portée si de l'eau est disponible.
block.lancer.description = Une tourelle de taille moyenne tirant des rayons chargés en électricité. block.lancer.description = Une tourelle de taille moyenne tirant des rayons chargés en électricité.
block.arc.description = Une petite tourelle tirant des arcs électrques vers les ennemis. block.arc.description = Une petite tourelle tirant des arcs électriques vers les ennemis.
block.swarmer.description = Une tourelle de taille moyenne qui tire des missiles qui se dispersent. block.swarmer.description = Une tourelle de taille moyenne attaquant les ennemis terrestres et aériens à l'aide de missiles autoguidés.
block.salvo.description = Une tourelle de taille moyenne qui tire par salves. block.salvo.description = Une tourelle de taille moyenne qui tire par salves.
block.fuse.description = Une grande tourelle qui tire de puissants rayons lasers avec une faible portée. block.fuse.description = Une grande tourelle qui tire de puissants rayons lasers avec une faible portée.
block.ripple.description = Une grande tourelle d'artillerie qui tire plusieurs tirs simultanément. block.ripple.description = Une grande tourelle d'artillerie qui tire plusieurs tirs simultanément.
block.cyclone.description = Une grande tourelle tirant rapidement ... très rapidement. block.cyclone.description = Une grande tourelle tirant rapidement... très rapidement.
block.spectre.description = Une grande tourelle qui tire deux puissantes balles simultanément. block.spectre.description = Une grande tourelle qui tire deux puissantes balles perce-blindage simultanément.
block.meltdown.description = Une grande tourelle tirant de puissants rayons lasers avec une grande portée. block.meltdown.description = Une grande tourelle tirant de puissants rayons lasers avec une grande portée.
block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to patrol, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. block.command-center.description = Permet de donner des ordres aux unités alliées sur la carte.\nIndique aux unités de se rallier, d'attaquer un noyau ennemi ou de battre en retraite vers le noyau/l'usine. En l'absence de noyau adverse, les unités patrouilleront par défaut autour de la commande d'attaque.
block.draug-factory.description = Produit des drones Draug mineurs. block.draug-factory.description = Produit des drones Draug mineurs.
block.spirit-factory.description = Produit des petits drones qui réparent les batiments et minent des matériaux. block.spirit-factory.description = Produit des petits drones qui réparent les bâtiments et minent des matériaux.
block.phantom-factory.description = Produit des drones avancés qui sont bien plus efficaces que les drones spirituels. block.phantom-factory.description = Produit des drones avancés qui sont bien plus efficaces que les drones spirituels.
block.wraith-factory.description = Produit des intercepteurs rapides qui harcèlent l'ennemi. block.wraith-factory.description = Produit des intercepteurs rapides qui harcèlent l'ennemi.
block.ghoul-factory.description = Produit des bombardiers lourds. block.ghoul-factory.description = Produit des bombardiers lourds.
block.revenant-factory.description = Produit des unités terrestres lourdes avec des lasers. block.revenant-factory.description = Produit des unités terrestres lourdes avec des lasers.
block.dagger-factory.description = Produit des unités terrestres basiques. block.dagger-factory.description = Produit des unités terrestres basiques.
block.crawler-factory.description = Produit des unités d'essaims autodestructeurs rapides. block.crawler-factory.description = Produit des unités d'essaims autodestructeurs rapides.
block.titan-factory.description = Produit des unités terrestres avancées et cuirassées. block.titan-factory.description = Produit des unités terrestres avancées et cuirassées.
block.fortress-factory.description = Produit des unités terrestres d'artillerie lourde . block.fortress-factory.description = Produit des unités terrestres d'artillerie lourde.
block.repair-point.description = Soigne en continu l'unité blessée la plus proche tant qu'elle est à sa portée. block.repair-point.description = Soigne en continu l'unité blessée la plus proche tant qu'elle est à sa portée.
block.dart-mech-pad.description = Fournit la transformation en un mécha d'attaque de base .\nUse by tapping while standing on it. block.dart-mech-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un mécha d'attaque de base .\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus.
block.delta-mech-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un mécha rapide mais peu résistant fait pour les stratégies de harcèlement.\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus. block.delta-mech-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un mécha rapide mais peu résistant fait pour les stratégies de harcèlement.\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus.
block.tau-mech-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un mécha de support qui peut soigner les batiments et unités alliées.\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus. block.tau-mech-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un mécha de support qui peut soigner les bâtiments et unités alliées.\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus.
block.omega-mech-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un mécha cuirassé et large, fait pour les assauts frontaux .\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus. block.omega-mech-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un mécha cuirassé et large, fait pour les assauts frontaux .\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus.
block.javelin-ship-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un intercepteur rapide et puissant avec des armes électriques.\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus. block.javelin-ship-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un intercepteur rapide et puissant avec des armes électriques.\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus.
block.trident-ship-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un bombardier lourd raisonnablement cuirassé .\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus. block.trident-ship-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un bombardier lourd raisonnablement cuirassé .\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus.

View File

@@ -545,7 +545,6 @@ setting.fullscreen.name = Plein écran
setting.borderlesswindow.name = Fenêtre sans bordure[LIGHT_GRAY] (peut nécessiter un redémarrage) setting.borderlesswindow.name = Fenêtre sans bordure[LIGHT_GRAY] (peut nécessiter un redémarrage)
setting.fps.name = Afficher FPS setting.fps.name = Afficher FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Afficher les rayons des lasers
setting.pixelate.name = Pixélisé [LIGHT_GRAY](peut diminuer les performances)[] setting.pixelate.name = Pixélisé [LIGHT_GRAY](peut diminuer les performances)[]
setting.minimap.name = Montrer la minimap setting.minimap.name = Montrer la minimap
setting.musicvol.name = Volume de la musique setting.musicvol.name = Volume de la musique
@@ -557,6 +556,7 @@ setting.crashreport.name = Envoyer des rapports d'incident anonymement.
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Auto-Create Saves
setting.publichost.name = Public Game Visibility setting.publichost.name = Public Game Visibility
setting.chatopacity.name = Opacité du tchat setting.chatopacity.name = Opacité du tchat
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Afficher le tchat en jeu setting.playerchat.name = Afficher le tchat en jeu
uiscale.reset = L'échelle de l'interface a été modifiée.\nAppuyez sur "OK" pour confirmer cette échelle.\n[scarlet]Revenir et sortir en[accent] {0}[] réglages... uiscale.reset = L'échelle de l'interface a été modifiée.\nAppuyez sur "OK" pour confirmer cette échelle.\n[scarlet]Revenir et sortir en[accent] {0}[] réglages...
uiscale.cancel = Annuler et quitter uiscale.cancel = Annuler et quitter

View File

@@ -545,7 +545,6 @@ setting.fullscreen.name = Layar Penuh
setting.borderlesswindow.name = Jendela tak Berbatas[LIGHT_GRAY] (bisa membutuhkan restart) setting.borderlesswindow.name = Jendela tak Berbatas[LIGHT_GRAY] (bisa membutuhkan restart)
setting.fps.name = Tunjukkan FPS setting.fps.name = Tunjukkan FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Tunjukkan Laser
setting.pixelate.name = Mode Pixel[LIGHT_GRAY] (menonaktifkan animasi) setting.pixelate.name = Mode Pixel[LIGHT_GRAY] (menonaktifkan animasi)
setting.minimap.name = Tunjukkan Peta kecil setting.minimap.name = Tunjukkan Peta kecil
setting.musicvol.name = Volume Musik setting.musicvol.name = Volume Musik
@@ -557,6 +556,7 @@ setting.crashreport.name = Laporkan Masalah
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Auto-Create Saves
setting.publichost.name = Public Game Visibility setting.publichost.name = Public Game Visibility
setting.chatopacity.name = Jelas-Beningnya Chat setting.chatopacity.name = Jelas-Beningnya Chat
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Tunjukkan Chat dalam Permainan setting.playerchat.name = Tunjukkan Chat dalam Permainan
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings... uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings...
uiscale.cancel = Cancel & Exit uiscale.cancel = Cancel & Exit

View File

@@ -1,4 +1,4 @@
credits.text = Creato da [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](Nel caso non te ne sia accorto, la traduzione del gioco non è completa.\n Chi di dovere sta lavorando più velocemente possibile per completarla! Un aiutino non sarebbe male!) credits.text = Creato da [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]
credits = Crediti credits = Crediti
contributors = Traduttori e Contributori contributors = Traduttori e Contributori
discord = Entra nel server discord di mindustry! discord = Entra nel server discord di mindustry!
@@ -10,7 +10,7 @@ link.trello.description = Scheda ufficiale trello per funzionalità pianificate
link.itch.io.description = pagina di itch.io con download per PC e versione web link.itch.io.description = pagina di itch.io con download per PC e versione web
link.google-play.description = Elenco di Google Play Store link.google-play.description = Elenco di Google Play Store
link.wiki.description = wiki ufficiale di Mindustry link.wiki.description = wiki ufficiale di Mindustry
linkfail = Impossibile aprire il link! L'URL è stato copiato nella tua bacheca. linkfail = Impossibile aprire il link! L'URL è stato copiato.
screenshot = Screenshot salvato a {0} screenshot = Screenshot salvato a {0}
screenshot.invalid = Mappa troppo grossa, probabilmente non c'è abbastanza memoria libera. screenshot.invalid = Mappa troppo grossa, probabilmente non c'è abbastanza memoria libera.
gameover = Il nucleo è stato distrutto. gameover = Il nucleo è stato distrutto.
@@ -25,7 +25,7 @@ stat.wave = Ondate sconfitte:[accent] {0}
stat.enemiesDestroyed = Nemici distrutti:[accent] {0} stat.enemiesDestroyed = Nemici distrutti:[accent] {0}
stat.built = Costruzioni erette:[accent] {0} stat.built = Costruzioni erette:[accent] {0}
stat.destroyed = Costruzioni distrutte:[accent] {0} stat.destroyed = Costruzioni distrutte:[accent] {0}
stat.deconstructed = Costruzioni smontate:[accent] {0} stat.deconstructed = Costruzioni smantellate:[accent] {0}
stat.delivered = Riorse lanciate: stat.delivered = Riorse lanciate:
stat.rank = Livello finale: [accent]{0} stat.rank = Livello finale: [accent]{0}
launcheditems = [accent]Oggetti lanciati launcheditems = [accent]Oggetti lanciati
@@ -48,18 +48,18 @@ minimap = Minimappa
close = Chiuso close = Chiuso
website = Website website = Website
quit = Esci quit = Esci
save.quit = Save & Quit save.quit = Salva ed esci
maps = Mappe maps = Mappe
maps.browse = Browse Maps maps.browse = Consulta Mappe
continue = Continua continue = Continua
maps.none = [LIGHT_GRAY]Nessuna mappa trovata! maps.none = [LIGHT_GRAY]Nessuna mappa trovata!
invalid = Invalid invalid = Invalido
preparingconfig = Preparing Config preparingconfig = Preparo la configurazione
preparingcontent = Preparing Content preparingcontent = Preparo il contenuto
uploadingcontent = Uploading Content uploadingcontent = Carico il contenuto
uploadingpreviewfile = Uploading Preview File uploadingpreviewfile = Carico file di anteprima
committingchanges = Comitting Changes committingchanges = Applico le modifiche
done = Done done = Fatto
about.button = Info about.button = Info
name = Nome: name = Nome:
noname = Scegli un [accent] nome[] prima di unirti. noname = Scegli un [accent] nome[] prima di unirti.
@@ -74,31 +74,31 @@ players = {0} giocatori online
players.single = {0} giocatori online players.single = {0} giocatori online
server.closing = [accent]Chiusura server ... server.closing = [accent]Chiusura server ...
server.kicked.kick = Sei stato cacciato dal server! server.kicked.kick = Sei stato cacciato dal server!
server.kicked.whitelist = You are not whitelisted here. server.kicked.whitelist = Non sei presente in questa whitelist.
server.kicked.serverClose = Server chiuso. server.kicked.serverClose = Server chiuso.
server.kicked.vote = You have been vote-kicked. Goodbye. server.kicked.vote = Sei stato cacciato su richiesta dei giocatori. Buona giornata.
server.kicked.clientOutdated = Versione del client obsoleta! Aggiorna il tuo gioco! server.kicked.clientOutdated = Versione del client obsoleta! Aggiorna il tuo gioco!
server.kicked.serverOutdated = Server obsoleto! Chiedi all'host di aggiornare! server.kicked.serverOutdated = Server obsoleto! Chiedi all'host di aggiornare!
server.kicked.banned = Sei bannato da questo server. server.kicked.banned = Sei bannato da questo server.
server.kicked.typeMismatch = This server is not compatible with your build type. server.kicked.typeMismatch = Questo server non è comparibile con la tua build.
server.kicked.playerLimit = This server is full. Wait for an empty slot. server.kicked.playerLimit = Questo server è pieno. Attendi che si liberi un posto.
server.kicked.recentKick = Sei stato cacciato di recente.\nAspetta prima di riconnetterti. server.kicked.recentKick = Sei stato cacciato di recente.\nAspetta prima di riconnetterti.
server.kicked.nameInUse = C'è già qualcuno con il tuo nome\nsu questo server. server.kicked.nameInUse = C'è già qualcuno con il tuo nome su questo server.
server.kicked.nameEmpty = Il tuo nome deve contenere almeno un carattere. server.kicked.nameEmpty = Il tuo nome deve contenere almeno un carattere.
server.kicked.idInUse = Sei già su questo server! Non è permesso connettersi con due account. server.kicked.idInUse = Sei già su questo server! Non è permesso connettersi con due account.
server.kicked.customClient = Questo server non supporta le build personalizzate. Scarica la versione ufficiale dal sito. server.kicked.customClient = Questo server non supporta le build personalizzate. Scarica la versione ufficiale dal sito.
server.kicked.gameover = Game over! server.kicked.gameover = Game over!
server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[] server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[]
host.info = Il pulsante [accent]hos [] ospita un server sulle porte [scarlet]6567[] e [scarlet]656.[] Chiunque sulla stessa [LIGHT_GRAY]connessione wifi o rete locale[] dovrebbe essere in grado di vedere il proprio server nel proprio elenco server.\n\n Se vuoi che le persone siano in grado di connettersi ovunque tramite IP, è richiesto il [accent]port forwarding[]. \n\n[LIGHT_GRAY]Nota: se qualcuno sta riscontrando problemi durante la connessione al gioco LAN, assicurati di aver consentito a Mindustry di accedere alla rete locale nelle impostazioni del firewall. host.info = Il pulsante [accent]host [] ospita un server sulla porte [scarlet]6567[].[] Chiunque sulla stessa [LIGHT_GRAY]connessione wifi o rete locale[] dovrebbe essere in grado di vedere il proprio server nel proprio elenco server.\n\n Se vuoi che le persone siano in grado di connettersi ovunque tramite IP, è richiesto il [accent]port forwarding[]. \n\n[LIGHT_GRAY]Nota: se qualcuno sta riscontrando problemi durante la connessione al gioco LAN, assicurati di aver consentito a Mindustry di accedere alla rete locale nelle impostazioni del firewall.
join.info = Qui è possibile inserire un [accent]IP del server[] a cui connettersi, o scoprire [accent]un server sulla rete locale[] disponibile.\n Sono supportati sia il multiplayer LAN che WAN. \n\n[LIGHT_GRAY]Nota: non esiste un elenco di server globali automatici; se si desidera connettersi a qualcuno tramite IP, è necessario chiedere all'host il proprio IP. join.info = Qui è possibile inserire un [accent]IP del server[] a cui connettersi, o scoprire [accent]un server sulla rete locale[] disponibile.\n Sono supportati sia il multiplayer LAN che WAN. \n\n[LIGHT_GRAY]Nota: non esiste un elenco di server globali automatici; se si desidera connettersi a qualcuno tramite IP, è necessario chiedere all'host il proprio IP.
hostserver = Host Server hostserver = Ospita Server
invitefriends = Invite Friends invitefriends = Invita amici
hostserver.mobile = Host\nServer hostserver.mobile = Ospita\nServer
host = Host host = Host
hosting = [accent] Apertura del server ... hosting = [accent] Apertura del server ...
hosts.refresh = Aggiorna hosts.refresh = Aggiorna
hosts.discovering = Ricerca partite LAN hosts.discovering = Ricerca partite LAN
hosts.discovering.any = Discovering games hosts.discovering.any = Ricerca partite
server.refreshing = Aggiornamento del server server.refreshing = Aggiornamento del server
hosts.none = [lightgray]Nessuna partita LAN trovata! hosts.none = [lightgray]Nessuna partita LAN trovata!
host.invalid = [scarlet]Impossibile connettersi all'host. host.invalid = [scarlet]Impossibile connettersi all'host.
@@ -122,7 +122,7 @@ server.version = [lightgray]Versione: {0}
server.custombuild = [yellow] Costruzione personalizzata server.custombuild = [yellow] Costruzione personalizzata
confirmban = Sei sicuro di voler bandire questo giocatore? confirmban = Sei sicuro di voler bandire questo giocatore?
confirmkick = Sei sicuro di voler espellere questo giocatore? confirmkick = Sei sicuro di voler espellere questo giocatore?
confirmvotekick = Are you sure you want to vote-kick this player? confirmvotekick = Sei sicuro di voler votare per l'espulsione di questo giocatore?
confirmunban = Sei sicuro di voler riammettere questo giocatore? confirmunban = Sei sicuro di voler riammettere questo giocatore?
confirmadmin = Sei sicuro di voler rendere questo giocatore un amministratore? confirmadmin = Sei sicuro di voler rendere questo giocatore un amministratore?
confirmunadmin = Sei sicuro di voler rimuovere lo stato di amministratore da questo giocatore? confirmunadmin = Sei sicuro di voler rimuovere lo stato di amministratore da questo giocatore?
@@ -133,7 +133,7 @@ disconnect.error = Connection error.
disconnect.closed = Connection closed. disconnect.closed = Connection closed.
disconnect.timeout = Timed out. disconnect.timeout = Timed out.
disconnect.data = Il mondo non si vuole caricare, mi dispiace! disconnect.data = Il mondo non si vuole caricare, mi dispiace!
cantconnect = Unable to join game ([accent]{0}[]). cantconnect = Impossibile unirsi al server ([accent]{0}[]).
connecting = [accent]Connessione in corso ... connecting = [accent]Connessione in corso ...
connecting.data = [accent]Caricamento dei dati del mondo ... connecting.data = [accent]Caricamento dei dati del mondo ...
server.port = Porta: server.port = Porta:
@@ -145,7 +145,7 @@ save.new = Nuovo Salvataggio
save.overwrite = Sei sicuro di voler sovrascrivere questo salvataggio? save.overwrite = Sei sicuro di voler sovrascrivere questo salvataggio?
overwrite = Sovrascrivi overwrite = Sovrascrivi
save.none = Nessun salvataggio trovato! save.none = Nessun salvataggio trovato!
saveload = [Accent]Salvataggio ... saveload = [accent]Salvataggio ...
savefail = [crimson]Salvataggio del gioco NON riuscito! savefail = [crimson]Salvataggio del gioco NON riuscito!
save.delete.confirm = Sei sicuro di voler eliminare questo salvataggio? save.delete.confirm = Sei sicuro di voler eliminare questo salvataggio?
save.delete = Elimina save.delete = Elimina
@@ -159,7 +159,7 @@ save.rename = Rinomina
save.rename.text = Nuovo nome: save.rename.text = Nuovo nome:
selectslot = Seleziona un salvataggio. selectslot = Seleziona un salvataggio.
slot = [accent]Slot {0} slot = [accent]Slot {0}
editmessage = Edit Message editmessage = Modifica messaggio
save.corrupted = [orang]Salvataggio corrotto o non valido! save.corrupted = [orang]Salvataggio corrotto o non valido!
empty = <Vuoto> empty = <Vuoto>
on = On on = On
@@ -173,7 +173,7 @@ save.playtime = Tempo di gioco: {0}
warning = Attenzione warning = Attenzione
confirm = Conferma confirm = Conferma
delete = Elimina delete = Elimina
view.workshop = View In Workshop view.workshop = Vedi nel Workshop
ok = OK ok = OK
open = Apri open = Apri
customize = Personalizza customize = Personalizza
@@ -183,17 +183,17 @@ copylink = Copia link
back = Indietro back = Indietro
data.export = Esporta Salvataggio data.export = Esporta Salvataggio
data.import = Importa Salvataggio data.import = Importa Salvataggio
data.exported = Data exported. data.exported = Dati esportati.
data.invalid = This isn't valid game data. data.invalid = Questi non sono dati di gioco validi.
data.import.confirm = Importing external data will erase[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. data.import.confirm = Importare dati di gioco esterni eliminerà[scarlet] tutti[] i tuoi progressi attuali.\n[accent]L'operazione è irreversibile![]\n\nUna volta importati i dati, il gioco si chiuderà immediatamente.
classic.export = Esporta dati classici classic.export = Esporta dati classici
classic.export.text = [accent]Mindustry[] ha appena rilasciato un aggiornamento importante.\nSalvataggio Classic (v3.5 build 40) o dati delle mappe è stato ritrovato. Vorresti esportare questi salvatagggi sul tuo telefono per usarli nella Mindustry Classic app? classic.export.text = [accent]Mindustry[] ha appena rilasciato un aggiornamento importante.\nSalvataggio Classic (v3.5 build 40) o dati delle mappe è stato ritrovato. Vorresti esportare questi salvatagggi sul tuo telefono per usarli nella Mindustry Classic app?
quit.confirm = Sei sicuro di voler uscire? quit.confirm = Sei sicuro di voler uscire?
quit.confirm.tutorial = Sei sicuro di sapere cosa stai facendo? Il tutorial può essere ripetuto in[accent] Impostazioni->Gioco->Ripeti il tutorial.[] quit.confirm.tutorial = Sei sicuro di sapere cosa stai facendo? Il tutorial può essere ripetuto in[accent] Gioca > Tutorial.[]
loading = [accent]Caricamento in corso ... loading = [accent]Caricamento in corso ...
saving = [accent]Salvando ... saving = [accent]Salvando ...
wave = [accent]Ondata {0} wave = [accent]Ondata {0}
wave.waiting = Ondata tra {0} wave.waiting = [LIGHT_GRAY]Ondata tra {0}
wave.waveInProgress = [LIGHT_GRAY]Ondata in corso... wave.waveInProgress = [LIGHT_GRAY]Ondata in corso...
waiting = In attesa... waiting = In attesa...
waiting.players = Aspettando giocatori... waiting.players = Aspettando giocatori...
@@ -210,11 +210,11 @@ map.nospawn = Questa mappa non possiede un nucleo in cui spawnare! Aggiungine un
map.nospawn.pvp = Questa mappa non ha un nucleo nemico! Aggiungi un [SCARLET]nucleo rosso[] nell'editor per poter giocare. map.nospawn.pvp = Questa mappa non ha un nucleo nemico! Aggiungi un [SCARLET]nucleo rosso[] nell'editor per poter giocare.
map.nospawn.attack = Questa mappa non ha un nucleo nemico! Aggiungi un [SCARLET]nucleo rosso[] nell'editor per poter giocare. map.nospawn.attack = Questa mappa non ha un nucleo nemico! Aggiungi un [SCARLET]nucleo rosso[] nell'editor per poter giocare.
map.invalid = Errore nel caricamento della mappa: file mappa corrotto o non valido. map.invalid = Errore nel caricamento della mappa: file mappa corrotto o non valido.
map.publish.error = Error publishing map: {0} map.publish.error = Errore durante la pubblicazione della mappa:\n{0}
map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! map.publish.confirm = Vuoi pubblicare questa mappa?\n\n[lightgray]Assicurati di aver accettato il Workshop EULA, o le tue mappe non saranno visibili!
eula = Steam EULA eula = Steam EULA
map.publish = Map published. map.publish = Mappa pubblicata.
map.publishing = [accent]Publishing map... map.publishing = [accent]Pubblico la mappa...
editor.brush = Pennello editor.brush = Pennello
editor.openin = Apri nell'editor editor.openin = Apri nell'editor
editor.oregen = Generazione dei minerali editor.oregen = Generazione dei minerali
@@ -222,12 +222,12 @@ editor.oregen.info = Generazione dei minerali:
editor.mapinfo = Informazioni mappa editor.mapinfo = Informazioni mappa
editor.author = Autore: editor.author = Autore:
editor.description = Descrizione: editor.description = Descrizione:
editor.nodescription = A map must have a description of at least 4 characters before being published. editor.nodescription = Una mappa deve avere una descrizione di almeno 4 caratteri per poter essere pubblicata.
editor.waves = Ondate: editor.waves = Ondate:
editor.rules = Regole: editor.rules = Regole:
editor.generation = Generazione: editor.generation = Generazione:
editor.ingame = Modifica in gioco editor.ingame = Modifica in gioco
editor.publish.workshop = Publish On Workshop editor.publish.workshop = Pubblica sul Workshop
editor.newmap = Nuova mappa editor.newmap = Nuova mappa
workshop = Workshop workshop = Workshop
waves.title = Ondate waves.title = Ondate
@@ -246,7 +246,7 @@ waves.invalid = Onde dagli appunti non valide.
waves.copied = Onde copiate. waves.copied = Onde copiate.
waves.none = Nessun nemico definiti.\n Nota che le disposizioni di ondate vuote verranno automaticamente rimpiazzate con la disposizione predefinita. waves.none = Nessun nemico definiti.\n Nota che le disposizioni di ondate vuote verranno automaticamente rimpiazzate con la disposizione predefinita.
editor.default = [LIGHT_GRAY]<Predefinito> editor.default = [LIGHT_GRAY]<Predefinito>
details = Details... details = Dettagli...
edit = Modifica... edit = Modifica...
editor.name = Nome: editor.name = Nome:
editor.spawn = Piazza un'unità editor.spawn = Piazza un'unità
@@ -256,7 +256,7 @@ editor.errorload = Errore nel caricamento di:\n[accent]{0}
editor.errorsave = Errore nel salvataggio di:\n[accent]{0} editor.errorsave = Errore nel salvataggio di:\n[accent]{0}
editor.errorimage = Quella è un'immagine, non una mappa. Non cambiare estensioni sperando che funzioni.\n\n Se vuoi importare una mappa vecchia clicca su "importa una mappa vecchia" nell'editor. editor.errorimage = Quella è un'immagine, non una mappa. Non cambiare estensioni sperando che funzioni.\n\n Se vuoi importare una mappa vecchia clicca su "importa una mappa vecchia" nell'editor.
editor.errorlegacy = La mappa è troppo vecchia ed usa un formato che non è più supportato. editor.errorlegacy = La mappa è troppo vecchia ed usa un formato che non è più supportato.
editor.errornot = This is not a map file. editor.errornot = Questo file non è una mappa.
editor.errorheader = Questo file della mappa è invalido o corrotto. editor.errorheader = Questo file della mappa è invalido o corrotto.
editor.errorname = Questa mappa è senza nome. editor.errorname = Questa mappa è senza nome.
editor.update = Aggiorna editor.update = Aggiorna
@@ -280,16 +280,16 @@ editor.importimage.description = Importa immagine esterna terreno
editor.export = Esportazione... editor.export = Esportazione...
editor.exportfile = Esporta file editor.exportfile = Esporta file
editor.exportfile.description = Esporta file mappa editor.exportfile.description = Esporta file mappa
editor.exportimage = Esporta immagine terreno editor.exportimage = Esporta immagine
editor.exportimage.description = Esporta file immagine mappa editor.exportimage.description = Esporta file immagine mappa
editor.loadimage = Carica\nimmagine editor.loadimage = Carica\nimmagine
editor.saveimage = Salva\nImmagine editor.saveimage = Salva\nImmagine
editor.unsaved = [scarlet]Hai modifiche non salvate![]\nSei sicuro di voler uscire? editor.unsaved = [scarlet]Hai modifiche non salvate![]\nSei sicuro di voler uscire?
editor.resizemap = Ridimensiona la mappa editor.resizemap = Ridimensiona la mappa
editor.mapname = Nome Mappa: editor.mapname = Nome Mappa:
editor.overwrite = [Accent]Attenzione!\nQuesto sovrascrive una mappa esistente. editor.overwrite = [accent]Attenzione!\nQuesto sovrascrive una mappa esistente.
editor.overwrite.confirm = [scarlet]Attenzione![] Una mappa con questo nome esiste già. Sei sicuro di volerla sovrascrivere? editor.overwrite.confirm = [scarlet]Attenzione![] Una mappa con questo nome esiste già. Sei sicuro di volerla sovrascrivere?
editor.exists = A map with this name already exists. editor.exists = Esiste già una mappa con questo nome.
editor.selectmap = Seleziona una mappa da caricare: editor.selectmap = Seleziona una mappa da caricare:
toolmode.replace = Rimpiazzare toolmode.replace = Rimpiazzare
toolmode.replace.description = Disegna solo su blocchi solidi. toolmode.replace.description = Disegna solo su blocchi solidi.
@@ -369,7 +369,7 @@ launch.skip.confirm = Se salti adesso non riuscirai a decollare fino alle ondate
uncover = Svelare uncover = Svelare
configure = Configura l'equipaggiamento configure = Configura l'equipaggiamento
configure.locked = [LIGHT_GRAY]Arriva all'ondata {0}\nper configurare l'equipaggiamento. configure.locked = [LIGHT_GRAY]Arriva all'ondata {0}\nper configurare l'equipaggiamento.
configure.invalid = Amount must be a number between 0 and {0}. configure.invalid = Il valore dev'essere un numero compresto tra 0 e {0}.
zone.unlocked = [LIGHT_GRAY]{0} sbloccata. zone.unlocked = [LIGHT_GRAY]{0} sbloccata.
zone.requirement.complete = Ondata {0} raggiunta:\n{1} requisiti di zona soddisfatti. zone.requirement.complete = Ondata {0} raggiunta:\n{1} requisiti di zona soddisfatti.
zone.config.complete = Ondata {0} raggiunta:\nEquipaggiamento personalizzato sbloccato. zone.config.complete = Ondata {0} raggiunta:\nEquipaggiamento personalizzato sbloccato.
@@ -420,7 +420,7 @@ zone.crags.description = <inserisci descrizione>
settings.language = Lingua settings.language = Lingua
settings.data = Importa/Esporta salvataggio settings.data = Importa/Esporta salvataggio
settings.reset = Resetta Alle Impostazioni Predefinite settings.reset = Resetta Alle Impostazioni Predefinite
settings.rebind = Reimposta settings.rebind = Modifica
settings.controls = Controlli settings.controls = Controlli
settings.game = Gioco settings.game = Gioco
settings.sound = Suoni settings.sound = Suoni
@@ -490,10 +490,10 @@ bullet.splashdamage = [stat]{0}[lightgray] danno ad area ~[stat] {1}[lightgray]
bullet.incendiary = [stat]incendiario bullet.incendiary = [stat]incendiario
bullet.homing = [stat]autoguidato bullet.homing = [stat]autoguidato
bullet.shock = [stat]stordente bullet.shock = [stat]stordente
bullet.frag = [stat]frammentazione bullet.frag = [stat]a frammentazione
bullet.knockback = [stat]{0}[lightgray] contraccolpo bullet.knockback = [stat]{0}[lightgray] contraccolpo
bullet.freezing = [stat]congelamento bullet.freezing = [stat]congelante
bullet.tarred = [stat]asfaltata bullet.tarred = [stat]viscoso
bullet.multiplier = [stat]{0}[lightgray]x moltiplicatore munizioni bullet.multiplier = [stat]{0}[lightgray]x moltiplicatore munizioni
bullet.reload = [stat]{0}[lightgray]x ricarica bullet.reload = [stat]{0}[lightgray]x ricarica
unit.blocks = blocchi unit.blocks = blocchi
@@ -523,18 +523,18 @@ setting.animatedshields.name = Scudi animati
setting.antialias.name = Antialias[LIGHT_GRAY] (richiede riapertura gioco)[] setting.antialias.name = Antialias[LIGHT_GRAY] (richiede riapertura gioco)[]
setting.indicators.name = Indicatori Alleati setting.indicators.name = Indicatori Alleati
setting.autotarget.name = Mira automatica setting.autotarget.name = Mira automatica
setting.keyboard.name = Controlli Mouse+Tastiera setting.keyboard.name = Tastiera
setting.touchscreen.name = Touchscreen Controls setting.touchscreen.name = Touchscreen Controls
setting.fpscap.name = Limite FPS setting.fpscap.name = Limite FPS
setting.fpscap.none = Niente setting.fpscap.none = Niente
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.uiscale.name = Ridimensionamento dell'interfaccia utente[lightgray] (richiede riapertura gioco)[] setting.uiscale.name = Ridimensionamento dell'interfaccia utente[lightgray] (richiede riapertura gioco)[]
setting.swapdiagonal.name = Posizionamento sempre diagonale setting.swapdiagonal.name = Posizionamento sempre diagonale
setting.difficulty.training = formazione setting.difficulty.training = Allenamento
setting.difficulty.easy = facile setting.difficulty.easy = Facile
setting.difficulty.normal = medio setting.difficulty.normal = Medio
setting.difficulty.hard = difficile setting.difficulty.hard = Difficile
setting.difficulty.insane = impossibile setting.difficulty.insane = Impossibile
setting.difficulty.name = Difficoltà: setting.difficulty.name = Difficoltà:
setting.screenshake.name = Movimento dello schermo setting.screenshake.name = Movimento dello schermo
setting.effects.name = Visualizza effetti setting.effects.name = Visualizza effetti
@@ -545,7 +545,6 @@ setting.fullscreen.name = Schermo Intero
setting.borderlesswindow.name = Schermo senza bordi[LIGHT_GRAY] (potrebbe richiedere riapertura gioco) setting.borderlesswindow.name = Schermo senza bordi[LIGHT_GRAY] (potrebbe richiedere riapertura gioco)
setting.fps.name = Mostra FPS setting.fps.name = Mostra FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Mostra Laser Energetici
setting.pixelate.name = Sfocare [LIGHT_GRAY](potrebbe ridure il rendimento) setting.pixelate.name = Sfocare [LIGHT_GRAY](potrebbe ridure il rendimento)
setting.minimap.name = Mostra minimappa setting.minimap.name = Mostra minimappa
setting.musicvol.name = Volume Musica setting.musicvol.name = Volume Musica
@@ -554,9 +553,10 @@ setting.mutemusic.name = Silenzia musica
setting.sfxvol.name = Volume Effetti setting.sfxvol.name = Volume Effetti
setting.mutesound.name = Togli suoni setting.mutesound.name = Togli suoni
setting.crashreport.name = Invia rapporti sugli arresti anomali anonimamente setting.crashreport.name = Invia rapporti sugli arresti anomali anonimamente
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Autosalvataggio
setting.publichost.name = Public Game Visibility setting.publichost.name = Gioco visibile pubblicamente
setting.chatopacity.name = Opacità chat setting.chatopacity.name = Opacità chat
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Mostra Chat in-game setting.playerchat.name = Mostra Chat in-game
uiscale.reset = La scala dell'interfaccia utente è stata modificata.\nPremere "OK" per confermare questa scala.\n[scarlet] Ripristina ed esci dalle impostazioni [accent] {0}[] impostazioni... uiscale.reset = La scala dell'interfaccia utente è stata modificata.\nPremere "OK" per confermare questa scala.\n[scarlet] Ripristina ed esci dalle impostazioni [accent] {0}[] impostazioni...
uiscale.cancel = Annulla ed esci uiscale.cancel = Annulla ed esci
@@ -567,33 +567,33 @@ category.general.name = Generale
category.view.name = Visualizzazione category.view.name = Visualizzazione
category.multiplayer.name = Multigiocatore category.multiplayer.name = Multigiocatore
command.attack = Attacca command.attack = Attacca
command.rally = Rally command.rally = Guardia
command.retreat = Torna indietro command.retreat = Ritirata
keybind.gridMode.name = Seleziona blocco keybind.gridMode.name = Seleziona blocco
keybind.gridModeShift.name = Seleziona categoria keybind.gridModeShift.name = Seleziona categoria
keybind.press = Premi un tasto... keybind.press = Premi un tasto...
keybind.press.axis = Premi un'asse o un tasto... keybind.press.axis = Premi un'asse o un tasto...
keybind.screenshot.name = Screenshot della mappa keybind.screenshot.name = Screenshot della mappa
keybind.move_x.name = Sposta_x keybind.move_x.name = Muovi orizzontale
keybind.move_y.name = Sposta_y keybind.move_y.name = Muovi verticale
keybind.fullscreen.name = Toggle Fullscreen keybind.fullscreen.name = Schermo Intero
keybind.select.name = seleziona keybind.select.name = Seleziona
keybind.diagonal_placement.name = Posizionamento diagonale keybind.diagonal_placement.name = Posizionamento diagonale
keybind.pick.name = Scegli Blocco keybind.pick.name = Scegli Blocco
keybind.break_block.name = Rompi blocco keybind.break_block.name = Rompi blocco
keybind.deselect.name = Deseleziona keybind.deselect.name = Deseleziona
keybind.shoot.name = spara keybind.shoot.name = Spara
keybind.zoom_hold.name = attiva zoom keybind.zoom_hold.name = Attiva zoom
keybind.zoom.name = esegui zoom keybind.zoom.name = Esegui zoom
keybind.menu.name = menu keybind.menu.name = Apri Menu
keybind.pause.name = pausa keybind.pause.name = Pausa
keybind.minimap.name = Minimappa keybind.minimap.name = Minimappa
keybind.dash.name = Scatto keybind.dash.name = Scatto
keybind.chat.name = Chat keybind.chat.name = Chat
keybind.player_list.name = lista_giocatori keybind.player_list.name = Lista dei Giocatori
keybind.console.name = console keybind.console.name = Console
keybind.rotate.name = Ruotare keybind.rotate.name = Ruotare
keybind.toggle_menus.name = Abilita menù keybind.toggle_menus.name = Mostra/Nascondi HUD
keybind.chat_history_prev.name = Scorri chat vero l'alto keybind.chat_history_prev.name = Scorri chat vero l'alto
keybind.chat_history_next.name = Scorri chatt verso il basso keybind.chat_history_next.name = Scorri chatt verso il basso
keybind.chat_scroll.name = Scorri chat keybind.chat_scroll.name = Scorri chat
@@ -606,7 +606,7 @@ mode.sandbox.name = Creativa
mode.sandbox.description = Risorse infinite e nessun timer per le ondate. mode.sandbox.description = Risorse infinite e nessun timer per le ondate.
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = Lotta contro altri giocatori. mode.pvp.description = Lotta contro altri giocatori.
mode.attack.name = Attacco mode.attack.name = Schermaglia
mode.attack.description = Obiettivo: Distruggere la base nemica, non ci sono ondate mode.attack.description = Obiettivo: Distruggere la base nemica, non ci sono ondate
mode.custom = Regole personalizzate mode.custom = Regole personalizzate
rules.infiniteresources = Risorse infinite rules.infiniteresources = Risorse infinite
@@ -614,7 +614,7 @@ rules.wavetimer = Timer ondate
rules.waves = Ondate rules.waves = Ondate
rules.attack = Modalità attacco rules.attack = Modalità attacco
rules.enemyCheat = Infinite Risorse AI rules.enemyCheat = Infinite Risorse AI
rules.unitdrops = Drops Unità rules.unitdrops = Generazione Unità
rules.unitbuildspeedmultiplier = Moltiplicatore velocità costruzione unità rules.unitbuildspeedmultiplier = Moltiplicatore velocità costruzione unità
rules.unithealthmultiplier = Moltiplicatore vita unità rules.unithealthmultiplier = Moltiplicatore vita unità
rules.playerhealthmultiplier = Moltiplicatore vita giocatore rules.playerhealthmultiplier = Moltiplicatore vita giocatore
@@ -626,7 +626,7 @@ rules.wavespacing = Tempo fra ondate:[LIGHT_GRAY] (secondi)
rules.buildcostmultiplier = Moltiplicatore costo costruzione rules.buildcostmultiplier = Moltiplicatore costo costruzione
rules.buildspeedmultiplier = Moltiplicatore velocità costruzione rules.buildspeedmultiplier = Moltiplicatore velocità costruzione
rules.waitForWaveToEnd = Ondate aspettano fino a quando l'ondata precedente finisce rules.waitForWaveToEnd = Ondate aspettano fino a quando l'ondata precedente finisce
rules.dropzoneradius = Raggio di drop:[LIGHT_GRAY] (blocchi) rules.dropzoneradius = Raggio di generazione:[LIGHT_GRAY] (blocchi)
rules.respawns = Massimo di rigenerazioni per ondata rules.respawns = Massimo di rigenerazioni per ondata
rules.limitedRespawns = Limite rigenerazioni rules.limitedRespawns = Limite rigenerazioni
rules.title.waves = Ondate rules.title.waves = Ondate
@@ -764,8 +764,8 @@ block.dark-panel-5.name = Pannello scuro 5
block.dark-panel-6.name = Pannello scuro 6 block.dark-panel-6.name = Pannello scuro 6
block.dark-metal.name = Metallo Scuro block.dark-metal.name = Metallo Scuro
block.ignarock.name = Roccia Ignea block.ignarock.name = Roccia Ignea
block.hotrock.name = Roccia bollente block.hotrock.name = Roccia Bollente
block.magmarock.name = Roccia magmatica block.magmarock.name = Roccia Magmatica
block.cliffs.name = Scogliere block.cliffs.name = Scogliere
block.copper-wall.name = Muro di rame block.copper-wall.name = Muro di rame
block.copper-wall-large.name = Muro grande di rame block.copper-wall-large.name = Muro grande di rame
@@ -783,9 +783,9 @@ block.scatter.name = Cannone a dispersione
block.hail.name = Bombardiere block.hail.name = Bombardiere
block.lancer.name = Lanciere block.lancer.name = Lanciere
block.conveyor.name = Nastro trasportatore block.conveyor.name = Nastro trasportatore
block.titanium-conveyor.name = Nastro trasportatore avanzato block.titanium-conveyor.name = Nastro avanzato
block.armored-conveyor.name = Armored Conveyor block.armored-conveyor.name = Nastro corazzato
block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. block.armored-conveyor.description = Trasporta gli oggetti alla stessa velocità del nastro avanzato, ma è più resistente. Accetta input dai lati solo da altri nastri.
block.junction.name = Incrocio block.junction.name = Incrocio
block.router.name = Distributore block.router.name = Distributore
block.distributor.name = Distributore Grande block.distributor.name = Distributore Grande
@@ -820,8 +820,8 @@ block.delta-mech-pad.name = Piattaforma del Mech Delta
block.javelin-ship-pad.name = Piattaforma della Nave Giavellotto block.javelin-ship-pad.name = Piattaforma della Nave Giavellotto
block.trident-ship-pad.name = Piattaforma della Nave Tridente block.trident-ship-pad.name = Piattaforma della Nave Tridente
block.glaive-ship-pad.name = Piattaforma della Nave Glaive block.glaive-ship-pad.name = Piattaforma della Nave Glaive
block.omega-mech-pad.name = Piattaforma della Nave Omega block.omega-mech-pad.name = Piattaforma del Mech Omega
block.tau-mech-pad.name = Piattaforma della Nave Tau block.tau-mech-pad.name = Piattaforma del Mech Tau
block.conduit.name = Condotta block.conduit.name = Condotta
block.mechanical-pump.name = Pompa meccanica block.mechanical-pump.name = Pompa meccanica
block.item-source.name = Fonte infinita (oggetti) block.item-source.name = Fonte infinita (oggetti)
@@ -875,10 +875,10 @@ block.surge-wall-large.name = Muro di Sovratensione Grande
block.cyclone.name = Ciclone block.cyclone.name = Ciclone
block.fuse.name = Frantume block.fuse.name = Frantume
block.shock-mine.name = Mina Stordente block.shock-mine.name = Mina Stordente
block.overdrive-projector.name = Generatore di Campo di Overclock block.overdrive-projector.name = Generatore di Campo di Overdrive
block.force-projector.name = Generatore di Campo di Forza block.force-projector.name = Generatore di Campo di Forza
block.arc.name = Arco Elettrico block.arc.name = Arco Elettrico
block.rtg-generator.name = Generatore Termico ai Radioisotopi block.rtg-generator.name = Generatore RTG
block.spectre.name = Spettro block.spectre.name = Spettro
block.meltdown.name = Fusione block.meltdown.name = Fusione
block.container.name = Contenitore block.container.name = Contenitore
@@ -907,25 +907,25 @@ unit.eradicator.name = Estirpatore
unit.lich.name = Lich unit.lich.name = Lich
unit.reaper.name = Mietitore unit.reaper.name = Mietitore
tutorial.next = [lightgray]<Clicca per continuare> tutorial.next = [lightgray]<Clicca per continuare>
tutorial.intro = Sei entrato nel[scarlet] Tutorial di Mindustry.[]\nInizia [accent] scavando rame[]. Clicca un minerale di rame vicino al tuo nucleo per farlo.\n\n[accent]{0}/{1} rame tutorial.intro = Sei entrato nel[scarlet] Tutorial di Mindustry.[]\nInizia[accent] scavando rame[]. Clicca un minerale di rame vicino al tuo nucleo per farlo.\n\n[accent]{0}/{1} rame
tutorial.drill = Minare manualmente.\n[accent]Le trivelle []possono scavare automaticamente\nPiazzane una su un minerale di rame. tutorial.drill = Ora crea una trivella.\n[accent]Le trivelle []scavano da sole e sono più efficienti. Piazzane una su un minerale di rame.
tutorial.drill.mobile = L'estrazione manuale è inefficiente. \n[accent] Le trivelle [] possono estrarre automaticamente. \n Toccare la scheda della trivella in basso a destra. \n Selezionare la trivella meccanica [accent] []. \n Posizionarlo su una vena di rame toccando, quindi premere il segno di spunta [accent] [] in basso per confermare la selezione. \n Premere il tasto X [accent] [] per annullare il posizionamento. tutorial.drill.mobile = Ora crea una trivella. \n[accent] Le trivelle []scavano da sole e sono più efficienti. \n Toccare la scheda della trivella in basso a destra. \n Selezionare la trivella meccanica [accent] []. \n Posizionarlo su una vena di rame toccando, quindi premere il segno di spunta [accent] [] in basso per confermare la selezione. \n Premere il tasto X [accent] [] per annullare il posizionamento.
tutorial.blockinfo = Ogni blocco ha statistiche diverse. Ogni trivella può estrarre solo determinati minerali. \n Per controllare le informazioni e le statistiche di un blocco, [accent] tocca "?" mentre lo selezioni nel menu di creazione. []\n\n[accent] Accedi ora alle statistiche della trivella meccanica. [] tutorial.blockinfo = Ogni blocco ha statistiche diverse. Alcuni minerali richiedono trivelle specifiche.\nPer controllare le informazioni e le statistiche di un blocco, [accent] tocca "?" mentre lo selezioni nel database. []\n\n[accent]Accedi ora alle statistiche della trivella meccanica. []
tutorial.conveyor = [accent] I nastri trasportatori [] sono usati per trasportare oggetti al nocciolo. \n Crea una linea di nastri dalla trivella al nocciolo. tutorial.conveyor = [accent]I nastri trasportatori []sono usati per trasportare oggetti al nucleo. \nCrea una linea di nastri dalla trivella al nucleo.
tutorial.conveyor.mobile = [accent] I nastri trasportatori [] sono usati per trasportare oggetti nel nocciolo. \nCrea una linea di nastri trasportatori dalla trivella al nocciolo. \n[accent] Posizionati in una linea tenendo premuto il dito per alcuni secondi [] e trascinando in una direzione. \n\n [accent] {0} / {1} nastri trasportatori disposti in linea \n [accent] 0/1 oggetti consegnati tutorial.conveyor.mobile = [accent] I nastri trasportatori [] sono usati per trasportare oggetti nel nocciolo. \nCrea una linea di nastri trasportatori dalla trivella al nocciolo. \n[accent] Posizionati in una linea tenendo premuto il dito per alcuni secondi [] e trascinando in una direzione. \n\n [accent] {0} / {1} nastri trasportatori disposti in linea \n [accent] 0/1 oggetti consegnati
tutorial.turret = Strutture difensive devono essere costruite per respingere il nemico [LIGHT_GRAY] []. \nCostruisci una torretta a due vicino alla tua base. tutorial.turret = Costruisci delle torrette per respingere il nemico [LIGHT_GRAY] []. \nCostruisci una torretta Duo vicino alla tua base.
tutorial.drillturret = Torrette a due richiedono[accent] munizioni di rame[] per sparare.\n Duo turrets require[accent] copper ammo []to shoot.\nPosiziona una trivella vicino alla torretta per rifornirlo di rame estratto. tutorial.drillturret = La Torretta Duo richiede[accent] munizioni di rame[] per sparare.\nPosiziona una trivella e collega un nastro alla torretta per rifornirla di munizioni con il rame estratto.
tutorial.pause = Durante la battaglia, puoi mettere in pausa il gioco [accent]. []\nPuoi disporre gli edifici mentre sei in pausa. \n\n[accent] Premi spazio per mettere in pausa. tutorial.pause = Durante la battaglia, puoi mettere in pausa il gioco [accent]. []\nPuoi disporre gli edifici mentre sei in pausa. \n\n[accent]Premi spazio per mettere in pausa.
tutorial.pause.mobile = Durante la battaglia, puoi mettere in pausa il gioco [accent]. []\nPuoi disporre gli edifici mentre sei in pausa. \n\n[accent] Premi questo pulsante in alto a sinistra per mettere in pausa. tutorial.pause.mobile = Durante la battaglia, puoi mettere in pausa il gioco [accent]. []\nPuoi disporre gli edifici mentre sei in pausa. \n\n[accent] Premi questo pulsante in alto a sinistra per mettere in pausa.
tutorial.unpause = Ora premi di nuovo spazio per annullare la pausa. tutorial.unpause = Ora premi di nuovo spazio per annullare la pausa.
tutorial.unpause.mobile = Ora premilo di nuovo per annullare la pausa. tutorial.unpause.mobile = Ora premilo di nuovo per annullare la pausa.
tutorial.breaking = I blocchi spesso devono essere distrutti. \n [accent] Tieni premuto il tasto destro del mouse [] per distruggere tutti i blocchi in una selezione. []\n\n[accent] Distruggi tutti i blocchi di scarto a sinistra del tuo core usando la selezione dell'area . tutorial.breaking = I blocchi spesso devono essere distrutti. \n [accent]Tieni premuto il tasto destro del mouse [] per distruggere tutti i blocchi in una selezione. []\n[accent]Distruggi tutti i blocchi di scarto a sinistra del tuo core usando la selezione dell'area .
tutorial.breaking.mobile = I blocchi spesso devono essere distrutti. \n [accent] Seleziona la modalità di decostruzione [], quindi tocca un blocco per iniziare a romperlo. \n Distruggi un'area tenendo premuto il dito per alcuni secondi [] e trascinando in una direzione.\n Premi il pulsante con il segno di spunta per confermare la rottura. \n\n [accent] Distruggi tutti i blocchi di scarto a sinistra del tuo nucleo usando la selezione dell'area. tutorial.breaking.mobile = I blocchi spesso devono essere distrutti. \n [accent] Seleziona la modalità di decostruzione [], quindi tocca un blocco per iniziare a smantellarlo. \n Distruggi un'area tenendo premuto il dito per alcuni secondi [] e trascinando in una direzione.\nPremi il pulsante con il segno di spunta per confermare la rimozione. \n\n [accent] Distruggi tutti i blocchi di scarto a sinistra del tuo nucleo usando la selezione dell'area.
tutorial.withdraw = In alcune situazioni, è necessario prendere gli oggetti direttamente dai blocchi. \n Per fare ciò, [accent] tocca un blocco [] con oggetti al suo interno, quindi [accent] tocca l'oggetto [] nell'inventario. \nPosti multipli possono essere ritirati da [accent] toccando e tenendo premuto []. \n\n[accent] Prelevare un po' di rame dal nucleo. [] tutorial.withdraw = In alcune situazioni, è necessario prendere gli oggetti direttamente dai blocchi.\nPer fare ciò, [accent] tocca un blocco []con oggetti al suo interno, quindi [accent] tocca l'oggetto [] nell'inventario. \nPuoi prelevare più oggetti insieme[accent]tenendo premuto il tasto sinistro del mouse[].\n[accent]Preleva un po' di rame dal nucleo. []
tutorial.deposit = Deposita gli oggetti in blocchi trascinandoli dalla tua nave al blocco di destinazione. \n\n[accent] Riporta il rame nel nucleo. [] tutorial.deposit = Deposita tutti gli oggetti che trasporti trascinandoli dalla tua nave al blocco di destinazione. \n[accent]Rimetti il rame nel nucleo. []
tutorial.waves = Il nemico [LIGHT_GRAY] si avvicina. \n\n Difendi il tuo nucleo per 2 ondate. Costruisci più torrette. tutorial.waves = Il nemico [LIGHT_GRAY] si avvicina.\nDifendi il tuo nucleo per 2 ondate. Costruisci più torrette. Puoi sparare tenendo premuto il tasto sinistro del mouse.
tutorial.waves.mobile = Il [lightgray] nemico si avvicina.\n\n Difendi il nucleo per due ondate. La tua nave sparerà automaticamente contro i nemici.\nCostruisci più torrette e trivelle. Scava più rame tutorial.waves.mobile = Il [lightgray] nemico si avvicina.\n\n Difendi il nucleo per 2 ondate. La tua nave sparerà automaticamente contro i nemici.\nCostruisci più torrette.
tutorial.launch = Una volta raggiunta un'onda specifica, sei in grado di [accent] decollare con il nucleo [], lasciando indietro le tue difese ed [accent] ottenendo tutte le risorse nel tuo nucleo. [] \n Queste risorse possono quindi essere utilizzate per ricercare nuove tecnologie.\n\n [accent] Premi il pulsante di avvio. tutorial.launch = Una volta raggiunta un'ondata specifica, sarai in grado di [accent] decollare con il nucleo [], lasciando la zona e abbandonando le tue difese e le tue strutture\nOtterrai [accent]tutte le risorse nel tuo nucleo[] e potrai quindi usarle per ricercare nuove tecnologie.\n\n [accent]Decolla e conferma per terminare il tutorial.
item.copper.description = Un utile materiale, usato dappertutto item.copper.description = Un utile materiale, usato dappertutto
item.lead.description = Un materiale di base, molto usato nei blocchi di trasporto. item.lead.description = Un materiale di base, molto usato nei blocchi di trasporto.
item.metaglass.description = Un durissimo composto di vetro. Estensivamente usato per trasporto di liquidi ed immagazzinamento. item.metaglass.description = Un durissimo composto di vetro. Estensivamente usato per trasporto di liquidi ed immagazzinamento.

View File

@@ -21,6 +21,7 @@ load.map = マップ
load.image = 画像 load.image = 画像
load.content = コンテンツ load.content = コンテンツ
load.system = システム load.system = システム
load.mod = MOD
stat.wave = 防衛したウェーブ:[accent] {0} stat.wave = 防衛したウェーブ:[accent] {0}
stat.enemiesDestroyed = 敵による破壊数:[accent] {0} stat.enemiesDestroyed = 敵による破壊数:[accent] {0}
stat.built = 建設した建造物数:[accent] {0} stat.built = 建設した建造物数:[accent] {0}
@@ -29,6 +30,7 @@ stat.deconstructed = 解体した建造物数:[accent] {0}
stat.delivered = 獲得した資源: stat.delivered = 獲得した資源:
stat.rank = 最終ランク: [accent]{0} stat.rank = 最終ランク: [accent]{0}
launcheditems = [accent]回収したアイテム launcheditems = [accent]回収したアイテム
launchedinfo = [unlaunched][[LAUNCH]青い項目がコア受け取ます
map.delete = マップ "[accent]{0}[]" を削除してもよろしいですか? map.delete = マップ "[accent]{0}[]" を削除してもよろしいですか?
level.highscore = ハイスコア: [accent]{0} level.highscore = ハイスコア: [accent]{0}
level.select = レベル選択 level.select = レベル選択
@@ -48,7 +50,7 @@ minimap = ミニマップ
close = 閉じる close = 閉じる
website = ウェブサイト website = ウェブサイト
quit = 終了 quit = 終了
save.quit = Save & Quit save.quit = セーブして終了
maps = マップ maps = マップ
maps.browse = マップを閲覧する maps.browse = マップを閲覧する
continue = 続ける continue = 続ける
@@ -60,6 +62,20 @@ uploadingcontent = コンテンツをアップロードしています
uploadingpreviewfile = プレビューファイルをアップロードしています uploadingpreviewfile = プレビューファイルをアップロードしています
committingchanges = 変更を適応中 committingchanges = 変更を適応中
done = 完了 done = 完了
mods.alphainfo = モードは実験的です,覚えておいてください。 [scarlet] エラーが含まれている可能性があります[]。\n 発見した問題をMindustry Githubに報告してください.
mods.alpha = [accent](Alpha)
mods = Mods
mods.none = [LIGHT_GRAY]MOD見つかりませんでした!
mod.enabled = [lightgray]Enabled
mod.disabled = [scarlet]Disabled
mod.disable = 可能にしません
mod.enable = 可能にする
mod.requiresrestart = このモードをインストールするため, このゲームは再起動します
mod.reloadrequired = [scarlet]リロード必須
mod.import = モードをインポート
mod.remove.confirm = このモードを削除されます
mod.author = [LIGHT_GRAY]著者:[] {0}
mod.missing = このセーブ には、アップグレードされた可能性があるMODS、またはここに存在しないMODSが必要です。 メモリのセーブを保存する! ロードしてもよろしいですか?\n[lightgray]MODS:\n{0}
about.button = 情報 about.button = 情報
name = 名前: name = 名前:
noname = [accent]プレイヤー名[]を入力してください。 noname = [accent]プレイヤー名[]を入力してください。
@@ -173,7 +189,7 @@ save.playtime = プレイ時間: {0}
warning = 警告 warning = 警告
confirm = 確認 confirm = 確認
delete = 削除 delete = 削除
view.workshop = View In Workshop view.workshop = ワークショップを見る
ok = OK ok = OK
open = 開く open = 開く
customize = カスタマイズ customize = カスタマイズ
@@ -222,7 +238,7 @@ editor.oregen.info = 鉱石の生成:
editor.mapinfo = マップ情報 editor.mapinfo = マップ情報
editor.author = 作者: editor.author = 作者:
editor.description = 説明: editor.description = 説明:
editor.nodescription = A map must have a description of at least 4 characters before being published. editor.nodescription = マップを公開するには、少なくとも4文字以上の説明が必要です。
editor.waves = ウェーブ: editor.waves = ウェーブ:
editor.rules = ルール: editor.rules = ルール:
editor.generation = 生成: editor.generation = 生成:
@@ -289,7 +305,7 @@ editor.resizemap = マップをリサイズ
editor.mapname = マップ名: editor.mapname = マップ名:
editor.overwrite = [accent]警告!\nすでに存在するマップを上書きします。 editor.overwrite = [accent]警告!\nすでに存在するマップを上書きします。
editor.overwrite.confirm = [scarlet]警告![] すでに同じ名前のマップが存在します。上書きしてもよろしいですか? editor.overwrite.confirm = [scarlet]警告![] すでに同じ名前のマップが存在します。上書きしてもよろしいですか?
editor.exists = A map with this name already exists. editor.exists = すでに同じ名前のマップが存在します。
editor.selectmap = 読み込むマップを選択: editor.selectmap = 読み込むマップを選択:
toolmode.replace = 置きかえ toolmode.replace = 置きかえ
toolmode.replace.description = 固体ブロックのみに描きます。 toolmode.replace.description = 固体ブロックのみに描きます。
@@ -340,7 +356,7 @@ width = 幅:
height = 高さ: height = 高さ:
menu = メニュー menu = メニュー
play = プレイ play = プレイ
campaign = 遠征 campaign = プレイ
load = 読み込む load = 読み込む
save = 保存 save = 保存
fps = FPS: {0} fps = FPS: {0}
@@ -354,18 +370,18 @@ editor = エディター
mapeditor = マップエディター mapeditor = マップエディター
donate = 寄付 donate = 寄付
abandon = 撤退 abandon = 撤退
abandon.text = このゾーンすべての資源が敵に奪われます。 abandon.text = このゾーンすべての資源が敵に奪われます。
locked = ロック locked = ロック
complete = [lightgray]達成済み: complete = [lightgray]達成済み:
zone.requirement = ゾーン {1} でウェーブ {0} を達成 zone.requirement = ゾーン {1} でウェーブ {0} を達成
resume = 再開ゾーン:\n[lightgray]{0} resume = 再開ゾーン:\n[lightgray]{0}
bestwave = [lightgray]最高ウェーブ: {0} bestwave = [lightgray]最高ウェーブ: {0}
launch = < 離脱 > launch = < 発射 >
launch.title = 離脱成功 launch.title = 発射成功
launch.next = [lightgray]次は ウェーブ {0} で離脱可能です。 launch.next = [lightgray]次は ウェーブ {0} で発射可能です。
launch.unable2 = [scarlet]離脱できません。[] launch.unable2 = [scarlet]発射できません。[]
launch.confirm = すべての資源をコアに搬入し、離脱します。\nもうこの基地には戻ってくることはできません。 launch.confirm = すべての資源をコアに搬入し、発射します。\nもうこの基地には戻ってくることはできません。
launch.skip.confirm = スキップすると、次の離脱可能なウェーブまで離脱できません。 launch.skip.confirm = スキップすると、次の発射可能なウェーブまで発射できません。
uncover = 開放 uncover = 開放
configure = 積み荷の設定 configure = 積み荷の設定
configure.locked = [lightgray]ウェーブ {0} を達成すると積み荷を設定できるようになります。 configure.locked = [lightgray]ウェーブ {0} を達成すると積み荷を設定できるようになります。
@@ -375,14 +391,14 @@ zone.requirement.complete = ウェーブ {0} を達成:\n{1} の開放条件を
zone.config.complete = ウェーブ {0} を達成:\n積み荷の設定が解除されました。 zone.config.complete = ウェーブ {0} を達成:\n積み荷の設定が解除されました。
zone.resources = 発見した資源: zone.resources = 発見した資源:
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 = ボスのHP boss.health = ボスのHP
connectfail = [crimson]サーバーへ接続できませんでした:\n\n[accent]{0} connectfail = [crimson]サーバーへ接続できませんでした:\n\n[accent]{0}
error.unreachable = サーバーに到達できません。\nアドレスは正しいですか? error.unreachable = サーバーに到達できません。\nアドレスは正しいですか?
error.invalidaddress = 無効なアドレスです。 error.invalidaddress = 無効なアドレスです。
error.timedout = タイムアウトしました!\nホストがポート開放されているかを確認してください。また、このアドレスは無効なアドレスではありません! error.timedout = タイムアウトしました!\nホストがポート開放されているかを確認してください。
error.mismatch = パケットエラー:\n恐らくクライアント/サーバーのバージョンが一致していません。\nゲームとサーバーが最新版のMindustryかどうかを確認してください! error.mismatch = パケットエラー:\n恐らくクライアント/サーバーのバージョンが一致していません。\nゲームとサーバーが最新版のMindustryかどうかを確認してください!
error.alreadyconnected = すでに接続されています。 error.alreadyconnected = すでに接続されています。
error.mapnotfound = マップファイルが見つかりません! error.mapnotfound = マップファイルが見つかりません!
@@ -524,7 +540,7 @@ setting.antialias.name = アンチエイリアス[lightgray] (再起動が必要
setting.indicators.name = 敵/味方の方角表示 setting.indicators.name = 敵/味方の方角表示
setting.autotarget.name = オートターゲット setting.autotarget.name = オートターゲット
setting.keyboard.name = マウスとキーボード操作 setting.keyboard.name = マウスとキーボード操作
setting.touchscreen.name = Touchscreen Controls setting.touchscreen.name = タッチスクリーン操作
setting.fpscap.name = 最大FPS setting.fpscap.name = 最大FPS
setting.fpscap.none = なし setting.fpscap.none = なし
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
@@ -545,7 +561,6 @@ setting.fullscreen.name = フルスクリーン
setting.borderlesswindow.name = 境界の無いウィンドウ[lightgray] (再起動が必要になる場合があります) setting.borderlesswindow.name = 境界の無いウィンドウ[lightgray] (再起動が必要になる場合があります)
setting.fps.name = FPSを表示 setting.fps.name = FPSを表示
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = 電力線を表示
setting.pixelate.name = ピクセル化[lightgray] (アニメーションが無効化されます) setting.pixelate.name = ピクセル化[lightgray] (アニメーションが無効化されます)
setting.minimap.name = ミニマップを表示 setting.minimap.name = ミニマップを表示
setting.musicvol.name = 音楽 音量 setting.musicvol.name = 音楽 音量
@@ -557,6 +572,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.playerchat.name = ゲーム内にチャットを表示 setting.playerchat.name = ゲーム内にチャットを表示
uiscale.reset = UIサイズが変更されました。\nこのままでよければ「OK」を押してください。\n[scarlet][accent]{0}[] 秒で元の設定に戻ります... uiscale.reset = UIサイズが変更されました。\nこのままでよければ「OK」を押してください。\n[scarlet][accent]{0}[] 秒で元の設定に戻ります...
uiscale.cancel = キャンセル & 終了 uiscale.cancel = キャンセル & 終了
@@ -784,8 +800,8 @@ block.hail.name = ヘイル
block.lancer.name = ランサー block.lancer.name = ランサー
block.conveyor.name = コンベアー block.conveyor.name = コンベアー
block.titanium-conveyor.name = チタンコンベアー block.titanium-conveyor.name = チタンコンベアー
block.armored-conveyor.name = Armored Conveyor block.armored-conveyor.name = 装甲コンベア
block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. block.armored-conveyor.description = チタンコンベアーと同じ速度でアイテムを輸送することができ、耐久性に優れています。\nまた、ほかのコンベアーからの側面からの入力は受け取ることができません。
block.junction.name = ジャンクション block.junction.name = ジャンクション
block.router.name = ルーター block.router.name = ルーター
block.distributor.name = ディストリビューター block.distributor.name = ディストリビューター
@@ -965,7 +981,7 @@ unit.eruptor.description = 建造物を破壊することに特化したユニ
unit.wraith.description = 高速で突撃攻撃が可能な迎撃ユニットです。 unit.wraith.description = 高速で突撃攻撃が可能な迎撃ユニットです。
unit.ghoul.description = 重爆撃機です。敵の重要な建造物を優先して破壊します。 unit.ghoul.description = 重爆撃機です。敵の重要な建造物を優先して破壊します。
unit.revenant.description = 空中からミサイルを発射する重爆撃機です。 unit.revenant.description = 空中からミサイルを発射する重爆撃機です。
block.message.description = Stores a message. Used for communication between allies. 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 = 石炭と砂からシリコンを製造します。
@@ -1082,7 +1098,7 @@ 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 = Provides transformation into a heavily-armored missile mech.\nUse by tapping while standing on it. 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

@@ -16,11 +16,14 @@ screenshot.invalid = 맵이 너무 커서 스크린샷을 찍을 메모리가
gameover = 게임 오버 gameover = 게임 오버
gameover.pvp = [accent]{0}[] 팀이 승리했습니다! gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
highscore = [accent]최고점수 달성! highscore = [accent]최고점수 달성!
load.sound = 소리 load.sound = 소리
load.map = load.map =
load.image = 사진 load.image = 사진
load.content = 컨텐츠 load.content = 컨텐츠
load.system = 시스템 load.system = 시스템
load.mod = 모드
stat.wave = 버틴 단계 수 : [accent]{0} stat.wave = 버틴 단계 수 : [accent]{0}
stat.enemiesDestroyed = 파괴한 적 수 : [accent]{0} stat.enemiesDestroyed = 파괴한 적 수 : [accent]{0}
stat.built = 건설한 건물 수 : [accent]{0} stat.built = 건설한 건물 수 : [accent]{0}
@@ -28,7 +31,9 @@ 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 = [출격되지 않음][[출격]파랑색으로 표시된 자원들을 획득합니다.
map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까? map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까?
level.highscore = 최고 점수 : [accent]{0} level.highscore = 최고 점수 : [accent]{0}
level.select = 맵 선택 level.select = 맵 선택
@@ -40,7 +45,6 @@ database = 코어 기록보관소
savegame = 게임 저장 savegame = 게임 저장
loadgame = 게임 불러오기 loadgame = 게임 불러오기
joingame = 서버 접속 joingame = 서버 접속
addplayers = 플레이어 추가/제거
customgame = 사용자 정의 게임 customgame = 사용자 정의 게임
newgame = 새 게임 newgame = 새 게임
none = <없음> none = <없음>
@@ -60,16 +64,35 @@ uploadingcontent = 컨텐츠 업로드
uploadingpreviewfile = 미리보기 파일 업로드 uploadingpreviewfile = 미리보기 파일 업로드
committingchanges = 바뀐 점 적용 committingchanges = 바뀐 점 적용
done = 완료 done = 완료
mods.alphainfo = 현재의 모드는 첫 번째 버전이며, 그리고[scarlet] 버그가 매우 많음을 명심하십시오[].\n만약 버그를 발견할경우 Mindustry 깃허브 또는 디스코드로 제보해주세요.
mods.alpha = [scarlet](Alpha)
mods = 모드
mods.none = [LIGHT_GRAY]모드가 발견되지 않았습니다!
mods.guide = 모드 가이드
mods.report = 버그 신고
mod.enabled = [lightgray]활성화
mod.disabled = [scarlet]비활성화
mod.disable = 비활성화
mod.enable = 활성화
mod.requiresrestart = 모드 변경사항을 적용하기 위해 게임을 종료합니다.
mod.reloadrequired = [scarlet]새로고침 요구됨
mod.import = 모드 추가
mod.import.github = 깃허브 모드 추가
mod.remove.confirm = 모드가 삭제되었습니다.
mod.author = [LIGHT_GRAY]제작자:[] {0}
mod.missing = 이 세이브파일에는 설치하지 않은 모드 혹은 이 버전에 속해있지 않은 데이터가 포함되어 있습니다. 이 것을 불러올 경우 세이브파일의 데이터가 손상될 수 있습니다. 정말로 이 파일을 불러오시겠습니까?\n[lightgray]모드 :\n{0}
about.button = 정보 about.button = 정보
name = 이름 : name = 이름 :
noname = 먼저 [accent] 유저 이름[] 을 설정하세요. noname = 먼저 [accent] 유저 이름[] 을 설정하세요.
filename = 파일 이름 : filename = 파일 이름 :
unlocked = 새 건물 잠금 해제 unlocked = 대상 정보 기록
completed = [accent]연구됨 completed = [accent]연구됨
techtree = 연구 기록 techtree = 연구 기록
research.list = [LIGHT_GRAY]연구: research.list = [LIGHT_GRAY]연구 :
research = 연구 research = 연구
researched = [LIGHT_GRAY]{0}연구. researched = [LIGHT_GRAY]{0}연구 완료.
players = 현재 {0}명 접속중 players = 현재 {0}명 접속중
players.single = 현재 {0}명만 있음. players.single = 현재 {0}명만 있음.
server.closing = [accent]서버 닫는중... server.closing = [accent]서버 닫는중...
@@ -129,7 +152,7 @@ confirmunadmin = 이 플레이어를 일반 유저로 만들겠습니까?
joingame.title = 게임 참가 joingame.title = 게임 참가
joingame.ip = 주소: joingame.ip = 주소:
disconnect = 서버와 연결이 해제되었습니다. disconnect = 서버와 연결이 해제되었습니다.
disconnect.error = Connection error. disconnect.error = 연결 .
disconnect.closed = 연결이 끊어졌습니다.. disconnect.closed = 연결이 끊어졌습니다..
disconnect.timeout = 연결 시간 한계 도달.. disconnect.timeout = 연결 시간 한계 도달..
disconnect.data = 월드 데이터 로딩 실패.. disconnect.data = 월드 데이터 로딩 실패..
@@ -140,7 +163,6 @@ server.port = 포트:
server.addressinuse = 주소가 이미 사용중입니다! server.addressinuse = 주소가 이미 사용중입니다!
server.invalidport = 포트가 올바르지 않습니다! server.invalidport = 포트가 올바르지 않습니다!
server.error = [accent]{0}[crimson]서버를 여는데 오류가 발생했습니다. server.error = [accent]{0}[crimson]서버를 여는데 오류가 발생했습니다.
save.old = 이 저장파일은 이전 버전의 게임용이며, 지금은 사용할 수 없습니다. \n\n[LIGHT_GRAY]4.0 정식때 이전 게임버전에서 만든 저장파일과 호환됩니다.
save.new = 새로 저장 save.new = 새로 저장
save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까? save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까?
overwrite = 덮어쓰기 overwrite = 덮어쓰기
@@ -160,21 +182,22 @@ save.rename.text = 새 이름:
selectslot = 저장슬롯을 선택하십시오. selectslot = 저장슬롯을 선택하십시오.
slot = [accent]{0}번째 슬롯 slot = [accent]{0}번째 슬롯
editmessage = 글 수정하기 editmessage = 글 수정하기
save.corrupted = [accent]세이브 파일이 손상되었거나 잘못된 파일입니다! 만약 게임을 업데이트 했다면 이것은 아마 저장 형식 변경일 것이고, 이것은 버그가 [scarlet]아닙니다[]. save.corrupted = [accent]세이브 파일이 손상되었거나 잘못된 파일입니다!
empty = <비어있음> empty = <비어있음>
on = 켜기 on = 활성화
off = 끄기 off = 비활성화
save.autosave = 자동저장: {0} save.autosave = 자동저장 : {0}
save.map = 맵: {0} save.map = : {0}
save.wave = 웨이브 {0} save.wave = {0} 단계
save.mode = 게임모드 : {0} save.mode = 게임모드 : {0}
save.date = 마지막 저장날짜: {0} save.date = 마지막 저장: {0}
save.playtime = 플레이시간: {0} save.playtime = 플레이타임 : {0}
warning = 경고. warning = 경고.
confirm = 확인 confirm = 확인
delete = 삭제 delete = 삭제
view.workshop = 워크샵에서 보기 view.workshop = 워크샵에서 보기
ok = OK workshop.listing = 워크샵 목록 편집하기
ok = 확인
open = 열기 open = 열기
customize = 맞춤설정 customize = 맞춤설정
cancel = 취소 cancel = 취소
@@ -191,7 +214,11 @@ classic.export.text = Mindustry 클래식 (v3.5 build 40)의 세이브파일 또
quit.confirm = 정말로 종료하시겠습니까? quit.confirm = 정말로 종료하시겠습니까?
quit.confirm.tutorial = 튜토리얼을 종료하시겠습니까?\n튜토리얼은 [accent]설정 -> 게임 -> 튜토리얼[]에서 다시 해보실 수 있습니다. quit.confirm.tutorial = 튜토리얼을 종료하시겠습니까?\n튜토리얼은 [accent]설정 -> 게임 -> 튜토리얼[]에서 다시 해보실 수 있습니다.
loading = [accent]불러오는중... loading = [accent]불러오는중...
reloading = [accent]모드 새로고침하는중...
saving = [accent]저장중... saving = [accent]저장중...
cancelbuilding = [accent][[{0}][] 를 눌러 설계도 초기화
pausebuilding = [accent][[{0}][] 를 눌러 설계모드 진입
resumebuilding = [scarlet][[{0}][] 를 눌러 건설 시작
wave = [accent]웨이브 {0} wave = [accent]웨이브 {0}
wave.waiting = [green]{0}초[]후 웨이브 시작 wave.waiting = [green]{0}초[]후 웨이브 시작
wave.waveInProgress = [LIGHT_GRAY]웨이브 진행중 wave.waveInProgress = [LIGHT_GRAY]웨이브 진행중
@@ -211,7 +238,12 @@ map.nospawn.pvp = 이 맵에는 적팀 코어가 없습니다! 에디터에서 [
map.nospawn.attack = 이 맵에는 플레이어가 공격할 수 있는 적의 코어가 없습니다! 에디터에서 [ROYAL] 빨강색 팀[] 코어를 맵에 추가하세요. map.nospawn.attack = 이 맵에는 플레이어가 공격할 수 있는 적의 코어가 없습니다! 에디터에서 [ROYAL] 빨강색 팀[] 코어를 맵에 추가하세요.
map.invalid = 파일이 잘못되었거나 손상되어 맵을 열 수 없습니다. map.invalid = 파일이 잘못되었거나 손상되어 맵을 열 수 없습니다.
map.publish.error = 맵 업로드 오류 : {0} map.publish.error = 맵 업로드 오류 : {0}
map.update = 맵 업데이트
map.load.error = 워크샵 작업 오류 : {0}
map.missing = 해당 맵은 삭제되거나 옮겨졌습니다.\n[lightgray]워크샵 목록은 자동으로 동기화되지 않습니다.
map.publish.confirm = 맵을 업로드 하시겠습니까?\n\n[lightgray]먼저 워크샵 EULA에 동의하시지 않으면 맵이 표시되지 않습니다! map.publish.confirm = 맵을 업로드 하시겠습니까?\n\n[lightgray]먼저 워크샵 EULA에 동의하시지 않으면 맵이 표시되지 않습니다!
map.menu = 원하는 맵을 선택하세요.
map.changelog = 바뀐 점 (선택성):
eula = 스팀 EULA eula = 스팀 EULA
map.publish = 맵 업로드 완료! map.publish = 맵 업로드 완료!
map.publishing = [accent]맵 업로드 중... map.publishing = [accent]맵 업로드 중...
@@ -291,6 +323,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 = 모두 재배치
@@ -305,6 +338,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 = 맵 전체에 타일 혹은 블럭 뿌리기
@@ -336,16 +370,16 @@ 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 = 넓이:
height = 높이: width = 넓이 :
height = 높이 :
menu = 메뉴 menu = 메뉴
play = 플레이 play = 플레이
campaign = 캠페인 campaign = 캠페인
load = 불러오기 load = 불러오기
save = 저장 save = 저장
fps = FPS: {0} fps = FPS : {0}
tps = TPS: {0} ping = Ping : 초당 {0}
ping = Ping: {0}ms
language.restart = 언어를 변경하려면 게임을 다시시작 해 주세요. language.restart = 언어를 변경하려면 게임을 다시시작 해 주세요.
settings = 설정 settings = 설정
tutorial = 게임 방법 tutorial = 게임 방법
@@ -353,32 +387,38 @@ tutorial.retake = 튜토리얼
editor = 편집기 editor = 편집기
mapeditor = 맵 편집기 mapeditor = 맵 편집기
donate = 기부 donate = 기부
abandon = 포기 abandon = 포기
abandon.text = 이 구역의 모든 자원이 적에게 빼앗길 것입니다. abandon.text = 이 구역의 모든 자원이 적에게 빼앗길 것입니다.
locked = 잠김 locked = 잠김
complete = [LIGHT_GRAY]완료: complete = [LIGHT_GRAY]완료 :
zone.requirement = 지역 {1} 에서 단계 {0} 달성 zone.requirement = 지역 {1} 에서 단계 {0} 달성
resume = 지역 계속 플레이:\n[LIGHT_GRAY]{0} requirement.core = Destroy Enemy Core in {0}
bestwave = [LIGHT_GRAY]최고 점수: {0} requirement.unlock = Unlock {0}
resume = 현재 진행 중인 지역 :\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]최고 점수 : {0}
launch = < 출격 > launch = < 출격 >
launch.title = 출격 성공 launch.title = 출격 성공
launch.next = [LIGHT_GRAY]다음 출격기회는 {0} 단계에서 나타납니다. launch.next = [LIGHT_GRAY]다음 출격기회는 {0} 단계에서 나타납니다.
launch.unable2 = [scarlet]출격할 수 없습니다.[] launch.unable2 = [scarlet]출격할 수 없습니다.[]
launch.confirm = 출격하게 되면 모든 자원이 코어로 들어갑니다.\n또한 성공하기 전까지 기지로 돌아갈 수 없습니다. launch.confirm = 출격하게 되면 코어에 저장된 모든 자원이 창고로 들어갑니다.\n또한 출격한 지역에는 아무것도 남지 않습니다.
launch.skip.confirm = 만약 지금 출격하시지 않고 스킵하신다면, 다음 출격 단계까지 기다려야 합니다. launch.skip.confirm = 만약 지금 출격하시지 않고 스킵하신다면, 다음 출격 단계까지 기다려야 합니다.
uncover = 역 개방 uncover = 역 개방
configure = 코어 시작자원 설정 configure = 코어 시작자원 설정
configure.locked = {0} 단계에서 시작자원 설정 잠금이 해제됩니다. bannedblocks = 금지된 블럭들
addall = 모두 추가
configure.locked = 단계를 지역 {0}에서 달성할 시 시작자원 설정이 해금됩니다.
configure.invalid = 해당 0 과 {0} 사이여야 합니다. configure.invalid = 해당 0 과 {0} 사이여야 합니다.
zone.unlocked = [LIGHT_GRAY] 잠금 해제되었습니다! zone.unlocked = [LIGHT_GRAY] 잠금 해제되었습니다!
zone.requirement.complete = 단계 {0} 달성:\n{1} 지역 요구사항이 충족되었습니다! zone.requirement.complete = 단계 {0} 달성:\n{1} 지역 요구사항이 충족되었습니다!
zone.config.complete = 단계 {0} 달성:\n시작자원 설정 기능이 해금되었습니다! zone.config.complete = 단계 {0} 달성:\n시작자원 설정 기능이 해금되었습니다!
zone.resources = 자원이 감지되었습니다 : zone.resources = 감지된 자원 목록 :
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]{0}[accent] 서버에 연결하지 못했습니다.[] connectfail = [crimson]{0}[accent] 서버에 연결하지 못했습니다.[]
error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요? error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요?
error.invalidaddress = 잘못된 주소입니다. error.invalidaddress = 잘못된 주소입니다.
@@ -389,6 +429,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 = 크레이터
@@ -403,6 +444,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]이 지역에서의 착륙장소는 확실하지 않습니다.
@@ -417,6 +459,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 = 설정 초기화
@@ -471,20 +514,22 @@ blocks.inaccuracy = 오차각
blocks.shots = 발포 횟수 blocks.shots = 발포 횟수
blocks.reload = 재장전 blocks.reload = 재장전
blocks.ammo = 탄약 blocks.ammo = 탄약
bar.drilltierreq = 더 좋은 드릴이 요구됨 bar.drilltierreq = 더 좋은 드릴이 요구됨
bar.drillspeed = 채광 속도 : {0}/s bar.drillspeed = 채광 속도 : {0}/s
bar.efficiency = 효율성 : {0}% bar.efficiency = 효율성 : {0}%
bar.powerbalance = 전력 : {0}/s bar.powerbalance = 전력 : {0}/s
bar.powerstored = 에너지 저장량 : {0}/{1} bar.powerstored = 총 전력 저장량 : {0}/{1}
bar.poweramount = 전력 저장량 : {0} bar.poweramount = 전력 저장량 : {0}
bar.poweroutput = 전력 생산량 : {0}/s bar.poweroutput = 전력 생산량 : {0}/s
bar.items = 최대 120개중 {0}개 중 bar.items = 자원량 : {0}
bar.capacity = 저장공간 : {0} bar.capacity = 저장공간 : {0}
bar.liquid = 액체 bar.liquid = 액체
bar.heat = 발열 bar.heat = 발열
bar.power = 전력 bar.power = 전력
bar.progress = 생산 진행도 bar.progress = 생산 진행도
bar.spawned = 최대 {1}기 중 {0}기 생산됨 bar.spawned = 최대 {1}기 중 {0}기 생산됨
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]방화
@@ -496,6 +541,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 = 액체/초
@@ -557,8 +603,9 @@ setting.crashreport.name = 오류 보고서 보내기
setting.savecreate.name = 자동 저장 활성화 setting.savecreate.name = 자동 저장 활성화
setting.publichost.name = 공용 서버 보이기 setting.publichost.name = 공용 서버 보이기
setting.chatopacity.name = 채팅 투명도 setting.chatopacity.name = 채팅 투명도
setting.playerchat.name = 인게임 채팅 표시 setting.playerchat.name = 채팅 말풍선 표시
uiscale.reset = UI 스케일이 변경되었습니다.\n"확인"버튼을 눌러 스케일을 확인하세요.\n[scarlet]Reverting and exiting in[accent] {0}[] settings... public.confirm = 게임을 공개하시겠습니까?\n[lightgray]설정 - 게임 - 게임 서버 공개에서 다시 설정하실 수 있습니다.
uiscale.reset = UI 스케일이 변경되었습니다.\n"확인"버튼을 눌러 스케일을 확인하세요.\n[scarlet][accent] {0}[]초 후에 예전 설정으로 되돌리고 게임을 종료합니다...
uiscale.cancel = 취소 & 나가기 uiscale.cancel = 취소 & 나가기
setting.bloom.name = 발광 효과 setting.bloom.name = 발광 효과
keybind.title = 조작키 설정 keybind.title = 조작키 설정
@@ -593,22 +640,25 @@ keybind.chat.name = 채팅
keybind.player_list.name = 플레이어 목록 keybind.player_list.name = 플레이어 목록
keybind.console.name = 콘솔 keybind.console.name = 콘솔
keybind.rotate.name = 회전 keybind.rotate.name = 회전
keybind.rotateplaced.name = 기존 회전 (고정)
keybind.toggle_menus.name = 메뉴 보이기/숨기기 keybind.toggle_menus.name = 메뉴 보이기/숨기기
keybind.chat_history_prev.name = 이전 채팅기록 keybind.chat_history_prev.name = 이전 채팅기록
keybind.chat_history_next.name = 다음 채팅기록 keybind.chat_history_next.name = 다음 채팅기록
keybind.chat_scroll.name = 채팅 스크롤 keybind.chat_scroll.name = 채팅 스크롤
keybind.drop_unit.name = 유닛 드롭 keybind.drop_unit.name = 유닛 처치시 자원획득
keybind.zoom_minimap.name = 미니맵 확대 keybind.zoom_minimap.name = 미니맵 확대
mode.help.title = 모드 도움말 mode.help.title = 게임모드 도움말
mode.survival.name = 생존 mode.survival.name = 생존
mode.survival.description = 이것은 일반 모드입니다. 제한된 자원을 가지고 자동으로 다음 단계가 시작됩니다. mode.survival.description = 이것은 일반 모드입니다. 제한된 자원을 가지고 자동으로 다음 단계가 시작됩니다.
mode.sandbox.name = 샌드박스 mode.sandbox.name = 샌드박스
mode.sandbox.description = 무한한 자원을 가지고 자유롭게 다음 단계를 시작할 수 있습니다. mode.sandbox.description = 무한한 자원을 가지고 자유롭게 다음 단계를 시작할 수 있습니다.
mode.editor.name = 편집기
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = 실제 플레이어와 PvP를 합니다. 맵에 적어도 2개의 다른 색상 코어가 있어야 합니다. mode.pvp.description = 실제 플레이어와 PvP를 합니다. 맵에 적어도 2개의 다른 색상 코어가 있어야 합니다.
mode.attack.name = 공격 mode.attack.name = 공격
mode.attack.description = 적 기지를 파괴하세요. 맵에 빨간팀 코어가 있어야 플레이 가능합니다. mode.attack.description = 적 기지를 파괴하세요. 맵에 빨간팀 코어가 있어야 플레이 가능합니다.
mode.custom = 사용자 정의 규칙 mode.custom = 사용자 정의 규칙
rules.infiniteresources = 무한 자원 rules.infiniteresources = 무한 자원
rules.wavetimer = 웨이브 타이머 rules.wavetimer = 웨이브 타이머
rules.waves = 웨이브 rules.waves = 웨이브
@@ -635,6 +685,7 @@ rules.title.resourcesbuilding = 자원 & 건축
rules.title.player = 플레이어들 rules.title.player = 플레이어들
rules.title.enemy = rules.title.enemy =
rules.title.unit = 유닛 rules.title.unit = 유닛
content.item.name = 아이템 content.item.name = 아이템
content.liquid.name = 액체 content.liquid.name = 액체
content.unit.name = 유닛 content.unit.name = 유닛
@@ -696,6 +747,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 = 소금
@@ -926,6 +978,7 @@ tutorial.deposit = 자원을 다시 블록에 넣을수도 있습니다.\n\n[acc
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]액체를 활용하기 위한 필수품입니다.
@@ -1033,7 +1086,7 @@ block.combustion-generator.description = 인화성 물질을 태워 소량의
block.thermal-generator.description = 건설가능한 열이 있는 타일 위에 건설하면 전력을 생산합니다.\n\n[ROYAL]용암 웅덩이 혹은 열기지대에서 무한정 열을 발산합니다. block.thermal-generator.description = 건설가능한 열이 있는 타일 위에 건설하면 전력을 생산합니다.\n\n[ROYAL]용암 웅덩이 혹은 열기지대에서 무한정 열을 발산합니다.
block.turbine-generator.description = 화력 발전기보다 효율적이지만, 액체가 추가적으로 필요합니다.\n\n[ROYAL]일반 타일에서 물추출기 1개로 2개가 가동가능합니다. block.turbine-generator.description = 화력 발전기보다 효율적이지만, 액체가 추가적으로 필요합니다.\n\n[ROYAL]일반 타일에서 물추출기 1개로 2개가 가동가능합니다.
block.differential-generator.description = 냉각수와 파이라타이트의 온도 차를 이용해 안정적으로 원자로에 버금가는 양의 전기를 생산합니다. block.differential-generator.description = 냉각수와 파이라타이트의 온도 차를 이용해 안정적으로 원자로에 버금가는 양의 전기를 생산합니다.
block.rtg-generator.description = 방사성동위원소 열전기 발전기\n토륨또는 현상 구조체를 사용하며, 냉각이 필요없는 발전을 하지만 토륨 원자로에 비해 발전량이 매우 적습니다. block.rtg-generator.description = 방사성동위원소 열전기 발전기\n토륨또는 메타를 사용하며, 냉각이 필요없는 발전을 하지만 토륨 원자로에 비해 발전량이 매우 적습니다.
block.solar-panel.description = 태양광으로 극소량의 전기을 생산합니다. block.solar-panel.description = 태양광으로 극소량의 전기을 생산합니다.
block.solar-panel-large.description = 일반 태양 전지판보다 훨씬 발전량이 많지만, 건축비도 훨씬 비쌉니다. block.solar-panel-large.description = 일반 태양 전지판보다 훨씬 발전량이 많지만, 건축비도 훨씬 비쌉니다.
block.thorium-reactor.description = 토륨을 이용해 막대한 양의 전기를 생산합니다. 지속적인 냉각이 필요하며 냉각제의 양이 부족하면 크게 폭발합니다.\n\n[royal]폭발로 인한 피해를 버틸 수 있는 건물은 없습니다. block.thorium-reactor.description = 토륨을 이용해 막대한 양의 전기를 생산합니다. 지속적인 냉각이 필요하며 냉각제의 양이 부족하면 크게 폭발합니다.\n\n[royal]폭발로 인한 피해를 버틸 수 있는 건물은 없습니다.

View File

@@ -1,10 +1,10 @@
credits.text = Gemaakt door [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] credits.text = Gemaakt door [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] -
credits = Credits credits = Credits
contributors = Vertalers en Medewerkers contributors = Vertalers en Medewerkers
discord = Word lid van de Mindustry Discord! discord = Word lid van de Mindustry Discord!
link.discord.description = De officiële Mindustry discord chatroom link.discord.description = De officiële Mindustry discord chatroom
link.github.description = Game broncode link.github.description = Game broncode
link.changelog.description = List of update changes link.changelog.description = Lijst van Updates
link.dev-builds.description = Onstabiele ontwikkeling builds link.dev-builds.description = Onstabiele ontwikkeling builds
link.trello.description = Officiële trello-bord voor geplande functies link.trello.description = Officiële trello-bord voor geplande functies
link.itch.io.description = itch.io pagina met pc-downloads en webversie link.itch.io.description = itch.io pagina met pc-downloads en webversie
@@ -12,15 +12,15 @@ link.google-play.description = Google Play store vermelding
link.wiki.description = Officiële Mindustry wiki link.wiki.description = Officiële Mindustry wiki
linkfail = Kan link niet openen!\nDe URL is gekopieerd naar je klembord linkfail = Kan link niet openen!\nDe URL is gekopieerd naar je klembord
screenshot = Schermafbeeling opgeslagen in {0} screenshot = Schermafbeeling opgeslagen in {0}
screenshot.invalid = Map too large, potentially not enough memory for screenshot. screenshot.invalid = Map is te groot, Mogelijk niet genoeg ruimte op apparaat.
gameover = Game Over gameover = Spel afgelopen
gameover.pvp = het[accent] {0}[] team heeft gewonnen! gameover.pvp = het[accent] {0}[] team heeft gewonnen!
highscore = [accent]Nieuw topscore! highscore = [accent]Nieuw topscore!
load.sound = Sounds load.sound = Geluid
load.map = Maps load.map = Mappen
load.image = Images load.image = Afbeeldingen
load.content = Content load.content = inhoud
load.system = System load.system = Systeem
stat.wave = Waves Verslagen:[accent] {0} stat.wave = Waves Verslagen:[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}
@@ -28,69 +28,58 @@ stat.destroyed = Gebouwen Vernietigd:[accent] {0}
stat.deconstructed = Gebouwen Gesloopt:[accent] {0} stat.deconstructed = Gebouwen Gesloopt:[accent] {0}
stat.delivered = Middelen Gelanceerd: stat.delivered = Middelen Gelanceerd:
stat.rank = Eindrang: [accent]{0} stat.rank = Eindrang: [accent]{0}
launcheditems = [accent]Launched Items launcheditems = [accent]Gelanceerde items
map.delete = Weet je zeker dat je de map wilt verwijderen? "[accent]{0}[]"? map.delete = Weet je zeker dat je de map wilt verwijderen? "[accent]{0}[]"?
level.highscore = Topscore: [accent]{0} level.highscore = Topscore: [accent]{0}
level.select = Selecteer Level level.select = Selecteer Level
level.mode = Spelmodus: level.mode = Spelmodus:
showagain = Don't show again next session showagain = Niet Laten zien in de volgende sessie
coreattack = < Core is under attack! > coreattack = < Core wordt aangevallen! >
nearpoint = [[ [scarlet]LEAVE DROP POINT IMMEDIATELY[] ]\nannihilation imminent nearpoint = [[ [scarlet]LEAVE DROP POINT IMMEDIATELY[] ]\nannihilation imminent
database = Core Database database = Core Database
savegame = Save Game savegame = Opslaan
loadgame = Load Game loadgame = Laden
joingame = Join Game joingame = Treed toe
addplayers = Add/Remove Players addplayers = Add/Remove Players
customgame = Custom Game customgame = Aangepast spel
newgame = New Game newgame = Nieuw spel
none = <none> none = <none>
minimap = Minimap minimap = Minimap
close = Close close = Aflsuiten
website = Website website = Website
quit = Quit quit = Stoppen
save.quit = Save & Quit maps = Mappen
maps = Maps continue = Ga door
maps.browse = Browse Maps maps.none = [LIGHT_GRAY]Geen map gevonden!
continue = Continue about.button = Over
maps.none = [LIGHT_GRAY]No maps found! name = Naam:
invalid = Invalid noname = Maak eerst een[accent] Speler naam[].
preparingconfig = Preparing Config filename = Bestandsnaam:
preparingcontent = Preparing Content
uploadingcontent = Uploading Content
uploadingpreviewfile = Uploading Preview File
committingchanges = Comitting Changes
done = Done
about.button = About
name = Name:
noname = Pick a[accent] player name[] first.
filename = File Name:
unlocked = New content unlocked! unlocked = New content unlocked!
completed = [accent]Completed completed = [accent]Voltooid
techtree = Tech Tree techtree = Tech boom
research.list = [LIGHT_GRAY]Research: research.list = [LIGHT_GRAY]Onderzoek:
research = Research research = Onderzoek
researched = [LIGHT_GRAY]{0} researched. researched = [LIGHT_GRAY]{0} Onderzocht.
players = {0} players online players = {0} Spelers online
players.single = {0} player online players.single = {0} Speler online
server.closing = [accent]Closing server... server.closing = [accent]Server aan het sluiten...
server.kicked.kick = You have been kicked from the server! server.kicked.kick = Je bent verwijderd van deze sessie.
server.kicked.whitelist = You are not whitelisted here. server.kicked.serverClose = Server afgesloten...
server.kicked.serverClose = Server closed. server.kicked.vote = Je bent ge vote-kicked. Tot ziens.
server.kicked.vote = You have been vote-kicked. Goodbye. server.kicked.clientOutdated = Verouderde versie! Update jouw spel!
server.kicked.clientOutdated = Outdated client! Update your game! server.kicked.serverOutdated = Verouderde server! Vraag de host om te upgraden!
server.kicked.serverOutdated = Outdated server! Ask the host to update! server.kicked.banned = Je bent verbannen van deze server.
server.kicked.banned = You are banned on this server. server.kicked.typeMismatch = Deze server is niet compitabel met jouw bouwtype.
server.kicked.typeMismatch = This server is not compatible with your build type. server.kicked.recentKick = Je bent reeds verwijderd.\nWacht voordat je opnieuw verbindt.
server.kicked.playerLimit = This server is full. Wait for an empty slot. server.kicked.nameInUse = Er is al iemand met die naam\nop deze server.
server.kicked.recentKick = You have been kicked recently.\nWait before connecting again. server.kicked.nameEmpty = Je gekozen naam is niet geldig.
server.kicked.nameInUse = There is someone with that name\nalready on this server. server.kicked.idInUse = Je bent al verbonden met deze server! Verbinden met 2 accounts is verboden.
server.kicked.nameEmpty = Your chosen name is invalid. server.kicked.customClient = Deze server ondersteunt geen aangepaste spellen . Download de officiele versie.
server.kicked.idInUse = You are already on this server! Connecting with two accounts is not permitted. server.kicked.gameover = Spel afgelopen
server.kicked.customClient = This server does not support custom builds. Download an official version. server.versions = Jouw versie:[accent] {0}[]\nServer versie:[accent] {1}[]
server.kicked.gameover = Game over! host.info = De [accent]host[] knop hosts `een server op port [scarlet]6567[]. \nIedereen op hetzelfde [LIGHT_GRAY]wifi or locaal netwerk[] zou jouw server in hun serverlijst moeten zien.\n\nAls je wilt dan vrienden vanaf overal kunnen meedoen via IP, [accent]port forwarding[] is nodig.\n\n[LIGHT_GRAY]Note: IAls iemand moeilijkheden heeft met het meedoen aan jouw spel, kijk of je Mindustry in je firewall instellingen toegang hebt gegeven to jouw locaal netwerk.
server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[] join.info = Hier kan je een [accent]server IP[] invoeren om te verbinden, of om[accent]locale netwerken[] te vinden.\nBeide LAN en WAN multiplayer is ondersteund.\n\n[LIGHT_GRAY]Note: Er is geen automatische globale serverlijst; Als je met iemands IP wil verbinden, Zou je moeten vragen om hun IP.
host.info = The [accent]host[] button hosts a server on port [scarlet]6567[]. \nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
join.info = Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
hostserver = Host Game hostserver = Host Game
invitefriends = Invite Friends invitefriends = Invite Friends
hostserver.mobile = Host\nGame hostserver.mobile = Host\nGame
@@ -545,7 +534,6 @@ setting.fullscreen.name = Fullscreen
setting.borderlesswindow.name = Borderless Window[LIGHT_GRAY] (may require restart) setting.borderlesswindow.name = Borderless Window[LIGHT_GRAY] (may require restart)
setting.fps.name = Show FPS setting.fps.name = Show FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Show Power Lasers
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance) setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Show Minimap setting.minimap.name = Show Minimap
setting.musicvol.name = Music Volume setting.musicvol.name = Music Volume
@@ -557,6 +545,7 @@ setting.crashreport.name = Send Anonymous Crash Reports
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Auto-Create Saves
setting.publichost.name = Public Game Visibility setting.publichost.name = Public Game Visibility
setting.chatopacity.name = Chat Opacity setting.chatopacity.name = Chat Opacity
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Display In-Game Chat setting.playerchat.name = Display In-Game Chat
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings... uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings...
uiscale.cancel = Cancel & Exit uiscale.cancel = Cancel & Exit

View File

@@ -545,7 +545,6 @@ setting.fullscreen.name = Fullscreen
setting.borderlesswindow.name = Borderless Window[LIGHT_GRAY] (may require restart) setting.borderlesswindow.name = Borderless Window[LIGHT_GRAY] (may require restart)
setting.fps.name = Show FPS setting.fps.name = Show FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Show Power Lasers
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance, disables animations) setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance, disables animations)
setting.minimap.name = Show Minimap setting.minimap.name = Show Minimap
setting.musicvol.name = Music Volume setting.musicvol.name = Music Volume
@@ -557,6 +556,7 @@ setting.crashreport.name = Send Anonymous Crash Reports
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Auto-Create Saves
setting.publichost.name = Public Game Visibility setting.publichost.name = Public Game Visibility
setting.chatopacity.name = Chat Opacity setting.chatopacity.name = Chat Opacity
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Display In-Game Chat setting.playerchat.name = Display In-Game Chat
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings... uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings...
uiscale.cancel = Cancel & Exit uiscale.cancel = Cancel & Exit

View File

@@ -3,7 +3,7 @@ credits = Zasłużeni
contributors = Tłumacze i pomocnicy contributors = Tłumacze i pomocnicy
discord = Odwiedź nasz serwer Discord! discord = Odwiedź nasz serwer Discord!
link.discord.description = Oficjalny serwer Discord Mindustry link.discord.description = Oficjalny serwer Discord Mindustry
link.github.description = Kod Gry link.github.description = Kod źródłowy gry
link.changelog.description = Informacje o aktualizacjach link.changelog.description = Informacje o aktualizacjach
link.dev-builds.description = Niestabilne wersje gry 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
@@ -13,7 +13,7 @@ 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 do {0} screenshot = Zapisano zdjęcie do {0}
screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje miejsca w pamięci urządzenia. screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje miejsca w pamięci urządzenia.
gameover = Rdzeń został zniszczony. 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!
load.sound = Dźwięki load.sound = Dźwięki
@@ -21,6 +21,7 @@ load.map = Mapy
load.image = Obrazy load.image = Obrazy
load.content = Treść load.content = Treść
load.system = System load.system = System
load.mod = Mody
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}
@@ -29,38 +30,49 @@ 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.
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
level.mode = Tryb gry: level.mode = Tryb gry:
showagain = Nie pokazuj tego więcej showagain = Nie pokazuj tego więcej
coreattack = < Rdzeń jest atakowany! > coreattack = < Rdzeń jest atakowany! >
nearpoint = [[ [scarlet]OPUŚĆ PUNKT ZRZUTU NATYCHMIAST[] ]\nunicestwienie nadchodzi nearpoint = [[ [scarlet]OPUŚĆ PUNKT ZRZUTU NATYCHMIAST[] ]\nnadciąga zniszczenie
database = Centralna baza danych database = Centralna baza danych
savegame = Zapisz Grę savegame = Zapisz Grę
loadgame = Wczytaj g loadgame = Wczytaj G
joingame = Gra wieloosobowa joingame = Dołącz Do Gry
addplayers = Dodaj/Usuń graczy addplayers = Dodaj/Usuń Graczy
customgame = Własna Gra customgame = Własna Gra
newgame = Nowa Gra newgame = Nowa Gra
none = <none> none = <brak>
minimap = Minimapa minimap = Minimapa
close = Zamknij close = Zamknij
website = Strona Gry website = Strona Gry
quit = Wyjdź quit = Wyjdź
save.quit = Save & Quit save.quit = Zapisz & Wyjdź
maps = Mapy maps = Mapy
maps.browse = Browse Maps maps.browse = Przeglądaj Mapy
continue = Kontynuuj continue = Kontynuuj
maps.none = [LIGHT_GRAY]Nie znaleziono żadnych map! maps.none = [LIGHT_GRAY]Nie znaleziono żadnych map!
invalid = Invalid invalid = Nieprawidłowy
preparingconfig = Preparing Config preparingconfig = Przygotowywanie Konfiguracji
preparingcontent = Preparing Content preparingcontent = Przygotowywanie Zawartości
uploadingcontent = Uploading Content uploadingcontent = Przesyłanie Zawartości
uploadingpreviewfile = Uploading Preview File uploadingpreviewfile = Przesyłanie Pliku Podglądu
committingchanges = Comitting Changes committingchanges = Zatwierdzanie Zmian
done = Done done = Gotowe
about.button = O grze 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 = Mody
mods.none = [LIGHT_GRAY]Nie znaleziono modów!
mod.enabled = [lightgray]Włączony
mod.disabled = [scarlet]Wyłączony
mod.requiresrestart = Gra się wyłączy aby wprowadzić zmiany moda.
mod.import = Importuj Mod
mod.remove.confirm = Ten mod zostanie usunięty.
mod.author = [LIGHT_GRAY]Autor:[] {0}
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:
@@ -74,7 +86,7 @@ players = {0} graczy online
players.single = {0} gracz online players.single = {0} gracz online
server.closing = [accent] Zamykanie serwera... server.closing = [accent] Zamykanie serwera...
server.kicked.kick = Zostałeś wyrzucony z serwera! server.kicked.kick = Zostałeś wyrzucony z serwera!
server.kicked.whitelist = You are not whitelisted here. server.kicked.whitelist = Nie ma cię tu na białej liście.
server.kicked.serverClose = Serwer został zamknięty. server.kicked.serverClose = Serwer został zamknięty.
server.kicked.vote = Zostałeś wyrzucony z gry. Żegnaj. server.kicked.vote = Zostałeś wyrzucony z gry. Żegnaj.
server.kicked.clientOutdated = Nieaktualna gra! Zaktualizują ją! server.kicked.clientOutdated = Nieaktualna gra! Zaktualizują ją!
@@ -92,17 +104,17 @@ server.versions = Twoja wersja gry:[accent] {0}[]\nWersja gry serwera:[accent] {
host.info = Przycisk [accent]host[] hostuje serwer na porcie [scarlet]6567[] i [scarlet]6568.[]\nKtokolwiek z tym samym [LIGHT_GRAY]wifi lub hotspotem[] powinien zobaczyć twój serwer.\n\nJeśli chcesz, aby każdy z twoim IP mógł dołączyć, [accent]przekierowywanie portów[] jest potrzebne.\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[] i [scarlet]6568.[]\nKtokolwiek z tym samym [LIGHT_GRAY]wifi lub hotspotem[] powinien zobaczyć twój serwer.\n\nJeśli chcesz, aby każdy z twoim IP mógł dołączyć, [accent]przekierowywanie portów[] jest potrzebne.\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.
join.info = Tutaj możesz wpisać [accent]IP serwera[], aby dołączyć lub wyszukaj [accent]serwery w lokalnej sieci[], do których chcesz 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ć się hosta o IP. join.info = Tutaj możesz wpisać [accent]IP serwera[], aby dołączyć lub wyszukaj [accent]serwery w lokalnej sieci[], do których chcesz 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ć się hosta o IP.
hostserver = Stwórz Serwer hostserver = Stwórz Serwer
invitefriends = Invite Friends invitefriends = Zaproś Znajomych
hostserver.mobile = Hostuj\ng hostserver.mobile = Hostuj\nG
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 = Discovering games 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}
trace.id = Wyjątkowe ID: [accent]{0} trace.id = Wyjątkowe ID: [accent]{0}
@@ -113,16 +125,16 @@ server.bans = Bany
server.bans.none = Nie znaleziono zbanowanych osób! server.bans.none = Nie znaleziono zbanowanych osób!
server.admins = Admini server.admins = Admini
server.admins.none = Nie znaleziono adminów! server.admins.none = Nie znaleziono adminów!
server.add = Dodaj serwer server.add = Dodaj Serwer
server.delete = Czy na pewno chcesz usunąć ten serwer? 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 = [lightgray]Wersja: {0}
server.custombuild = [yellow]Zmodowany klient server.custombuild = [yellow]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 = Are you sure you want to vote-kick this player? confirmvotekick = Jesteś pewny, że chcesz głosować za wyrzuceniem tego gracza?
confirmunban = Jesteś pewny, że chcesz odbanować tego gracza? confirmunban = Jesteś pewny, że chcesz odbanować tego gracza?
confirmadmin = Jesteś pewny, że chcesz dać rangę admina temu graczowi? confirmadmin = Jesteś pewny, że chcesz dać rangę admina temu graczowi?
confirmunadmin = Jesteś pewny, że chcesz zabrać rangę admina temu graczowi? confirmunadmin = Jesteś pewny, że chcesz zabrać rangę admina temu graczowi?
@@ -133,7 +145,7 @@ disconnect.error = Błąd połączenia.
disconnect.closed = Połączenie zostało zamknięte. disconnect.closed = Połączenie zostało zamknięte.
disconnect.timeout = Przekroczono limit czasu. disconnect.timeout = Przekroczono limit czasu.
disconnect.data = Nie udało się załadować mapy! disconnect.data = Nie udało się załadować mapy!
cantconnect = Unable to join game ([accent]{0}[]). cantconnect = Nie można dołączyć do gry ([accent]{0}[]).
connecting = [accent]Łączenie... connecting = [accent]Łączenie...
connecting.data = [accent]Ładowanie danych świata... connecting.data = [accent]Ładowanie danych świata...
server.port = Port: server.port = Port:
@@ -153,13 +165,13 @@ 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ę
save.rename.text = Nowa nazwa: save.rename.text = Nowa nazwa:
selectslot = Wybierz zapis. selectslot = Wybierz zapis.
slot = [accent]Slot {0} slot = [accent]Slot {0}
editmessage = Edit Message 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 = [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.
empty = <pusto> empty = <pusto>
on = Włączone on = Włączone
@@ -167,26 +179,26 @@ off = Wyłączone
save.autosave = Autozapis: {0} save.autosave = Autozapis: {0}
save.map = Mapa: {0} save.map = Mapa: {0}
save.wave = Fala {0} save.wave = Fala {0}
save.mode = Gamemode: {0} save.mode = Tryb Gry: {0}
save.date = Ostatnio zapisano: {0} save.date = Ostatnio Zapisane: {0}
save.playtime = Czas gry: {0} save.playtime = Czas gry: {0}
warning = Uwaga. warning = Uwaga.
confirm = Potwierdź confirm = Potwierdź
delete = Usuń delete = Usuń
view.workshop = View In Workshop view.workshop = Pokaż w Warsztacie
ok = Ok ok = OK
open = Otwórz open = Otwórz
customize = Dostosuj customize = Dostosuj
cancel = Anuluj cancel = Anuluj
openlink = Otwórz link openlink = Otwórz Link
copylink = Kopiuj link copylink = Kopiuj Link
back = Wróć back = Wróć
data.export = Eksportuj Dane data.export = Eksportuj Dane
data.import = Importuj Dane data.import = Importuj Dane
data.exported = Dane wyeksportowane. 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ę.\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?
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] Opcje->Gra->Powtórz samouczek.[]
@@ -199,37 +211,40 @@ waiting = [LIGHT_GRAY]Oczekiwanie...
waiting.players = Oczekiwanie na graczy... waiting.players = Oczekiwanie na graczy...
wave.enemies = Pozostało [LIGHT_GRAY]{0} wrogów wave.enemies = Pozostało [LIGHT_GRAY]{0} wrogów
wave.enemy = Pozostał [LIGHT_GRAY]{0} wróg wave.enemy = Pozostał [LIGHT_GRAY]{0} wróg
loadimage = Załaduj obraz loadimage = Załaduj Obraz
saveimage = Zapisz obraz saveimage = Zapisz Obraz
unknown = Nieznane unknown = Nieznane
custom = Własne 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 [ROYAL]niebieski[] 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ż niebieski[] 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.
map.publish.error = Błąd podczas publikowania mapy: {0} map.publish.error = Błąd podczas publikowania mapy: {0}
map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! map.update = Aktualizuj Mapę
map.load.error = Błąd podczaj pobierania danych z warsztatu: {0}
map.menu = Wybierz co chcesz zrobić z tą mapą.
map.changelog = Lista Zmian (opcjonalna)
eula = Steam EULA eula = Steam EULA
map.publish = Opublikowano mapę. map.publish = Opublikowano mapę.
map.publishing = [accent]Publikowanie mapy... map.publishing = [accent]Publikowanie mapy...
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łóż
editor.oregen.info = Generacja złóż: editor.oregen.info = Generacja Złóż:
editor.mapinfo = Informacje o mapie editor.mapinfo = Informacje o Mapie
editor.author = Autor: editor.author = Autor:
editor.description = Opis: editor.description = Opis:
editor.nodescription = A map must have a description of at least 4 characters before being published. editor.nodescription = Mapa musi posiadać opis o długości co najmniej 4 znaków zanim zostanie opublikowana.
editor.waves = Fale: editor.waves = Fale:
editor.rules = Zasady: editor.rules = Zasady:
editor.generation = Generacja: editor.generation = Generacja:
editor.ingame = Edytuj w grze editor.ingame = Edytuj w Grze
editor.publish.workshop = Opublikuj w Workshop editor.publish.workshop = Opublikuj w Warsztacie
editor.newmap = Nowa Mapa editor.newmap = Nowa Mapa
workshop = Workshop workshop = Warsztat
waves.title = Fale waves.title = Fale
waves.remove = Usuń waves.remove = Usuń
waves.never = <nigdy> waves.never = <nigdy>
@@ -240,8 +255,8 @@ waves.to = do
waves.boss = Boss waves.boss = Boss
waves.preview = Podgląd waves.preview = Podgląd
waves.edit = Edytuj... waves.edit = Edytuj...
waves.copy = Kopiuj do schowka waves.copy = Kopiuj Do Schowka
waves.load = Załaduj ze schowka 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.
@@ -249,8 +264,8 @@ editor.default = [LIGHT_GRAY]<Domyślne>
details = Detale... details = Detale...
edit = Edytuj... edit = Edytuj...
editor.name = Nazwa: editor.name = Nazwa:
editor.spawn = Stwórz jednostkę editor.spawn = Stwórz Jednostkę
editor.removeunit = Usuń jednostkę 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}
@@ -263,9 +278,9 @@ editor.update = Aktualizuj
editor.randomize = Losuj editor.randomize = Losuj
editor.apply = Zastosuj editor.apply = Zastosuj
editor.generate = Generuj editor.generate = Generuj
editor.resize = Zmień rozmiar editor.resize = Zmień Rozmiar
editor.loadmap = Załaduj mapę editor.loadmap = Załaduj Mapę
editor.savemap = Zapisz mapę editor.savemap = Zapisz Mapę
editor.saved = Zapisano! editor.saved = Zapisano!
editor.save.noname = Twoja mapa nie ma nazwy! Ustaw ją w 'Informacjach o mapie'. editor.save.noname = Twoja mapa nie ma nazwy! Ustaw ją w 'Informacjach o mapie'.
editor.save.overwrite = Ta mapa nadpisze wbudowaną mapę! Ustaw inną nazwę w 'Informacjach o mapie'. editor.save.overwrite = Ta mapa nadpisze wbudowaną mapę! Ustaw inną nazwę w 'Informacjach o mapie'.
@@ -278,22 +293,22 @@ editor.importfile.description = Importuj zewnętrzny plik mapy
editor.importimage = Importuj Obraz Terenu editor.importimage = Importuj Obraz Terenu
editor.importimage.description = Importuj zewnętrzny obraz terenu editor.importimage.description = Importuj zewnętrzny obraz terenu
editor.export = Eksportuj... editor.export = Eksportuj...
editor.exportfile = Eksportuj plik editor.exportfile = Eksportuj Plik
editor.exportfile.description = Eksportuj plik mapy editor.exportfile.description = Eksportuj plik mapy
editor.exportimage = Eksportuj Obraz Terenu editor.exportimage = Eksportuj Obraz Terenu
editor.exportimage.description = Eksportuj plik obrazu terenu editor.exportimage.description = Eksportuj plik obrazu terenu
editor.loadimage = Załaduj obraz editor.loadimage = Załaduj Teren
editor.saveimage = Zapisz obraz editor.saveimage = Zapisz Teren
editor.unsaved = [scarlet]Masz niezapisane zmiany![]\nCzy na pewno chcesz wyjść? editor.unsaved = [scarlet]Masz niezapisane zmiany![]\nCzy na pewno chcesz wyjść?
editor.resizemap = Zmień rozmiar mapy editor.resizemap = Zmień Rozmiar Mapy
editor.mapname = Nazwa mapy: editor.mapname = Nazwa Mapy:
editor.overwrite = [accent]Uwaga!\nSpowoduje to nadpisanie istniejącej mapy. editor.overwrite = [accent]Uwaga!\nSpowoduje to nadpisanie istniejącej mapy.
editor.overwrite.confirm = [scarlet]Uwaga![] Mapa pod tą nazwą 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 = A map with this name already exists. 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
toolmode.replaceall.description = Zastąp wszystkie bloki na mapie. toolmode.replaceall.description = Zastąp wszystkie bloki na mapie.
toolmode.orthogonal = Prostokątny toolmode.orthogonal = Prostokątny
toolmode.orthogonal.description = Rysuje tylko prostopadłe linie. toolmode.orthogonal.description = Rysuje tylko prostopadłe linie.
@@ -305,15 +320,15 @@ toolmode.fillteams = Wypełń 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 = [LIGHT_GRAY]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
filter.oremedian = Mediana rud filter.oremedian = Mediana Rud
filter.blend = Wtopienie filter.blend = Wtopienie
filter.defaultores = Domyślne rudy filter.defaultores = Domyślne Rudy
filter.ore = Ruda filter.ore = Ruda
filter.rivernoise = Szum rzeki filter.rivernoise = Szum Rzeki
filter.mirror = Lustro filter.mirror = Lustro
filter.clear = Oczyść filter.clear = Oczyść
filter.option.ignore = Ignoruj filter.option.ignore = Ignoruj
@@ -323,7 +338,7 @@ filter.option.scale = Skala
filter.option.chance = Szansa filter.option.chance = Szansa
filter.option.mag = Wielkość filter.option.mag = Wielkość
filter.option.threshold = Próg filter.option.threshold = Próg
filter.option.circle-scale = Skala koła filter.option.circle-scale = Skala Koła
filter.option.octaves = Oktawy filter.option.octaves = Oktawy
filter.option.falloff = Spadek filter.option.falloff = Spadek
filter.option.angle = Kąt filter.option.angle = Kąt
@@ -332,8 +347,8 @@ filter.option.floor = Podłoga
filter.option.flooronto = Podłoga Docelowa filter.option.flooronto = Podłoga Docelowa
filter.option.wall = Ściana filter.option.wall = Ściana
filter.option.ore = Ruda 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 = Percentyl
width = Szerokość: width = Szerokość:
@@ -351,8 +366,8 @@ 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
donate = Wspomóż nas donate = Wspomóż Nas
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
@@ -367,7 +382,7 @@ 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
configure.locked = [LIGHT_GRAY]Dotrzyj do fali {0}\nAby skonfigurować ładunek. configure.locked = [LIGHT_GRAY]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 = [LIGHT_GRAY]Strefa {0} odblokowana.
@@ -404,7 +419,7 @@ 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.
zone.saltFlats.description = Na obrzeżach pustyni spoczywają Solne Równiny. Można tu znaleźć niewiele surowców.\n\nWrogowie zbudowali tu bazę składującą surowce. Zniszcz ich rdżeń. Zniszcz wszystko co stanie ci na drodze. zone.saltFlats.description = Na obrzeżach pustyni spoczywają Solne Równiny. Można tu znaleźć niewiele surowców.\n\nWrogowie zbudowali tu bazę składującą surowce. Zniszcz ich rdżeń. Zniszcz wszystko co stanie ci na drodze.
zone.craters.description = W tym kraterze zebrała się woda. Pozostałość dawnych wojen. Odzyskaj ten teren. Wykop piasek. Wytop metaszkło. Pompuj wodę do działek obronnych i wierteł by je schłodzić zone.craters.description = W tym kraterze zebrała się woda. Pozostałość dawnych wojen. Odzyskaj ten teren. Wykop piasek. Wytop metaszkło. Pompuj wodę do działek obronnych i wierteł by je schłodzić
@@ -419,20 +434,20 @@ 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
settings.data = Dane Gry settings.data = Dane Gry
settings.reset = Przywróć domyślne settings.reset = Przywróć Domyślne
settings.rebind = Zmień settings.rebind = Zmień
settings.controls = Sterowanie settings.controls = Sterowanie
settings.game = Gra settings.game = Gra
settings.sound = Dźwięk settings.sound = Dźwięk
settings.graphics = Grafika settings.graphics = Grafika
settings.cleardata = Wyczyść dane gry... settings.cleardata = Wyczyść Dane Gry...
settings.clear.confirm = Czy jesteś pewien że chcesz usunąć te dane?\nPo tym nie ma powrotu! settings.clear.confirm = Czy jesteś pewien że chcesz usunąć te dane?\nPo tym nie ma powrotu!
settings.clearall.confirm = [scarlet]UWAGA![]\nTo wykasuje wszystkie dane, włącznie z zapisanymi grami i mapami, ustawienami, i znanymi technologiami.\nKiedy naciśniesz 'ok', gra usunie wszystkie swoje dane i automatycznie wyłączy się. settings.clearall.confirm = [scarlet]UWAGA![]\nTo wykasuje wszystkie dane, włącznie z zapisanymi grami i mapami, ustawienami, i znanymi technologiami.\nKiedy naciśniesz 'ok', gra usunie wszystkie swoje dane i automatycznie wyłączy się.
settings.clearunlocks = Wyczyść listę przedmiotów settings.clearunlocks = Wyczyść Listę Przedmiotów
settings.clearall = Wyczyść wszystko settings.clearall = Wyczyść Wszystko
paused = [accent]< Wstrzymano > paused = [accent]< Wstrzymano >
yes = Jasne! yes = Tak
no = Nie ma mowy! no = Nie
info.title = Informacje info.title = Informacje
error.title = [crimson]Wystąpił błąd error.title = [crimson]Wystąpił błąd
error.crashtitle = Wystąpił błąd error.crashtitle = Wystąpił błąd
@@ -475,7 +490,7 @@ bar.drilltierreq = Wymagane Lepsze Wiertło
bar.drillspeed = Prędkość wiertła: {0}/s bar.drillspeed = Prędkość wiertła: {0}/s
bar.efficiency = Efektywność: {0}% bar.efficiency = Efektywność: {0}%
bar.powerbalance = Moc: {0} bar.powerbalance = Moc: {0}
bar.powerstored = Stored: {0}/{1} bar.powerstored = Zmagazynowano: {0}/{1}
bar.poweramount = Moc: {0} bar.poweramount = Moc: {0}
bar.poweroutput = Wyjście mocy: {0} bar.poweroutput = Wyjście mocy: {0}
bar.items = Przedmiotów: {0} bar.items = Przedmiotów: {0}
@@ -496,7 +511,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 = Klocki 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ę
unit.itemssecond = przedmiotów na sekundę unit.itemssecond = przedmiotów na sekundę
@@ -520,11 +535,11 @@ setting.shadows.name = Cienie
setting.linear.name = Filtrowanie Liniowe setting.linear.name = Filtrowanie Liniowe
setting.animatedwater.name = Animowana woda setting.animatedwater.name = Animowana woda
setting.animatedshields.name = Animowana Tarcza setting.animatedshields.name = Animowana Tarcza
setting.antialias.name = Antialias[LIGHT_GRAY] (wymaga restartu)[] setting.antialias.name = Antyaliasing[LIGHT_GRAY] (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
setting.touchscreen.name = Touchscreen Controls setting.touchscreen.name = Sterowanie - Ekran Dotykowy
setting.fpscap.name = Maksymalny FPS setting.fpscap.name = Maksymalny FPS
setting.fpscap.none = Nieograniczone setting.fpscap.none = Nieograniczone
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
@@ -545,7 +560,6 @@ setting.fullscreen.name = Pełny ekran
setting.borderlesswindow.name = Bezramkowe okno[LIGHT_GRAY] (może wymagać restartu) setting.borderlesswindow.name = Bezramkowe okno[LIGHT_GRAY] (może wymagać restartu)
setting.fps.name = Pokazuj FPS setting.fps.name = Pokazuj FPS
setting.vsync.name = Synchronizacja pionowa setting.vsync.name = Synchronizacja pionowa
setting.lasers.name = Pokaż lasery zasilające
setting.pixelate.name = Pikselacja [LIGHT_GRAY](wyłącza animacje) setting.pixelate.name = Pikselacja [LIGHT_GRAY](wyłącza animacje)
setting.minimap.name = Pokaż Minimapę setting.minimap.name = Pokaż Minimapę
setting.musicvol.name = Głośność muzyki setting.musicvol.name = Głośność muzyki
@@ -555,11 +569,13 @@ setting.sfxvol.name = Głośność dźwięków
setting.mutesound.name = Wycisz dźwięki setting.mutesound.name = Wycisz dźwięki
setting.crashreport.name = Wysyłaj anonimowo dane o crashu gry setting.crashreport.name = Wysyłaj anonimowo dane o crashu gry
setting.savecreate.name = Automatyczne tworzenie zapisu setting.savecreate.name = Automatyczne tworzenie zapisu
setting.publichost.name = Widoczność gry publicznej 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.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.
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ź
setting.bloom.name = Bloom setting.bloom.name = Bloom
keybind.title = Zmień keybind.title = Zmień
keybinds.mobile = [scarlet]Większość skrótów klawiszowych nie funkcjonuje w wersji mobilnej. Tylko podstawowe poruszanie się jest wspierane. keybinds.mobile = [scarlet]Większość skrótów klawiszowych nie funkcjonuje w wersji mobilnej. Tylko podstawowe poruszanie się jest wspierane.
@@ -567,7 +583,7 @@ category.general.name = Ogólne
category.view.name = Wyświetl category.view.name = Wyświetl
category.multiplayer.name = Multiplayer category.multiplayer.name = Multiplayer
command.attack = Atakuj command.attack = Atakuj
command.rally = Rally command.rally = Zbierz
command.retreat = Wycofaj command.retreat = Wycofaj
keybind.gridMode.name = Wybieranie Bloku keybind.gridMode.name = Wybieranie Bloku
keybind.gridModeShift.name = Wybieranie Kategorii keybind.gridModeShift.name = Wybieranie Kategorii
@@ -576,7 +592,7 @@ keybind.press.axis = Naciśnij oś lub klawisz...
keybind.screenshot.name = Zrzut ekranu mapy keybind.screenshot.name = Zrzut ekranu mapy
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.fullscreen.name = Toggle Fullscreen 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
keybind.pick.name = Wybierz Blok keybind.pick.name = Wybierz Blok
@@ -603,28 +619,29 @@ 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.
mode.sandbox.name = Piaskownica mode.sandbox.name = Piaskownica
mode.sandbox.description = Nieskończone surowce i fale bez odliczania. Dla przedszkolaków! mode.sandbox.description = Nieskończone surowce i fale bez odliczania.
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.
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.
mode.custom = Własny tryb mode.custom = Własny tryb
rules.infiniteresources = Nieskończone zasoby rules.infiniteresources = Nieskończone zasoby
rules.wavetimer = Zegar fal rules.wavetimer = Zegar fal
rules.waves = Fale rules.waves = Fale
rules.attack = Tryb Ataku rules.attack = Tryb ataku
rules.enemyCheat = Nieskończone zasoby komputera-przeciwnika (czerwonego zespołu) rules.enemyCheat = Nieskończone zasoby komputera-przeciwnika (czerwonego zespołu)
rules.unitdrops = Surowce z zniszczonych jednostek rules.unitdrops = Surowce ze zniszczonych jednostek
rules.unitbuildspeedmultiplier = Mnożnik Prędkości Tworzenia Jednostek rules.unitbuildspeedmultiplier = Mnożnik prędkości tworzenia jednostek
rules.unithealthmultiplier = Mnożnik Życia Jednostek 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 rdżeniu wroga:[LIGHT_GRAY] (kratki)
rules.respawntime = Czas Odrodzenia:[LIGHT_GRAY] (sek) rules.respawntime = Czas odrodzenia:[LIGHT_GRAY] (sek)
rules.wavespacing = Odstępy między falami:[LIGHT_GRAY] (sek) rules.wavespacing = Odstępy między falami:[LIGHT_GRAY] (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:[LIGHT_GRAY] (kratki)
rules.respawns = Maksymalna ilośc odrodzeń na falę rules.respawns = Maksymalna ilośc odrodzeń na falę
@@ -650,7 +667,7 @@ item.silicon.name = Krzem
item.plastanium.name = Plastan item.plastanium.name = Plastan
item.phase-fabric.name = Włókno Fazowe item.phase-fabric.name = Włókno Fazowe
item.surge-alloy.name = Elektrum item.surge-alloy.name = Elektrum
item.spore-pod.name = Zarodnia item.spore-pod.name = Kapsuła Zarodników
item.sand.name = Piasek item.sand.name = Piasek
item.blast-compound.name = Wybuchowy związek item.blast-compound.name = Wybuchowy związek
item.pyratite.name = Piratian item.pyratite.name = Piratian
@@ -703,8 +720,8 @@ block.saltrocks.name = Skały Solne
block.pebbles.name = Kamyczki block.pebbles.name = Kamyczki
block.tendrils.name = Wić block.tendrils.name = Wić
block.sandrocks.name = Skały Piaskowe block.sandrocks.name = Skały Piaskowe
block.spore-pine.name = Sosna Zarodkowa block.spore-pine.name = Sosna Zarodnikowa
block.sporerocks.name = Skała z Zarodkami block.sporerocks.name = Skała Zarodnikowa
block.rock.name = Skały block.rock.name = Skały
block.snowrock.name = Skały śnieżne block.snowrock.name = Skały śnieżne
block.snow-pine.name = Sosna śniegowa block.snow-pine.name = Sosna śniegowa
@@ -712,19 +729,19 @@ block.shale.name = Łupek
block.shale-boulder.name = Głaz Łupkowy block.shale-boulder.name = Głaz Łupkowy
block.moss.name = Mech block.moss.name = Mech
block.shrubs.name = Krzewy block.shrubs.name = Krzewy
block.spore-moss.name = Mech z Zarodkami block.spore-moss.name = Mech Zarodnikowy
block.shalerocks.name = Skały Łupkowe block.shalerocks.name = Skały Łupkowe
block.scrap-wall.name = Ściana z Złomu block.scrap-wall.name = Ściana ze Złomu
block.scrap-wall-large.name = Duża Ściana z Złomu block.scrap-wall-large.name = Duża Ściana ze Złomu
block.scrap-wall-huge.name = Ogromna Ściana z Złomu block.scrap-wall-huge.name = Ogromna Ściana ze Złomu
block.scrap-wall-gigantic.name = Gigantyczna Ściana z Złomu block.scrap-wall-gigantic.name = Gigantyczna Ściana ze Złomu
block.thruster.name = Silnik 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} [LIGHT_GRAY](Budowa)
block.spawn.name = Spawn wrogów block.spawn.name = Spawn wrogów
block.core-shard.name = Rdzeń: Ułamek block.core-shard.name = Rdzeń: Odłamek
block.core-foundation.name = Rdzeń: Podstawa block.core-foundation.name = Rdzeń: Podstawa
block.core-nucleus.name = Rdzeń: Jądro block.core-nucleus.name = Rdzeń: Jądro
block.deepwater.name = Głęboka Woda block.deepwater.name = Głęboka Woda
@@ -750,7 +767,7 @@ block.dunerocks.name = Skały wydmowe
block.pine.name = Sosna block.pine.name = Sosna
block.white-tree-dead.name = Białe Drzewo Martwe block.white-tree-dead.name = Białe Drzewo Martwe
block.white-tree.name = Białe Drzewo block.white-tree.name = Białe Drzewo
block.spore-cluster.name = Grono Zarodków block.spore-cluster.name = Skupisko Zarodników
block.metal-floor.name = Metalowa Podłoga block.metal-floor.name = Metalowa Podłoga
block.metal-floor-2.name = Metalowa Podłoga 2 block.metal-floor-2.name = Metalowa Podłoga 2
block.metal-floor-3.name = Metalowa Podłoga 3 block.metal-floor-3.name = Metalowa Podłoga 3
@@ -768,7 +785,7 @@ block.hotrock.name = Gorący Kamień
block.magmarock.name = Skała magmowa block.magmarock.name = Skała magmowa
block.cliffs.name = Klify block.cliffs.name = Klify
block.copper-wall.name = Miedziana Ściana 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.phase-wall.name = Fazowa Ściana block.phase-wall.name = Fazowa Ściana
@@ -777,28 +794,28 @@ block.thorium-wall.name = Torowa Ściana
block.thorium-wall-large.name = Duża Torowa Ściana block.thorium-wall-large.name = Duża Torowa Ściana
block.door.name = Drzwi block.door.name = Drzwi
block.door-large.name = Duże drzwi block.door-large.name = Duże drzwi
block.duo.name = Podwójne działko block.duo.name = Podwójne Działko
block.scorch.name = Płomień block.scorch.name = Płomień
block.scatter.name = Flak block.scatter.name = Flak
block.hail.name = Grad block.hail.name = Grad
block.lancer.name = Lancer block.lancer.name = Lancer
block.conveyor.name = Przenośnik block.conveyor.name = Przenośnik
block.titanium-conveyor.name = Tytanowy przenośnik block.titanium-conveyor.name = Przenośnik Tytanowy
block.armored-conveyor.name = Armored Conveyor block.armored-conveyor.name = Przenośnik Opancerzony
block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. block.armored-conveyor.description = Przesyła przedmioty z taką samą szybkością jak Przenośnik Tytanowy, ale jest bardziej odporny. Wejściami bocznymi mogą być tylko inne przenośniki.
block.junction.name = Węzeł block.junction.name = Węzeł
block.router.name = Rozdzielacz block.router.name = Rozdzielacz
block.distributor.name = Dystrybutor block.distributor.name = Dystrybutor
block.sorter.name = Sortownik block.sorter.name = Sortownik
block.message.name = Message block.message.name = Wiadomość
block.overflow-gate.name = Brama Przeciwprzepeł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
block.pulverizer.name = Rozkruszacz block.pulverizer.name = Rozkruszacz
block.cryofluidmixer.name = Mieszacz Lodocieczy block.cryofluidmixer.name = Mieszacz Lodocieczy
block.melter.name = Przetapiacz block.melter.name = Przetapiacz
block.incinerator.name = Spalacz block.incinerator.name = Spalacz
block.spore-press.name = Prasa Zarodni block.spore-press.name = Prasa Zarodników
block.separator.name = Rozdzielacz block.separator.name = Rozdzielacz
block.coal-centrifuge.name = Wirówka węglowa block.coal-centrifuge.name = Wirówka węglowa
block.power-node.name = Węzeł Prądu block.power-node.name = Węzeł Prądu
@@ -831,11 +848,11 @@ block.power-void.name = Próżnia prądu
block.power-source.name = Nieskończony Prąd block.power-source.name = Nieskończony Prąd
block.unloader.name = Ekstraktor block.unloader.name = Ekstraktor
block.vault.name = Magazyn block.vault.name = Magazyn
block.wave.name = Strumyk block.wave.name = Strumień
block.swarmer.name = Działo Rojowe block.swarmer.name = Działo Rojowe
block.salvo.name = Działo Salwowe block.salvo.name = Działo Salwowe
block.ripple.name = Działo falowe block.ripple.name = Działo Falowe
block.phase-conveyor.name = Fazowy Transporter block.phase-conveyor.name = Transporter Fazowy
block.bridge-conveyor.name = Most Transportowy block.bridge-conveyor.name = Most Transportowy
block.plastanium-compressor.name = Kompresor Plastanu block.plastanium-compressor.name = Kompresor Plastanu
block.pyratite-mixer.name = Mieszacz Piratianu block.pyratite-mixer.name = Mieszacz Piratianu
@@ -847,13 +864,13 @@ block.command-center.name = Centrum Dowodzenia
block.draug-factory.name = Fabryka Dronów Draug block.draug-factory.name = Fabryka Dronów Draug
block.spirit-factory.name = Fabryka Dronów Duch block.spirit-factory.name = Fabryka Dronów Duch
block.phantom-factory.name = Fabryka Dronów Widmo block.phantom-factory.name = Fabryka Dronów Widmo
block.wraith-factory.name = Fabryka Wojowników Widmo block.wraith-factory.name = Fabryka Myśliwców Widmo
block.ghoul-factory.name = Fabryka Bombowców Upiór block.ghoul-factory.name = Fabryka Bombowców Upiór
block.dagger-factory.name = Fabryka Mechów Nóż block.dagger-factory.name = Fabryka Mechów Nóż
block.crawler-factory.name = Fabryka Mechów Pełzacz block.crawler-factory.name = Fabryka Mechów Pełzacz
block.titan-factory.name = Fabryka Mechów Tytan block.titan-factory.name = Fabryka Mechów Tytan
block.fortress-factory.name = Fabryka Mechów Forteca block.fortress-factory.name = Fabryka Mechów Forteca
block.revenant-factory.name = Fabryka Wojownikó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.phase-conduit.name = Rura Fazowa block.phase-conduit.name = Rura Fazowa
@@ -870,12 +887,12 @@ block.thermal-generator.name = Generator Termalny
block.alloy-smelter.name = Piec Mieszający block.alloy-smelter.name = Piec Mieszający
block.mender.name = Naprawiacz block.mender.name = Naprawiacz
block.mend-projector.name = Projektor Napraw block.mend-projector.name = Projektor Napraw
block.surge-wall.name = Ściana Elektronu block.surge-wall.name = Ściana Elektrum
block.surge-wall-large.name = Duża Ściana Elektronu block.surge-wall-large.name = Duża Ściana Elektrum
block.cyclone.name = Cyklon block.cyclone.name = Cyklon
block.fuse.name = Lont block.fuse.name = Lont
block.shock-mine.name = Mina block.shock-mine.name = Mina
block.overdrive-projector.name = Projektor Nad-prędkości block.overdrive-projector.name = Projektor Przyśpieszający
block.force-projector.name = Projektor Pola Siłowego block.force-projector.name = Projektor Pola Siłowego
block.arc.name = Piorun block.arc.name = Piorun
block.rtg-generator.name = Generator RTG block.rtg-generator.name = Generator RTG
@@ -891,21 +908,21 @@ team.orange.name = pomarańczowy
team.derelict.name = szary team.derelict.name = szary
team.green.name = zielony team.green.name = zielony
team.purple.name = fioletowy team.purple.name = fioletowy
unit.spirit.name = Duch unit.spirit.name = Dron Naprawczy Duch
unit.draug.name = Draug unit.draug.name = Dron Wydobywczy Draug
unit.phantom.name = Widmo unit.phantom.name = Dron Budowniczy Widmo
unit.dagger.name = Nóż unit.dagger.name = Nóż
unit.crawler.name = Pełzak unit.crawler.name = Pełzak
unit.titan.name = Tytan unit.titan.name = Tytan
unit.ghoul.name = Upiór unit.ghoul.name = Bombowiec Upiór
unit.wraith.name = Widmo unit.wraith.name = Myśliwiec Widmo
unit.fortress.name = Forteca unit.fortress.name = Forteca
unit.revenant.name = Zjawa unit.revenant.name = Zjawa
unit.eruptor.name = Roztapiacz unit.eruptor.name = Roztapiacz
unit.chaos-array.name = Kolejka Chaosu unit.chaos-array.name = Chaos
unit.eradicator.name = Niszczyciel unit.eradicator.name = Niszczyciel
unit.lich.name = Obudzony unit.lich.name = Obudzony
unit.reaper.name = Żeniec 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.[]\nZacznij od[accent] wydobycia miedzi[]. Aby to zrobić, 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ć.
@@ -935,25 +952,25 @@ item.coal.description = Zwykły i łatwo dostępny materiał energetyczny.
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.
item.silicon.description = Niesamowicie przydatny półprzewodnkywany w panelach słonecznych i skomplikowanej elektronice. Nie, w Dolinie Krzemowej już nie ma krzemu. item.silicon.description = Niesamowicie przydatny półprzewodnk. Używany w panelach słonecznych, skomplikowanej elektronice i pociskach samonaprowadzających.
item.plastanium.description = Lekki i plastyczny materiał używany w amunicji odłamkowej i samolotach. Używany też w klockach LEGO (dlatego są niezniszczalne)! item.plastanium.description = Lekki i plastyczny materiał używany w amunicji odłamkowej i samolotach. Używany też w klockach LEGO (dlatego są niezniszczalne)!
item.phase-fabric.description = Niewiarygodnie lekkie włókno używane w zaawansowanej elektronice i technologii samo-naprawiającej się. item.phase-fabric.description = Niewiarygodnie lekkie włókno używane w zaawansowanej elektronice i technologii samo-naprawiającej
item.surge-alloy.description = Zaawansowany materiał z niesłychanymi wartościami energetycznymi. item.surge-alloy.description = Zaawansowany materiał z niesłychanymi wartościami energetycznymi.
item.spore-pod.description = Używany do wyrobu oleju, materiałów wybuchowych i paliwa. item.spore-pod.description = Syntetyczne zarodniki, które mogą być przekształcone na olej, materiały wybuchowe i paliwo.
item.blast-compound.description = Lotny związek używany w pirotechnice. Może być używany jako materiał energetyczny, ale nie polecam, ale i tak warto spróbować. item.blast-compound.description = Niestabilny związek używany w materiałach wybuchowych. Powstaje podczas syntezy z zarodników i innych lotnych substancji. Używanie go jako materiał energetyczny jest niewskazane.
item.pyratite.description = Niesamowicie palny związek używany w zbrojeniu. Nielegalny w 9 państwach. item.pyratite.description = Niesamowicie palny związek używany w zbrojeniu. Nielegalny w 9 państwach.
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 = Najefektywniejsza ciecz do schładzania budowli.
mech.alpha-mech.description = Standardowy mech. Średnia broń i prędkość, leć potrafi stworzyć trzy małe drony do walki. 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 i wrażliwy mech stworzony do szybkich ataków i ucieczki. 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ół.
mech.omega-mech.description = Duży i silny mech, zaprojektowany na ataki. Jego zdolność pozwala mu na zablokowanie do 90% obrażeń. mech.omega-mech.description = Duży i silny mech, zaprojektowany na ataki. Jego pancerz pozwala mu na zablokowanie do 90% obrażeń.
mech.dart-ship.description = Standardowy statek. Lekki i szybki, ale jest kiepski jak chodzi o walkę i kopanie. mech.dart-ship.description = Standardowy statek. Lekki i szybki, ale posiada małe zdolności ofensywne i niską szybkość wydobywania surowców.
mech.javelin-ship.description = Statek do ataku i szybkiej ucieczki. Zaczyna powoli, ale przyspiesza do wielkiej prędkości. Przy tej prędkości, może przelecieć koło wrogiej bazy i atakować piorunami czy rakietami. mech.javelin-ship.description = Statek do ataku i szybkiej ucieczki. Zaczyna powoli, ale przyspiesza do wielkiej prędkości. Przy tej prędkości, może przelecieć koło wrogiej bazy i atakować piorunami czy rakietami.
mech.trident-ship.description = Ciężki bombowiec, zbudowany do budowy i niszczenia fortyfikacji wroga. Dość dobrze opancerzony. mech.trident-ship.description = Ciężki bombowiec, zbudowany do budowy i niszczenia fortyfikacji wroga. Dość dobrze opancerzony.
mech.glaive-ship.description = Duży, uzbrojony statek. Dobra prędkość i przyspieszenie. Wyposażony w karabin zapalający. mech.glaive-ship.description = Duży, uzbrojony statek. Dobra prędkość i przyspieszenie. Wyposażony w karabin zapalający.
unit.draug.description = Prymitywny dron górniczy. Tani w produkcji. Przeznaczony na stracenie. Automatycznie wydobywa miedź i ołów w pobliżu. Dostarcza wydobyte zasoby do najbliższego rdzenia. unit.draug.description = Prymitywny dron górniczy. Tani w produkcji. Przeznaczony na stracenie. Automatycznie wydobywa miedź i ołów w pobliżu. Dostarcza wydobyte zasoby do najbliższego rdzenia.
unit.spirit.description = Zmodyfikowany dron draug, zaprojektowany do naprawy zamiast do wydobywania. Automatycznie naprawia wszelkie uszkodzone bloki w obszarze. unit.spirit.description = Zmodyfikowany dron draug, zaprojektowany do naprawy zamiast do wydobywania. Automatycznie naprawia wszelkie uszkodzone bloki w obszarze.
unit.phantom.description = Zaawansowana jednostka dronów. Podąża za użytkownikiem. Pomaga w budowie bloków. unit.phantom.description = Zaawansowana jednostka dronów. Podąża za użytkownikiem. Pomaga w budowie bloków.
@@ -965,7 +982,7 @@ unit.eruptor.description = Ciężki mech stworzony do niszczenia struktur. Strze
unit.wraith.description = Szybka jednostka, stosuje taktyke uderz-uciekaj Namierza jakiekolwiek źródło prądu. unit.wraith.description = Szybka jednostka, stosuje taktyke 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 = Stores a message. Used for communication between allies. block.message.description = Przechowuje wiadomość. Wykorzystywane do komunikacji pomiędzy sojusznikami.
block.graphite-press.description = Kompresuje kawałki węgla w czyste blaszki grafitu. block.graphite-press.description = Kompresuje kawałki węgla w czyste blaszki grafitu.
block.multi-press.description = Ulepszona wersja prasy grafitowej. Używa wody i prądu do kompresowania węgla szybko i efektywnie. block.multi-press.description = Ulepszona wersja prasy grafitowej. Używa wody i prądu do kompresowania węgla szybko i efektywnie.
block.silicon-smelter.description = Redukuje piasek za pomocą wysoce czystego węgla w celu wytworzenia krzemu. block.silicon-smelter.description = Redukuje piasek za pomocą wysoce czystego węgla w celu wytworzenia krzemu.
@@ -978,7 +995,7 @@ block.blast-mixer.description = Kruszy i miesza skupiska zarodników z piratytem
block.pyratite-mixer.description = Miesza węgiel, ołów i piasek tworząc bardzo łatwopalny piratian. block.pyratite-mixer.description = Miesza węgiel, ołów i piasek tworząc bardzo łatwopalny piratian.
block.melter.description = Przetapia złom na żużel do dalszego przetwarzania lub użycia w wieżyczkach block.melter.description = Przetapia złom na żużel do dalszego przetwarzania lub użycia w wieżyczkach
block.separator.description = Oddziela użyteczne materiały z mieszaniny jaką jest żużel. block.separator.description = Oddziela użyteczne materiały z mieszaniny jaką jest żużel.
block.spore-press.description = Kompresuje kapsułki zarodników w olej. block.spore-press.description = Kompresuje kapsuły zarodników pod ogromnym ciśnieniem tworząc olej.
block.pulverizer.description = Mieli złom w drobny piasek. Przydatne, gdy brakuje naturalnego piasku. block.pulverizer.description = Mieli złom w drobny piasek. Przydatne, gdy brakuje naturalnego piasku.
block.coal-centrifuge.description = Zestala olej w kawałki węgla. block.coal-centrifuge.description = Zestala olej w kawałki węgla.
block.incinerator.description = Pozbywa się nadmiaru przedmiotów lub płynu block.incinerator.description = Pozbywa się nadmiaru przedmiotów lub płynu
@@ -993,10 +1010,10 @@ block.titanium-wall.description = Umiarkowanie silny blok obronny.\nZapewnia umi
block.titanium-wall-large.description = Umiarkowanie silny blok obronny.\nZapewnia umiarkowaną ochronę przed wrogami.\nObejmuje wiele kratek. block.titanium-wall-large.description = Umiarkowanie silny blok obronny.\nZapewnia umiarkowaną ochronę przed wrogami.\nObejmuje wiele kratek.
block.thorium-wall.description = Silny blok obronny.\nDobra ochrona przed wrogami. block.thorium-wall.description = Silny blok obronny.\nDobra ochrona przed wrogami.
block.thorium-wall-large.description = Silny blok obronny.\nDobra ochrona przed wrogami.\nObejmuje wiele kratek. block.thorium-wall-large.description = Silny blok obronny.\nDobra ochrona przed wrogami.\nObejmuje wiele kratek.
block.phase-wall.description = Nie tak silny jak ściana toru, ale odbije pociski, chyba że będą zbyt potężne. block.phase-wall.description = Ściana pokryta specjalną mieszanką opartą o Włókna Fazowe, która odbija większość pocisków.
block.phase-wall-large.description = Nie tak silny jak ściana toru, ale odbije pociski, chyba że będą zbyt potężne.\nObejmuje wiele kratek. block.phase-wall-large.description = Ściana pokryta specjalną mieszanką opartą o Włókna Fazowe, która odbija większość pocisków.\nObejmuje wiele kratek.
block.surge-wall.description = Najsilniejszy blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego. block.surge-wall.description = Ekstremalnie wytrzymały blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego.
block.surge-wall-large.description = Najsilniejszy blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego.\nObejmuje wiele kratek. block.surge-wall-large.description = Ekstremalnie wytrzymały blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego.\nObejmuje wiele kratek.
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.
@@ -1008,19 +1025,19 @@ block.conveyor.description = Podstawowy blok transportowy dla przedmiotów. Auto
block.titanium-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Przesyła przedmioty szybciej od zwykłego przenośnika. block.titanium-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Przesyła przedmioty szybciej od zwykłego przenośnika.
block.junction.description = Używany jako most dla dwóch krzyżujących się przenośników. Przydatne w sytuacjach kiedy dwa różne przenośniki transportują różne surowce do różnych miejsc. block.junction.description = Używany jako most dla dwóch krzyżujących się przenośników. Przydatne w sytuacjach kiedy dwa różne przenośniki transportują różne surowce do różnych miejsc.
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 przy teleportacji przedmiotów do podłą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.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
block.mass-driver.description = Najlepszy blok do transportu przedmiotów. Zbiera wiele przedmiotów naraz a potem wystrzeliwuje je do kolejnej katapulty masy na bardzo duże odległości. block.mass-driver.description = Najlepszy blok do transportu przedmiotów. Zbiera wiele przedmiotów naraz a potem wystrzeliwuje je do kolejnej katapulty masy na bardzo duże odległości.
block.mechanical-pump.description = Tania pompa o niskiej przepustowości. Nie wymaga prądu. block.mechanical-pump.description = Tania pompa o niskiej wydajności. Nie wymaga prądu.
block.rotary-pump.description = Zaawansowana pompa, dwukrotnie większa przepustowość od mechanicznej pompy. Wymaga prądu. block.rotary-pump.description = Zaawansowana pompa. Pompuje więcej cieczy, ale wymaga zasilania.
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 przenoszenia cieczy. Działa jak transporter, ale na ciecze. Najlepiej używać z ekstraktorami wody, pompami lub 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 przenoszenia 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.liquid-router.description = Akceptuje płyny z jednego kierunku i wyprowadza je do trzech innych kierunków jednakowo. Może również przechowywać pewną ilość płynu. Przydatne do dzielenia płynów z jednego źródła na wiele 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 ogromne 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.
block.bridge-conduit.description = Zaawansowany blok przenoszący ciecze. Pozwala na przenoszenie cieczy nawet do 3 bloków na każdym terenie, przez każdy budynek. block.bridge-conduit.description = Zaawansowany blok przenoszący ciecze. Pozwala na przenoszenie cieczy nawet do 3 bloków na każdym terenie, przez każdy budynek.
block.phase-conduit.description = Zaawansowany blok do przenoszenia cieczy. Używa prądu, aby przenieść ciecz do połączonego transportera fazowego przez kilka bloków. block.phase-conduit.description = Zaawansowany blok do przenoszenia cieczy. Używa prądu, aby przenieść ciecz do połączonego transportera fazowego przez kilka bloków.
@@ -1033,17 +1050,17 @@ block.combustion-generator.description = Wytwarza energię poprzez spalanie łat
block.thermal-generator.description = Generuje prąd kiedy jest postawiony na źródłach ciepła. block.thermal-generator.description = Generuje prąd kiedy jest postawiony na źródłach ciepła.
block.turbine-generator.description = Bardziej wydajny niż generator spalania, ale wymaga dodatkowej wody. block.turbine-generator.description = Bardziej wydajny niż generator spalania, ale wymaga dodatkowej wody.
block.differential-generator.description = Generuje duże ilości prądu. Wykorzystuje różnice temperatur pomiędzy Lodocieczą a spalanym Piratianem. block.differential-generator.description = Generuje duże ilości prądu. Wykorzystuje różnice temperatur pomiędzy Lodocieczą a spalanym Piratianem.
block.rtg-generator.description = Termoelektryczny generator wykorzystujący izotopy promieniotwórcze. Nie wymaga chłodzenia, ale produkuje mniej energii od reaktora torowego. block.rtg-generator.description = Generator wykorzystujący ciepło powstałe z rozpadu izotopów promieniotwórczych. Nie wymaga chłodzenia, ale produkuje mniej energii od reaktora torowego.
block.solar-panel.description = Wytwarza małe ilości prądu wykorzystując energię słoneczną. block.solar-panel.description = Wytwarza małe ilości prądu wykorzystując energię słoneczną.
block.solar-panel-large.description = Wytwarza o wiele więcej prądu niż zwykły panel słoneczny, ale jest o wiele droższy w budowie. block.solar-panel-large.description = Wytwarza o wiele więcej prądu niż zwykły panel słoneczny, ale jest o wiele droższy w budowie.
block.thorium-reactor.description = Produkuje bardzo duże ilości prądu z wysoce radioaktywnego toru. Wymaga ciągłego chłodzenia. Silnie eksploduje jeśli nie zostanie dostarczona wystarczająca ilość chłodziwa. Produkcja energii zależy od zapełnienia, produkując bazową ilość energii przy całkowitym zapełnieniu. block.thorium-reactor.description = Produkuje bardzo duże ilości prądu z wysoce radioaktywnego toru. Wymaga ciągłego chłodzenia. Silnie eksploduje jeśli nie zostanie dostarczona wystarczająca ilość chłodziwa. Produkcja energii zależy od zapełnienia, produkując bazową ilość energii przy całkowitym zapełnieniu.
block.impact-reactor.description = Zaawansowany generator, zdolny do produkcji ogromnych ilości prądu u szczytu swoich możliwości. Wymaga znacznych ilości energii do rozpoczęcia procesu. block.impact-reactor.description = Zaawansowany generator, zdolny do produkcji ogromnych ilości prądu u szczytu swoich możliwości. Wymaga znacznych ilości energii do rozpoczęcia procesu.
block.mechanical-drill.description = Tanie wiertło. Kiedy położnone na odpowiednich polach, wysyła przedmioty w wolnym tempie. block.mechanical-drill.description = Tanie wiertło. Kiedy zostanie zbudowane na odpowiednich polach, wydobywa surowce w wolnym tempie.
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. Dodatkowo, radioaktywny tor może zostać wydobyty przez to wiertło. 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 nie ma jeziora.
block.cultivator.description = Uprawia małe skupiska zarodników w gotowe do użytku kapsułki. 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.
@@ -1056,22 +1073,22 @@ block.launch-pad-large.description = Ulepszona wersja wyrzutni. Magazynuje więc
block.duo.description = Mała, tania wieża. Przydatna przeciwko jednostkom naziemnym. block.duo.description = Mała, tania wieża. Przydatna przeciwko jednostkom naziemnym.
block.scatter.description = Średniej wielkości wieża przeciwlotnicza. Rozsiewa śruty z ołowiu lub strzępy złomu na jednostki wroga. block.scatter.description = Średniej wielkości wieża przeciwlotnicza. Rozsiewa śruty z ołowiu lub strzępy złomu na jednostki wroga.
block.scorch.description = Spala wszystkich wrogów naziemnych w pobliżu. Bardzo skuteczny z bliskiej odległości. block.scorch.description = Spala wszystkich wrogów naziemnych w pobliżu. Bardzo skuteczny z bliskiej odległości.
block.hail.description = Mała wieża artyleryjska, bardzo przydatna, atakuje tylko jednostki naziemne. block.hail.description = Mała wieża artyleryjska o dużym zasięgu.
block.wave.description = Średniej wielkości szybkostrzelna wieżyczka, która wystrzeliwuje płynne bąbelki. Gasi ogień jeżeli jest w niej woda lub lodociecz block.wave.description = Średniej wielkości wieżyczka, która wystrzeliwuje strumienie cieczy. Automatycznie gasi ogień jeśli zasilana jest wodą.
block.lancer.description = Średniej wielkości wieżyczka, która strzela naładowanymi wiązkami elektryczności. block.lancer.description = Średniej wielkości wieżyczka, która po naładowaniu, wystrzeliwuje silne wiązki energii.
block.arc.description = Mała wieża bliskiego zasięgu, która wystrzeliwuje wiązki tesli losowym łukiem w kierunku wroga. block.arc.description = Mała wieża bliskiego zasięgu. Wystrzeliwuje wiązki elektryczne w kierunku wroga.
block.swarmer.description = Średniej wielkości wieżyczka, która strzela rakietami wybuchowymi. block.swarmer.description = Średniej wielkości wieżyczka, która wystrzeliwuje rakiety samonaprowadzające.
block.salvo.description = Średniej wielkości wieża strzelająca salwami. block.salvo.description = Większa, bardziej zaawansowana wersja Podwójnego Działka, strzelająca szybkimi salwami.
block.fuse.description = Duża wieża, która strzela potężnymi wiązkami krótkiego zasięgu. block.fuse.description = Duża wieża, która strzela potężnymi wiązkami krótkiego zasięgu.
block.ripple.description = Duża wieża artyleryjska, która strzela jednocześnie kilkoma strzałami. block.ripple.description = Duża wieża artyleryjska, która strzela jednocześnie kilkoma strzałami.
block.cyclone.description = Duża szybkostrzelna wieża. block.cyclone.description = Duża szybkostrzelna wieża.
block.spectre.description = Duża wieża, która strzela dwoma potężnymi pociskami jednocześnie. block.spectre.description = Duże działo dwulufowe, które strzela potężnymi pociskami przebijającymi pancerz w jednostki naziemne i powietrzne.
block.meltdown.description = Duża wieża, która strzela potężnymi wiązkami dalekiego zasięgu. block.meltdown.description = Duże działo laserowe, które strzela potężnymi wiązkami dalekiego zasięgu. Wymaga chłodzenia.
block.command-center.description = Wydaje polecenia ruchu sojuszniczym jednostkom na całej mapie.\nPowoduje patrolowanie jednostek, atakowanie wrogiego rdzenia lub wycofanie się do rdzenia / fabryki. Gdy nie ma rdzenia wroga, jednostki będą domyślnie patrolować pod dowództwem ataku. block.command-center.description = Wydaje polecenia ruchu sojuszniczym jednostkom na całej mapie.\nPowoduje patrolowanie jednostek, atakowanie wrogiego rdzenia lub wycofanie się do rdzenia / fabryki. Gdy nie ma rdzenia wroga, jednostki będą domyślnie patrolować pod dowództwem ataku.
block.draug-factory.description = Produkuje drony wydobywcze Draug. block.draug-factory.description = Produkuje drony wydobywcze Draug.
block.spirit-factory.description = Produkuje lekkie drony, które naprawiają bloki. block.spirit-factory.description = Produkuje lekkie drony, które naprawiają bloki.
block.phantom-factory.description = Produkuje zaawansowane drony które pomagają przy budowie. block.phantom-factory.description = Produkuje zaawansowane drony które pomagają przy budowie.
block.wraith-factory.description = Produkuje szybkie jednostki powietrzne typu "uderz-uciekaj". block.wraith-factory.description = Produkuje szybkie jednostki powietrzne typu "uderz i uciekaj".
block.ghoul-factory.description = Produkuje ciężkie bombowce dywanowe. block.ghoul-factory.description = Produkuje ciężkie bombowce dywanowe.
block.revenant-factory.description = Produkuje ciężkie jednostki powietrzne z wyrzutniami rakiet. block.revenant-factory.description = Produkuje ciężkie jednostki powietrzne z wyrzutniami rakiet.
block.dagger-factory.description = Produkuje podstawowe jednostki lądowe. block.dagger-factory.description = Produkuje podstawowe jednostki lądowe.

File diff suppressed because it is too large Load Diff

View File

@@ -545,7 +545,6 @@ setting.fullscreen.name = Fullskärm
setting.borderlesswindow.name = Borderless Window[lightgray] (may require restart) setting.borderlesswindow.name = Borderless Window[lightgray] (may require restart)
setting.fps.name = Show FPS setting.fps.name = Show FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Show Power Lasers
setting.pixelate.name = Pixellera[lightgray] (disables animations) setting.pixelate.name = Pixellera[lightgray] (disables animations)
setting.minimap.name = Visa Minikarta setting.minimap.name = Visa Minikarta
setting.musicvol.name = Musikvolym setting.musicvol.name = Musikvolym
@@ -557,6 +556,7 @@ setting.crashreport.name = Skicka Anonyma Krashrapporter
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Auto-Create Saves
setting.publichost.name = Public Game Visibility setting.publichost.name = Public Game Visibility
setting.chatopacity.name = Chattgenomskinlighet setting.chatopacity.name = Chattgenomskinlighet
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Visa Chatt setting.playerchat.name = Visa Chatt
uiscale.reset = UI-skalan har ändrats.\nTryck "OK" för att använda den här skalan.\n[scarlet]Avslutar och återställer om[accent] {0}[] sekunder... uiscale.reset = UI-skalan har ändrats.\nTryck "OK" för att använda den här skalan.\n[scarlet]Avslutar och återställer om[accent] {0}[] sekunder...
uiscale.cancel = Avbryt och Avsluta uiscale.cancel = Avbryt och Avsluta

View File

@@ -545,7 +545,6 @@ setting.fullscreen.name = Tam ekran
setting.borderlesswindow.name = Borderless Window[LIGHT_GRAY] (may require restart) setting.borderlesswindow.name = Borderless Window[LIGHT_GRAY] (may require restart)
setting.fps.name = FPS'i goster setting.fps.name = FPS'i goster
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Guc lazerlerini goster
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance) setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Haritayi goster setting.minimap.name = Haritayi goster
setting.musicvol.name = Ses yuksekligi setting.musicvol.name = Ses yuksekligi
@@ -557,6 +556,7 @@ setting.crashreport.name = Send Anonymous Crash Reports
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Auto-Create Saves
setting.publichost.name = Public Game Visibility setting.publichost.name = Public Game Visibility
setting.chatopacity.name = Chat Opacity setting.chatopacity.name = Chat Opacity
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = Display In-Game Chat setting.playerchat.name = Display In-Game Chat
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings... uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings...
uiscale.cancel = Cancel & Exit uiscale.cancel = Cancel & Exit

File diff suppressed because it is too large Load Diff

View File

@@ -560,7 +560,6 @@ setting.fullscreen.name = Повноекранний режим
setting.borderlesswindow.name = Вікно без полів[lightgray] (може потребувати перезапуску) setting.borderlesswindow.name = Вікно без полів[lightgray] (може потребувати перезапуску)
setting.fps.name = Показувати FPS setting.fps.name = Показувати FPS
setting.vsync.name = Вертикальна синхронізація setting.vsync.name = Вертикальна синхронізація
setting.lasers.name = Показувати енергію лазерів
setting.pixelate.name = Пікселізація[lightgray] (вимикає анімації) setting.pixelate.name = Пікселізація[lightgray] (вимикає анімації)
setting.minimap.name = Показувати міні-мапу setting.minimap.name = Показувати міні-мапу
setting.musicvol.name = Гучність музики setting.musicvol.name = Гучність музики
@@ -572,6 +571,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.playerchat.name = Відображати хмару чата над гравцями setting.playerchat.name = Відображати хмару чата над гравцями
public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[lightgray]Це можна змінити у Налаштування->Гра->Public Game Visibility. public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[lightgray]Це можна змінити у Налаштування->Гра->Public Game Visibility.
uiscale.reset = Масштаб користувальницького інтерфейсу було змінено.\nНатисніть «ОК» для підтверждення цього масшатабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] … uiscale.reset = Масштаб користувальницького інтерфейсу було змінено.\nНатисніть «ОК» для підтверждення цього масшатабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] …

View File

@@ -16,11 +16,14 @@ screenshot.invalid = 地图太大,可能没有足够的内存用于截图。
gameover = 你的核心被摧毁了! gameover = 你的核心被摧毁了!
gameover.pvp = [accent] {0}[]队获胜! gameover.pvp = [accent] {0}[]队获胜!
highscore = [accent]新纪录! highscore = [accent]新纪录!
load.sound = 音乐加载中 load.sound = 音乐加载中
load.map = 地图加载中 load.map = 地图加载中
load.image = 图片加载中 load.image = 图片加载中
load.content = 内容加载中 load.content = 内容加载中
load.system = 系统加载中 load.system = 系统加载中
load.mod = 模组加载中
stat.wave = 战胜的波数:[accent]{0} stat.wave = 战胜的波数:[accent]{0}
stat.enemiesDestroyed = 消灭的敌人:[accent]{0} stat.enemiesDestroyed = 消灭的敌人:[accent]{0}
stat.built = 建造的建筑:[accent]{0} stat.built = 建造的建筑:[accent]{0}
@@ -28,6 +31,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]发射的资源
map.delete = 确定要删除 "[accent]{0}[]" 地图吗? map.delete = 确定要删除 "[accent]{0}[]" 地图吗?
level.highscore = 最高分:[accent]{0} level.highscore = 最高分:[accent]{0}
@@ -45,6 +49,7 @@ customgame = 自定义游戏
newgame = 新游戏 newgame = 新游戏
none = <无> none = <无>
minimap = 小地图 minimap = 小地图
position = 位置
close = 关闭 close = 关闭
website = 官网 website = 官网
quit = 退出 quit = 退出
@@ -60,6 +65,25 @@ uploadingcontent = 正在上传内容
uploadingpreviewfile = 正在上传预览文件 uploadingpreviewfile = 正在上传预览文件
committingchanges = 提交更改 committingchanges = 提交更改
done = 已完成 done = 已完成
mods.alphainfo = 请注意在测试版本中的模组[scarlet]可能有缺陷[]。\n在 Mindustry Github 或 Discord上报告你发现的问题。
mods.alpha = [accent](测试版)
mods = 模组
mods.none = [LIGHT_GRAY]无模组!
mods.guide = 模组教程
mods.report = 报告 Bug
mod.enabled = [lightgray]已启用
mod.disabled = [scarlet]已禁用
mod.disable = 禁用
mod.enable = 启用
mod.requiresrestart = 需要重启使模组生效。
mod.reloadrequired = [scarlet]需要重启
mod.import = 导入模组
mod.import.github = 导入 Github 模组
mod.remove.confirm = 此模组将被删除。
mod.author = [LIGHT_GRAY]作者:[] {0}
mod.missing = 此存档包含更新后的模组或不再使用的模组。存档可能会损坏。确定要加载它吗?\n[lightgray]模组:\n{0}
about.button = 关于 about.button = 关于
name = 名字: name = 名字:
noname = 先取一个[accent]玩家名[]。 noname = 先取一个[accent]玩家名[]。
@@ -183,7 +207,7 @@ copylink = 复制链接
back = 返回 back = 返回
data.export = 导出数据 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 = 导出老版本数据
@@ -191,7 +215,11 @@ classic.export.text = [accent]Mindustry []已经有了一个重要的更新。\n
quit.confirm = 确定退出? quit.confirm = 确定退出?
quit.confirm.tutorial = 你确定要跳过教程?\n教程可以通过[accent]设置->游戏->重新游玩教程[]来再次游玩。 quit.confirm.tutorial = 你确定要跳过教程?\n教程可以通过[accent]设置->游戏->重新游玩教程[]来再次游玩。
loading = [accent]加载中…… loading = [accent]加载中……
reloading = [accent]重载模组中……
saving = [accent]保存中…… saving = [accent]保存中……
cancelbuilding = [accent][[{0}][]来清除规划
pausebuilding = [accent][[{0}][]来暂停建造
resumebuilding = [scarlet][[{0}][]来恢复建造
wave = [accent]波次{0} wave = [accent]波次{0}
wave.waiting = [LIGHT_GRAY]下一波将在{0}秒后到来 wave.waiting = [LIGHT_GRAY]下一波将在{0}秒后到来
wave.waveInProgress = [LIGHT_GRAY]波次进行中 wave.waveInProgress = [LIGHT_GRAY]波次进行中
@@ -210,8 +238,13 @@ map.nospawn = 这个地图没有核心!请在编辑器中添加一个[ROYAL]
map.nospawn.pvp = 这个地图没有敌人的核心!请在编辑器中添加一个[ROYAL]敌方[]的核心。 map.nospawn.pvp = 这个地图没有敌人的核心!请在编辑器中添加一个[ROYAL]敌方[]的核心。
map.nospawn.attack = 这个地图没有敌人的核心!请在编辑中向地图添加一个[SCARLET]敌方[]的核心。 map.nospawn.attack = 这个地图没有敌人的核心!请在编辑中向地图添加一个[SCARLET]敌方[]的核心。
map.invalid = 地图载入错误:地图文件可能已经损坏。 map.invalid = 地图载入错误:地图文件可能已经损坏。
map.update = 更新地图
map.load.error = 获取创意工坊详细信息时出错:{0}
map.publish.error = 地图上传错误:{0} map.publish.error = 地图上传错误:{0}
map.missing = 地图已被删除或移动。\n[lightgray]链接已在创意工坊中被删除。
map.publish.confirm = 确定上传此地图?\n\n[lightgray]确定你同意 Steam 创意工坊的最终用户许可协议,否则你的地图将不会被展示! map.publish.confirm = 确定上传此地图?\n\n[lightgray]确定你同意 Steam 创意工坊的最终用户许可协议,否则你的地图将不会被展示!
map.menu = 选择要对此地图执行的操作。
map.changelog = 更改日志(可选):
eula = Steam 最终用户许可协议 eula = Steam 最终用户许可协议
map.publish = 地图已上传。 map.publish = 地图已上传。
map.publishing = [accent]地图上传中…… map.publishing = [accent]地图上传中……
@@ -291,6 +324,7 @@ 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 = 仅在实心块上绘制。 toolmode.replace.description = 仅在实心块上绘制。
toolmode.replaceall = 全部替换 toolmode.replaceall = 全部替换
@@ -305,6 +339,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 = 波动程度
@@ -336,6 +371,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 = 菜单
@@ -343,8 +379,7 @@ play = 开始游戏
campaign = 战役模式 campaign = 战役模式
load = 载入游戏 load = 载入游戏
save = 保存 save = 保存
fps = FPS{0} fps = 帧数{0}
tps = TPS{0}
ping = 延迟:{0}毫秒 ping = 延迟:{0}毫秒
language.restart = 为了使语言设置生效请重启游戏。 language.restart = 为了使语言设置生效请重启游戏。
settings = 设置 settings = 设置
@@ -353,11 +388,14 @@ tutorial.retake = 重新游玩教程
editor = 编辑器 editor = 编辑器
mapeditor = 地图编辑器 mapeditor = 地图编辑器
donate = 打赏 donate = 打赏
abandon = 放弃 abandon = 放弃
abandon.text = 这个区域及其资源会被敌人重置。 abandon.text = 这个区域及其资源会被敌人重置。
locked = 已锁定 locked = 已锁定
complete = [LIGHT_GRAY]完成: complete = [LIGHT_GRAY]完成:
zone.requirement = 在{1}中达到{0}波 zone.requirement = 在{1}中达到{0}波
requirement.core = 在{0}中摧毁敌方核心
requirement.unlock = 解锁{0}
resume = 暂停:\n[LIGHT_GRAY]{0} resume = 暂停:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]最高波次:{0} bestwave = [LIGHT_GRAY]最高波次:{0}
launch = < 发射 > launch = < 发射 >
@@ -368,7 +406,9 @@ launch.confirm = 您将发射核心中所有资源。\n此地图将重置。
launch.skip.confirm = 如果你现在跳过,在后来的波次前你将无法发射。 launch.skip.confirm = 如果你现在跳过,在后来的波次前你将无法发射。
uncover = 解锁 uncover = 解锁
configure = 设定发射资源数量 configure = 设定发射资源数量
configure.locked = [LIGHT_GRAY]到达第 {0} 波\n才能设定发射资源。 bannedblocks = 禁用方块
addall = 添加所有
configure.locked = [LIGHT_GRAY]到达第{0}波\n才能设定发射资源。
configure.invalid = 数量必须是0到{0}之间的数字。 configure.invalid = 数量必须是0到{0}之间的数字。
zone.unlocked = [LIGHT_GRAY]{0} 已解锁。 zone.unlocked = [LIGHT_GRAY]{0} 已解锁。
zone.requirement.complete = 已达到第{0}波。\n达到解锁{1}的需求。 zone.requirement.complete = 已达到第{0}波。\n达到解锁{1}的需求。
@@ -379,8 +419,9 @@ zone.objective.survival = 生存
zone.objective.attack = 摧毁敌方核心 zone.objective.attack = 摧毁敌方核心
add = 添加…… add = 添加……
boss.health = BOSS 生命值 boss.health = BOSS 生命值
connectfail = [crimson]服务器连接失败:[accent]{0} connectfail = [crimson]服务器连接失败:[accent]{0}
error.unreachable = 服务器无法访问。 error.unreachable = 服务器无法访问。\n确定输对地址了吗
error.invalidaddress = 地址无效。 error.invalidaddress = 地址无效。
error.timedout = 连接超时!\n确保服务器设置了端口转发并且地址正确 error.timedout = 连接超时!\n确保服务器设置了端口转发并且地址正确
error.mismatch = 不匹配。\n可能是客户端/服务器版本不匹配。\n请确保客户端和服务器都是最新的版本 error.mismatch = 不匹配。\n可能是客户端/服务器版本不匹配。\n请确保客户端和服务器都是最新的版本
@@ -389,6 +430,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 = 陨石带
@@ -403,6 +445,7 @@ 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]无法保证此着陆位置。
@@ -417,6 +460,7 @@ zone.nuclearComplex.description = 以前生产和加工钍的设施已变成废
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 = 恢复默认
@@ -428,15 +472,14 @@ settings.graphics = 图像
settings.cleardata = 清除游戏数据…… settings.cleardata = 清除游戏数据……
settings.clear.confirm = 您确定要清除数据吗?\n这个操作无法撤销 settings.clear.confirm = 您确定要清除数据吗?\n这个操作无法撤销
settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据包括存档、地图、解锁和绑定键。\n按「是」后游戏将删除所有数据并自动退出。 settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据包括存档、地图、解锁和绑定键。\n按「是」后游戏将删除所有数据并自动退出。
settings.clearunlocks = 清除解锁的科技 paused = [accent]< 暂停 >
settings.clearall = 清除所有数据 clear = 清除
paused = 暂停 banned = [scarlet]已禁止
yes = yes =
no = no =
info.title = [accent]详情 info.title = [accent]详情
error.title = [crimson]发生了一个错误 error.title = [crimson]发生了一个错误
error.crashtitle = 发生了一个错误 error.crashtitle = 发生了一个错误
attackpvponly = [scarlet]只在攻击/PVP模式中可用
blocks.input = 输入 blocks.input = 输入
blocks.output = 输出 blocks.output = 输出
blocks.booster = 加成物品/液体 blocks.booster = 加成物品/液体
@@ -468,9 +511,10 @@ blocks.health = 生命值
blocks.buildtime = 建造时间 blocks.buildtime = 建造时间
blocks.buildcost = 建造花费 blocks.buildcost = 建造花费
blocks.inaccuracy = 误差 blocks.inaccuracy = 误差
blocks.shots = 每秒发射数 blocks.shots = 发射数
blocks.reload = 重新装弹 blocks.reload = 每秒发射数
blocks.ammo = 子弹 blocks.ammo = 子弹
bar.drilltierreq = 需要更好的钻头 bar.drilltierreq = 需要更好的钻头
bar.drillspeed = 挖掘速度:{0}/s bar.drillspeed = 挖掘速度:{0}/s
bar.efficiency = 效率:{0}% bar.efficiency = 效率:{0}%
@@ -485,6 +529,7 @@ bar.heat = 热量
bar.power = 电力 bar.power = 电力
bar.progress = 制造进度 bar.progress = 制造进度
bar.spawned = 单位数量:{0}/{1} bar.spawned = 单位数量:{0}/{1}
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] 燃烧
@@ -496,6 +541,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 = 液体单位/秒
@@ -518,6 +564,7 @@ category.optional = 可选的增强物品
setting.landscape.name = 锁定横屏 setting.landscape.name = 锁定横屏
setting.shadows.name = 影子 setting.shadows.name = 影子
setting.linear.name = 抗锯齿 setting.linear.name = 抗锯齿
setting.hints.name = 提示
setting.animatedwater.name = 流动的水 setting.animatedwater.name = 流动的水
setting.animatedshields.name = 动态画面 setting.animatedshields.name = 动态画面
setting.antialias.name = 抗锯齿[LIGHT_GRAY](需要重新启动)[] setting.antialias.name = 抗锯齿[LIGHT_GRAY](需要重新启动)[]
@@ -545,9 +592,9 @@ setting.fullscreen.name = 全屏
setting.borderlesswindow.name = 无边框窗口[LIGHT_GRAY] (可能需要重启) setting.borderlesswindow.name = 无边框窗口[LIGHT_GRAY] (可能需要重启)
setting.fps.name = 显示 FPS setting.fps.name = 显示 FPS
setting.vsync.name = 垂直同步 setting.vsync.name = 垂直同步
setting.lasers.name = 显示能量射线
setting.pixelate.name = 像素画面 [LIGHT_GRAY](禁用动画) setting.pixelate.name = 像素画面 [LIGHT_GRAY](禁用动画)
setting.minimap.name = 显示小地图 setting.minimap.name = 显示小地图
setting.position.name = 显示玩家坐标
setting.musicvol.name = 音乐音量 setting.musicvol.name = 音乐音量
setting.ambientvol.name = 环境体积 setting.ambientvol.name = 环境体积
setting.mutemusic.name = 静音 setting.mutemusic.name = 静音
@@ -557,7 +604,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 = 能量激光不透明度
setting.playerchat.name = 显示游戏内聊天界面 setting.playerchat.name = 显示游戏内聊天界面
public.confirm = 确定开启旁观?\n[lightgray]可在设置->游戏->公共游戏旁观中修改。
public.beta = 请注意,测试版的游戏不能公共旁观。
uiscale.reset = UI缩放比例已经改变。\n按下“确定”来确定缩放比例\n[accent]{0}[]秒后[scarlet]退出并恢复设定。 uiscale.reset = UI缩放比例已经改变。\n按下“确定”来确定缩放比例\n[accent]{0}[]秒后[scarlet]退出并恢复设定。
uiscale.cancel = 取消并退出 uiscale.cancel = 取消并退出
setting.bloom.name = 特效 setting.bloom.name = 特效
@@ -567,10 +617,11 @@ 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.gridMode.name = 选择块 keybind.gridMode.name = 选择块
keybind.gridModeShift.name = 选择类别 keybind.gridModeShift.name = 选择类别
keybind.clear_building.name = 清除建筑
keybind.press = 按一下键…… keybind.press = 按一下键……
keybind.press.axis = 按一下轴或键…… keybind.press.axis = 按一下轴或键……
keybind.screenshot.name = 地图截图 keybind.screenshot.name = 地图截图
@@ -587,28 +638,32 @@ keybind.zoom_hold.name = 保持缩放
keybind.zoom.name = 缩放 keybind.zoom.name = 缩放
keybind.menu.name = 菜单 keybind.menu.name = 菜单
keybind.pause.name = 暂停 keybind.pause.name = 暂停
keybind.pause_building.name = 暂停/继续建造
keybind.minimap.name = 小地图 keybind.minimap.name = 小地图
keybind.dash.name = 冲刺 keybind.dash.name = 冲刺
keybind.chat.name = 聊天 keybind.chat.name = 聊天
keybind.player_list.name = 玩家列表 keybind.player_list.name = 玩家列表
keybind.console.name = 控制台 keybind.console.name = 控制台
keybind.rotate.name = 旋转 keybind.rotate.name = 旋转
keybind.rotateplaced.name = 旋转全部(长按)
keybind.toggle_menus.name = 切换菜单 keybind.toggle_menus.name = 切换菜单
keybind.chat_history_prev.name = 前面的聊天记录 keybind.chat_history_prev.name = 前面的聊天记录
keybind.chat_history_next.name = 后面的聊天记录 keybind.chat_history_next.name = 后面的聊天记录
keybind.chat_scroll.name = 聊天记录滚动 keybind.chat_scroll.name = 聊天记录滚动
keybind.drop_unit.name = 掉落单位 keybind.drop_unit.name = 释放单位
keybind.zoom_minimap.name = 小地图缩放 keybind.zoom_minimap.name = 小地图缩放
mode.help.title = 模式说明 mode.help.title = 模式说明
mode.survival.name = 生存 mode.survival.name = 生存
mode.survival.description = 正常的游戏模式,有限的资源和自动波次。 mode.survival.description = 正常的游戏模式,有限的资源和自动波次。\n[gray]需要敌人出生点。
mode.sandbox.name = 沙盒 mode.sandbox.name = 沙盒
mode.sandbox.description = 无限的资源,不会自动生成敌人。 mode.sandbox.description = 无限的资源,不会自动生成敌人。
mode.editor.name = 编辑
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = 和本地玩家对战。 mode.pvp.description = 和本地玩家对战。\n[gray]需要不同队伍的核心。
mode.attack.name = 攻击 mode.attack.name = 攻击
mode.attack.description = 没有波数,但是有摧毁敌人基地的任务。 mode.attack.description = 没有波数,但是有摧毁敌人基地的任务。\n[gray]需要姨妈红队核心。
mode.custom = 自定义模式 mode.custom = 自定义模式
rules.infiniteresources = 无限资源 rules.infiniteresources = 无限资源
rules.wavetimer = 波次计时器 rules.wavetimer = 波次计时器
rules.waves = 波次 rules.waves = 波次
@@ -635,6 +690,7 @@ rules.title.resourcesbuilding = 资源和建造
rules.title.player = 玩家 rules.title.player = 玩家
rules.title.enemy = 敌人 rules.title.enemy = 敌人
rules.title.unit = 单位 rules.title.unit = 单位
content.item.name = 物品 content.item.name = 物品
content.liquid.name = 液体 content.liquid.name = 液体
content.unit.name = 部队 content.unit.name = 部队
@@ -696,6 +752,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 = 盐碱地
@@ -926,6 +983,7 @@ tutorial.deposit = 将物品从机甲拖向方块来放下物品。\n\n[accent]
tutorial.waves = [lightgray]敌人[]来了。\n\n保护核心防御2波攻击。造更多的炮塔。[accent]点击[]以射击。\n建造更多的炮塔和钻头并采更多的矿。 tutorial.waves = [lightgray]敌人[]来了。\n\n保护核心防御2波攻击。造更多的炮塔。[accent]点击[]以射击。\n建造更多的炮塔和钻头并采更多的矿。
tutorial.waves.mobile = [lightgray]敌人[]来了。\n\n保护核心防御2波攻击。造更多的炮塔。你的机甲将对敌人自动开火。\n建造更多的炮塔和钻头并采更多的矿。 tutorial.waves.mobile = [lightgray]敌人[]来了。\n\n保护核心防御2波攻击。造更多的炮塔。你的机甲将对敌人自动开火。\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 = 一种超级强硬的复合玻璃。通常用来传送和收藏液体。

View File

@@ -1,10 +1,10 @@
credits.text = 由[ROYAL]Anuken[]製作 - [SKY]anukendev@gmail.com[] credits.text = 由[ROYAL]Anuken[]製作 - [SKY]anukendev@gmail.com[]
credits = 謝名單 credits = 謝名單
contributors = 翻譯員和貢獻者 contributors = 翻譯員和貢獻者
discord = 加入 Mindustry 的 Discord 聊天室! discord = 加入 Mindustry 的 Discord 聊天室!
link.discord.description = 官方 Mindustry Discord 聊天室 link.discord.description = 官方 Mindustry Discord 聊天室
link.github.description = 遊戲原始碼 link.github.description = 遊戲原始碼
link.changelog.description = List of update changes 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 電腦版下載與網頁版
@@ -16,17 +16,17 @@ screenshot.invalid = 地圖太大了,可能沒有足夠的內存用於截圖
gameover = 遊戲結束 gameover = 遊戲結束
gameover.pvp = [accent]{0}[]隊獲勝! gameover.pvp = [accent]{0}[]隊獲勝!
highscore = [accent]新的高分紀錄! highscore = [accent]新的高分紀錄!
load.sound = Sounds load.sound = 音效載入中
load.map = Maps load.map = 地圖載入中
load.image = Images load.image = 圖片載入中
load.content = Content load.content = 內容載入中
load.system = System load.system = 系統載入中
stat.wave = 打敗的波次:[accent]{0} stat.wave = 打敗的波次:[accent]{0}
stat.enemiesDestroyed = 摧毀的敵人:[accent]{0} stat.enemiesDestroyed = 摧毀的敵人:[accent]{0}
stat.built = 建設的建築:[accent]{0} stat.built = 建設的建築:[accent]{0}
stat.destroyed = 摧毀的建築:[accent]{0} 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]發射了的物品
map.delete = 確認要刪除「[accent]{0}[]」地圖嗎? map.delete = 確認要刪除「[accent]{0}[]」地圖嗎?
@@ -46,20 +46,20 @@ newgame = 新遊戲
none = 〈沒有〉 none = 〈沒有〉
minimap = 小地圖 minimap = 小地圖
close = 關閉 close = 關閉
website = Website website = 網頁
quit = 退出 quit = 退出
save.quit = Save & Quit save.quit = 儲存與離開
maps = 地圖 maps = 地圖
maps.browse = Browse Maps maps.browse = 瀏覽地圖
continue = 繼續 continue = 繼續
maps.none = [LIGHT_GRAY]找不到地圖! maps.none = [LIGHT_GRAY]找不到地圖!
invalid = Invalid invalid = 無效
preparingconfig = Preparing Config preparingconfig = 配置準備中
preparingcontent = Preparing Content preparingcontent = 內容準備中
uploadingcontent = Uploading Content uploadingcontent = 內容上傳中
uploadingpreviewfile = Uploading Preview File uploadingpreviewfile = 上傳預覽文件
committingchanges = Comitting Changes committingchanges = 提交變更
done = Done done = 完成
about.button = 關於 about.button = 關於
name = 名稱: name = 名稱:
noname = 先選擇一個[accent]玩家名稱[]。 noname = 先選擇一個[accent]玩家名稱[]。
@@ -74,31 +74,31 @@ players = {0}個線上玩家
players.single = {0}個線上玩家 players.single = {0}個線上玩家
server.closing = [accent]正在關閉伺服器…… server.closing = [accent]正在關閉伺服器……
server.kicked.kick = 您已被踢出伺服器! server.kicked.kick = 您已被踢出伺服器!
server.kicked.whitelist = You are not whitelisted here. server.kicked.whitelist = 您不在這裡的白名單內.
server.kicked.serverClose = 伺服器已關閉。 server.kicked.serverClose = 伺服器已關閉。
server.kicked.vote = You have been vote-kicked. Goodbye. server.kicked.vote = 您已被投票踢出伺服器,再見。
server.kicked.clientOutdated = 客戶端版本過舊!請更新遊戲! server.kicked.clientOutdated = 客戶端版本過舊!請更新遊戲!
server.kicked.serverOutdated = 伺服器版本過舊!請聯絡伺服主更新伺服器! server.kicked.serverOutdated = 伺服器版本過舊!請聯絡伺服主更新伺服器!
server.kicked.banned = 您已經從這個伺服器被封禁。 server.kicked.banned = 您已經從這個伺服器被封禁。
server.kicked.typeMismatch = This server is not compatible with your build type. server.kicked.typeMismatch = 該伺服器與您的構建類型不兼容。
server.kicked.playerLimit = This server is full. Wait for an empty slot. server.kicked.playerLimit = 該伺服器已滿。等待一個空位置。
server.kicked.recentKick = 您已經從伺服器被踢除。\n請稍後再進行連線。 server.kicked.recentKick = 您已經從伺服器被踢除。\n請稍後再進行連線。
server.kicked.nameInUse = 伺服器中已經\n有人有相同的名稱了。 server.kicked.nameInUse = 伺服器中已經\n有人有相同的名稱了。
server.kicked.nameEmpty = 你的名稱必須至少包含一個字母或數字。 server.kicked.nameEmpty = 你的名稱必須至少包含一個字母或數字。
server.kicked.idInUse = 你已經在伺服器中!不允許用兩個賬號。 server.kicked.idInUse = 你已經在伺服器中!不允許用兩個賬號。
server.kicked.customClient = 這個伺服器不支持自訂客戶端,請下載官方版本。 server.kicked.customClient = 這個伺服器不支持自訂客戶端,請下載官方版本。
server.kicked.gameover = 遊戲結束! server.kicked.gameover = 遊戲結束!
server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[] server.versions = 您的遊戲版本:[accent] {0}[]\n伺服器遊戲版本:[accent] {1}[]
host.info = 目前伺服器監聽於連接埠[scarlet]6567[]。\n所有跟您在同一個[LIGHT_GRAY]網路或區域網路[]環境的玩家應該能在他們的伺服器清單中找到您的伺服器。\n\n如果您希望網際網路上的玩家透過IP 位址連線到您的伺服器,您必須設定[accent]連接埠轉發[]。\n\n[LIGHT_GRAY]注意如果區域網路內有玩家無法連線至您的伺服器請務必確認您已於防火牆設定中開放Mindustry存取您的區域網路。 host.info = 目前伺服器監聽於連接埠[scarlet]6567[]。\n所有跟您在同一個[LIGHT_GRAY]網路或區域網路[]環境的玩家應該能在他們的伺服器清單中找到您的伺服器。\n\n如果您希望網際網路上的玩家透過IP 位址連線到您的伺服器,您必須設定[accent]連接埠轉發[]。\n\n[LIGHT_GRAY]注意如果區域網路內有玩家無法連線至您的伺服器請務必確認您已於防火牆設定中開放Mindustry存取您的區域網路。
join.info = 您可以在此輸入欲連線的[accent]伺服器的IP位址[],或尋找[accent]區域網路[]內的伺服器。目前支援區域網路與網際網路連線。\n\n[LIGHT_GRAY]注意這裡沒有網際網路伺服器清單如果您想透過IP位址連線到某人的伺服器您必須向他們詢問IP位址。 join.info = 您可以在此輸入欲連線的[accent]伺服器的IP位址[],或尋找[accent]區域網路[]內的伺服器。目前支援區域網路與網際網路連線。\n\n[LIGHT_GRAY]注意這裡沒有網際網路伺服器清單如果您想透過IP位址連線到某人的伺服器您必須向他們詢問IP位址。
hostserver = 建立伺服器 hostserver = 建立伺服器
invitefriends = Invite Friends invitefriends = 邀請好友
hostserver.mobile = 建立\n伺服器 hostserver.mobile = 建立\n伺服器
host = 建立 host = 建立
hosting = [accent]伺服器啟動中…… hosting = [accent]伺服器啟動中……
hosts.refresh = 刷新 hosts.refresh = 刷新
hosts.discovering = 搜尋區域網路遊戲 hosts.discovering = 搜尋區域網路遊戲
hosts.discovering.any = Discovering games hosts.discovering.any = 發現的遊戲
server.refreshing = 刷新伺服器 server.refreshing = 刷新伺服器
hosts.none = [lightgray]找不到區域網路伺服器! hosts.none = [lightgray]找不到區域網路伺服器!
host.invalid = [scarlet]無法連線至伺服器。 host.invalid = [scarlet]無法連線至伺服器。
@@ -122,18 +122,18 @@ server.version = [lightgray]版本:{0}
server.custombuild = [yellow]自訂組建 server.custombuild = [yellow]自訂組建
confirmban = 您確定要封禁該玩家嗎? confirmban = 您確定要封禁該玩家嗎?
confirmkick = 您確定要踢出該玩家嗎? confirmkick = 您確定要踢出該玩家嗎?
confirmvotekick = Are you sure you want to vote-kick this player? confirmvotekick = 您確定要投票剔除該名玩家嗎?
confirmunban = 您確定要解除封禁該玩家嗎? confirmunban = 您確定要解除封禁該玩家嗎?
confirmadmin = 您確定要提升這個玩家為管理員嗎? confirmadmin = 您確定要提升這個玩家為管理員嗎?
confirmunadmin = 您確定要解除這個玩家的管理員嗎? confirmunadmin = 您確定要解除這個玩家的管理員嗎?
joingame.title = 加入遊戲 joingame.title = 加入遊戲
joingame.ip = IP位址 joingame.ip = IP位址
disconnect = 已中斷連線。 disconnect = 已中斷連線。
disconnect.error = Connection error. disconnect.error = 連線錯誤。
disconnect.closed = Connection closed. disconnect.closed = 連線關閉。
disconnect.timeout = Timed out. disconnect.timeout = 連線超時。
disconnect.data = 無法載入地圖資料! disconnect.data = 無法載入地圖資料!
cantconnect = Unable to join game ([accent]{0}[]). cantconnect = 無法加入遊戲 ([accent]{0}[]).
connecting = [accent]連線中…… connecting = [accent]連線中……
connecting.data = [accent]正在載入地圖資料…… connecting.data = [accent]正在載入地圖資料……
server.port = 連接埠: server.port = 連接埠:
@@ -159,7 +159,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如果你剛剛升級了遊戲那麼這可能是因為存檔格式改變了而[scarlet]不是[]錯誤。 save.corrupted = [accent]此存檔無效或已損毀!\n如果你剛剛升級了遊戲那麼這可能是因為存檔格式改變了而[scarlet]不是[]錯誤。
empty = 〈空白〉 empty = 〈空白〉
on = 開啟 on = 開啟
@@ -167,13 +167,13 @@ off = 關閉
save.autosave = 自動存檔:{0} save.autosave = 自動存檔:{0}
save.map = 地圖:{0} save.map = 地圖:{0}
save.wave = 波次:{0} save.wave = 波次:{0}
save.mode = Gamemode: {0} save.mode = 遊戲模式: {0}
save.date = 最後存檔時間:{0} save.date = 最後存檔時間:{0}
save.playtime = 遊玩時間:{0} save.playtime = 遊玩時間:{0}
warning = 警告。 warning = 警告。
confirm = 確認 confirm = 確認
delete = 刪除 delete = 刪除
view.workshop = View In Workshop view.workshop = 在工作坊中查看
ok = 確定 ok = 確定
open = 開啟 open = 開啟
customize = 自訂 customize = 自訂
@@ -181,20 +181,20 @@ cancel = 取消
openlink = 開啟連結 openlink = 開啟連結
copylink = 複製連結 copylink = 複製連結
back = 返回 back = 返回
data.export = Export Data data.export = 匯出數據
data.import = Import Data data.import = 匯入數據
data.exported = Data exported. data.exported = 數據已匯出.
data.invalid = This isn't valid game data. data.invalid = 這不是有效的遊戲資料。
data.import.confirm = Importing external data will erase[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. data.import.confirm = 導入外部數據將刪除您當前[scarlet]所有的[]遊戲數據,\n[accent]這個動作不能撤銷![]\n\n匯入數據後您的遊戲將立即退出。
classic.export = Export Classic Data classic.export = 匯出 Classic 數據
classic.export.text = [accent]Mindustry[] has just had a major update.\nClassic (v3.5 build 40) save or map data has been detected. Would you like to export these saves to your phone's home folder, for use in the Mindustry Classic app? classic.export.text = [accent]Mindustry[]剛剛進行了重大更新。\n檢測到 Classic (v3.5 build 40) 存檔或地圖資料。您是否要將這些存檔匯出到手機的主文件夾中,以便在Mindustry Classic應用中使用?
quit.confirm = 您確定要退出嗎? quit.confirm = 您確定要退出嗎?
quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial can be re-taken in[accent] Settings->Game->Re-Take Tutorial.[] quit.confirm.tutorial = 您確定您知道自己在做什麼嗎?\n該教學可以在[accent] 設定->遊戲[] 選項中重置教學。
loading = [accent]載入中…… loading = [accent]載入中……
saving = [accent]儲存中…… saving = [accent]儲存中……
wave = [accent]第{0}波 wave = [accent]第{0}波
wave.waiting = 將於{0}秒後抵達 wave.waiting = 將於{0}秒後抵達
wave.waveInProgress = [LIGHT_GRAY]波正在進行中 wave.waveInProgress = [LIGHT_GRAY]波正在進行中
waiting = 等待中…… waiting = 等待中……
waiting.players = 等待玩家中…… waiting.players = 等待玩家中……
wave.enemies = [LIGHT_GRAY]剩下{0}敵人 wave.enemies = [LIGHT_GRAY]剩下{0}敵人
@@ -210,26 +210,26 @@ map.nospawn = 這個地圖沒有核心!請在編輯器中添加一個[ROYAL]
map.nospawn.pvp = 這個地圖沒有核心讓敵人重生!請在編輯器中添加一個[SCARLET]紅色[]的核心。 map.nospawn.pvp = 這個地圖沒有核心讓敵人重生!請在編輯器中添加一個[SCARLET]紅色[]的核心。
map.nospawn.attack = 這個地圖沒有敵人核心讓可以攻擊!請在編輯器中添加一個[SCARLET]紅色[]的核心。 map.nospawn.attack = 這個地圖沒有敵人核心讓可以攻擊!請在編輯器中添加一個[SCARLET]紅色[]的核心。
map.invalid = 地圖載入錯誤:地圖可能已經損壞。 map.invalid = 地圖載入錯誤:地圖可能已經損壞。
map.publish.error = Error publishing map: {0} map.publish.error = 發布地圖時出現錯誤: {0}
map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! map.publish.confirm = 您確定要發布此地圖嗎?\n\n[lightgray]首先請先確定您同意Steam工坊 EULA協定否則您的地圖將不會顯示
eula = Steam EULA eula = Steam EULA
map.publish = Map published. map.publish = 地圖發佈完成.
map.publishing = [accent]Publishing map... map.publishing = [accent]地圖發佈中...
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 = A map must have a description of at least 4 characters before being published. editor.nodescription = 在地圖發佈前必須有至少四個字以上的敘述。
editor.waves = 波次: editor.waves = 波次:
editor.rules = 規則: editor.rules = 規則:
editor.generation = Generation: editor.generation = 篩選器:
editor.ingame = 在遊戲中編輯 editor.ingame = 在遊戲中編輯
editor.publish.workshop = Publish On Workshop editor.publish.workshop = 在工作坊上發佈
editor.newmap = New Map editor.newmap = 新地圖
workshop = Workshop workshop = 工作坊
waves.title = 波次 waves.title = 波次
waves.remove = 移除 waves.remove = 移除
waves.never = 〈從來沒有〉 waves.never = 〈從來沒有〉
@@ -244,9 +244,9 @@ waves.copy = 複製到剪貼板
waves.load = 從剪貼板加載 waves.load = 從剪貼板加載
waves.invalid = 剪貼板中的波次無效。 waves.invalid = 剪貼板中的波次無效。
waves.copied = 波次已被複製。 waves.copied = 波次已被複製。
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout. waves.none = 無自定義敵人.\n請注意空佈局將自動替換為預設佈局。
editor.default = [LIGHT_GRAY]〈默認〉 editor.default = [LIGHT_GRAY]〈默認〉
details = Details... details = 詳情……
edit = 編輯…… edit = 編輯……
editor.name = 名稱: editor.name = 名稱:
editor.spawn = 重生單位 editor.spawn = 重生單位
@@ -256,7 +256,7 @@ editor.errorload = 加載文件時出錯:\n[accent]{0}
editor.errorsave = 保存文件時出錯:\n[accent]{0} editor.errorsave = 保存文件時出錯:\n[accent]{0}
editor.errorimage = 這是一個圖像檔,而不是地圖。不要更改副檔名使它可用。\n\n如果要匯入地形圖像檔請使用編輯器中的「匯入地形圖像檔」按鈕。 editor.errorimage = 這是一個圖像檔,而不是地圖。不要更改副檔名使它可用。\n\n如果要匯入地形圖像檔請使用編輯器中的「匯入地形圖像檔」按鈕。
editor.errorlegacy = 此地圖太舊,並使用不支持的舊地圖格式。 editor.errorlegacy = 此地圖太舊,並使用不支持的舊地圖格式。
editor.errornot = This is not a map file. editor.errornot = 這不是一個地圖檔案。
editor.errorheader = 此地圖檔案無效或已損壞。 editor.errorheader = 此地圖檔案無效或已損壞。
editor.errorname = 地圖沒有定義名稱。 editor.errorname = 地圖沒有定義名稱。
editor.update = 更新 editor.update = 更新
@@ -289,58 +289,58 @@ editor.resizemap = 調整地圖大小
editor.mapname = 地圖名稱: editor.mapname = 地圖名稱:
editor.overwrite = [accent]警告!這將會覆蓋現有的地圖。 editor.overwrite = [accent]警告!這將會覆蓋現有的地圖。
editor.overwrite.confirm = [scarlet]警告![]同名地圖存在,確定要覆蓋現有地圖? editor.overwrite.confirm = [scarlet]警告![]同名地圖存在,確定要覆蓋現有地圖?
editor.exists = A map with this name already exists. editor.exists = 具有該名稱的地圖已經存在。
editor.selectmap = 選取要載入的地圖: editor.selectmap = 選取要載入的地圖:
toolmode.replace = Replace toolmode.replace = 取代
toolmode.replace.description = Draws only on solid blocks. toolmode.replace.description = 僅繪製在實體方塊上。
toolmode.replaceall = Replace All toolmode.replaceall = 全部取代
toolmode.replaceall.description = Replace all blocks in map. toolmode.replaceall.description = 取代地圖中的所有方塊。
toolmode.orthogonal = Orthogonal toolmode.orthogonal = 正交
toolmode.orthogonal.description = Draws only orthogonal lines. toolmode.orthogonal.description = 僅繪製在正交線上。
toolmode.square = Square toolmode.square = 正方形
toolmode.square.description = Square brush. toolmode.square.description = 正方形筆刷.
toolmode.eraseores = Erase Ores toolmode.eraseores = 清除礦物
toolmode.eraseores.description = Erase only ores. toolmode.eraseores.description = 僅清除礦物。
toolmode.fillteams = Fill Teams toolmode.fillteams = 填充團隊
toolmode.fillteams.description = Fill teams instead of blocks. toolmode.fillteams.description = 填充團隊而不是方塊。
toolmode.drawteams = Draw Teams toolmode.drawteams = Draw Teams
toolmode.drawteams.description = Draw teams instead of blocks. toolmode.drawteams.description = 繪製團隊而不是方塊。
filters.empty = [LIGHT_GRAY]沒有過濾器!使用下面的按鈕添加一個。 filters.empty = [LIGHT_GRAY]沒有過濾器!使用下面的按鈕添加一個。
filter.distort = filter.distort =
filter.noise = 噪聲 filter.noise = 雜訊
filter.median = Median filter.median = 平均數
filter.oremedian = Ore Median filter.oremedian = 礦石平均數
filter.blend = Blend filter.blend = 混合
filter.defaultores = Default Ores filter.defaultores = 預設礦石
filter.ore = 礦石 filter.ore = 礦石
filter.rivernoise = 河流噪聲 filter.rivernoise = 河流雜訊
filter.mirror = Mirror filter.mirror = 鏡射
filter.clear = Clear filter.clear = 清除
filter.option.ignore = Ignore filter.option.ignore = 忽略
filter.scatter = 分散 filter.scatter = 分散
filter.terrain = 地形 filter.terrain = 地形
filter.option.scale = 比例 filter.option.scale = 比例
filter.option.chance = 機會 filter.option.chance = 機會
filter.option.mag = 大小 filter.option.mag = 大小
filter.option.threshold = filter.option.threshold =
filter.option.circle-scale = 圓形比例 filter.option.circle-scale = 圓形比例
filter.option.octaves = 倍頻 filter.option.octaves = 倍頻
filter.option.falloff = 衰減 filter.option.falloff = 衰減
filter.option.angle = Angle filter.option.angle = 角度
filter.option.block = 方塊 filter.option.block = 方塊
filter.option.floor = 地板 filter.option.floor = 地板
filter.option.flooronto = Target Floor filter.option.flooronto = 目標地板
filter.option.wall = filter.option.wall =
filter.option.ore = 礦石 filter.option.ore = 礦石
filter.option.floor2 = 次要地板 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 = 主選單
play = 開始 play = 開始遊戲
campaign = Campaign campaign = 戰役
load = 載入 load = 載入
save = 儲存 save = 儲存
fps = FPS{0} fps = FPS{0}
@@ -349,7 +349,7 @@ ping = 延遲:{0}ms
language.restart = 請重新啟動遊戲以使選取的語言生效。 language.restart = 請重新啟動遊戲以使選取的語言生效。
settings = 設定 settings = 設定
tutorial = 教學 tutorial = 教學
tutorial.retake = Re-Take Tutorial tutorial.retake = 重置教學
editor = 地圖編輯器 editor = 地圖編輯器
mapeditor = 地圖編輯器 mapeditor = 地圖編輯器
donate = 贊助 donate = 贊助
@@ -363,62 +363,62 @@ bestwave = [LIGHT_GRAY]高分:{0}
launch = 發射 launch = 發射
launch.title = 發射成功 launch.title = 發射成功
launch.next = [LIGHT_GRAY]下次的機會於波次{0} launch.next = [LIGHT_GRAY]下次的機會於波次{0}
launch.unable2 = [scarlet]Unable to LAUNCH.[] launch.unable2 = [scarlet]無法發射核心。[]
launch.confirm = 這將發射核心中的所有資源。\n你將無法返回這個基地。 launch.confirm = 這將發射核心中的所有資源。\n你將無法返回這個基地。
launch.skip.confirm = If you skip now, you will not be able to launch until later waves. launch.skip.confirm = 如果您現在跳過,您將無法發射核心直到下一次的可發射波數。
uncover = 揭露 uncover = 揭露
configure = 配置裝載 configure = 配置裝載
configure.locked = [LIGHT_GRAY]到達波次{0}\n以配置裝載。 configure.locked = [LIGHT_GRAY]到達波次{0}\n以配置裝載。
configure.invalid = Amount must be a number between 0 and {0}. configure.invalid = 數值必須介於 0 到 {0}
zone.unlocked = [LIGHT_GRAY]{0}已解鎖。 zone.unlocked = [LIGHT_GRAY]{0}已解鎖。
zone.requirement.complete = 到達波次{0}\n滿足{1}區域要求。 zone.requirement.complete = 到達波次{0}\n滿足{1}區域要求。
zone.config.complete = 到達波次{0}\n裝載配置已解鎖。 zone.config.complete = 到達波次{0}\n裝載配置已解鎖。
zone.resources = 檢測到的資源: zone.resources = 檢測到的資源:
zone.objective = [lightgray]Objective: [accent]{0} zone.objective = [lightgray]目標: [accent]{0}
zone.objective.survival = Survive zone.objective.survival = 生存
zone.objective.attack = Destroy Enemy Core zone.objective.attack = 摧毀敵人核心
add = 新增…… add = 新增……
boss.health = 頭目血量 boss.health = 頭目血量
connectfail = [crimson]無法連線到伺服器:[accent]{0} connectfail = [crimson]無法連線到伺服器:[accent]{0}
error.unreachable = 無法到達伺服器。 error.unreachable = 無法到達伺服器。
error.invalidaddress = 無效地址。 error.invalidaddress = 無效地址。
error.timedout = 超時連接!\n確保伺服器設置了連接埠轉發並且地址正確 error.timedout = 超時連接!\n確保伺服器設置了連接埠轉發並且地址正確
error.mismatch = 錯誤:\n客戶端/伺服器版本可能不匹配。 n確保客戶端和伺服器有最新版本的Mindustry error.mismatch = 包錯誤:\n客戶端/伺服器版本可能不匹配。\n確保客戶端和伺服器有最新版本的Mindustry
error.alreadyconnected = 已連接。 error.alreadyconnected = 已連接。
error.mapnotfound = 找不到地圖! error.mapnotfound = 找不到地圖!
error.io = 網絡輸入輸出錯誤。 error.io = 網絡輸入輸出錯誤。
error.any = 未知網絡錯誤。 error.any = 未知網絡錯誤。
error.bloom = Failed to initialize bloom.\nYour device may not support it. error.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 = 荒涼裂谷
zone.nuclearComplex.name = 核生產綜合體 zone.nuclearComplex.name = 核生產綜合體
zone.overgrowth.name = 增生 zone.overgrowth.name = 過度生長
zone.tarFields.name = 焦油田 zone.tarFields.name = 焦油田
zone.saltFlats.name = Salt Flats zone.saltFlats.name = 鹽沼
zone.impact0078.name = Impact 0078 zone.impact0078.name = 衝擊 0078
zone.crags.name = Crags zone.crags.name = 岩壁
zone.fungalPass.name = Fungal Pass zone.fungalPass.name = 真菌通行證
zone.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. zone.groundZero.description = 再次開始的最佳位置。敵人威脅度低。資源很少。\n盡可能的收集更多的鉛和銅。\n繼續前進。
zone.frozenForest.description = Even here, closer to mountains, the spores have spread. The fridgid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. zone.frozenForest.description = 即使在這裡更靠近山脈,孢子也已經擴散了。寒冷的溫度不可能永遠容納它們。\n\n開始在能源勇於嘗試。建造燃燒發電機。學會使用修補。
zone.desertWastes.description = These wastes are vast, unpredictable, and criss-crossed with derelict sector structures.\nCoal is present in the region. Burn it for power, or synthesize graphite.\n\n[lightgray]This landing location cannot be guaranteed. zone.desertWastes.description = 這些廢料規模巨大的,難以預測的,並且與廢棄的結構交錯在一起。\n此地區存在著煤炭。燃燒它以獲得能源或合成石墨。\n\n[lightgray]無法保證此地圖的著陸位置。
zone.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. zone.saltFlats.description = 鹽沼位於沙漠的郊區。在這裡幾乎找不到多少資源\n\n敵人在這裡建立了一個資源倉庫。剷除敵人的核心。別留下任何東西。
zone.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. zone.craters.description = 水累積在這個火山口中心了,這是一場舊戰爭的遺跡。開墾該地區,收集沙子,用來燒製玻璃。用機械泵抽水來加速砲塔和鑽頭。
zone.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. zone.ruinousShores.description = 穿過荒地,就是海岸線。曾經,這個地點設有海防陣線。現在所剩的並不多。只有最基本的防禦結構沒有被破壞,其他的一切都成了廢品。\n繼續向外擴張。繼續研究科技。
zone.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. zone.stainedMountains.description = 內陸的更深處是群山,還未被孢子所污染。\n在該區域提取豐富的鈦並學習如何使用它們。\n\n這裡的存在著更為強大的敵人。不要給他們時間派出最強的部隊。
zone.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build dagger units. Destroy it. Reclaim that which was lost. zone.overgrowth.description = 這個地區靠近孢子的來源,因此已經生長過度了。\n敵人在這裡建立了哨所。建立泰坦單位。破壞它並取回遺失的東西。
zone.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. zone.tarFields.description = 位於山脈和沙漠之間的產油區的郊區是少數幾個有可用石油儲量的地區之一。\n雖然被遺棄了該地區附近還是有著一些危險的敵人。不要小看它們。\n\n[lightgray]如果可能的話,研究石油加工技術。
zone.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. zone.desolateRift.description = 一個非常危險的區域。資源豐富,但空間很小。高破壞風險。請盡快離開。不要被敵人攻擊之間的長時間間隔所迷惑。
zone.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. zone.nuclearComplex.description = 以前生產和加工釷的設施已變成廢墟。\n[lightgray]研究釷及其多種用途。\n\n敵人人數眾多不斷的偵查入侵者。
zone.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. zone.fungalPass.description = 高山與低地之間被孢子纏繞的過渡區域。一個小的敵人偵察基地位於這裡。\n破壞它。\n使用匕首和爬行機甲單位來摧毀兩個核心。
zone.impact0078.description = <insert description here> zone.impact0078.description = <在此處輸入敘述>
zone.crags.description = <insert description here> zone.crags.description = <在此輸入說明>
settings.language = 語言 settings.language = 語言
settings.data = Game Data settings.data = 遊戲數據
settings.reset = 重設為預設設定 settings.reset = 重設為預設設定
settings.rebind = 重新綁定 settings.rebind = 重新綁定
settings.controls = 操作 settings.controls = 操作
@@ -436,14 +436,14 @@ no = 否
info.title = [accent]資訊 info.title = [accent]資訊
error.title = [crimson]發生錯誤 error.title = [crimson]發生錯誤
error.crashtitle = 發生錯誤 error.crashtitle = 發生錯誤
attackpvponly = [scarlet]Only available in Attack/PvP modes attackpvponly = [scarlet]僅在攻擊/PvP模式下可用
blocks.input = 輸入 blocks.input = 輸入
blocks.output = 輸出 blocks.output = 輸出
blocks.booster = 加速器 blocks.booster = 加速器
block.unknown = [LIGHT_GRAY] block.unknown = [LIGHT_GRAY]
blocks.powercapacity = 蓄電量 blocks.powercapacity = 蓄電量
blocks.powershot = 能量/射擊 blocks.powershot = 能量/射擊
blocks.damage = Damage blocks.damage = 傷害
blocks.targetsair = 攻擊空中目標 blocks.targetsair = 攻擊空中目標
blocks.targetsground = 攻擊地面 blocks.targetsground = 攻擊地面
blocks.itemsmoved = 移動速度 blocks.itemsmoved = 移動速度
@@ -466,20 +466,20 @@ blocks.boosteffect = 提升效應
blocks.maxunits = 最大活躍單位 blocks.maxunits = 最大活躍單位
blocks.health = 耐久度 blocks.health = 耐久度
blocks.buildtime = 建設時間 blocks.buildtime = 建設時間
blocks.buildcost = Build Cost blocks.buildcost = 建造成本
blocks.inaccuracy = 誤差 blocks.inaccuracy = 誤差
blocks.shots = 射擊數 blocks.shots = 射擊數
blocks.reload = 重裝彈藥 blocks.reload = 重裝彈藥
blocks.ammo = 彈藥 blocks.ammo = 彈藥
bar.drilltierreq = Better Drill Required bar.drilltierreq = 需要更好的鑽頭
bar.drillspeed = 鑽頭速度:{0}/秒 bar.drillspeed = 鑽頭速度:{0}/秒
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}
bar.capacity = Capacity: {0} bar.capacity = 容量: {0}
bar.liquid = 液體 bar.liquid = 液體
bar.heat = bar.heat =
bar.power = 能量 bar.power = 能量
@@ -489,7 +489,7 @@ 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]燃燒
bullet.homing = [stat]追踪 bullet.homing = [stat]追踪
bullet.shock = [stat]休克 bullet.shock = [stat]暈眩
bullet.frag = [stat]碎片 bullet.frag = [stat]碎片
bullet.knockback = [stat]{0}[lightgray]擊退 bullet.knockback = [stat]{0}[lightgray]擊退
bullet.freezing = [stat]冷凍 bullet.freezing = [stat]冷凍
@@ -518,17 +518,17 @@ category.optional = 可選的強化
setting.landscape.name = 鎖定景觀 setting.landscape.name = 鎖定景觀
setting.shadows.name = 陰影 setting.shadows.name = 陰影
setting.linear.name = 線性過濾 setting.linear.name = 線性過濾
setting.animatedwater.name = 動畫 setting.animatedwater.name = 動畫
setting.animatedshields.name = 動畫力牆 setting.animatedshields.name = 護盾動畫
setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟)[] setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟遊戲[]
setting.indicators.name = 盟友指標 setting.indicators.name = 盟友指標
setting.autotarget.name = 自動射擊 setting.autotarget.name = 自動射擊
setting.keyboard.name = Mouse+Keyboard Controls setting.keyboard.name = 滑鼠+鍵盤控制
setting.touchscreen.name = Touchscreen Controls setting.touchscreen.name = 觸控螢幕控制
setting.fpscap.name = 最大FPS setting.fpscap.name = 最大FPS
setting.fpscap.none = 没有 setting.fpscap.none = 没有
setting.fpscap.text = {0}FPS setting.fpscap.text = {0}FPS
setting.uiscale.name = UI Scaling[lightgray] (require restart)[] setting.uiscale.name = UI縮放[lightgray] (需要重啟遊戲)[]
setting.swapdiagonal.name = 始終對角線放置 setting.swapdiagonal.name = 始終對角線放置
setting.difficulty.training = 訓練 setting.difficulty.training = 訓練
setting.difficulty.easy = 簡單 setting.difficulty.easy = 簡單
@@ -542,27 +542,27 @@ setting.sensitivity.name = 控制器靈敏度
setting.saveinterval.name = 自動存檔間隔 setting.saveinterval.name = 自動存檔間隔
setting.seconds = {0}秒 setting.seconds = {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.vsync.name = 垂直同步 setting.vsync.name = 垂直同步
setting.lasers.name = 顯示雷射光束
setting.pixelate.name = 像素化[LIGHT_GRAY](可能降低性能) setting.pixelate.name = 像素化[LIGHT_GRAY](可能降低性能)
setting.minimap.name = 顯示小地圖 setting.minimap.name = 顯示小地圖
setting.musicvol.name = 音樂音量 setting.musicvol.name = 音樂音量
setting.ambientvol.name = Ambient Volume setting.ambientvol.name = 環境音量
setting.mutemusic.name = 靜音 setting.mutemusic.name = 靜音
setting.sfxvol.name = 音效音量 setting.sfxvol.name = 音效音量
setting.mutesound.name = 靜音 setting.mutesound.name = 靜音
setting.crashreport.name = 發送匿名崩潰報告 setting.crashreport.name = 發送匿名崩潰報告
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = 自動建立存檔
setting.publichost.name = Public Game Visibility setting.publichost.name = 公開遊戲可見度
setting.chatopacity.name = 聊天框不透明度 setting.chatopacity.name = 聊天框不透明度
setting.lasersopacity.name = Power Laser Opacity
setting.playerchat.name = 在遊戲中顯示聊天框 setting.playerchat.name = 在遊戲中顯示聊天框
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings... uiscale.reset = UI縮放已變更\n按下"確定"確認這個比例\n[scarlet][accent] {0}[] 秒後...退出並還原設定
uiscale.cancel = Cancel & Exit uiscale.cancel = 取消並退出
setting.bloom.name = Bloom setting.bloom.name = 特效
keybind.title = 重新綁定按鍵 keybind.title = 重新綁定按鍵
keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. keybinds.mobile = [scarlet]此處的大多數快捷鍵在移動設備上均不起作用。僅支援基本移動。
category.general.name = 一般 category.general.name = 一般
category.view.name = 查看 category.view.name = 查看
category.multiplayer.name = 多人 category.multiplayer.name = 多人
@@ -571,12 +571,12 @@ command.rally = Rally
command.retreat = 撤退 command.retreat = 撤退
keybind.gridMode.name = 方塊選取 keybind.gridMode.name = 方塊選取
keybind.gridModeShift.name = 類別選取 keybind.gridModeShift.name = 類別選取
keybind.press = 按一下鍵…… keybind.press = 按一下鍵……
keybind.press.axis = 按一下軸心或鍵…… keybind.press.axis = 按一下軸向或按鍵……
keybind.screenshot.name = 地圖截圖 keybind.screenshot.name = 地圖截圖
keybind.move_x.name = 水平移動 keybind.move_x.name = 水平移動
keybind.move_y.name = 垂直移動 keybind.move_y.name = 垂直移動
keybind.fullscreen.name = Toggle Fullscreen keybind.fullscreen.name = 全螢幕切換
keybind.select.name = 選取 keybind.select.name = 選取
keybind.diagonal_placement.name = 對角線放置 keybind.diagonal_placement.name = 對角線放置
keybind.pick.name = 選擇方塊 keybind.pick.name = 選擇方塊
@@ -612,7 +612,7 @@ mode.custom = 自訂規則
rules.infiniteresources = 無限資源 rules.infiniteresources = 無限資源
rules.wavetimer = 波次時間 rules.wavetimer = 波次時間
rules.waves = 波次 rules.waves = 波次
rules.attack = Attack Mode rules.attack = 攻擊模式
rules.enemyCheat = 電腦無限資源 rules.enemyCheat = 電腦無限資源
rules.unitdrops = 單位掉落 rules.unitdrops = 單位掉落
rules.unitbuildspeedmultiplier = 單位建設速度倍數 rules.unitbuildspeedmultiplier = 單位建設速度倍數
@@ -654,7 +654,7 @@ item.spore-pod.name = 孢子莢
item.sand.name = item.sand.name =
item.blast-compound.name = 爆炸混合物 item.blast-compound.name = 爆炸混合物
item.pyratite.name = item.pyratite.name =
item.metaglass.name = 金屬玻璃 item.metaglass.name = 強化玻璃
item.scrap.name = 廢料 item.scrap.name = 廢料
liquid.water.name = liquid.water.name =
liquid.slag.name = 礦渣 liquid.slag.name = 礦渣
@@ -668,7 +668,7 @@ mech.delta-mech.weapon = 電弧生成機
mech.delta-mech.ability = 放電 mech.delta-mech.ability = 放電
mech.tau-mech.name = 牛頭機甲 mech.tau-mech.name = 牛頭機甲
mech.tau-mech.weapon = 重構激光 mech.tau-mech.weapon = 重構激光
mech.tau-mech.ability = mech.tau-mech.ability =
mech.omega-mech.name = 奧米伽 mech.omega-mech.name = 奧米伽
mech.omega-mech.weapon = 導彈群 mech.omega-mech.weapon = 導彈群
mech.omega-mech.ability = 裝甲配置 mech.omega-mech.ability = 裝甲配置
@@ -692,22 +692,22 @@ mech.itemcapacity = [LIGHT_GRAY]物品容量:{0}
mech.minespeed = [LIGHT_GRAY]採礦速度:{0} mech.minespeed = [LIGHT_GRAY]採礦速度:{0}
mech.minepower = [LIGHT_GRAY]採礦力度:{0} mech.minepower = [LIGHT_GRAY]採礦力度:{0}
mech.ability = [LIGHT_GRAY]能力:{0} mech.ability = [LIGHT_GRAY]能力:{0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}% 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 = Sand Boulder block.sand-boulder.name = 沙礫
block.grass.name = block.grass.name =
block.salt.name = block.salt.name =
block.saltrocks.name = 鹽岩 block.saltrocks.name = 鹽岩
block.pebbles.name = 卵石 block.pebbles.name = 卵石
block.tendrils.name = 卷鬚 block.tendrils.name = 卷鬚
block.sandrocks.name = 沙岩 block.sandrocks.name = 沙岩
block.spore-pine.name = 孢子 block.spore-pine.name = 孢子
block.sporerocks.name = 孢子岩 block.sporerocks.name = 孢子岩
block.rock.name = 岩石 block.rock.name = 岩石
block.snowrock.name = 雪巖 block.snowrock.name = 雪巖
block.snow-pine.name = Snow Pine block.snow-pine.name = 雪松
block.shale.name = 頁岩 block.shale.name = 頁岩
block.shale-boulder.name = 頁岩巨石 block.shale-boulder.name = 頁岩巨石
block.moss.name = 苔蘚 block.moss.name = 苔蘚
@@ -748,7 +748,7 @@ block.icerocks.name = 冰岩
block.snowrocks.name = 雪巖 block.snowrocks.name = 雪巖
block.dunerocks.name = 沙丘岩 block.dunerocks.name = 沙丘岩
block.pine.name = 松樹 block.pine.name = 松樹
block.white-tree-dead.name = 死了的白樹 block.white-tree-dead.name = 枯萎白樹
block.white-tree.name = 白樹 block.white-tree.name = 白樹
block.spore-cluster.name = 孢子簇 block.spore-cluster.name = 孢子簇
block.metal-floor.name = 金屬地板 block.metal-floor.name = 金屬地板
@@ -784,13 +784,12 @@ block.hail.name = 冰雹炮
block.lancer.name = 藍瑟炮 block.lancer.name = 藍瑟炮
block.conveyor.name = 輸送帶 block.conveyor.name = 輸送帶
block.titanium-conveyor.name = 鈦輸送帶 block.titanium-conveyor.name = 鈦輸送帶
block.armored-conveyor.name = Armored Conveyor block.armored-conveyor.name = 裝甲輸送帶
block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. block.armored-conveyor.description = 以與鈦傳送帶相同的速度移動物品,但擁有更多防禦。除其他傳送帶外,不接受任何資源從側面輸入。
block.junction.name = 樞紐
block.router.name = 分配器 block.router.name = 分配器
block.distributor.name = 大型分配器 block.distributor.name = 大型分配器
block.sorter.name = 分類器 block.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 = 相織布編織器
@@ -836,15 +835,15 @@ block.swarmer.name = 群炮
block.salvo.name = 齊射炮 block.salvo.name = 齊射炮
block.ripple.name = 波紋炮 block.ripple.name = 波紋炮
block.phase-conveyor.name = 相織傳送帶 block.phase-conveyor.name = 相織傳送帶
block.bridge-conveyor.name = 送帶橋 block.bridge-conveyor.name = 送帶橋
block.plastanium-compressor.name = 塑料壓縮機 block.plastanium-compressor.name = 塑料壓縮機
block.pyratite-mixer.name = 硫混合器 block.pyratite-mixer.name = 硫混合器
block.blast-mixer.name = 爆炸混合器 block.blast-mixer.name = 爆炸混合器
block.solar-panel.name = 太陽能板 block.solar-panel.name = 太陽能板
block.solar-panel-large.name = 大型太陽能板 block.solar-panel-large.name = 大型太陽能板
block.oil-extractor.name = 石油鑽井 block.oil-extractor.name = 石油鑽井
block.command-center.name = Command Center block.command-center.name = 命令中心
block.draug-factory.name = Draug Miner Drone Factory block.draug-factory.name = 幽靈採礦機工廠
block.spirit-factory.name = 輕型無人機工廠 block.spirit-factory.name = 輕型無人機工廠
block.phantom-factory.name = 幻影無人機工廠 block.phantom-factory.name = 幻影無人機工廠
block.wraith-factory.name = 怨靈戰鬥機工廠 block.wraith-factory.name = 怨靈戰鬥機工廠
@@ -858,7 +857,7 @@ block.repair-point.name = 維修點
block.pulse-conduit.name = 脈衝管線 block.pulse-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 = 液體儲
block.liquid-junction.name = 液體連接點 block.liquid-junction.name = 液體連接點
block.bridge-conduit.name = 管線橋 block.bridge-conduit.name = 管線橋
block.rotary-pump.name = 迴旋泵 block.rotary-pump.name = 迴旋泵
@@ -876,23 +875,23 @@ block.cyclone.name = 氣旋炮
block.fuse.name = 融合炮 block.fuse.name = 融合炮
block.shock-mine.name = 休克地雷 block.shock-mine.name = 休克地雷
block.overdrive-projector.name = 超速投影器 block.overdrive-projector.name = 超速投影器
block.force-projector.name = 力牆投影器 block.force-projector.name = 護盾投影器
block.arc.name = 電弧 block.arc.name = 電弧
block.rtg-generator.name = 放射性同位素熱發電機 block.rtg-generator.name = 放射性同位素熱發電機
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 = red team.crux.name =
team.sharded.name = orange team.sharded.name =
team.orange.name = team.orange.name =
team.derelict.name = derelict team.derelict.name =
team.green.name = team.green.name =
team.purple.name = team.purple.name =
unit.spirit.name = 輕型無人機 unit.spirit.name = 輕型無人機
unit.draug.name = Draug Miner Drone unit.draug.name = 幽靈礦工無人機
unit.phantom.name = 幻影無人機 unit.phantom.name = 幻影無人機
unit.dagger.name = 匕首 unit.dagger.name = 匕首
unit.crawler.name = 爬行 unit.crawler.name = 爬行
@@ -906,30 +905,30 @@ 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]<Tap to continue> tutorial.next = [lightgray]<按下以繼續>
tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nBegin by[accent] mining copper[]. Tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper tutorial.intro = 您已進入[scarlet] Mindustry 教學。[]\n從[accent] 挖掘銅礦[]開始吧。點擊靠近您核心的銅礦脈。\n\n[accent]{0}/{1} 個銅礦
tutorial.drill = 手動挖掘礦石是低效率的。\n[accent]鑽頭[]能夠自動挖掘礦石。\n在銅脈上放置一個鑽頭。 tutorial.drill = 手動挖掘礦石是低效率的。\n[accent]鑽頭[]能夠自動挖掘礦石。\n在銅脈上放置一個鑽頭。
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 = 手動挖掘礦石是低效率的。\n[accent]鑽頭[]能夠自動挖掘礦石。\n點選右下角的鑽頭選項\n選擇[accent]機械鑽頭[].\n通過點擊將其放置在銅礦上然後按下下方的[accent]確認標誌[]確認您的選擇\n按下[accent] X 按鈕[] 取消放置.
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 = 每個方塊都有不同的屬性。每個鑽頭只能開採特定的礦石。\n查看方塊的資訊和屬性[accent]在建造目錄時按下"?"鈕。[]\n\n[accent]立即訪問機械鑽頭的屬性資料。[]
tutorial.conveyor = [accent]輸送帶[]能夠將物品運輸到核心。\n製作一條從鑽頭開始到核心的輸送帶。 tutorial.conveyor = [accent]輸送帶[]能夠將物品運輸到核心。\n製作一條從鑽頭開始到核心的輸送帶。
tutorial.conveyor.mobile = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent] Place in a line by holding down your finger for a few seconds[] and dragging in a direction.\n\n[accent]{0}/{1} conveyors placed in line\n[accent]0/1 items delivered tutorial.conveyor.mobile = [accent]輸送帶[]能夠將物品運輸到核心。\製作一條從鑽頭開始到核心的輸送帶。\n[accent]長按數秒[]並向一個方向拖動來放置直線。\n\n[accent]{0}/{1} 條輸送帶\n[accent]0/1 交付的物品
tutorial.turret = 防禦建築是必須的以擊退[LIGHT_GRAY]敵人[]。\n於核心附近建造一個雙炮。 tutorial.turret = 防禦建築是必須的以擊退[LIGHT_GRAY]敵人[]。\n於核心附近建造一個雙炮。
tutorial.drillturret = 雙炮需要[accent]銅彈[]以射擊。\n在雙炮旁邊放置一個鑽頭以供應銅。 tutorial.drillturret = 雙炮需要[accent]銅彈[]以射擊。\n在雙炮旁邊放置一個鑽頭以供應銅。
tutorial.pause = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press space to pause. tutorial.pause = 在戰鬥中,你可以[accent]暫停遊戲。[]\n您可以在暫停時規劃建築物並加入建造序列。\n\n[accent]按空白鍵暫停遊戲。
tutorial.pause.mobile = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press this button in the top left to pause. tutorial.pause.mobile = 在戰鬥中,你可以[accent]暫停遊戲。[]\n您可以在暫停時規劃建築物並加入建造序列。\n\n[accent]按左上角的此按鈕暫停。
tutorial.unpause = Now press space again to unpause. tutorial.unpause = 現在再次按空格鍵即可取消暫停。
tutorial.unpause.mobile = Now press it again to unpause. tutorial.unpause.mobile = 現在再次按空格鍵即可取消暫停。
tutorial.breaking = Blocks frequently need to be destroyed.\n[accent]Hold down right-click[] to destroy all blocks in a selection.[]\n\n[accent]Destroy all the scrap blocks to the left of your core using area selection. tutorial.breaking = 方塊經常需要被銷毀。\n[accent]按住右鍵[]破壞選擇中的所有方塊。[]\n\n[accent]使用區域選擇銷毀核心左側的所有廢料方塊。
tutorial.breaking.mobile = Blocks frequently need to be destroyed.\n[accent]Select deconstruction mode[], then tap a block to begin breaking it.\nDestroy an area by holding down your finger for a few seconds[] and dragging in a direction.\nPress the checkmark button to confirm breaking.\n\n[accent]Destroy all the scrap blocks to the left of your core using area selection. tutorial.breaking.mobile = 方塊經常需要被銷毀。\n[accent]選擇解構模式[],然後點擊一個方塊開始破壞它。\n按住手指幾秒鐘以破壞區域[]並向一個方向拖動。\n按下複選標記按鈕以確認破壞。\n\n[accent]使用區域選擇銷毀核心左側的所有廢料方塊。
tutorial.withdraw = In some situations, taking items directly from blocks is necessary.\nTo do this, [accent]tap a block[] with items in it, then [accent]tap the item[] in the inventory.\nMultiple items can be withdrawn by [accent]tapping and holding[].\n\n[accent]Withdraw some copper from the core.[] tutorial.withdraw = 在某些情況下,直接從方塊中取出物品是必要的。\n去做這個 [accent]點擊有物品的方塊[],然後[accent]點擊在方框中的物品[]。\n可以通過[accent]點擊或常按[]來取出物品。\n\n[accent]從核心中取出一些銅。[]
tutorial.deposit = Deposit items into blocks by dragging from your ship to the destination block.\n\n[accent]Deposit your copper back into the core.[] tutorial.deposit = 通過將物品從船上拖到目標方塊,將物品放入放塊中。\n\n[accent]將您的銅放到核心中。[]
tutorial.waves = [LIGHT_GRAY]敵人[]來臨。\n\n防衛核心2波。建造更多的砲塔以防衛。 tutorial.waves = [LIGHT_GRAY]敵人[]來臨。\n\n防衛核心2波。建造更多的砲塔以防衛。
tutorial.waves.mobile = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves. Your ship will automatically fire at enemies.\nBuild more turrets and drills. Mine more copper. tutorial.waves.mobile = [lightgray]敵人[]接近。\n\n保護核心抵抗兩波攻擊。您的飛船將自動向敵人開火。\n建造更多的砲塔和鑽頭。開採更多的銅。
tutorial.launch = Once you reach a specific wave, you are able to[accent] launch the core[], leaving your defenses behind and[accent] obtaining all the resources in your core.[]\nThese resources can then be used to research new technology.\n\n[accent]Press the launch button. 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 = Mineralized carbon, used for ammunition and electrical insulation. item.graphite.description = 礦化碳,用於彈藥和電氣絕緣。
item.sand.description = 一種常見的材料,廣泛用於冶煉,包括製作合金和助熔劑。 item.sand.description = 一種常見的材料,廣泛用於冶煉,包括製作合金和助熔劑。
item.coal.description = 一種常見並容易獲得的燃料。 item.coal.description = 一種常見並容易獲得的燃料。
item.titanium.description = 一種罕見的超輕金屬,被廣泛運用於運輸液體、鑽頭和飛機。 item.titanium.description = 一種罕見的超輕金屬,被廣泛運用於運輸液體、鑽頭和飛機。
@@ -943,66 +942,66 @@ item.spore-pod.description = 用於轉化為石油、爆炸物和燃料。
item.blast-compound.description = 一種用於炸彈和炸藥的揮發性混合物。雖然它可以作為燃料燃燒,但不建議這樣做。 item.blast-compound.description = 一種用於炸彈和炸藥的揮發性混合物。雖然它可以作為燃料燃燒,但不建議這樣做。
item.pyratite.description = 一種在燃燒武器中使用的極易燃物質。 item.pyratite.description = 一種在燃燒武器中使用的極易燃物質。
liquid.water.description = 常用於冷卻機器和廢物處理。 liquid.water.description = 常用於冷卻機器和廢物處理。
liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon. liquid.slag.description = 各種不同類型的熔融金屬混合在一起的液體。可以被分解成其所組成之礦物,或作為武器射向敵方單位。
liquid.oil.description = 可以燃燒、爆炸或用作冷卻劑。 liquid.oil.description = 可以燃燒、爆炸或用作冷卻劑。
liquid.cryofluid.description = 冷卻東西最有效的液體。 liquid.cryofluid.description = 冷卻機器最有效的液體。
mech.alpha-mech.description = 標準的機甲。具有不錯的速度和傷害輸出可以製造多達3架無人機以提高進攻能力。 mech.alpha-mech.description = 標準的機甲。具有不錯的速度和傷害輸出可以製造多達3架無人機以提高進攻能力。
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 = 一種大型、裝甲厚的武裝直升機。配備燃燒機關槍。有優秀的加速能力與最快的速度。
unit.draug.description = A primitive mining drone. Cheap to produce. Expendable. Automatically mines copper and lead in the vicinity. Delivers mined resources to the closest core. unit.draug.description = 原始的採礦無人機。生產便宜。消耗品。自動在附近開採銅和鉛。將開採的資源交給最接近的核心。
unit.spirit.description = 起始的無人機。默認在核心產生。自動挖掘礦石、收集物品和修理方塊。 unit.spirit.description = 起始的無人機。默認在核心產生。自動挖掘礦石、收集物品和修理方塊。
unit.phantom.description = 一種高級的無人機。自動挖掘礦石、收集物品和修理方塊。比輕型無人機明顯更有效。 unit.phantom.description = 一種高級的無人機。自動挖掘礦石、收集物品和修理方塊。比輕型無人機明顯更有效。
unit.dagger.description = 一種基本的地面單位。最好一群地使用。 unit.dagger.description = 一種基本的地面單位。最好一群地使用。
unit.crawler.description = A ground unit consisting of a stripped-down frame with high explosives strapped on top. Not particular durable. Explodes on contact with enemies. unit.crawler.description = 一種地面單位,由精簡的機架組成,頂部綁有炸藥。不是特別耐用。與敵人接觸時爆炸。
unit.titan.description = 一種高級的具有裝甲的地面單位。使用碳化物作為彈藥。攻擊地面單位和空中單位。 unit.titan.description = 一種高級的具有裝甲的地面單位。使用碳化物作為彈藥。攻擊地面單位和空中單位。
unit.fortress.description = 一種具有重型大砲的地面單位。 unit.fortress.description = 一種具有重型大砲的地面單位。
unit.eruptor.description = A heavy mech designed to take down structures. Fires a stream of slag at enemy fortifications, melting them and setting volatiles on fire. unit.eruptor.description = 設計用於拆除建築物的重型機械。向敵人的防禦工事發射一道爐渣,融化它們,並點燃周圍可燃物。
unit.wraith.description = 一種快速、打了就跑的攔截機。 unit.wraith.description = 一種快速、打了就跑的攔截機。
unit.ghoul.description = 一種重型的鋪蓋性的轟炸機。使用爆炸化合物或黃鐵礦作為彈藥。 unit.ghoul.description = 一種重型的鋪蓋性的轟炸機。使用爆炸化合物或黃鐵礦作為彈藥。
unit.revenant.description = A heavy, hovering missile array. unit.revenant.description = 重型的盤旋導彈陣列。
block.message.description = Stores a message. Used for communication between allies. block.message.description = 儲存一條消息。用於盟友之間的交流。
block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. block.graphite-press.description = 將煤炭壓縮成石墨。
block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently. 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 = 將石頭壓成沙子。當缺少天然沙子時有用。
block.coal-centrifuge.description = Solidifes oil into chunks of coal. block.coal-centrifuge.description = 將石油凝固成煤礦。
block.incinerator.description = 清除任何多餘的物品或液體。 block.incinerator.description = 清除任何多餘的物品或液體。
block.power-void.description = 銷毀所有輸入的能量。僅限沙盒。 block.power-void.description = 銷毀所有輸入的能量。僅限沙盒。
block.power-source.description = 不限地輸出能量。僅限沙盒。 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 = A moderately strong defensive block.\nProvides moderate protection from enemies. block.titanium-wall.description = 一個中等強度的防禦方塊。\n提供對敵人的適度保護。
block.titanium-wall-large.description = A moderately strong defensive block.\nProvides moderate protection from enemies.\nSpans multiple tiles. block.titanium-wall-large.description = 一個中等強度的防禦方塊。\n提供對敵人的適度保護。\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 = 沒有釷牆那麼強但會使不太強的子彈偏離。
block.phase-wall-large.description = 沒有釷牆那麼強但會使不太強的子彈偏離。\n佔據多個方塊。 block.phase-wall-large.description = 沒有釷牆那麼強但會使不太強的子彈偏離。\n佔據多個方塊。
block.surge-wall.description = 最強的防方塊。\n有小的機會對攻擊者觸發閃電。 block.surge-wall.description = 最強的防方塊。\n有低機率對攻擊者觸發閃電。
block.surge-wall-large.description = 最強的防衛方塊。\n有小的機會對攻擊者觸發閃電。\n佔據多個方塊。 block.surge-wall-large.description = 最強的防衛方塊。\n有低機率對攻擊者觸發閃電。\n佔據多個方塊。
block.door.description = 可以通過點擊打開和關閉的一扇小門。\n如果打開敵人可以穿過它射擊和移動。 block.door.description = 可以通過點擊打開和關閉的一扇小門。\n如果打開敵人可以穿過它射擊和移動。
block.door-large.description = 可以通過點擊打開和關閉的一扇大門。\n如果打開敵人可以穿過它射擊和移動。\n佔據多個方塊。 block.door-large.description = 可以通過點擊打開和關閉的一扇大門。\n如果打開敵人可以穿過它射擊和移動。\n佔據多個方塊。
block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. block.mender.description = 定期修復附近的建築物。在每一波之間保持防禦力的修復。\n可選擇使用矽來提高範圍和效率。
block.mend-projector.description = 定期修復附近的建築物。 block.mend-projector.description = 定期修復附近的建築物。
block.overdrive-projector.description = 提高附近建築物的速度,如鑽頭和輸送帶。 block.overdrive-projector.description = 提高附近建築物的速度,如鑽頭和輸送帶。
block.force-projector.description = 在自身周圍形成一個六角形力場,保護內部的建築物和單位免受子彈的傷害。 block.force-projector.description = 在自身周圍形成一個六角形能量力場護盾,保護內部的建築物和單位免受子彈的傷害。
block.shock-mine.description = 傷害踩到地雷的敵人。敵人幾乎看不見。 block.shock-mine.description = 傷害踩到地雷的敵人。敵人幾乎看不見。
block.conveyor.description = 基本物品傳輸方塊。將物品向前移動並自動將它們放入砲塔或機器中。能夠旋轉方向。 block.conveyor.description = 基本物品傳輸方塊。將物品向前移動並自動將它們放入砲塔或機器中。能夠旋轉方向。
block.titanium-conveyor.description = 高級物品傳輸方塊。比標準輸送帶更快地移動物品。 block.titanium-conveyor.description = 高級物品傳輸方塊。比標準輸送帶更快地移動物品。
@@ -1013,49 +1012,49 @@ block.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.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 = 作為兩個交叉管線的橋樑。適用於兩條不同管線將不同液體運送到不同位置的情況。
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 = An extremely long-range power node with fewer available connections. block.surge-tower.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 = 比燃燒發電機更有效,但需要水以操作。
block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite. block.differential-generator.description = 產生大量能量。利用冷卻液和燃燒的硫之間的溫差產生大量的能量。
block.rtg-generator.description = 一種放射性同位素熱發電機,不需要冷卻,但比釷反應堆產生的能量少。 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 = 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 = 先進的發電機,能夠以峰值效率產生大量功率。需要大量的電源輸入才能啟動該過程。
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 = The first iteration of the core capsule. Once destroyed, all contact to the region is lost. Do not let this happen. block.core-shard.description = 核心第一代。一旦被摧毀,與該地區的所有聯繫都將失去。不要讓這種情況發生。
block.core-foundation.description = The second version of the core. Better armored. Stores more resources. block.core-foundation.description = 核心第二代。有更好的裝甲。可以存儲更多資源。
block.core-nucleus.description = The third and final iteration of the core capsule. Extremely well armored. Stores massive amounts of resources. block.core-nucleus.description = 核心第三代,也是最後一代。裝甲非常好。可以存儲大量資源。
block.vault.description = 存儲大量物品。當物品需求非恆定時,使用它來創建緩衝。使用[LIGHT_GRAY]裝卸器[]以從存儲庫提取物品。 block.vault.description = 存儲大量物品。當物品需求非恆定時,使用它來創建緩衝。使用[LIGHT_GRAY]裝卸器[]以從存儲庫提取物品。
block.container.description = 存儲少量物品。當物品需求非恆定時,使用它來創建緩衝。使用[LIGHT_GRAY]裝卸器[]以從容器提取物品。 block.container.description = 存儲少量物品。當物品需求非恆定時,使用它來創建緩衝。使用[LIGHT_GRAY]裝卸器[]以從容器提取物品。
block.unloader.description = 將物品從容器、存儲庫或核心卸載到傳輸帶上或直接卸載到相鄰的方塊中。透過點擊卸載器來更改要卸載的物品類型。 block.unloader.description = 將物品從容器、存儲庫或核心卸載到傳輸帶上或直接卸載到相鄰的方塊中。透過點擊卸載器來更改要卸載的物品類型。
block.launch-pad.description = 無需從核心發射即可發射物品。未完成 block.launch-pad.description = 無需經過核心即可直接發射物品
block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently. block.launch-pad-large.description = 發射台的進階版。可存儲更多物品。更快的發射速度。
block.duo.description = 一種小而便宜的砲塔。 block.duo.description = 一種小而便宜的砲塔。
block.scatter.description = 一種中型防空砲塔。向敵方單位噴射鉛塊或碎片。 block.scatter.description = 一種中型防空砲塔。向敵方單位噴射鉛塊或碎片。
block.scorch.description = Burns any ground enemies close to it. Highly effective at close range. block.scorch.description = 燃燒所有靠近它的地面敵人。近距離效果很好。
block.hail.description = 一種小型火砲。 block.hail.description = 一種小型火砲。
block.wave.description = 一種可以快速射出液體氣泡的中型砲塔。 block.wave.description = 一種可以快速射出液體氣泡的中型砲塔。
block.lancer.description = 一種射出電子束的中型砲塔。 block.lancer.description = 一種射出電子束的中型砲塔。
@@ -1067,22 +1066,22 @@ block.ripple.description = 一種一次射出幾發子彈的大型火砲。
block.cyclone.description = 一種快速射擊的大型砲塔。 block.cyclone.description = 一種快速射擊的大型砲塔。
block.spectre.description = 一種一次射出兩顆強大的子彈的大型砲塔。 block.spectre.description = 一種一次射出兩顆強大的子彈的大型砲塔。
block.meltdown.description = 一種射出強大的遠程光束的大型砲塔。 block.meltdown.description = 一種射出強大的遠程光束的大型砲塔。
block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to patrol, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. block.command-center.description = 向地圖上的盟軍發出移動命令。\n使單位巡邏攻擊敵人的核心或撤退到核心/工廠。當沒有敵人核心時,部隊將默認在攻擊命令下進行巡邏。
block.draug-factory.description = Produces Draug mining drones. 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 = Produces fast self-destructing swarm units. 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 = Provides transformation into a basic attack mech.\nUse by tapping while standing on it. 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

@@ -29,6 +29,8 @@ BeefEX
Lorex Lorex
laohuaji233 laohuaji233
Spico The Spirit Guy Spico The Spirit Guy
TunacanGamer
kemalinanc13
Zachary Zachary
Fenr1r Fenr1r
Jaiun Lee Jaiun Lee
@@ -78,4 +80,5 @@ itskatt
Agent-Laevain Agent-Laevain
AzariasB AzariasB
amrsoll amrsoll
ねらひかだ
Draco Draco

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 725 B

After

Width:  |  Height:  |  Size: 727 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 684 KiB

After

Width:  |  Height:  |  Size: 712 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 KiB

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 893 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 KiB

After

Width:  |  Height:  |  Size: 134 KiB

View File

@@ -2,6 +2,8 @@ package io.anuke.mindustry;
import io.anuke.arc.*; import io.anuke.arc.*;
import io.anuke.arc.assets.*; import io.anuke.arc.assets.*;
import io.anuke.arc.assets.loaders.*;
import io.anuke.arc.audio.*;
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.arc.math.*; import io.anuke.arc.math.*;
@@ -13,6 +15,7 @@ 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.*;
import io.anuke.mindustry.maps.*; import io.anuke.mindustry.maps.*;
import io.anuke.mindustry.mod.*;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import static io.anuke.arc.Core.*; import static io.anuke.arc.Core.*;
@@ -40,9 +43,15 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
batch = new SpriteBatch(); batch = new SpriteBatch();
assets = new AssetManager(); assets = new AssetManager();
assets.setLoader(Texture.class, "." + mapExtension, new MapPreviewLoader()); assets.setLoader(Texture.class, "." + mapExtension, new MapPreviewLoader());
tree = new FileTree();
assets.setLoader(Sound.class, new SoundLoader(tree));
assets.setLoader(Music.class, new MusicLoader(tree));
assets.load("sprites/error.png", Texture.class); assets.load("sprites/error.png", Texture.class);
atlas = TextureAtlas.blankAtlas(); atlas = TextureAtlas.blankAtlas();
Vars.net = new Net(platform.getNet()); Vars.net = new Net(platform.getNet());
mods = new Mods();
UI.loadSystemCursors(); UI.loadSystemCursors();
@@ -71,6 +80,8 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
add(netServer = new NetServer()); add(netServer = new NetServer());
add(netClient = new NetClient()); add(netClient = new NetClient());
assets.load(mods);
assets.loadRun("contentinit", ContentLoader.class, () -> { assets.loadRun("contentinit", ContentLoader.class, () -> {
content.init(); content.init();
content.load(); content.load();
@@ -108,6 +119,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
listener.init(); listener.init();
} }
super.resize(graphics.getWidth(), graphics.getHeight()); super.resize(graphics.getWidth(), graphics.getHeight());
mods.each(Mod::init);
finished = true; finished = true;
Events.fire(new ClientLoadEvent()); Events.fire(new ClientLoadEvent());
} }
@@ -182,7 +194,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
if(assets.getCurrentLoading() != null){ if(assets.getCurrentLoading() != null){
String name = assets.getCurrentLoading().fileName.toLowerCase(); String name = assets.getCurrentLoading().fileName.toLowerCase();
String key = name.contains("content") ? "content" : name.contains("msav") || name.contains("maps") ? "map" : name.contains("ogg") || name.contains("mp3") ? "sound" : name.contains("png") ? "image" : "system"; String key = name.contains("content") ? "content" : name.contains("mod") ? "mods" : name.contains("msav") || name.contains("maps") ? "map" : name.contains("ogg") || name.contains("mp3") ? "sound" : name.contains("png") ? "image" : "system";
font.draw(bundle.get("load." + key, ""), graphics.getWidth() / 2f, graphics.getHeight() / 2f - height / 2f - Scl.scl(10f), Align.center); font.draw(bundle.get("load." + key, ""), graphics.getWidth() / 2f, graphics.getHeight() / 2f - height / 2f - Scl.scl(10f), Align.center);
} }
} }

View File

@@ -18,19 +18,21 @@ import io.anuke.mindustry.game.*;
import io.anuke.mindustry.gen.*; import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.input.*; import io.anuke.mindustry.input.*;
import io.anuke.mindustry.maps.*; import io.anuke.mindustry.maps.*;
import io.anuke.mindustry.mod.*;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.plugin.*;
import io.anuke.mindustry.world.blocks.defense.ForceProjector.*; import io.anuke.mindustry.world.blocks.defense.ForceProjector.*;
import java.nio.charset.*; import java.nio.charset.*;
import java.util.*; import java.util.*;
import static io.anuke.arc.Core.settings; import static io.anuke.arc.Core.*;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
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;
/** IO buffer size. */ /** IO buffer size. */
public static final int bufferSize = 8192; public static final int bufferSize = 8192;
/** global charset, since Android doesn't support the Charsets class */ /** global charset, since Android doesn't support the Charsets class */
@@ -43,6 +45,10 @@ public class Vars implements Loadable{
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://mins.us.to/report";
/** URL the links to the wiki's modding guide.*/
public static final String modGuideURL = "https://mindustrygame.github.io/wiki/modding/";
/** 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";
/** 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(/*"mins.us.to"*/);
/** maximum distance between mine and core that supports automatic transferring */ /** maximum distance between mine and core that supports automatic transferring */
@@ -120,8 +126,8 @@ public class Vars implements Loadable{
public static FileHandle tmpDirectory; public static FileHandle tmpDirectory;
/** data subdirectory used for saves */ /** data subdirectory used for saves */
public static FileHandle saveDirectory; public static FileHandle saveDirectory;
/** data subdirectory used for plugins */ /** data subdirectory used for mods */
public static FileHandle pluginDirectory; public static FileHandle modDirectory;
/** map file extension */ /** map file extension */
public static final String mapExtension = "msav"; public static final String mapExtension = "msav";
/** save file extension */ /** save file extension */
@@ -130,6 +136,7 @@ public class Vars implements Loadable{
/** list of all locales that can be switched to */ /** list of all locales that can be switched to */
public static Locale[] locales; public static Locale[] locales;
public static FileTree tree;
public static Net net; public static Net net;
public static ContentLoader content; public static ContentLoader content;
public static GameState state; public static GameState state;
@@ -138,7 +145,7 @@ public class Vars implements Loadable{
public static DefaultWaves defaultWaves; public static DefaultWaves defaultWaves;
public static LoopControl loops; public static LoopControl loops;
public static Platform platform = new Platform(){}; public static Platform platform = new Platform(){};
public static Plugins plugins; public static Mods mods;
public static World world; public static World world;
public static Maps maps; public static Maps maps;
@@ -193,6 +200,9 @@ public class Vars implements Loadable{
Version.init(); Version.init();
if(tree == null) tree = new FileTree();
if(mods == null) mods = new Mods();
content = new ContentLoader(); content = new ContentLoader();
loops = new LoopControl(); loops = new LoopControl();
defaultWaves = new DefaultWaves(); defaultWaves = new DefaultWaves();
@@ -240,15 +250,18 @@ public class Vars implements Loadable{
mapPreviewDirectory = dataDirectory.child("previews/"); mapPreviewDirectory = dataDirectory.child("previews/");
saveDirectory = dataDirectory.child("saves/"); saveDirectory = dataDirectory.child("saves/");
tmpDirectory = dataDirectory.child("tmp/"); tmpDirectory = dataDirectory.child("tmp/");
pluginDirectory = dataDirectory.child("plugins/"); modDirectory = dataDirectory.child("mods/");
modDirectory.mkdirs();
mods.load();
maps.load(); maps.load();
} }
public static void loadSettings(){ public static void loadSettings(){
Core.settings.setAppName(appName); Core.settings.setAppName(appName);
if(steam){ if(steam || (Version.modifier != null && Version.modifier.contains("steam"))){
Core.settings.setDataDirectory(Core.files.local("saves/")); Core.settings.setDataDirectory(Core.files.local("saves/"));
} }

View File

@@ -164,6 +164,10 @@ public class BlockIndexer{
} }
public TileEntity findTile(Team team, float x, float y, float range, Predicate<Tile> pred){ public TileEntity findTile(Team team, float x, float y, float range, Predicate<Tile> pred){
return findTile(team, x, y, range, pred, false);
}
public TileEntity findTile(Team team, float x, float y, float range, Predicate<Tile> pred, boolean usePriority){
TileEntity closest = null; TileEntity closest = null;
float dst = 0; float dst = 0;
@@ -184,7 +188,7 @@ public class BlockIndexer{
TileEntity e = other.entity; TileEntity e = other.entity;
float ndst = Mathf.dst(x, y, e.x, e.y); float ndst = Mathf.dst(x, y, e.x, e.y);
if(ndst < range && (closest == null || ndst < dst)){ if(ndst < range && (closest == null || ndst < dst || (usePriority && closest.block.priority.ordinal() < e.block.priority.ordinal()))){
dst = ndst; dst = ndst;
closest = e; closest = e;
} }

View File

@@ -6,6 +6,7 @@ import io.anuke.arc.collection.*;
import io.anuke.arc.function.*; import io.anuke.arc.function.*;
import io.anuke.arc.math.geom.*; import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.arc.util.ArcAnnotate.*;
import io.anuke.arc.util.async.*; import io.anuke.arc.util.async.*;
import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.EventType.*;
import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.*;
@@ -32,7 +33,8 @@ public class Pathfinder implements Runnable{
/** handles task scheduling on the update thread. */ /** handles task scheduling on the update thread. */
private TaskQueue queue = new TaskQueue(); private TaskQueue queue = new TaskQueue();
/** current pathfinding thread */ /** current pathfinding thread */
private @Nullable Thread thread; private @Nullable
Thread thread;
public Pathfinder(){ public Pathfinder(){
Events.on(WorldLoadEvent.class, event -> { Events.on(WorldLoadEvent.class, event -> {
@@ -92,7 +94,11 @@ public class Pathfinder implements Runnable{
int x = tile.x, y = tile.y; int x = tile.x, y = tile.y;
tile.getLinkedTiles(t -> tiles[t.x][t.y] = packTile(t)); tile.getLinkedTiles(t -> {
if(Structs.inBounds(t.x, t.y, tiles)){
tiles[t.x][t.y] = packTile(t);
}
});
//can't iterate through array so use the map, which should not lead to problems //can't iterate through array so use the map, which should not lead to problems
for(PathData[] arr : pathMap){ for(PathData[] arr : pathMap){

View File

@@ -48,7 +48,7 @@ public class WaveSpawner{
for(SpawnGroup group : state.rules.spawns){ for(SpawnGroup group : state.rules.spawns){
int spawned = group.getUnitsSpawned(state.wave - 1); int spawned = group.getUnitsSpawned(state.wave - 1);
if(group.type.isFlying){ if(group.type.flying){
float spread = margin / 1.5f; float spread = margin / 1.5f;
eachFlyerSpawn((spawnX, spawnY) -> { eachFlyerSpawn((spawnX, spawnY) -> {

View File

@@ -9,7 +9,7 @@ import io.anuke.arc.util.*;
import io.anuke.mindustry.*; import io.anuke.mindustry.*;
import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.bullet.*; import io.anuke.mindustry.entities.bullet.*;
import io.anuke.mindustry.entities.type.Bullet; import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.*;
import io.anuke.mindustry.gen.*; import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.graphics.*;
@@ -29,8 +29,6 @@ import io.anuke.mindustry.world.consumers.*;
import io.anuke.mindustry.world.meta.*; import io.anuke.mindustry.world.meta.*;
import io.anuke.mindustry.world.modules.*; import io.anuke.mindustry.world.modules.*;
import static io.anuke.mindustry.Vars.*;
public class Blocks implements ContentList{ public class Blocks implements ContentList{
public static Block public static Block
@@ -58,7 +56,7 @@ public class Blocks implements ContentList{
phaseWall, phaseWallLarge, surgeWall, surgeWallLarge, mender, mendProjector, overdriveProjector, forceProjector, shockMine, phaseWall, phaseWallLarge, surgeWall, surgeWallLarge, mender, mendProjector, overdriveProjector, forceProjector, shockMine,
//transport //transport
conveyor, titaniumConveyor, armoredConveyor, distributor, junction, itemBridge, phaseConveyor, sorter, 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, liquidRouter, liquidTank, liquidJunction, bridgeConduit, phaseConduit,
@@ -716,23 +714,23 @@ public class Blocks implements ContentList{
//region sandbox //region sandbox
powerVoid = new PowerVoid("power-void"){{ powerVoid = new PowerVoid("power-void"){{
requirements(Category.power, () -> state.rules.infiniteResources, ItemStack.with()); requirements(Category.power, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true; alwaysUnlocked = true;
}}; }};
powerSource = new PowerSource("power-source"){{ powerSource = new PowerSource("power-source"){{
requirements(Category.power, () -> state.rules.infiniteResources, ItemStack.with()); requirements(Category.power, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true; alwaysUnlocked = true;
}}; }};
itemSource = new ItemSource("item-source"){{ itemSource = new ItemSource("item-source"){{
requirements(Category.distribution, () -> state.rules.infiniteResources, ItemStack.with()); requirements(Category.distribution, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true; alwaysUnlocked = true;
}}; }};
itemVoid = new ItemVoid("item-void"){{ itemVoid = new ItemVoid("item-void"){{
requirements(Category.distribution, () -> state.rules.infiniteResources, ItemStack.with()); requirements(Category.distribution, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true; alwaysUnlocked = true;
}}; }};
liquidSource = new LiquidSource("liquid-source"){{ liquidSource = new LiquidSource("liquid-source"){{
requirements(Category.liquid, () -> state.rules.infiniteResources, ItemStack.with()); requirements(Category.liquid, BuildVisibility.sandboxOnly, ItemStack.with());
alwaysUnlocked = true; alwaysUnlocked = true;
}}; }};
message = new MessageBlock("message"){{ message = new MessageBlock("message"){{
@@ -745,27 +743,27 @@ public class Blocks implements ContentList{
int wallHealthMultiplier = 4; int wallHealthMultiplier = 4;
scrapWall = new Wall("scrap-wall"){{ scrapWall = new Wall("scrap-wall"){{
requirements(Category.defense, () -> state.rules.infiniteResources, ItemStack.with()); requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * wallHealthMultiplier; health = 60 * wallHealthMultiplier;
variants = 5; variants = 5;
}}; }};
scrapWallLarge = new Wall("scrap-wall-large"){{ scrapWallLarge = new Wall("scrap-wall-large"){{
requirements(Category.defense, () -> state.rules.infiniteResources, ItemStack.with()); requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * 4 * wallHealthMultiplier; health = 60 * 4 * wallHealthMultiplier;
size = 2; size = 2;
variants = 4; variants = 4;
}}; }};
scrapWallHuge = new Wall("scrap-wall-huge"){{ scrapWallHuge = new Wall("scrap-wall-huge"){{
requirements(Category.defense, () -> state.rules.infiniteResources, ItemStack.with()); requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * 9 * wallHealthMultiplier; health = 60 * 9 * wallHealthMultiplier;
size = 3; size = 3;
variants = 3; variants = 3;
}}; }};
scrapWallGigantic = new Wall("scrap-wall-gigantic"){{ scrapWallGigantic = new Wall("scrap-wall-gigantic"){{
requirements(Category.defense, () -> state.rules.infiniteResources, ItemStack.with()); requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with());
health = 60 * 16 * wallHealthMultiplier; health = 60 * 16 * wallHealthMultiplier;
size = 4; size = 4;
}}; }};
@@ -781,7 +779,7 @@ public class Blocks implements ContentList{
}}; }};
copperWallLarge = new Wall("copper-wall-large"){{ copperWallLarge = new Wall("copper-wall-large"){{
requirements(Category.defense, ItemStack.mult(copperWall.buildRequirements, 4)); requirements(Category.defense, ItemStack.mult(copperWall.requirements, 4));
health = 80 * 4 * wallHealthMultiplier; health = 80 * 4 * wallHealthMultiplier;
size = 2; size = 2;
}}; }};
@@ -792,7 +790,7 @@ public class Blocks implements ContentList{
}}; }};
titaniumWallLarge = new Wall("titanium-wall-large"){{ titaniumWallLarge = new Wall("titanium-wall-large"){{
requirements(Category.defense, ItemStack.mult(titaniumWall.buildRequirements, 4)); requirements(Category.defense, ItemStack.mult(titaniumWall.requirements, 4));
health = 110 * wallHealthMultiplier * 4; health = 110 * wallHealthMultiplier * 4;
size = 2; size = 2;
}}; }};
@@ -803,7 +801,7 @@ public class Blocks implements ContentList{
}}; }};
thoriumWallLarge = new Wall("thorium-wall-large"){{ thoriumWallLarge = new Wall("thorium-wall-large"){{
requirements(Category.defense, ItemStack.mult(thoriumWall.buildRequirements, 4)); requirements(Category.defense, ItemStack.mult(thoriumWall.requirements, 4));
health = 200 * wallHealthMultiplier * 4; health = 200 * wallHealthMultiplier * 4;
size = 2; size = 2;
}}; }};
@@ -814,7 +812,7 @@ public class Blocks implements ContentList{
}}; }};
phaseWallLarge = new DeflectorWall("phase-wall-large"){{ phaseWallLarge = new DeflectorWall("phase-wall-large"){{
requirements(Category.defense, ItemStack.mult(phaseWall.buildRequirements, 4)); requirements(Category.defense, ItemStack.mult(phaseWall.requirements, 4));
health = 150 * 4 * wallHealthMultiplier; health = 150 * 4 * wallHealthMultiplier;
size = 2; size = 2;
}}; }};
@@ -825,7 +823,7 @@ public class Blocks implements ContentList{
}}; }};
surgeWallLarge = new SurgeWall("surge-wall-large"){{ surgeWallLarge = new SurgeWall("surge-wall-large"){{
requirements(Category.defense, ItemStack.mult(surgeWall.buildRequirements, 4)); requirements(Category.defense, ItemStack.mult(surgeWall.requirements, 4));
health = 230 * 4 * wallHealthMultiplier; health = 230 * 4 * wallHealthMultiplier;
size = 2; size = 2;
}}; }};
@@ -836,7 +834,7 @@ public class Blocks implements ContentList{
}}; }};
doorLarge = new Door("door-large"){{ doorLarge = new Door("door-large"){{
requirements(Category.defense, ItemStack.mult(door.buildRequirements, 4)); requirements(Category.defense, ItemStack.mult(door.requirements, 4));
openfx = Fx.dooropenlarge; openfx = Fx.dooropenlarge;
closefx = Fx.doorcloselarge; closefx = Fx.doorcloselarge;
health = 100 * 4 * wallHealthMultiplier; health = 100 * 4 * wallHealthMultiplier;
@@ -935,7 +933,11 @@ public class Blocks implements ContentList{
sorter = new Sorter("sorter"){{ sorter = new Sorter("sorter"){{
requirements(Category.distribution, ItemStack.with(Items.lead, 2, Items.copper, 2)); requirements(Category.distribution, ItemStack.with(Items.lead, 2, Items.copper, 2));
}};
invertedSorter = new Sorter("inverted-sorter"){{
requirements(Category.distribution, ItemStack.with(Items.lead, 2, Items.copper, 2));
invert = true;
}}; }};
router = new Router("router"){{ router = new Router("router"){{
@@ -965,12 +967,12 @@ public class Blocks implements ContentList{
//region liquid //region liquid
mechanicalPump = new Pump("mechanical-pump"){{ mechanicalPump = new Pump("mechanical-pump"){{
requirements(Category.liquid, ItemStack.with(Items.copper, 15, Items.lead, 10)); requirements(Category.liquid, ItemStack.with(Items.copper, 15, Items.metaglass, 10));
pumpAmount = 0.1f; pumpAmount = 0.1f;
}}; }};
rotaryPump = new Pump("rotary-pump"){{ rotaryPump = new Pump("rotary-pump"){{
requirements(Category.liquid, ItemStack.with(Items.copper, 70, Items.lead, 50, Items.silicon, 20, Items.titanium, 35)); requirements(Category.liquid, ItemStack.with(Items.copper, 70, Items.metaglass, 50, Items.silicon, 20, Items.titanium, 35));
pumpAmount = 0.8f; pumpAmount = 0.8f;
consumes.power(0.15f); consumes.power(0.15f);
liquidCapacity = 30f; liquidCapacity = 30f;
@@ -979,7 +981,7 @@ public class Blocks implements ContentList{
}}; }};
thermalPump = new Pump("thermal-pump"){{ thermalPump = new Pump("thermal-pump"){{
requirements(Category.liquid, ItemStack.with(Items.copper, 80, Items.lead, 65, Items.silicon, 30, Items.titanium, 40, Items.thorium, 35)); requirements(Category.liquid, ItemStack.with(Items.copper, 80, Items.metaglass, 70, Items.silicon, 30, Items.titanium, 40, Items.thorium, 35));
pumpAmount = 1.5f; pumpAmount = 1.5f;
consumes.power(0.30f); consumes.power(0.30f);
liquidCapacity = 40f; liquidCapacity = 40f;
@@ -993,13 +995,13 @@ public class Blocks implements ContentList{
}}; }};
pulseConduit = new Conduit("pulse-conduit"){{ pulseConduit = new Conduit("pulse-conduit"){{
requirements(Category.liquid, ItemStack.with(Items.titanium, 1, Items.metaglass, 1)); requirements(Category.liquid, ItemStack.with(Items.titanium, 2, Items.metaglass, 1));
liquidCapacity = 16f; liquidCapacity = 16f;
health = 90; health = 90;
}}; }};
liquidRouter = new LiquidRouter("liquid-router"){{ liquidRouter = new LiquidRouter("liquid-router"){{
requirements(Category.liquid, ItemStack.with(Items.titanium, 2, Items.metaglass, 2)); requirements(Category.liquid, ItemStack.with(Items.graphite, 4, Items.metaglass, 2));
liquidCapacity = 20f; liquidCapacity = 20f;
}}; }};
@@ -1011,11 +1013,11 @@ public class Blocks implements ContentList{
}}; }};
liquidJunction = new LiquidJunction("liquid-junction"){{ liquidJunction = new LiquidJunction("liquid-junction"){{
requirements(Category.liquid, ItemStack.with(Items.titanium, 2, Items.metaglass, 2)); requirements(Category.liquid, ItemStack.with(Items.graphite, 2, Items.metaglass, 2));
}}; }};
bridgeConduit = new LiquidExtendingBridge("bridge-conduit"){{ bridgeConduit = new LiquidExtendingBridge("bridge-conduit"){{
requirements(Category.liquid, ItemStack.with(Items.titanium, 4, Items.metaglass, 4)); requirements(Category.liquid, ItemStack.with(Items.graphite, 4, Items.metaglass, 8));
range = 4; range = 4;
hasPower = false; hasPower = false;
}}; }};
@@ -1083,11 +1085,12 @@ public class Blocks implements ContentList{
size = 2; size = 2;
}}; }};
differentialGenerator = new SingleTypeGenerator(true, false, "differential-generator"){{ differentialGenerator = new SingleTypeGenerator("differential-generator"){{
requirements(Category.power, ItemStack.with(Items.copper, 70, Items.titanium, 50, Items.lead, 100, Items.silicon, 65, Items.metaglass, 50)); requirements(Category.power, ItemStack.with(Items.copper, 70, Items.titanium, 50, Items.lead, 100, Items.silicon, 65, Items.metaglass, 50));
powerProduction = 16f; powerProduction = 16f;
itemDuration = 120f; itemDuration = 120f;
hasLiquids = true; hasLiquids = true;
hasItems = true;
size = 3; size = 3;
consumes.item(Items.pyratite).optional(true, false); consumes.item(Items.pyratite).optional(true, false);
@@ -1194,7 +1197,7 @@ public class Blocks implements ContentList{
rotateSpeed = 1.4f; rotateSpeed = 1.4f;
attribute = Attribute.water; attribute = Attribute.water;
consumes.power(0.90f); consumes.power(1f);
}}; }};
cultivator = new Cultivator("cultivator"){{ cultivator = new Cultivator("cultivator"){{
@@ -1230,7 +1233,7 @@ public class Blocks implements ContentList{
//region storage //region storage
coreShard = new CoreBlock("core-shard"){{ coreShard = new CoreBlock("core-shard"){{
requirements(Category.effect, () -> false, ItemStack.with(Items.titanium, 1000)); requirements(Category.effect, BuildVisibility.debugOnly, ItemStack.with(Items.titanium, 4000));
alwaysUnlocked = true; alwaysUnlocked = true;
health = 1100; health = 1100;
@@ -1239,7 +1242,7 @@ public class Blocks implements ContentList{
}}; }};
coreFoundation = new CoreBlock("core-foundation"){{ coreFoundation = new CoreBlock("core-foundation"){{
requirements(Category.effect, () -> false, ItemStack.with(Items.titanium, 1500, Items.silicon, 1000)); requirements(Category.effect, BuildVisibility.debugOnly, ItemStack.with(Items.titanium, 400, Items.silicon, 3000));
health = 2000; health = 2000;
itemCapacity = 9000; itemCapacity = 9000;
@@ -1247,7 +1250,7 @@ public class Blocks implements ContentList{
}}; }};
coreNucleus = new CoreBlock("core-nucleus"){{ coreNucleus = new CoreBlock("core-nucleus"){{
requirements(Category.effect, () -> false, ItemStack.with(Items.titanium, 4000, Items.silicon, 2000, Items.surgealloy, 1000)); requirements(Category.effect, BuildVisibility.debugOnly, ItemStack.with(Items.titanium, 4000, Items.silicon, 2000, Items.surgealloy, 3000));
health = 4000; health = 4000;
itemCapacity = 13000; itemCapacity = 13000;
@@ -1272,7 +1275,7 @@ public class Blocks implements ContentList{
}}; }};
launchPad = new LaunchPad("launch-pad"){{ launchPad = new LaunchPad("launch-pad"){{
requirements(Category.effect, () -> world.isZone(), ItemStack.with(Items.copper, 250, Items.silicon, 75, Items.lead, 100)); requirements(Category.effect, BuildVisibility.campaignOnly, ItemStack.with(Items.copper, 250, Items.silicon, 75, Items.lead, 100));
size = 3; size = 3;
itemCapacity = 100; itemCapacity = 100;
launchTime = 60f * 16; launchTime = 60f * 16;
@@ -1281,7 +1284,7 @@ public class Blocks implements ContentList{
}}; }};
launchPadLarge = new LaunchPad("launch-pad-large"){{ launchPadLarge = new LaunchPad("launch-pad-large"){{
requirements(Category.effect, () -> world.isZone(), ItemStack.with(Items.titanium, 200, Items.silicon, 150, Items.lead, 250, Items.plastanium, 75)); requirements(Category.effect, BuildVisibility.campaignOnly, ItemStack.with(Items.titanium, 200, Items.silicon, 150, Items.lead, 250, Items.plastanium, 75));
size = 4; size = 4;
itemCapacity = 250; itemCapacity = 250;
launchTime = 60f * 14; launchTime = 60f * 14;
@@ -1315,7 +1318,8 @@ public class Blocks implements ContentList{
requirements(Category.turret, ItemStack.with(Items.copper, 85, Items.lead, 45)); requirements(Category.turret, ItemStack.with(Items.copper, 85, Items.lead, 45));
ammo( ammo(
Items.scrap, Bullets.flakScrap, Items.scrap, Bullets.flakScrap,
Items.lead, Bullets.flakLead Items.lead, Bullets.flakLead,
Items.metaglass, Bullets.flakGlass
); );
reload = 18f; reload = 18f;
range = 170f; range = 170f;
@@ -1558,6 +1562,7 @@ public class Blocks implements ContentList{
cyclone = new ItemTurret("cyclone"){{ cyclone = new ItemTurret("cyclone"){{
requirements(Category.turret, ItemStack.with(Items.copper, 200, Items.titanium, 125, Items.plastanium, 80)); requirements(Category.turret, ItemStack.with(Items.copper, 200, Items.titanium, 125, Items.plastanium, 80));
ammo( ammo(
Items.metaglass, Bullets.flakGlass,
Items.blastCompound, Bullets.flakExplosive, Items.blastCompound, Bullets.flakExplosive,
Items.plastanium, Bullets.flakPlastic, Items.plastanium, Bullets.flakPlastic,
Items.surgealloy, Bullets.flakSurge Items.surgealloy, Bullets.flakSurge
@@ -1631,28 +1636,28 @@ public class Blocks implements ContentList{
produceTime = 2500; produceTime = 2500;
size = 2; size = 2;
maxSpawn = 1; maxSpawn = 1;
consumes.power(1.1f); consumes.power(1.2f);
consumes.items(); consumes.items();
}}; }};
spiritFactory = new UnitFactory("spirit-factory"){{ spiritFactory = new UnitFactory("spirit-factory"){{
requirements(Category.units, ItemStack.with(Items.metaglass, 45, Items.lead, 55, Items.silicon, 45)); requirements(Category.units, ItemStack.with(Items.metaglass, 45, Items.lead, 55, Items.silicon, 45));
type = UnitTypes.spirit; type = UnitTypes.spirit;
produceTime = 3500; produceTime = 4000;
size = 2; size = 2;
maxSpawn = 2; maxSpawn = 1;
consumes.power(0.80f); consumes.power(1.2f);
consumes.items(new ItemStack(Items.silicon, 15), new ItemStack(Items.lead, 15)); consumes.items(new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30));
}}; }};
phantomFactory = new UnitFactory("phantom-factory"){{ phantomFactory = new UnitFactory("phantom-factory"){{
requirements(Category.units, ItemStack.with(Items.titanium, 45, Items.thorium, 40, Items.lead, 55, Items.silicon, 105)); requirements(Category.units, ItemStack.with(Items.titanium, 50, Items.thorium, 60, Items.lead, 65, Items.silicon, 105));
type = UnitTypes.phantom; type = UnitTypes.phantom;
produceTime = 3650; produceTime = 4400;
size = 2; size = 2;
maxSpawn = 2; maxSpawn = 1;
consumes.power(2f); consumes.power(2.5f);
consumes.items(new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 20), new ItemStack(Items.titanium, 10)); consumes.items(new ItemStack(Items.silicon, 50), new ItemStack(Items.lead, 30), new ItemStack(Items.titanium, 20));
}}; }};
commandCenter = new CommandCenter("command-center"){{ commandCenter = new CommandCenter("command-center"){{

View File

@@ -8,11 +8,9 @@ import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.bullet.*; import io.anuke.mindustry.entities.bullet.*;
import io.anuke.mindustry.entities.effect.*; import io.anuke.mindustry.entities.effect.*;
import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.entities.type.Bullet;
import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.*;
import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.blocks.*;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
@@ -23,7 +21,7 @@ public class Bullets implements ContentList{
artilleryDense, arilleryPlastic, artilleryPlasticFrag, artilleryHoming, artlleryIncendiary, artilleryExplosive, artilleryUnit, artilleryDense, arilleryPlastic, artilleryPlasticFrag, artilleryHoming, artlleryIncendiary, artilleryExplosive, artilleryUnit,
//flak //flak
flakScrap, flakLead, flakPlastic, flakExplosive, flakSurge, flakScrap, flakLead, flakPlastic, flakExplosive, flakSurge, flakGlass, glassFrag,
//missiles //missiles
missileExplosive, missileIncendiary, missileSurge, missileJavelin, missileSwarm, missileRevenant, missileExplosive, missileIncendiary, missileSurge, missileJavelin, missileSwarm, missileRevenant,
@@ -39,7 +37,7 @@ public class Bullets implements ContentList{
waterShot, cryoShot, slagShot, oilShot, waterShot, cryoShot, slagShot, oilShot,
//environment, misc. //environment, misc.
fireball, basicFlame, pyraFlame, driverBolt, healBullet, frag, eruptorShot, fireball, basicFlame, pyraFlame, driverBolt, healBullet, healBulletBig, frag, eruptorShot,
//bombs //bombs
bombExplosive, bombIncendiary, bombOil; bombExplosive, bombIncendiary, bombOil;
@@ -57,7 +55,7 @@ public class Bullets implements ContentList{
splashDamage = 33f; splashDamage = 33f;
}}; }};
artilleryPlasticFrag = new BasicBulletType(2.5f, 7, "bullet"){{ artilleryPlasticFrag = new BasicBulletType(2.5f, 10, "bullet"){{
bulletWidth = 10f; bulletWidth = 10f;
bulletHeight = 12f; bulletHeight = 12f;
bulletShrink = 1f; bulletShrink = 1f;
@@ -134,6 +132,16 @@ public class Bullets implements ContentList{
frontColor = Pal.bulletYellow; frontColor = Pal.bulletYellow;
}}; }};
glassFrag = new BasicBulletType(3f, 6, "bullet"){{
bulletWidth = 5f;
bulletHeight = 12f;
bulletShrink = 1f;
lifetime = 20f;
backColor = Pal.gray;
frontColor = Color.white;
despawnEffect = Fx.none;
}};
flakLead = new FlakBulletType(4.2f, 3){{ flakLead = new FlakBulletType(4.2f, 3){{
lifetime = 60f; lifetime = 60f;
ammoMultiplier = 4f; ammoMultiplier = 4f;
@@ -157,8 +165,23 @@ public class Bullets implements ContentList{
splashDamageRadius = 24f; splashDamageRadius = 24f;
}}; }};
flakGlass = new FlakBulletType(4f, 3){{
lifetime = 70f;
ammoMultiplier = 5f;
shootEffect = Fx.shootSmall;
reloadMultiplier = 0.8f;
bulletWidth = 6f;
bulletHeight = 8f;
hitEffect = Fx.flakExplosion;
splashDamage = 30f;
splashDamageRadius = 26f;
fragBullet = glassFrag;
fragBullets = 6;
}};
flakPlastic = new FlakBulletType(4f, 6){{ flakPlastic = new FlakBulletType(4f, 6){{
splashDamageRadius = 50f; splashDamageRadius = 50f;
splashDamage = 25f;
fragBullet = artilleryPlasticFrag; fragBullet = artilleryPlasticFrag;
fragBullets = 6; fragBullets = 6;
hitEffect = Fx.plasticExplosion; hitEffect = Fx.plasticExplosion;
@@ -376,43 +399,13 @@ public class Bullets implements ContentList{
statusDuration = 10f; statusDuration = 10f;
}}; }};
healBullet = new BulletType(5.2f, 13){ healBullet = new HealBulletType(5.2f, 13){{
float healPercent = 3f; healPercent = 3f;
}};
{ healBulletBig = new HealBulletType(5.2f, 15){{
shootEffect = Fx.shootHeal; healPercent = 5.5f;
smokeEffect = Fx.hitLaser; }};
hitEffect = Fx.hitLaser;
despawnEffect = Fx.hitLaser;
collidesTeam = true;
}
@Override
public boolean collides(Bullet b, Tile tile){
return tile.getTeam() != b.getTeam() || tile.entity.healthf() < 1f;
}
@Override
public void draw(Bullet b){
Draw.color(Pal.heal);
Lines.stroke(2f);
Lines.lineAngleCenter(b.x, b.y, b.rot(), 7f);
Draw.color(Color.white);
Lines.lineAngleCenter(b.x, b.y, b.rot(), 3f);
Draw.reset();
}
@Override
public void hitTile(Bullet b, Tile tile){
super.hit(b);
tile = tile.link();
if(tile.entity != null && tile.getTeam() == b.getTeam() && !(tile.block() instanceof BuildBlock)){
Effects.effect(Fx.healBlockFull, Pal.heal, tile.drawx(), tile.drawy(), tile.block().size);
tile.entity.healBy(healPercent / 100f * tile.entity.maxHealth());
}
}
};
fireball = new BulletType(1f, 4){ fireball = new BulletType(1f, 4){
{ {

View File

@@ -11,7 +11,6 @@ import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.*;
import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
import io.anuke.mindustry.type.Item.*;
import static io.anuke.mindustry.Vars.tilesize; import static io.anuke.mindustry.Vars.tilesize;
@@ -552,7 +551,7 @@ public class Fx implements ContentList{
float length = 20f * e.finpow(); float length = 20f * e.finpow();
float size = 7f * e.fout(); float size = 7f * e.fout();
Draw.rect(((Item)e.data).icon(Icon.large), e.x + Angles.trnsx(e.rotation, length), e.y + Angles.trnsy(e.rotation, length), size, size); Draw.rect(((Item)e.data).icon(Cicon.medium), e.x + Angles.trnsx(e.rotation, length), e.y + Angles.trnsy(e.rotation, length), size, size);
}); });

View File

@@ -220,7 +220,7 @@ public class Mechs implements ContentList{
dart = new Mech("dart-ship", true){ dart = new Mech("dart-ship", true){
{ {
drillPower = 1; drillPower = 1;
mineSpeed = 0.9f; mineSpeed = 3f;
speed = 0.5f; speed = 0.5f;
drag = 0.09f; drag = 0.09f;
health = 200f; health = 200f;

View File

@@ -13,6 +13,7 @@ public class TechTree implements ContentList{
@Override @Override
public void load(){ public void load(){
TechNode.context = null;
all = new Array<>(); all = new Array<>();
root = node(coreShard, () -> { root = node(coreShard, () -> {
@@ -30,6 +31,7 @@ public class TechTree implements ContentList{
node(distributor); node(distributor);
node(sorter, () -> { node(sorter, () -> {
node(invertedSorter);
node(message); node(message);
node(overflowGate); node(overflowGate);
}); });
@@ -302,19 +304,24 @@ public class TechTree implements ContentList{
}); });
} }
private TechNode node(Block block, Runnable children){ private static TechNode node(Block block, Runnable children){
ItemStack[] requirements = new ItemStack[block.buildRequirements.length]; ItemStack[] requirements = new ItemStack[block.requirements.length];
for(int i = 0; i < requirements.length; i++){ for(int i = 0; i < requirements.length; i++){
requirements[i] = new ItemStack(block.buildRequirements[i].item, 30 + block.buildRequirements[i].amount * 6); requirements[i] = new ItemStack(block.requirements[i].item, 30 + block.requirements[i].amount * 6);
} }
return new TechNode(block, requirements, children); return new TechNode(block, requirements, children);
} }
private TechNode node(Block block){ private static TechNode node(Block block){
return node(block, () -> {}); return node(block, () -> {});
} }
public static void create(Block parent, Block block){
TechNode.context = all.find(t -> t.block == parent);
node(block, () -> {});
}
public static class TechNode{ public static class TechNode{
static TechNode context; static TechNode context;
@@ -322,19 +329,22 @@ public class TechTree implements ContentList{
public final ItemStack[] requirements; public final ItemStack[] requirements;
public final Array<TechNode> children = new Array<>(); public final Array<TechNode> children = new Array<>();
TechNode(Block block, ItemStack[] requirements, Runnable children){ TechNode(TechNode ccontext, Block block, ItemStack[] requirements, Runnable children){
if(context != null){ if(ccontext != null){
context.children.add(this); ccontext.children.add(this);
} }
this.block = block; this.block = block;
this.requirements = requirements; this.requirements = requirements;
TechNode last = context;
context = this; context = this;
children.run(); children.run();
context = last; context = ccontext;
all.add(this); all.add(this);
} }
TechNode(Block block, ItemStack[] requirements, Runnable children){
this(context, block, requirements, children);
}
} }
} }

View File

@@ -17,8 +17,8 @@ public class UnitTypes implements ContentList{
@Override @Override
public void load(){ public void load(){
draug = new UnitType("draug", Draug.class, Draug::new){{ draug = new UnitType("draug", Draug::new){{
isFlying = true; flying = true;
drag = 0.01f; drag = 0.01f;
speed = 0.3f; speed = 0.3f;
maxVelocity = 1.2f; maxVelocity = 1.2f;
@@ -32,13 +32,13 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
spirit = new UnitType("spirit", Spirit.class, Spirit::new){{ spirit = new UnitType("spirit", Spirit::new){{
isFlying = true; flying = true;
drag = 0.01f; drag = 0.01f;
speed = 0.4f; speed = 0.42f;
maxVelocity = 1.6f; maxVelocity = 1.6f;
range = 50f; range = 50f;
health = 60; health = 100;
engineSize = 1.8f; engineSize = 1.8f;
engineOffset = 5.7f; engineOffset = 5.7f;
weapon = new Weapon("heal-blaster"){{ weapon = new Weapon("heal-blaster"){{
@@ -48,22 +48,21 @@ public class UnitTypes implements ContentList{
roundrobin = true; roundrobin = true;
ejectEffect = Fx.none; ejectEffect = Fx.none;
recoil = 2f; recoil = 2f;
bullet = Bullets.healBullet; bullet = Bullets.healBulletBig;
shootSound = Sounds.pew; shootSound = Sounds.pew;
}}; }};
}}; }};
phantom = new UnitType("phantom", Phantom.class, Phantom::new){{ phantom = new UnitType("phantom", Phantom::new){{
isFlying = true; flying = true;
drag = 0.01f; drag = 0.01f;
mass = 2f; mass = 2f;
speed = 0.45f; speed = 0.45f;
maxVelocity = 1.9f; maxVelocity = 1.9f;
range = 70f; range = 70f;
itemCapacity = 70; itemCapacity = 70;
health = 220; health = 400;
buildPower = 0.9f; buildPower = 0.4f;
minePower = 1.1f;
engineOffset = 6.5f; engineOffset = 6.5f;
toMine = ObjectSet.with(Items.lead, Items.copper, Items.titanium); toMine = ObjectSet.with(Items.lead, Items.copper, Items.titanium);
weapon = new Weapon("heal-blaster"){{ weapon = new Weapon("heal-blaster"){{
@@ -77,7 +76,7 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
dagger = new UnitType("dagger", Dagger.class, Dagger::new){{ dagger = new UnitType("dagger", Dagger::new){{
maxVelocity = 1.1f; maxVelocity = 1.1f;
speed = 0.2f; speed = 0.2f;
drag = 0.4f; drag = 0.4f;
@@ -93,7 +92,7 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
crawler = new UnitType("crawler", Crawler.class, Crawler::new){{ crawler = new UnitType("crawler", Crawler::new){{
maxVelocity = 1.27f; maxVelocity = 1.27f;
speed = 0.285f; speed = 0.285f;
drag = 0.4f; drag = 0.4f;
@@ -124,7 +123,7 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
titan = new UnitType("titan", Titan.class, Titan::new){{ titan = new UnitType("titan", Titan::new){{
maxVelocity = 0.8f; maxVelocity = 0.8f;
speed = 0.22f; speed = 0.22f;
drag = 0.4f; drag = 0.4f;
@@ -146,7 +145,7 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
fortress = new UnitType("fortress", Fortress.class, Fortress::new){{ fortress = new UnitType("fortress", Fortress::new){{
maxVelocity = 0.78f; maxVelocity = 0.78f;
speed = 0.15f; speed = 0.15f;
drag = 0.4f; drag = 0.4f;
@@ -168,7 +167,7 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
eruptor = new UnitType("eruptor", Eruptor.class, Eruptor::new){{ eruptor = new UnitType("eruptor", Eruptor::new){{
maxVelocity = 0.81f; maxVelocity = 0.81f;
speed = 0.16f; speed = 0.16f;
drag = 0.4f; drag = 0.4f;
@@ -190,7 +189,7 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
chaosArray = new UnitType("chaos-array", Dagger.class, Dagger::new){{ chaosArray = new UnitType("chaos-array", Dagger::new){{
maxVelocity = 0.68f; maxVelocity = 0.68f;
speed = 0.12f; speed = 0.12f;
drag = 0.4f; drag = 0.4f;
@@ -214,7 +213,7 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
eradicator = new UnitType("eradicator", Dagger.class, Dagger::new){{ eradicator = new UnitType("eradicator", Dagger::new){{
maxVelocity = 0.68f; maxVelocity = 0.68f;
speed = 0.12f; speed = 0.12f;
drag = 0.4f; drag = 0.4f;
@@ -239,12 +238,12 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
wraith = new UnitType("wraith", Wraith.class, Wraith::new){{ wraith = new UnitType("wraith", Wraith::new){{
speed = 0.3f; speed = 0.3f;
maxVelocity = 1.9f; maxVelocity = 1.9f;
drag = 0.01f; drag = 0.01f;
mass = 1.5f; mass = 1.5f;
isFlying = true; flying = true;
health = 75; health = 75;
engineOffset = 5.5f; engineOffset = 5.5f;
range = 140f; range = 140f;
@@ -258,13 +257,13 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
ghoul = new UnitType("ghoul", Ghoul.class, Ghoul::new){{ ghoul = new UnitType("ghoul", Ghoul::new){{
health = 220; health = 220;
speed = 0.2f; speed = 0.2f;
maxVelocity = 1.4f; maxVelocity = 1.4f;
mass = 3f; mass = 3f;
drag = 0.01f; drag = 0.01f;
isFlying = true; flying = true;
targetAir = false; targetAir = false;
engineOffset = 7.8f; engineOffset = 7.8f;
range = 140f; range = 140f;
@@ -282,7 +281,7 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
revenant = new UnitType("revenant", Revenant.class, Revenant::new){{ revenant = new UnitType("revenant", Revenant::new){{
health = 1000; health = 1000;
mass = 5f; mass = 5f;
hitsize = 20f; hitsize = 20f;
@@ -291,7 +290,7 @@ public class UnitTypes implements ContentList{
drag = 0.01f; drag = 0.01f;
range = 80f; range = 80f;
shootCone = 40f; shootCone = 40f;
isFlying = true; flying = true;
rotateWeapon = true; rotateWeapon = true;
engineOffset = 12f; engineOffset = 12f;
engineSize = 3f; engineSize = 3f;
@@ -313,7 +312,7 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
lich = new UnitType("lich", Revenant.class, Revenant::new){{ lich = new UnitType("lich", Revenant::new){{
health = 6000; health = 6000;
mass = 20f; mass = 20f;
hitsize = 40f; hitsize = 40f;
@@ -322,7 +321,7 @@ public class UnitTypes implements ContentList{
drag = 0.02f; drag = 0.02f;
range = 80f; range = 80f;
shootCone = 20f; shootCone = 20f;
isFlying = true; flying = true;
rotateWeapon = true; rotateWeapon = true;
engineOffset = 21; engineOffset = 21;
engineSize = 5.3f; engineSize = 5.3f;
@@ -346,7 +345,7 @@ public class UnitTypes implements ContentList{
}}; }};
}}; }};
reaper = new UnitType("reaper", Revenant.class, Revenant::new){{ reaper = new UnitType("reaper", Revenant::new){{
health = 11000; health = 11000;
mass = 30f; mass = 30f;
hitsize = 56f; hitsize = 56f;
@@ -355,7 +354,7 @@ public class UnitTypes implements ContentList{
drag = 0.02f; drag = 0.02f;
range = 80f; range = 80f;
shootCone = 30f; shootCone = 30f;
isFlying = true; flying = true;
rotateWeapon = true; rotateWeapon = true;
engineOffset = 40; engineOffset = 40;
engineSize = 7.3f; engineSize = 7.3f;

View File

@@ -1,13 +1,15 @@
package io.anuke.mindustry.content; package io.anuke.mindustry.content;
import io.anuke.arc.collection.Array; import io.anuke.mindustry.game.*;
import io.anuke.mindustry.game.ContentList; import io.anuke.mindustry.game.Objectives.*;
import io.anuke.mindustry.game.SpawnGroup; import io.anuke.mindustry.maps.generators.*;
import io.anuke.mindustry.maps.generators.MapGenerator; import io.anuke.mindustry.maps.generators.MapGenerator.*;
import io.anuke.mindustry.maps.generators.MapGenerator.Decoration; import io.anuke.mindustry.maps.zonegen.*;
import io.anuke.mindustry.maps.zonegen.DesertWastesGenerator;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
import io.anuke.mindustry.world.Block;
import static io.anuke.arc.collection.Array.with;
import static io.anuke.mindustry.content.Items.*;
import static io.anuke.mindustry.type.ItemStack.list;
public class Zones implements ContentList{ public class Zones implements ContentList{
public static Zone public static Zone
@@ -20,28 +22,26 @@ public class Zones implements ContentList{
public void load(){ public void load(){
groundZero = new Zone("groundZero", new MapGenerator("groundZero", 1)){{ groundZero = new Zone("groundZero", new MapGenerator("groundZero", 1)){{
baseLaunchCost = ItemStack.with(Items.copper, -60); baseLaunchCost = list(copper, -60);
startingItems = ItemStack.list(Items.copper, 60); startingItems = list(copper, 60);
alwaysUnlocked = true; alwaysUnlocked = true;
conditionWave = 5; conditionWave = 5;
launchPeriod = 5; launchPeriod = 5;
resources = new Item[]{Items.copper, Items.scrap, Items.lead}; resources = with(copper, scrap, lead);
}}; }};
desertWastes = new Zone("desertWastes", new DesertWastesGenerator(260, 260)){{ desertWastes = new Zone("desertWastes", new DesertWastesGenerator(260, 260)){{
startingItems = ItemStack.list(Items.copper, 120); startingItems = list(copper, 120);
conditionWave = 20; conditionWave = 20;
launchPeriod = 10; launchPeriod = 10;
loadout = Loadouts.advancedShard; loadout = Loadouts.advancedShard;
zoneRequirements = ZoneRequirement.with(groundZero, 20); resources = with(copper, lead, coal, sand);
blockRequirements = new Block[]{Blocks.combustionGenerator};
resources = new Item[]{Items.copper, Items.lead, Items.coal, Items.sand};
rules = r -> { rules = r -> {
r.waves = true; r.waves = true;
r.waveTimer = true; r.waveTimer = true;
r.launchWaveMultiplier = 3f; r.launchWaveMultiplier = 3f;
r.waveSpacing = 60 * 50f; r.waveSpacing = 60 * 50f;
r.spawns = Array.with( r.spawns = with(
new SpawnGroup(UnitTypes.crawler){{ new SpawnGroup(UnitTypes.crawler){{
unitScaling = 3f; unitScaling = 3f;
}}, }},
@@ -75,96 +75,140 @@ public class Zones implements ContentList{
}} }}
); );
}; };
requirements = with(
new ZoneWave(groundZero, 20),
new Unlock(Blocks.combustionGenerator)
);
}}; }};
saltFlats = new Zone("saltFlats", new MapGenerator("saltFlats")){{ saltFlats = new Zone("saltFlats", new MapGenerator("saltFlats")){{
startingItems = ItemStack.list(Items.copper, 200, Items.silicon, 200, Items.lead, 200); startingItems = list(copper, 200, Items.silicon, 200, lead, 200);
loadout = Loadouts.basicFoundation; loadout = Loadouts.basicFoundation;
conditionWave = 10; conditionWave = 10;
launchPeriod = 5; launchPeriod = 5;
zoneRequirements = ZoneRequirement.with(desertWastes, 60); configureObjective = new Launched(this);
blockRequirements = new Block[]{Blocks.daggerFactory, Blocks.draugFactory, Blocks.door, Blocks.waterExtractor}; resources = with(copper, scrap, lead, coal, sand, titanium);
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand, Items.titanium}; requirements = with(
new ZoneWave(desertWastes, 60),
new Unlock(Blocks.daggerFactory),
new Unlock(Blocks.draugFactory),
new Unlock(Blocks.door),
new Unlock(Blocks.waterExtractor)
);
}}; }};
frozenForest = new Zone("frozenForest", new MapGenerator("frozenForest", 1) frozenForest = new Zone("frozenForest", new MapGenerator("frozenForest", 1)
.decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.02))){{ .decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.02))){{
loadout = Loadouts.basicFoundation; loadout = Loadouts.basicFoundation;
baseLaunchCost = ItemStack.with(); startingItems = list(copper, 250);
startingItems = ItemStack.list(Items.copper, 250);
conditionWave = 10; conditionWave = 10;
blockRequirements = new Block[]{Blocks.junction, Blocks.router}; resources = with(copper, lead, coal);
zoneRequirements = ZoneRequirement.with(groundZero, 10); requirements = with(
resources = new Item[]{Items.copper, Items.lead, Items.coal}; new ZoneWave(groundZero, 10),
new Unlock(Blocks.junction),
new Unlock(Blocks.router)
);
}}; }};
craters = new Zone("craters", new MapGenerator("craters", 1).decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.004))){{ craters = new Zone("craters", new MapGenerator("craters", 1).decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.004))){{
startingItems = ItemStack.list(Items.copper, 100); startingItems = list(copper, 100);
conditionWave = 10; conditionWave = 10;
zoneRequirements = ZoneRequirement.with(frozenForest, 10); resources = with(copper, lead, coal, sand, scrap);
blockRequirements = new Block[]{Blocks.mender, Blocks.combustionGenerator}; requirements = with(
resources = new Item[]{Items.copper, Items.lead, Items.coal, Items.sand, Items.scrap}; new ZoneWave(frozenForest, 10),
new Unlock(Blocks.mender),
new Unlock(Blocks.combustionGenerator)
);
}}; }};
ruinousShores = new Zone("ruinousShores", new MapGenerator("ruinousShores", 1)){{ ruinousShores = new Zone("ruinousShores", new MapGenerator("ruinousShores", 1)){{
loadout = Loadouts.basicFoundation; loadout = Loadouts.basicFoundation;
baseLaunchCost = ItemStack.with(); startingItems = list(copper, 140, lead, 50);
startingItems = ItemStack.list(Items.copper, 140, Items.lead, 50);
conditionWave = 20; conditionWave = 20;
launchPeriod = 20; launchPeriod = 20;
zoneRequirements = ZoneRequirement.with(desertWastes, 20, craters, 15); resources = with(copper, scrap, lead, coal, sand);
blockRequirements = new Block[]{Blocks.graphitePress, Blocks.combustionGenerator, Blocks.kiln, Blocks.mechanicalPump}; requirements = with(
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand}; new ZoneWave(desertWastes, 20),
new ZoneWave(craters, 15),
new Unlock(Blocks.graphitePress),
new Unlock(Blocks.combustionGenerator),
new Unlock(Blocks.kiln),
new Unlock(Blocks.mechanicalPump)
);
}}; }};
stainedMountains = new Zone("stainedMountains", new MapGenerator("stainedMountains", 2) stainedMountains = new Zone("stainedMountains", new MapGenerator("stainedMountains", 2)
.decor(new Decoration(Blocks.shale, Blocks.shaleBoulder, 0.02))){{ .decor(new Decoration(Blocks.shale, Blocks.shaleBoulder, 0.02))){{
loadout = Loadouts.basicFoundation; loadout = Loadouts.basicFoundation;
startingItems = ItemStack.list(Items.copper, 200, Items.lead, 50); startingItems = list(copper, 200, lead, 50);
conditionWave = 10; conditionWave = 10;
launchPeriod = 10; launchPeriod = 10;
zoneRequirements = ZoneRequirement.with(frozenForest, 15); resources = with(copper, scrap, lead, coal, titanium, sand);
blockRequirements = new Block[]{Blocks.pneumaticDrill, Blocks.powerNode, Blocks.turbineGenerator}; requirements = with(
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.sand}; new ZoneWave(frozenForest, 15),
new Unlock(Blocks.pneumaticDrill),
new Unlock(Blocks.powerNode),
new Unlock(Blocks.turbineGenerator)
);
}}; }};
fungalPass = new Zone("fungalPass", new MapGenerator("fungalPass")){{ fungalPass = new Zone("fungalPass", new MapGenerator("fungalPass")){{
startingItems = ItemStack.list(Items.copper, 250, Items.lead, 250, Items.metaglass, 100, Items.graphite, 100); startingItems = list(copper, 250, lead, 250, Items.metaglass, 100, Items.graphite, 100);
zoneRequirements = ZoneRequirement.with(stainedMountains, 15); resources = with(copper, lead, coal, titanium, sand);
blockRequirements = new Block[]{Blocks.daggerFactory, Blocks.crawlerFactory, Blocks.door, Blocks.siliconSmelter}; configureObjective = new Launched(this);
resources = new Item[]{Items.copper, Items.lead, Items.coal, Items.titanium, Items.sand}; requirements = with(
new ZoneWave(stainedMountains, 15),
new Unlock(Blocks.daggerFactory),
new Unlock(Blocks.crawlerFactory),
new Unlock(Blocks.door),
new Unlock(Blocks.siliconSmelter)
);
}}; }};
overgrowth = new Zone("overgrowth", new MapGenerator("overgrowth")){{ overgrowth = new Zone("overgrowth", new MapGenerator("overgrowth")){{
startingItems = ItemStack.list(Items.copper, 1500, Items.lead, 1000, Items.silicon, 500, Items.metaglass, 250); startingItems = list(copper, 1500, lead, 1000, Items.silicon, 500, Items.metaglass, 250);
conditionWave = 12; conditionWave = 12;
launchPeriod = 4; launchPeriod = 4;
loadout = Loadouts.basicNucleus; loadout = Loadouts.basicNucleus;
zoneRequirements = ZoneRequirement.with(craters, 40, fungalPass, 10); configureObjective = new Launched(this);
blockRequirements = new Block[]{Blocks.cultivator, Blocks.sporePress, Blocks.titanFactory, Blocks.wraithFactory}; resources = with(copper, lead, coal, titanium, sand, thorium, scrap);
resources = new Item[]{Items.copper, Items.lead, Items.coal, Items.titanium, Items.sand, Items.thorium, Items.scrap}; requirements = with(
new ZoneWave(craters, 40),
new Launched(fungalPass),
new Unlock(Blocks.cultivator),
new Unlock(Blocks.sporePress),
new Unlock(Blocks.titanFactory),
new Unlock(Blocks.wraithFactory)
);
}}; }};
tarFields = new Zone("tarFields", new MapGenerator("tarFields") tarFields = new Zone("tarFields", new MapGenerator("tarFields")
.decor(new Decoration(Blocks.shale, Blocks.shaleBoulder, 0.02))){{ .decor(new Decoration(Blocks.shale, Blocks.shaleBoulder, 0.02))){{
loadout = Loadouts.basicFoundation; loadout = Loadouts.basicFoundation;
startingItems = ItemStack.list(Items.copper, 250, Items.lead, 100); startingItems = list(copper, 250, lead, 100);
conditionWave = 15; conditionWave = 15;
launchPeriod = 10; launchPeriod = 10;
zoneRequirements = ZoneRequirement.with(ruinousShores, 20); requirements = with(new ZoneWave(ruinousShores, 20));
blockRequirements = new Block[]{Blocks.coalCentrifuge, Blocks.conduit, Blocks.wave}; resources = with(copper, scrap, lead, coal, titanium, thorium, sand);
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.thorium, Items.sand}; requirements = with(
new ZoneWave(ruinousShores, 20),
new Unlock(Blocks.coalCentrifuge),
new Unlock(Blocks.conduit),
new Unlock(Blocks.wave)
);
}}; }};
desolateRift = new Zone("desolateRift", new MapGenerator("desolateRift")){{ desolateRift = new Zone("desolateRift", new MapGenerator("desolateRift")){{
loadout = Loadouts.basicNucleus; loadout = Loadouts.basicNucleus;
baseLaunchCost = ItemStack.with(); startingItems = list(copper, 1000, lead, 1000, Items.graphite, 250, titanium, 250, Items.silicon, 250);
startingItems = ItemStack.list(Items.copper, 1000, Items.lead, 1000, Items.graphite, 250, Items.titanium, 250, Items.silicon, 250);
conditionWave = 3; conditionWave = 3;
launchPeriod = 2; launchPeriod = 2;
zoneRequirements = ZoneRequirement.with(tarFields, 20); resources = with(copper, scrap, lead, coal, titanium, sand, thorium);
blockRequirements = new Block[]{Blocks.thermalGenerator, Blocks.thoriumReactor}; requirements = with(
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.sand, Items.thorium}; new ZoneWave(tarFields, 20),
new Unlock(Blocks.thermalGenerator),
new Unlock(Blocks.thoriumReactor)
);
}}; }};
/* /*
@@ -174,21 +218,23 @@ public class Zones implements ContentList{
startingItems = ItemStack.list(Items.copper, 2000, Items.lead, 2000, Items.graphite, 500, Items.titanium, 500, Items.silicon, 500); startingItems = ItemStack.list(Items.copper, 2000, Items.lead, 2000, Items.graphite, 500, Items.titanium, 500, Items.silicon, 500);
conditionWave = 3; conditionWave = 3;
launchPeriod = 2; launchPeriod = 2;
zoneRequirements = ZoneRequirement.with(stainedMountains, 40); requirements = with(stainedMountains, 40);
blockRequirements = new Block[]{Blocks.thermalGenerator}; blockRequirements = new Block[]{Blocks.thermalGenerator};
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand}; resources = Array.with(Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand};
}};*/ }};*/
nuclearComplex = new Zone("nuclearComplex", new MapGenerator("nuclearProductionComplex", 1) nuclearComplex = new Zone("nuclearComplex", new MapGenerator("nuclearProductionComplex", 1)
.decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.01))){{ .decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.01))){{
loadout = Loadouts.basicNucleus; loadout = Loadouts.basicNucleus;
baseLaunchCost = ItemStack.with(); startingItems = list(copper, 1250, lead, 1500, Items.silicon, 400, Items.metaglass, 250);
startingItems = ItemStack.list(Items.copper, 1250, Items.lead, 1500, Items.silicon, 400, Items.metaglass, 250);
conditionWave = 30; conditionWave = 30;
launchPeriod = 15; launchPeriod = 15;
zoneRequirements = ZoneRequirement.with(fungalPass, 8); resources = with(copper, scrap, lead, coal, titanium, thorium, sand);
blockRequirements = new Block[]{Blocks.thermalGenerator, Blocks.laserDrill}; requirements = with(
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.thorium, Items.sand}; new Launched(fungalPass),
new Unlock(Blocks.thermalGenerator),
new Unlock(Blocks.laserDrill)
);
}}; }};
/* /*
@@ -198,9 +244,9 @@ public class Zones implements ContentList{
startingItems = ItemStack.list(Items.copper, 2000, Items.lead, 2000, Items.graphite, 500, Items.titanium, 500, Items.silicon, 500); startingItems = ItemStack.list(Items.copper, 2000, Items.lead, 2000, Items.graphite, 500, Items.titanium, 500, Items.silicon, 500);
conditionWave = 3; conditionWave = 3;
launchPeriod = 2; launchPeriod = 2;
zoneRequirements = ZoneRequirement.with(nuclearComplex, 40); requirements = with(nuclearComplex, 40);
blockRequirements = new Block[]{Blocks.thermalGenerator}; blockRequirements = new Block[]{Blocks.thermalGenerator};
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.thorium}; resources = Array.with(Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.thorium};
}};*/ }};*/
} }
} }

View File

@@ -11,6 +11,7 @@ import io.anuke.mindustry.type.*;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
import static io.anuke.arc.Core.files; import static io.anuke.arc.Core.files;
import static io.anuke.mindustry.Vars.mods;
/** /**
* Loads all game content. * Loads all game content.
@@ -41,6 +42,14 @@ public class ContentLoader{
new LegacyColorMapper(), new LegacyColorMapper(),
}; };
/** Clears all initialized content.*/
public void clear(){
contentNameMap = new ObjectMap[ContentType.values().length];
contentMap = new Array[ContentType.values().length];
initialization = new ObjectSet<>();
loaded = false;
}
/** Creates all content types. */ /** Creates all content types. */
public void createContent(){ public void createContent(){
if(loaded){ if(loaded){
@@ -57,20 +66,11 @@ public class ContentLoader{
list.load(); list.load();
} }
for(ContentType type : ContentType.values()){ if(mods != null){
mods.loadContent();
for(Content c : contentMap[type.ordinal()]){
if(c instanceof MappableContent){
String name = ((MappableContent)c).name;
if(contentNameMap[type.ordinal()].containsKey(name)){
throw new IllegalArgumentException("Two content objects cannot have the same name! (issue: '" + name + "')");
}
contentNameMap[type.ordinal()].put(name, (MappableContent)c);
}
}
} }
//set up ID mapping //check up ID mapping, make sure it's linear
for(Array<Content> arr : contentMap){ for(Array<Content> arr : contentMap){
for(int i = 0; i < arr.size; i++){ for(int i = 0; i < arr.size; i++){
int id = arr.get(i).id; int id = arr.get(i).id;
@@ -109,6 +109,7 @@ public class ContentLoader{
for(ContentType type : ContentType.values()){ for(ContentType type : ContentType.values()){
for(Content content : contentMap[type.ordinal()]){ for(Content content : contentMap[type.ordinal()]){
//TODO catch error and display it per mod
callable.accept(content); callable.accept(content);
} }
} }
@@ -138,6 +139,14 @@ public class ContentLoader{
public void handleContent(Content content){ public void handleContent(Content content){
contentMap[content.getContentType().ordinal()].add(content); contentMap[content.getContentType().ordinal()].add(content);
}
public void handleMappableContent(MappableContent content){
if(contentNameMap[content.getContentType().ordinal()].containsKey(content.name)){
throw new IllegalArgumentException("Two content objects cannot have the same name! (issue: '" + content.name + "')");
}
contentNameMap[content.getContentType().ordinal()].put(content.name, content);
} }
public void setTemporaryMapper(MappableContent[][] temporaryMapper){ public void setTemporaryMapper(MappableContent[][] temporaryMapper){

View File

@@ -2,6 +2,8 @@ package io.anuke.mindustry.core;
import io.anuke.arc.*; import io.anuke.arc.*;
import io.anuke.arc.assets.*; import io.anuke.arc.assets.*;
import io.anuke.arc.audio.*;
import io.anuke.arc.collection.*;
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.arc.input.*; import io.anuke.arc.input.*;
@@ -54,6 +56,9 @@ public class Control implements ApplicationListener, Loadable{
Events.on(StateChangeEvent.class, event -> { Events.on(StateChangeEvent.class, event -> {
if((event.from == State.playing && event.to == State.menu) || (event.from == State.menu && event.to != State.menu)){ if((event.from == State.playing && event.to == State.menu) || (event.from == State.menu && event.to != State.menu)){
Time.runTask(5f, platform::updateRPC); Time.runTask(5f, platform::updateRPC);
for(Sound sound : assets.getAll(Sound.class, new Array<>())){
sound.stop();
}
} }
}); });
@@ -91,6 +96,7 @@ public class Control implements ApplicationListener, Loadable{
hiscore = true; hiscore = true;
world.getMap().setHighScore(state.wave); world.getMap().setHighScore(state.wave);
} }
Sounds.wave.play(); Sounds.wave.play();
}); });
@@ -145,11 +151,15 @@ public class Control implements ApplicationListener, Loadable{
}); });
Events.on(ZoneRequireCompleteEvent.class, e -> { Events.on(ZoneRequireCompleteEvent.class, e -> {
ui.hudfrag.showToast(Core.bundle.format("zone.requirement.complete", state.wave, e.zone.localizedName)); if(e.objective.display() != null){
ui.hudfrag.showToast(Core.bundle.format("zone.requirement.complete", e.zoneForMet.localizedName, e.objective.display()));
}
}); });
Events.on(ZoneConfigureCompleteEvent.class, e -> { Events.on(ZoneConfigureCompleteEvent.class, e -> {
ui.hudfrag.showToast(Core.bundle.format("zone.config.complete", e.zone.configureWave)); if(e.zone.configureObjective.display() != null){
ui.hudfrag.showToast(Core.bundle.format("zone.config.unlocked", e.zone.configureObjective.display()));
}
}); });
Events.on(Trigger.newGame, () -> { Events.on(Trigger.newGame, () -> {
@@ -165,6 +175,12 @@ public class Control implements ApplicationListener, Loadable{
Effects.shake(5f, 5f, core); Effects.shake(5f, 5f, core);
}); });
}); });
Events.on(UnitDestroyEvent.class, e -> {
if(e.unit instanceof BaseUnit && world.isZone()){
data.unlockContent(((BaseUnit)e.unit).getType());
}
});
} }
@Override @Override
@@ -388,7 +404,10 @@ public class Control implements ApplicationListener, Loadable{
saves.update(); saves.update();
//update and load any requested assets //update and load any requested assets
assets.update(); try{
assets.update();
}catch(Exception ignored){
}
input.updateState(); input.updateState();
@@ -397,6 +416,7 @@ public class Control implements ApplicationListener, Loadable{
music.update(); music.update();
loops.update(); loops.update();
Time.updateGlobal();
if(Core.input.keyTap(Binding.fullscreen)){ if(Core.input.keyTap(Binding.fullscreen)){
boolean full = settings.getBool("fullscreen"); boolean full = settings.getBool("fullscreen");

View File

@@ -0,0 +1,34 @@
package io.anuke.mindustry.core;
import io.anuke.arc.*;
import io.anuke.arc.assets.loaders.*;
import io.anuke.arc.collection.*;
import io.anuke.arc.files.*;
/** Handles files in a modded context. */
public class FileTree implements FileHandleResolver{
private ObjectMap<String, FileHandle> files = new ObjectMap<>();
public void addFile(String path, FileHandle f){
files.put(path, f);
}
/** Gets an asset file.*/
public FileHandle get(String path){
if(files.containsKey(path)){
return files.get(path);
}else{
return Core.files.internal(path);
}
}
/** Clears all mod files.*/
public void clear(){
files.clear();
}
@Override
public FileHandle resolve(String fileName){
return get(fileName);
}
}

View File

@@ -2,7 +2,6 @@ package io.anuke.mindustry.core;
import io.anuke.annotations.Annotations.*; import io.anuke.annotations.Annotations.*;
import io.anuke.arc.*; import io.anuke.arc.*;
import io.anuke.arc.collection.ObjectSet.*;
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.*;
@@ -16,6 +15,7 @@ import io.anuke.mindustry.type.*;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.blocks.*;
import io.anuke.mindustry.world.blocks.BuildBlock.*; import io.anuke.mindustry.world.blocks.BuildBlock.*;
import io.anuke.mindustry.world.blocks.power.*;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
@@ -31,19 +31,24 @@ public class Logic implements ApplicationListener{
public Logic(){ public Logic(){
Events.on(WaveEvent.class, event -> { Events.on(WaveEvent.class, event -> {
for(Player p : playerGroup.all()){
p.respawns = state.rules.respawns;
}
if(world.isZone()){ if(world.isZone()){
world.getZone().updateWave(state.wave); world.getZone().updateWave(state.wave);
} }
for (Player p : playerGroup.all()) {
p.respawns = state.rules.respawns;
}
}); });
Events.on(BlockDestroyEvent.class, event -> { Events.on(BlockDestroyEvent.class, event -> {
//blocks that get broken are appended to the team's broken block queue //blocks that get broken are appended to the team's broken block queue
Tile tile = event.tile; Tile tile = event.tile;
Block block = tile.block(); Block block = tile.block();
//skip null entities or nukes, for obvious reasons
if(tile.entity == null || tile.block() instanceof NuclearReactor) return;
if(block instanceof BuildBlock){ if(block instanceof BuildBlock){
BuildEntity entity = tile.entity(); BuildEntity entity = tile.entity();
//update block to reflect the fact that something was being constructed //update block to reflect the fact that something was being constructed
@@ -56,7 +61,33 @@ public class Logic implements ApplicationListener{
} }
TeamData data = state.teams.get(tile.getTeam()); TeamData data = state.teams.get(tile.getTeam());
data.brokenBlocks.addFirst(BrokenBlock.get(tile.x, tile.y, tile.rotation(), block.id));
//remove existing blocks that have been placed here.
//painful O(n) iteration + copy
for(int i = 0; i < data.brokenBlocks.size; i++){
BrokenBlock b = data.brokenBlocks.get(i);
if(b.x == tile.x && b.y == tile.y){
data.brokenBlocks.removeIndex(i);
break;
}
}
data.brokenBlocks.addFirst(new BrokenBlock(tile.x, tile.y, tile.rotation(), block.id, tile.entity.config()));
});
Events.on(BlockBuildEndEvent.class, event -> {
if(!event.breaking){
TeamData data = state.teams.get(event.team);
//painful O(n) iteration + copy
for(int i = 0; i < data.brokenBlocks.size; i++){
BrokenBlock b = data.brokenBlocks.get(i);
if(b.x == event.tile.x && b.y == event.tile.y){
data.brokenBlocks.removeIndex(i);
break;
}
}
}
}); });
} }
@@ -104,8 +135,7 @@ public class Logic implements ApplicationListener{
public void runWave(){ public void runWave(){
spawner.spawnEnemies(); spawner.spawnEnemies();
state.wave++; state.wave++;
state.wavetime = world.isZone() && world.getZone().isBossWave(state.wave) ? state.rules.waveSpacing * state.rules.bossWaveMultiplier : state.wavetime = world.isZone() && world.getZone().isLaunchWave(state.wave) ? state.rules.waveSpacing * state.rules.launchWaveMultiplier : state.rules.waveSpacing;
world.isZone() && world.getZone().isLaunchWave(state.wave) ? state.rules.waveSpacing * state.rules.launchWaveMultiplier : state.rules.waveSpacing;
Events.fire(new WaveEvent()); Events.fire(new WaveEvent());
} }
@@ -144,13 +174,18 @@ public class Logic implements ApplicationListener{
ui.hudfrag.showLaunch(); ui.hudfrag.showLaunch();
} }
for(Tile tile : new ObjectSetIterator<>(state.teams.get(defaultTeam).cores)){ for(Tile tile : state.teams.get(defaultTeam).cores){
Effects.effect(Fx.launch, tile); Effects.effect(Fx.launch, tile);
} }
if(world.getZone() != null){
world.getZone().setLaunched();
}
Time.runTask(30f, () -> { Time.runTask(30f, () -> {
for(Tile tile : new ObjectSetIterator<>(state.teams.get(defaultTeam).cores)){ for(Tile tile : state.teams.get(defaultTeam).cores){
for(Item item : content.items()){ for(Item item : content.items()){
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));
} }
world.removeBlock(tile); world.removeBlock(tile);

View File

@@ -76,6 +76,7 @@ public class NetClient implements ApplicationListener{
ConnectPacket c = new ConnectPacket(); ConnectPacket c = new ConnectPacket();
c.name = player.name; c.name = player.name;
c.mods = mods.getModStrings();
c.mobile = mobile; c.mobile = mobile;
c.versionType = Version.type; c.versionType = Version.type;
c.color = Color.rgba8888(player.color); c.color = Color.rgba8888(player.color);
@@ -235,7 +236,7 @@ public class NetClient implements ApplicationListener{
netClient.disconnectQuietly(); netClient.disconnectQuietly();
state.set(State.menu); state.set(State.menu);
logic.reset(); logic.reset();
ui.showText("$disconnect", reason); ui.showText("$disconnect", reason, Align.left);
ui.loadfrag.hide(); ui.loadfrag.hide();
} }
@@ -329,6 +330,11 @@ public class NetClient implements ApplicationListener{
@Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true) @Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true)
public static void onStateSnapshot(float waveTime, int wave, int enemies, short coreDataLen, byte[] coreData){ public static void onStateSnapshot(float waveTime, int wave, int enemies, short coreDataLen, byte[] coreData){
try{ try{
if(wave > state.wave){
state.wave = wave;
Events.fire(new WaveEvent());
}
state.wavetime = waveTime; state.wavetime = waveTime;
state.wave = wave; state.wave = wave;
state.enemies = enemies; state.enemies = enemies;

View File

@@ -94,16 +94,28 @@ public class NetServer implements ApplicationListener{
return; return;
} }
if(admins.isIDBanned(uuid)){
con.kick(KickReason.banned);
return;
}
if(admins.getPlayerLimit() > 0 && playerGroup.size() >= admins.getPlayerLimit()){ if(admins.getPlayerLimit() > 0 && playerGroup.size() >= admins.getPlayerLimit()){
con.kick(KickReason.playerLimit); con.kick(KickReason.playerLimit);
return; return;
} }
Array<String> extraMods = packet.mods.copy();
Array<String> missingMods = mods.getIncompatibility(extraMods);
if(!extraMods.isEmpty() || !missingMods.isEmpty()){
//can't easily be localized since kick reasons can't have formatted text with them
StringBuilder result = new StringBuilder("[accent]Incompatible mods![]\n\n");
if(!missingMods.isEmpty()){
result.append("Missing:[lightgray]\n").append("> ").append(missingMods.toString("\n> "));
result.append("[]\n");
}
if(!extraMods.isEmpty()){
result.append("Unnecessary mods:[lightgray]\n").append("> ").append(extraMods.toString("\n> "));
}
con.kick(result.toString());
}
if(!admins.isWhitelisted(packet.uuid, packet.usid)){ if(!admins.isWhitelisted(packet.uuid, packet.usid)){
info.adminUsid = packet.usid; info.adminUsid = packet.usid;
info.lastName = packet.name; info.lastName = packet.name;
@@ -200,6 +212,11 @@ public class NetServer implements ApplicationListener{
registerCommands(); registerCommands();
} }
@Override
public void init(){
mods.each(mod -> mod.registerClientCommands(clientCommands));
}
private void registerCommands(){ private void registerCommands(){
clientCommands.<Player>register("help", "[page]", "Lists all commands.", (args, player) -> { clientCommands.<Player>register("help", "[page]", "Lists all commands.", (args, player) -> {
if(args.length > 0 && !Strings.canParseInt(args[0])){ if(args.length > 0 && !Strings.canParseInt(args[0])){
@@ -262,7 +279,7 @@ public class NetServer implements ApplicationListener{
} }
boolean checkPass(){ boolean checkPass(){
if(votes >= votesRequired() && target.isAdded() && target.con.isConnected()){ if(votes >= votesRequired()){
Call.sendMessage(Strings.format("[orange]Vote passed.[scarlet] {0}[orange] will be banned from the server for {1} minutes.", target.name, (kickDuration/60))); Call.sendMessage(Strings.format("[orange]Vote passed.[scarlet] {0}[orange] will be banned from the server for {1} minutes.", target.name, (kickDuration/60)));
target.getInfo().lastKicked = Time.millis() + kickDuration*1000; target.getInfo().lastKicked = Time.millis() + kickDuration*1000;
playerGroup.all().each(p -> p.uuid != null && p.uuid.equals(target.uuid), p -> p.con.kick(KickReason.vote)); playerGroup.all().each(p -> p.uuid != null && p.uuid.equals(target.uuid), p -> p.con.kick(KickReason.vote));
@@ -335,6 +352,11 @@ public class NetServer implements ApplicationListener{
if(currentlyKicking[0] == null){ if(currentlyKicking[0] == null){
player.sendMessage("[scarlet]Nobody is being voted on."); player.sendMessage("[scarlet]Nobody is being voted on.");
}else{ }else{
if(player.isLocal){
player.sendMessage("Local players can't vote. Kick the player yourself instead.");
return;
}
//hosts can vote all they want //hosts can vote all they want
if(player.uuid != null && (currentlyKicking[0].voted.contains(player.uuid) || currentlyKicking[0].voted.contains(admins.getInfo(player.uuid).lastIP))){ if(player.uuid != null && (currentlyKicking[0].voted.contains(player.uuid) || currentlyKicking[0].voted.contains(admins.getInfo(player.uuid).lastIP))){
player.sendMessage("[scarlet]You've already voted. Sit down."); player.sendMessage("[scarlet]You've already voted. Sit down.");

View File

@@ -31,11 +31,20 @@ public interface Platform{
return Array.with(); return Array.with();
} }
/** Steam: Return external workshop mods to be loaded.*/
default Array<FileHandle> getExternalMods(){
return Array.with();
}
/** Steam: View a map listing on the workshop.*/ /** Steam: View a map listing on the workshop.*/
default void viewMapListing(Map map){} default void viewMapListing(Map map){}
/** Steam: View a map listing on the workshop.*/ /** Steam: View a listing on the workshop.*/
default void viewMapListing(String mapid){} default void viewListing(String mapid){}
/** Steam: View map workshop info, removing the map ID tag if its listing is deleted.
* Also presents the option to update the map. */
default void viewMapListingInfo(Map map){}
/** Steam: Open workshop for maps.*/ /** Steam: Open workshop for maps.*/
default void openWorkshop(){} default void openWorkshop(){}

View File

@@ -18,12 +18,10 @@ import io.anuke.mindustry.entities.effect.*;
import io.anuke.mindustry.entities.effect.GroundEffectEntity.*; import io.anuke.mindustry.entities.effect.GroundEffectEntity.*;
import io.anuke.mindustry.entities.traits.*; import io.anuke.mindustry.entities.traits.*;
import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.entities.type.EffectEntity;
import io.anuke.mindustry.game.EventType.*;
import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.*;
import io.anuke.mindustry.game.EventType.*;
import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.input.*; import io.anuke.mindustry.input.*;
import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.blocks.defense.ForceProjector.*; import io.anuke.mindustry.world.blocks.defense.ForceProjector.*;
import static io.anuke.arc.Core.*; import static io.anuke.arc.Core.*;
@@ -240,6 +238,8 @@ public class Renderer implements ApplicationListener{
blocks.drawBlocks(Layer.block); blocks.drawBlocks(Layer.block);
blocks.drawFog(); blocks.drawFog();
blocks.drawBroken();
Draw.shader(Shaders.blockbuild, true); Draw.shader(Shaders.blockbuild, true);
blocks.drawBlocks(Layer.placement); blocks.drawBlocks(Layer.placement);
Draw.shader(); Draw.shader();
@@ -308,7 +308,7 @@ public class Renderer implements ApplicationListener{
float fract = landTime / Fx.coreLand.lifetime; float fract = landTime / Fx.coreLand.lifetime;
TileEntity entity = player.getClosestCore(); TileEntity entity = player.getClosestCore();
TextureRegion reg = entity.block.icon(Block.Icon.full); TextureRegion reg = entity.block.icon(Cicon.full);
float scl = Scl.scl(4f) / camerascale; float scl = Scl.scl(4f) / camerascale;
float s = reg.getWidth() * Draw.scl * scl * 4f * fract; float s = reg.getWidth() * Draw.scl * scl * 4f * fract;

View File

@@ -68,6 +68,7 @@ public class UI implements ApplicationListener, Loadable{
public DeployDialog deploy; public DeployDialog deploy;
public TechTreeDialog tech; public TechTreeDialog tech;
public MinimapDialog minimap; public MinimapDialog minimap;
public ModsDialog mods;
public Cursor drillCursor, unloadCursor; public Cursor drillCursor, unloadCursor;
@@ -108,6 +109,7 @@ public class UI implements ApplicationListener, Loadable{
ClickListener.clicked = () -> Sounds.press.play(); ClickListener.clicked = () -> Sounds.press.play();
Colors.put("accent", Pal.accent); Colors.put("accent", Pal.accent);
Colors.put("unlaunched", Color.valueOf("8982ed"));
Colors.put("highlight", Pal.accent.cpy().lerp(Color.white, 0.3f)); Colors.put("highlight", Pal.accent.cpy().lerp(Color.white, 0.3f));
Colors.put("stat", Pal.stat); Colors.put("stat", Pal.stat);
loadExtraCursors(); loadExtraCursors();
@@ -222,6 +224,7 @@ public class UI implements ApplicationListener, Loadable{
deploy = new DeployDialog(); deploy = new DeployDialog();
tech = new TechTreeDialog(); tech = new TechTreeDialog();
minimap = new MinimapDialog(); minimap = new MinimapDialog();
mods = new ModsDialog();
Group group = Core.scene.root; Group group = Core.scene.root;
@@ -235,7 +238,6 @@ public class UI implements ApplicationListener, Loadable{
Core.scene.add(menuGroup); Core.scene.add(menuGroup);
Core.scene.add(hudGroup); Core.scene.add(hudGroup);
control.input.getFrag().build(hudGroup);
hudfrag.build(hudGroup); hudfrag.build(hudGroup);
menufrag.build(menuGroup); menufrag.build(menuGroup);
chatfrag.container().build(hudGroup); chatfrag.container().build(hudGroup);
@@ -281,7 +283,7 @@ public class UI implements ApplicationListener, Loadable{
new Dialog(titleText){{ new Dialog(titleText){{
cont.margin(30).add(dtext).padRight(6f); cont.margin(30).add(dtext).padRight(6f);
TextFieldFilter filter = inumeric ? TextFieldFilter.digitsOnly : (f, c) -> true; TextFieldFilter filter = inumeric ? TextFieldFilter.digitsOnly : (f, c) -> true;
TextField field = cont.addField(def, t -> {}).size(170f, 50f).get(); TextField field = cont.addField(def, t -> {}).size(330f, 50f).get();
field.setFilter((f, c) -> field.getText().length() < textLength && filter.acceptChar(f, c)); field.setFilter((f, c) -> field.getText().length() < textLength && filter.acceptChar(f, c));
buttons.defaults().size(120, 54).pad(4); buttons.defaults().size(120, 54).pad(4);
buttons.addButton("$ok", () -> { buttons.addButton("$ok", () -> {
@@ -336,6 +338,7 @@ public class UI implements ApplicationListener, Loadable{
} }
public void showException(String text, Throwable exc){ public void showException(String text, Throwable exc){
loadfrag.hide();
new Dialog(""){{ new Dialog(""){{
String message = Strings.getFinalMesage(exc); String message = Strings.getFinalMesage(exc);
@@ -358,11 +361,15 @@ public class UI implements ApplicationListener, Loadable{
} }
public void showText(String titleText, String text){ public void showText(String titleText, String text){
showText(titleText, text, Align.center);
}
public void showText(String titleText, String text, int align){
new Dialog(titleText){{ new Dialog(titleText){{
cont.row(); cont.row();
cont.addImage().width(400f).pad(2).colspan(2).height(4f).color(Pal.accent); cont.addImage().width(400f).pad(2).colspan(2).height(4f).color(Pal.accent);
cont.row(); cont.row();
cont.add(text).width(400f).wrap().get().setAlignment(Align.center, Align.center); cont.add(text).width(400f).wrap().get().setAlignment(align, align);
cont.row(); cont.row();
buttons.addButton("$ok", this::hide).size(90, 50).pad(4); buttons.addButton("$ok", this::hide).size(90, 50).pad(4);
}}.show(); }}.show();
@@ -410,6 +417,34 @@ public class UI implements ApplicationListener, Loadable{
dialog.show(); dialog.show();
} }
public void showCustomConfirm(String title, String text, String yes, String no, Runnable confirmed){
FloatingDialog dialog = new FloatingDialog(title);
dialog.cont.add(text).width(500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center);
dialog.buttons.defaults().size(200f, 54f).pad(2f);
dialog.setFillParent(false);
dialog.buttons.addButton(no, dialog::hide);
dialog.buttons.addButton(yes, () -> {
dialog.hide();
confirmed.run();
});
dialog.keyDown(KeyCode.ESCAPE, dialog::hide);
dialog.keyDown(KeyCode.BACK, dialog::hide);
dialog.show();
}
public void showOkText(String title, String text, Runnable confirmed){
FloatingDialog dialog = new FloatingDialog(title);
dialog.cont.add(text).width(500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center);
dialog.buttons.defaults().size(200f, 54f).pad(2f);
dialog.setFillParent(false);
dialog.buttons.addButton("$ok", () -> {
dialog.hide();
confirmed.run();
});
dialog.show();
}
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]mil[]";

View File

@@ -1,11 +1,11 @@
package io.anuke.mindustry.core; package io.anuke.mindustry.core;
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.arc.math.*; import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*; import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.arc.util.ArcAnnotate.*;
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.game.EventType.*; import io.anuke.mindustry.game.EventType.*;
@@ -82,7 +82,8 @@ public class World{
return height()*tilesize; return height()*tilesize;
} }
public @Nullable Tile tile(int pos){ public @Nullable
Tile tile(int pos){
return tiles == null ? null : tile(Pos.x(pos), Pos.y(pos)); return tiles == null ? null : tile(Pos.x(pos), Pos.y(pos));
} }
@@ -271,6 +272,7 @@ public class World{
} }
public void removeBlock(Tile tile){ public void removeBlock(Tile tile){
if(tile == null) return;
tile.link().getLinkedTiles(other -> other.setBlock(Blocks.air)); tile.link().getLinkedTiles(other -> other.setBlock(Blocks.air));
} }

View File

@@ -15,6 +15,7 @@ import io.anuke.arc.scene.style.*;
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.ArcAnnotate.*;
import io.anuke.mindustry.*; import io.anuke.mindustry.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
import io.anuke.mindustry.core.GameState.*; import io.anuke.mindustry.core.GameState.*;
@@ -23,7 +24,7 @@ import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.io.*; import io.anuke.mindustry.io.*;
import io.anuke.mindustry.maps.*; import io.anuke.mindustry.maps.*;
import io.anuke.mindustry.ui.Styles; import io.anuke.mindustry.ui.*;
import io.anuke.mindustry.ui.dialogs.*; import io.anuke.mindustry.ui.dialogs.*;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.blocks.*;
@@ -147,13 +148,19 @@ public class MapEditorDialog extends Dialog implements Disposable{
if(steam){ if(steam){
menu.cont.addImageTextButton("$editor.publish.workshop", Icon.linkSmall, () -> { menu.cont.addImageTextButton("$editor.publish.workshop", Icon.linkSmall, () -> {
if(editor.getTags().containsKey("steamid")){ Map builtin = maps.all().find(m -> m.name().equals(editor.getTags().get("name", "").trim()));
platform.viewMapListing(editor.getTags().get("steamid")); if(editor.getTags().containsKey("steamid") && builtin != null && !builtin.custom){
platform.viewListing(editor.getTags().get("steamid"));
return; return;
} }
Map map = save(); Map map = save();
if(editor.getTags().containsKey("steamid") && map != null){
platform.viewMapListingInfo(map);
return;
}
if(map == null) return; if(map == null) return;
if(map.tags.get("description", "").length() < 4){ if(map.tags.get("description", "").length() < 4){
@@ -167,7 +174,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
} }
platform.publishMap(map); platform.publishMap(map);
}).padTop(-3).size(swidth * 2f + 10, 60f).update(b -> b.setText(editor.getTags().containsKey("steamid") ? "$view.workshop" : "$editor.publish.workshop")); }).padTop(-3).size(swidth * 2f + 10, 60f).update(b -> b.setText(editor.getTags().containsKey("steamid") ? editor.getTags().get("author").equals(player.name) ? "$workshop.listing" : "$view.workshop" : "$editor.publish.workshop"));
menu.cont.row(); menu.cont.row();
} }
@@ -208,14 +215,6 @@ public class MapEditorDialog extends Dialog implements Disposable{
return; return;
} }
Vector2 v = pane.stageToLocalCoordinates(Core.input.mouse());
if(v.x >= 0 && v.y >= 0 && v.x <= pane.getWidth() && v.y <= pane.getHeight()){
Core.scene.setScrollFocus(pane);
}else{
Core.scene.setScrollFocus(null);
}
if(Core.scene != null && Core.scene.getKeyboardFocus() == this){ if(Core.scene != null && Core.scene.getKeyboardFocus() == this){
doInput(); doInput();
} }
@@ -287,7 +286,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
}); });
} }
public Map save(){ public @Nullable Map save(){
boolean isEditor = state.rules.editor; boolean isEditor = state.rules.editor;
state.rules.editor = false; state.rules.editor = false;
String name = editor.getTags().get("name", "").trim(); String name = editor.getTags().get("name", "").trim();
@@ -681,6 +680,11 @@ public class MapEditorDialog extends Dialog implements Disposable{
pane = new ScrollPane(content); pane = new ScrollPane(content);
pane.setFadeScrollBars(false); pane.setFadeScrollBars(false);
pane.setOverscroll(true, false); pane.setOverscroll(true, false);
pane.exited(() -> {
if(pane.hasScroll()){
Core.scene.setScrollFocus(view);
}
});
ButtonGroup<ImageButton> group = new ButtonGroup<>(); ButtonGroup<ImageButton> group = new ButtonGroup<>();
int i = 0; int i = 0;
@@ -698,7 +702,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
}); });
for(Block block : blocksOut){ for(Block block : blocksOut){
TextureRegion region = block.icon(Block.Icon.medium); TextureRegion region = block.icon(Cicon.medium);
if(!Core.atlas.isFound(region)) continue; if(!Core.atlas.isFound(region)) continue;

View File

@@ -388,7 +388,7 @@ public class MapGenerateDialog extends FloatingDialog{
GenTile tile = buffer1[px][py]; GenTile tile = buffer1[px][py];
color = MapIO.colorFor(content.block(tile.floor), content.block(tile.block), content.block(tile.ore), Team.derelict); color = MapIO.colorFor(content.block(tile.floor), content.block(tile.block), content.block(tile.ore), Team.derelict);
} }
pixmap.drawPixel(px, pixmap.getHeight() - 1 - py, color); pixmap.draw(px, pixmap.getHeight() - 1 - py, color);
} }
} }

View File

@@ -59,18 +59,25 @@ public class MapInfoDialog extends FloatingDialog{
t.row(); t.row();
t.add("$editor.rules").padRight(8).left(); t.add("$editor.rules").padRight(8).left();
t.addButton("$edit", () -> ruleInfo.show(Vars.state.rules, () -> Vars.state.rules = new Rules())).left().width(200f); t.addButton("$edit", () -> {
ruleInfo.show(Vars.state.rules, () -> Vars.state.rules = new Rules());
hide();
}).left().width(200f);
t.row(); t.row();
t.add("$editor.waves").padRight(8).left(); t.add("$editor.waves").padRight(8).left();
t.addButton("$edit", waveInfo::show).left().width(200f); t.addButton("$edit", () -> {
waveInfo.show();
hide();
}).left().width(200f);
t.row(); t.row();
t.add("$editor.generation").padRight(8).left(); t.add("$editor.generation").padRight(8).left();
t.addButton("$edit", t.addButton("$edit", () -> {
() -> generate.show(Vars.maps.readFilters(editor.getTags().get("genfilters", "")), generate.show(Vars.maps.readFilters(editor.getTags().get("genfilters", "")),
filters -> editor.getTags().put("genfilters", JsonIO.write(filters))) filters -> editor.getTags().put("genfilters", JsonIO.write(filters)));
).left().width(200f); hide();
}).left().width(200f);
name.change(); name.change();
description.change(); description.change();

View File

@@ -46,7 +46,7 @@ public class MapResizeDialog extends FloatingDialog{
buttons.defaults().size(200f, 50f); buttons.defaults().size(200f, 50f);
buttons.addButton("$cancel", this::hide); buttons.addButton("$cancel", this::hide);
buttons.addButton("$editor.resize", () -> { buttons.addButton("$ok", () -> {
cons.accept(width, height); cons.accept(width, height);
hide(); hide();
}); });

View File

@@ -56,10 +56,16 @@ public class MapView extends Element implements GestureListener{
public boolean mouseMoved(InputEvent event, float x, float y){ public boolean mouseMoved(InputEvent event, float x, float y){
mousex = x; mousex = x;
mousey = y; mousey = y;
requestScroll();
return false; return false;
} }
@Override
public void enter(InputEvent event, float x, float y, int pointer, Element fromActor){
requestScroll();
}
@Override @Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, KeyCode button){ public boolean touchDown(InputEvent event, float x, float y, int pointer, KeyCode button){
if(pointer != 0){ if(pointer != 0){

View File

@@ -140,7 +140,7 @@ public class WaveInfoDialog extends FloatingDialog{
t.margin(0).defaults().pad(3).padLeft(5f).growX().left(); t.margin(0).defaults().pad(3).padLeft(5f).growX().left();
t.addButton(b -> { t.addButton(b -> {
b.left(); b.left();
b.addImage(group.type.iconRegion).size(30f).padRight(3); b.addImage(group.type.icon(Cicon.medium)).size(32f).padRight(3);
b.add(group.type.localizedName).color(Pal.accent); b.add(group.type.localizedName).color(Pal.accent);
}, () -> showUpdate(group)).pad(-6f).padBottom(0f); }, () -> showUpdate(group)).pad(-6f).padBottom(0f);
@@ -221,7 +221,7 @@ public class WaveInfoDialog extends FloatingDialog{
for(UnitType type : content.units()){ for(UnitType type : content.units()){
dialog.cont.addButton(t -> { dialog.cont.addButton(t -> {
t.left(); t.left();
t.addImage(type.iconRegion).size(40f).padRight(2f); t.addImage(type.icon(Cicon.medium)).size(40f).padRight(2f);
t.add(type.localizedName); t.add(type.localizedName);
}, () -> { }, () -> {
lastType = type; lastType = type;
@@ -253,7 +253,7 @@ public class WaveInfoDialog extends FloatingDialog{
for(int j = 0; j < spawned.length; j++){ for(int j = 0; j < spawned.length; j++){
if(spawned[j] > 0){ if(spawned[j] > 0){
UnitType type = content.getByID(ContentType.unit, j); UnitType type = content.getByID(ContentType.unit, j);
table.addImage(type.iconRegion).size(30f).padRight(4); table.addImage(type.icon(Cicon.medium)).size(8f * 4f).padRight(4);
table.add(spawned[j] + "x").color(Color.lightGray).padRight(6); table.add(spawned[j] + "x").color(Color.lightGray).padRight(6);
table.row(); table.row();
} }

View File

@@ -0,0 +1,6 @@
package io.anuke.mindustry.entities;
public enum TargetPriority{
base,
turret
}

View File

@@ -20,6 +20,7 @@ public class Units{
private static float cdist; private static float cdist;
private static boolean boolResult; private static boolean boolResult;
/** @return whether this player can interact with a specific tile. if either of these are null, returns true.*/
public static boolean canInteract(Player player, Tile tile){ public static boolean canInteract(Player player, Tile tile){
return player == null || tile == null || tile.interactable(player.getTeam()); return player == null || tile == null || tile.interactable(player.getTeam());
} }
@@ -86,7 +87,7 @@ public class Units{
if(team == Team.derelict) return null; if(team == Team.derelict) return null;
for(Team enemy : state.teams.enemiesOf(team)){ for(Team enemy : state.teams.enemiesOf(team)){
TileEntity entity = indexer.findTile(enemy, x, y, range, pred); TileEntity entity = indexer.findTile(enemy, x, y, range, pred, true);
if(entity != null){ if(entity != null){
return entity; return entity;
} }

View File

@@ -20,6 +20,10 @@ public class ArtilleryBulletType extends BasicBulletType{
hitSound = Sounds.explosion; hitSound = Sounds.explosion;
} }
public ArtilleryBulletType(){
this(1f, 1f, "shell");
}
@Override @Override
public void update(io.anuke.mindustry.entities.type.Bullet b){ public void update(io.anuke.mindustry.entities.type.Bullet b){
super.update(b); super.update(b);

View File

@@ -22,6 +22,11 @@ public class BasicBulletType extends BulletType{
this.bulletSprite = bulletSprite; this.bulletSprite = bulletSprite;
} }
/** For mods. */
public BasicBulletType(){
this(1f, 1f, "bullet");
}
@Override @Override
public void load(){ public void load(){
backRegion = Core.atlas.find(bulletSprite + "-back"); backRegion = Core.atlas.find(bulletSprite + "-back");

View File

@@ -17,4 +17,8 @@ public class BombBulletType extends BasicBulletType{
collidesAir = false; collidesAir = false;
hitSound = Sounds.explosion; hitSound = Sounds.explosion;
} }
public BombBulletType(){
this(1f, 1f, "shell");
}
} }

View File

@@ -19,6 +19,10 @@ public abstract class FlakBulletType extends BasicBulletType{
bulletHeight = 10f; bulletHeight = 10f;
} }
public FlakBulletType(){
this(1f, 1f);
}
@Override @Override
public void update(Bullet b){ public void update(Bullet b){
super.update(b); super.update(b);

View File

@@ -0,0 +1,54 @@
package io.anuke.mindustry.entities.bullet;
import io.anuke.arc.graphics.*;
import io.anuke.arc.graphics.g2d.*;
import io.anuke.mindustry.content.*;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.blocks.*;
public class HealBulletType extends BulletType{
protected float healPercent = 3f;
public HealBulletType(float speed, float damage){
super(speed, damage);
shootEffect = Fx.shootHeal;
smokeEffect = Fx.hitLaser;
hitEffect = Fx.hitLaser;
despawnEffect = Fx.hitLaser;
collidesTeam = true;
}
public HealBulletType(){
this(1f, 1f);
}
@Override
public boolean collides(Bullet b, Tile tile){
return tile.getTeam() != b.getTeam() || tile.entity.healthf() < 1f;
}
@Override
public void draw(Bullet b){
Draw.color(Pal.heal);
Lines.stroke(2f);
Lines.lineAngleCenter(b.x, b.y, b.rot(), 7f);
Draw.color(Color.white);
Lines.lineAngleCenter(b.x, b.y, b.rot(), 3f);
Draw.reset();
}
@Override
public void hitTile(Bullet b, Tile tile){
super.hit(b);
tile = tile.link();
if(tile.entity != null && tile.getTeam() == b.getTeam() && !(tile.block() instanceof BuildBlock)){
Effects.effect(Fx.healBlockFull, Pal.heal, tile.drawx(), tile.drawy(), tile.block().size);
tile.entity.healBy(healPercent / 100f * tile.entity.maxHealth());
}
}
}

View File

@@ -3,6 +3,7 @@ package io.anuke.mindustry.entities.bullet;
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.arc.math.geom.*; import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.ArcAnnotate.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.effect.*; import io.anuke.mindustry.entities.effect.*;
@@ -13,14 +14,17 @@ import io.anuke.mindustry.world.*;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class LiquidBulletType extends BulletType{ public class LiquidBulletType extends BulletType{
Liquid liquid; @NonNull Liquid liquid;
public LiquidBulletType(Liquid liquid){ public LiquidBulletType(@Nullable Liquid liquid){
super(3.5f, 0); super(3.5f, 0);
this.liquid = liquid;
if(liquid != null){
this.liquid = liquid;
this.status = liquid.effect;
}
lifetime = 74f; lifetime = 74f;
status = liquid.effect;
statusDuration = 90f; statusDuration = 90f;
despawnEffect = Fx.none; despawnEffect = Fx.none;
hitEffect = Fx.hitLiquid; hitEffect = Fx.hitLiquid;
@@ -30,13 +34,17 @@ public class LiquidBulletType extends BulletType{
knockback = 0.55f; knockback = 0.55f;
} }
public LiquidBulletType(){
this(null);
}
@Override @Override
public float range(){ public float range(){
return speed * lifetime / 2f; return speed * lifetime / 2f;
} }
@Override @Override
public void update(io.anuke.mindustry.entities.type.Bullet b){ public void update(Bullet b){
super.update(b); super.update(b);
if(liquid.canExtinguish()){ if(liquid.canExtinguish()){
@@ -50,7 +58,7 @@ public class LiquidBulletType extends BulletType{
} }
@Override @Override
public void draw(io.anuke.mindustry.entities.type.Bullet b){ public void draw(Bullet b){
Draw.color(liquid.color, Color.white, b.fout() / 100f); Draw.color(liquid.color, Color.white, b.fout() / 100f);
Fill.circle(b.x, b.y, 0.5f + b.fout() * 2.5f); Fill.circle(b.x, b.y, 0.5f + b.fout() * 2.5f);

View File

@@ -23,6 +23,10 @@ public class MissileBulletType extends BasicBulletType{
hitSound = Sounds.explosion; hitSound = Sounds.explosion;
} }
public MissileBulletType(){
this(1f, 1f, "missile");
}
@Override @Override
public void update(Bullet b){ public void update(Bullet b){
super.update(b); super.update(b);

View File

@@ -47,10 +47,8 @@ public class ItemTransfer extends TimedEntity implements DrawTrait{
@Remote(called = Loc.server) @Remote(called = Loc.server)
public static void transferItemTo(Item item, int amount, float x, float y, Tile tile){ public static void transferItemTo(Item item, int amount, float x, float y, Tile tile){
if(tile == null || tile.entity == null || tile.entity.items == null) return; if(tile == null || tile.entity == null || tile.entity.items == null) return;
if(!Units.canInteract(player, tile)) return;
for(int i = 0; i < Mathf.clamp(amount / 3, 1, 8); i++){ for(int i = 0; i < Mathf.clamp(amount / 3, 1, 8); i++){
Time.run(i * 3, () -> create(item, x, y, tile, () -> { Time.run(i * 3, () -> create(item, x, y, tile, () -> {}));
}));
} }
tile.entity.items.add(item, amount); tile.entity.items.add(item, amount);
} }

View File

@@ -1,12 +1,12 @@
package io.anuke.mindustry.entities.traits; package io.anuke.mindustry.entities.traits;
import io.anuke.annotations.Annotations.*;
import io.anuke.arc.*; import io.anuke.arc.*;
import io.anuke.arc.collection.Queue; import io.anuke.arc.collection.Queue;
import io.anuke.arc.collection.*; import io.anuke.arc.collection.*;
import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.math.*; import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*; import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.ArcAnnotate.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.mindustry.*; import io.anuke.mindustry.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
@@ -104,7 +104,11 @@ public interface BuilderTrait extends Entity, TeamTrait{
if(current.breaking){ if(current.breaking){
entity.deconstruct(unit, core, 1f / entity.buildCost * Time.delta() * getBuildPower(tile) * state.rules.buildSpeedMultiplier); entity.deconstruct(unit, core, 1f / entity.buildCost * Time.delta() * getBuildPower(tile) * state.rules.buildSpeedMultiplier);
}else{ }else{
entity.construct(unit, core, 1f / entity.buildCost * Time.delta() * getBuildPower(tile) * state.rules.buildSpeedMultiplier); if(entity.construct(unit, core, 1f / entity.buildCost * Time.delta() * getBuildPower(tile) * state.rules.buildSpeedMultiplier)){
if(current.hasConfig){
Call.onTileConfig(null, tile, current.config);
}
}
} }
current.progress = entity.progress; current.progress = entity.progress;
@@ -184,6 +188,11 @@ public interface BuilderTrait extends Entity, TeamTrait{
/** Add another build requests to the tail of the queue, if it doesn't exist there yet. */ /** Add another build requests to the tail of the queue, if it doesn't exist there yet. */
default void addBuildRequest(BuildRequest place){ default void addBuildRequest(BuildRequest place){
addBuildRequest(place, true);
}
/** Add another build requests to the queue, if it doesn't exist there yet. */
default void addBuildRequest(BuildRequest place, boolean tail){
for(BuildRequest request : buildQueue()){ for(BuildRequest request : buildQueue()){
if(request.x == place.x && request.y == place.y){ if(request.x == place.x && request.y == place.y){
return; return;
@@ -193,14 +202,19 @@ public interface BuilderTrait extends Entity, TeamTrait{
if(tile != null && tile.entity instanceof BuildEntity){ if(tile != null && tile.entity instanceof BuildEntity){
place.progress = tile.<BuildEntity>entity().progress; place.progress = tile.<BuildEntity>entity().progress;
} }
buildQueue().addLast(place); if(tail){
buildQueue().addLast(place);
}else{
buildQueue().addFirst(place);
}
} }
/** /**
* Return the build requests currently active, or the one at the top of the queue. * Return the build requests currently active, or the one at the top of the queue.
* May return null. * May return null.
*/ */
default @Nullable BuildRequest buildRequest(){ default @Nullable
BuildRequest buildRequest(){
return buildQueue().size == 0 ? null : buildQueue().first(); return buildQueue().size == 0 ? null : buildQueue().first();
} }
@@ -253,13 +267,19 @@ public interface BuilderTrait extends Entity, TeamTrait{
/** Class for storing build requests. Can be either a place or remove request. */ /** Class for storing build requests. Can be either a place or remove request. */
class BuildRequest{ class BuildRequest{
public final int x, y, rotation; public int x, y, rotation;
public final Block block; public @Nullable Block block;
public final boolean breaking; public boolean breaking;
public boolean hasConfig;
public int config;
public float progress; public float progress;
public boolean initialized; public boolean initialized;
//animation variables
public float animScale = 0f;
public float animInvalid;
/** This creates a build request. */ /** This creates a build request. */
public BuildRequest(int x, int y, int rotation, Block block){ public BuildRequest(int x, int y, int rotation, Block block){
this.x = x; this.x = x;
@@ -278,7 +298,42 @@ public interface BuilderTrait extends Entity, TeamTrait{
this.breaking = true; this.breaking = true;
} }
public Tile tile(){ public BuildRequest(){
}
public Rectangle bounds(Rectangle rect){
if(breaking){
return rect.set(-100f, -100f, 0f, 0f);
}else{
return block.bounds(x, y, rect);
}
}
public BuildRequest set(int x, int y, int rotation, Block block){
this.x = x;
this.y = y;
this.rotation = rotation;
this.block = block;
this.breaking = false;
return this;
}
public float drawx(){
return x*tilesize + block.offset();
}
public float drawy(){
return y*tilesize + block.offset();
}
public BuildRequest configure(int config){
this.config = config;
this.hasConfig = true;
return this;
}
public @Nullable Tile tile(){
return world.tile(x, y); return world.tile(x, y);
} }

View File

@@ -1,5 +1,11 @@
package io.anuke.mindustry.entities.traits; package io.anuke.mindustry.entities.traits;
import io.anuke.mindustry.entities.type.*;
public interface DamageTrait{ public interface DamageTrait{
float damage(); float damage();
default void killed(Entity other){
}
} }

View File

@@ -0,0 +1,5 @@
package io.anuke.mindustry.entities.traits;
public interface KillerTrait{
void killed(Entity other);
}

View File

@@ -6,6 +6,7 @@ import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.math.*; import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*; import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.arc.util.ArcAnnotate.*;
import io.anuke.mindustry.*; import io.anuke.mindustry.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.*;
@@ -93,7 +94,8 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
} }
} }
public @Nullable Tile getSpawner(){ public @Nullable
Tile getSpawner(){
return world.tile(spawner); return world.tile(spawner);
} }
@@ -234,7 +236,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
@Override @Override
public TextureRegion getIconRegion(){ public TextureRegion getIconRegion(){
return type.iconRegion; return type.icon(Cicon.full);
} }
@Override @Override
@@ -263,7 +265,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
@Override @Override
public boolean isFlying(){ public boolean isFlying(){
return type.isFlying; return type.flying;
} }
@Override @Override

View File

@@ -134,6 +134,13 @@ public class Bullet extends SolidEntity implements DamageTrait, ScaleTrait, Pool
return 1f; return 1f;
} }
@Override
public void killed(Entity other){
if(owner instanceof KillerTrait){
((KillerTrait)owner).killed(other);
}
}
@Override @Override
public void absorb(){ public void absorb(){
supressCollision = true; supressCollision = true;

View File

@@ -15,8 +15,12 @@ public abstract class DestructibleEntity extends SolidEntity implements HealthTr
@Override @Override
public void collision(SolidTrait other, float x, float y){ public void collision(SolidTrait other, float x, float y){
if(other instanceof DamageTrait){ if(other instanceof DamageTrait){
boolean wasDead = isDead();
onHit(other); onHit(other);
damage(((DamageTrait)other).damage()); damage(((DamageTrait)other).damage());
if(!wasDead && isDead()){
((DamageTrait)other).killed(this);
}
} }
} }

View File

@@ -10,6 +10,7 @@ import io.anuke.arc.math.geom.*;
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.ArcAnnotate.*;
import io.anuke.arc.util.pooling.*; import io.anuke.arc.util.pooling.*;
import io.anuke.mindustry.*; import io.anuke.mindustry.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
@@ -18,9 +19,7 @@ import io.anuke.mindustry.entities.*;
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.gen.*; import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.input.*; import io.anuke.mindustry.input.*;
import io.anuke.mindustry.input.InputHandler.*;
import io.anuke.mindustry.io.*; 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.*;
@@ -48,8 +47,9 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
public float baseRotation; public float baseRotation;
public float pointerX, pointerY; public float pointerX, pointerY;
public String name = "noname"; public String name = "noname";
public @Nullable String uuid, usid; public @Nullable
public boolean isAdmin, isTransferring, isShooting, isBoosting, isMobile, isTyping; String uuid, usid;
public boolean isAdmin, isTransferring, isShooting, isBoosting, isMobile, isTyping, isBuilding = true;
public float boostHeat, shootHeat, destructTime; public float boostHeat, shootHeat, destructTime;
public boolean achievedFlight; public boolean achievedFlight;
public Color color = new Color(); public Color color = new Color();
@@ -158,7 +158,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
@Override @Override
public TextureRegion getIconRegion(){ public TextureRegion getIconRegion(){
return mech.iconRegion; return mech.icon(Cicon.full);
} }
@Override @Override
@@ -279,7 +279,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
public void drawShadow(float offsetX, float offsetY){ public void drawShadow(float offsetX, float offsetY){
float scl = mech.flying ? 1f : boostHeat / 2f; float scl = mech.flying ? 1f : boostHeat / 2f;
Draw.rect(mech.iconRegion, x + offsetX * scl, y + offsetY * scl, rotation - 90); Draw.rect(getIconRegion(), x + offsetX * scl, y + offsetY * scl, rotation - 90);
} }
@Override @Override
@@ -355,7 +355,13 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
public void drawOver(){ public void drawOver(){
if(dead) return; if(dead) return;
drawMechanics(); if(isBuilding()){
if(!state.isPaused() && isBuilding){
drawBuilding();
}
}else{
drawMining();
}
} }
@Override @Override
@@ -422,57 +428,17 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
/** Draw all current build requests. Does not draw the beam effect, only the positions. */ /** Draw all current build requests. Does not draw the beam effect, only the positions. */
public void drawBuildRequests(){ public void drawBuildRequests(){
BuildRequest last = null; if(!isLocal) return;
for(BuildRequest request : buildQueue()){ for(BuildRequest request : buildQueue()){
if(request.progress > 0.01f || (buildRequest() == request && request.initialized && (dst(request.x * tilesize, request.y * tilesize) <= placeDistance || state.isEditor()))) continue; if(request.progress > 0.01f || (buildRequest() == request && request.initialized && (dst(request.x * tilesize, request.y * tilesize) <= placeDistance || state.isEditor()))) continue;
request.animScale = 1f;
if(request.breaking){ if(request.breaking){
Block block = world.ltile(request.x, request.y).block(); control.input.drawBreaking(request);
//draw removal request
Lines.stroke(2f, Pal.removeBack);
float rad = Mathf.absin(Time.time(), 7f, 1f) + block.size * tilesize / 2f - 1;
Lines.square(
request.x * tilesize + block.offset(),
request.y * tilesize + block.offset() - 1,
rad);
Draw.color(Pal.remove);
Lines.square(
request.x * tilesize + block.offset(),
request.y * tilesize + block.offset(), rad);
}else{ }else{
Draw.color(); request.block.drawRequest(request, control.input.allRequests(),
PlaceDraw draw = PlaceDraw.instance; Build.validPlace(getTeam(), request.x, request.y, request.block, request.rotation));
draw.scalex = 1;
draw.scaley = 1;
draw.rotation = request.rotation;
if(last == null){
request.block.getPlaceDraw(draw, request.rotation, request.x, request.y, request.rotation);
}else{
request.block.getPlaceDraw(draw, request.rotation, last.x - request.x, last.y - request.y, last.rotation);
}
TextureRegion region = draw.region;
Draw.rect(region,
request.x * tilesize + request.block.offset(), request.y * tilesize + request.block.offset(),
region.getWidth() * 1f * Draw.scl * draw.scalex,
region.getHeight() * 1f * Draw.scl * draw.scaley, request.block.rotate ? draw.rotation * 90 : 0);
Draw.color(Pal.accent);
for(int i = 0; i < 4; i++){
Point2 p = Geometry.d8edge[i];
float offset = -Math.max(request.block.size - 1, 0) / 2f * tilesize;
Draw.rect("block-select", request.x * tilesize + request.block.offset() + offset * p.x, request.y * tilesize + request.block.offset() + offset * p.y, i * 90);
}
Draw.color();
last = request;
} }
} }
@@ -483,6 +449,18 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
//region update methods //region update methods
@Override
public void updateMechanics(){
if(isBuilding){
updateBuilding();
}
//mine only when not building
if(buildRequest() == null){
updateMining();
}
}
@Override @Override
public void update(){ public void update(){
hitTime -= Time.delta(); hitTime -= Time.delta();
@@ -515,7 +493,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
} }
BuildRequest request = buildRequest(); BuildRequest request = buildRequest();
if(isBuilding() && request.tile() != null && (request.tile().withinDst(x, y, placeDistance) || state.isEditor())){ if(isBuilding() && isBuilding && request.tile() != null && (request.tile().withinDst(x, y, placeDistance) || state.isEditor())){
loops.play(Sounds.build, request.tile(), 0.75f); loops.play(Sounds.build, request.tile(), 0.75f);
} }
@@ -815,6 +793,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
placeQueue.clear(); placeQueue.clear();
dead = true; dead = true;
lastText = null; lastText = null;
isBuilding = true;
textFadeTime = 0f; textFadeTime = 0f;
target = null; target = null;
moveTarget = null; moveTarget = null;
@@ -908,7 +887,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
public void write(DataOutput buffer) throws IOException{ public void write(DataOutput buffer) throws IOException{
super.writeSave(buffer, !isLocal); super.writeSave(buffer, !isLocal);
TypeIO.writeStringData(buffer, name); TypeIO.writeStringData(buffer, name);
buffer.writeByte(Pack.byteValue(isAdmin) | (Pack.byteValue(dead) << 1) | (Pack.byteValue(isBoosting) << 2) | (Pack.byteValue(isTyping) << 3)); buffer.writeByte(Pack.byteValue(isAdmin) | (Pack.byteValue(dead) << 1) | (Pack.byteValue(isBoosting) << 2) | (Pack.byteValue(isTyping) << 3)| (Pack.byteValue(isBuilding) << 4));
buffer.writeInt(Color.rgba8888(color)); buffer.writeInt(Color.rgba8888(color));
buffer.writeByte(mech.id); buffer.writeByte(mech.id);
buffer.writeInt(mining == null ? noSpawner : mining.pos()); buffer.writeInt(mining == null ? noSpawner : mining.pos());
@@ -930,6 +909,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
dead = (bools & 2) != 0; dead = (bools & 2) != 0;
boolean boosting = (bools & 4) != 0; boolean boosting = (bools & 4) != 0;
isTyping = (bools & 8) != 0; isTyping = (bools & 8) != 0;
boolean building = (bools & 16) != 0;
color.set(buffer.readInt()); color.set(buffer.readInt());
mech = content.getByID(ContentType.mech, buffer.readByte()); mech = content.getByID(ContentType.mech, buffer.readByte());
int mine = buffer.readInt(); int mine = buffer.readInt();
@@ -948,6 +928,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
velocity.y = lastvy; velocity.y = lastvy;
}else{ }else{
mining = world.tile(mine); mining = world.tile(mine);
isBuilding = building;
isBoosting = boosting; isBoosting = boosting;
} }

View File

@@ -7,6 +7,7 @@ import io.anuke.arc.collection.ObjectSet;
import io.anuke.arc.math.geom.Point2; import io.anuke.arc.math.geom.Point2;
import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.arc.util.ArcAnnotate.*;
import io.anuke.mindustry.entities.EntityGroup; import io.anuke.mindustry.entities.EntityGroup;
import io.anuke.mindustry.entities.traits.HealthTrait; import io.anuke.mindustry.entities.traits.HealthTrait;
import io.anuke.mindustry.entities.traits.TargetTrait; import io.anuke.mindustry.entities.traits.TargetTrait;
@@ -230,6 +231,11 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
return proximity; return proximity;
} }
/** Tile configuration. Defaults to 0. Used for block rebuilding. */
public int config(){
return 0;
}
@Override @Override
public void removed(){ public void removed(){
if(sound != null){ if(sound != null){

View File

@@ -1,6 +1,5 @@
package io.anuke.mindustry.entities.type; package io.anuke.mindustry.entities.type;
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.arc.graphics.*; import io.anuke.arc.graphics.*;
@@ -9,6 +8,7 @@ import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*; import io.anuke.arc.math.geom.*;
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.ArcAnnotate.*;
import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.*;
import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.effect.*; import io.anuke.mindustry.entities.effect.*;
@@ -216,10 +216,14 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
float cx = x - fsize/2f, cy = y - fsize/2f; float cx = x - fsize/2f, cy = y - fsize/2f;
for(Team team : Team.all){ for(Team team : Team.all){
avoid(unitGroups[team.ordinal()].intersect(cx, cy, fsize, fsize)); if(team != getTeam() || !(this instanceof Player)){
avoid(unitGroups[team.ordinal()].intersect(cx, cy, fsize, fsize));
}
} }
avoid(playerGroup.intersect(cx, cy, fsize, fsize)); if(!(this instanceof Player)){
avoid(playerGroup.intersect(cx, cy, fsize, fsize));
}
velocity.add(moveVector.x / mass() * Time.delta(), moveVector.y / mass() * Time.delta()); velocity.add(moveVector.x / mass() * Time.delta(), moveVector.y / mass() * Time.delta());
} }
@@ -227,7 +231,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
float radScl = 1.5f; float radScl = 1.5f;
for(Unit en : arr){ for(Unit en : arr){
if(en.isFlying() != isFlying()) continue; if(en.isFlying() != isFlying() || (en instanceof Player && en.getTeam() != getTeam())) continue;
float dst = dst(en); float dst = dst(en);
float scl = Mathf.clamp(1f - dst / (getSize()/(radScl*2f) + en.getSize()/(radScl*2f))); float scl = Mathf.clamp(1f - dst / (getSize()/(radScl*2f) + en.getSize()/(radScl*2f)));
moveVector.add(Tmp.v1.set((x - en.x) * scl, (y - en.y) * scl).limit(0.4f)); moveVector.add(Tmp.v1.set((x - en.x) * scl, (y - en.y) * scl).limit(0.4f));
@@ -403,7 +407,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
float size = (itemSize + Mathf.absin(Time.time(), 5f, 1f)) * itemtime; float size = (itemSize + Mathf.absin(Time.time(), 5f, 1f)) * itemtime;
Draw.mixcol(Pal.accent, Mathf.absin(Time.time(), 5f, 0.5f)); Draw.mixcol(Pal.accent, Mathf.absin(Time.time(), 5f, 0.5f));
Draw.rect(item.item.icon(Item.Icon.large), Draw.rect(item.item.icon(Cicon.medium),
x + Angles.trnsx(rotation + 180f, backTrns), x + Angles.trnsx(rotation + 180f, backTrns),
y + Angles.trnsy(rotation + 180f, backTrns), y + Angles.trnsy(rotation + 180f, backTrns),
size, size, rotation); size, size, rotation);

View File

@@ -2,7 +2,6 @@ package io.anuke.mindustry.entities.type.base;
import io.anuke.arc.math.Mathf; import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.math.geom.Geometry;
import io.anuke.mindustry.entities.type.FlyingUnit;
import io.anuke.mindustry.entities.units.*; import io.anuke.mindustry.entities.units.*;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.meta.BlockFlag; import io.anuke.mindustry.world.meta.BlockFlag;

View File

@@ -1,23 +1,19 @@
package io.anuke.mindustry.entities.type.base; package io.anuke.mindustry.entities.type.base;
import io.anuke.arc.Core; import io.anuke.arc.*;
import io.anuke.arc.Events; import io.anuke.arc.collection.*;
import io.anuke.arc.collection.IntIntMap; import io.anuke.arc.math.*;
import io.anuke.arc.collection.Queue;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.mindustry.Vars; import io.anuke.mindustry.*;
import io.anuke.mindustry.entities.EntityGroup; import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.traits.BuilderTrait; import io.anuke.mindustry.entities.traits.*;
import io.anuke.mindustry.entities.traits.TargetTrait;
import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.entities.units.UnitState; import io.anuke.mindustry.entities.units.*;
import io.anuke.mindustry.game.EventType.BuildSelectEvent; import io.anuke.mindustry.game.EventType.*;
import io.anuke.mindustry.game.Teams.TeamData; import io.anuke.mindustry.game.Teams.*;
import io.anuke.mindustry.gen.BrokenBlock; import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.*;
import io.anuke.mindustry.world.blocks.BuildBlock; import io.anuke.mindustry.world.blocks.BuildBlock.*;
import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity;
import java.io.*; import java.io.*;
@@ -45,7 +41,7 @@ public class BuilderDrone extends BaseDrone implements BuilderTrait{
BuildEntity entity = (BuildEntity)target; BuildEntity entity = (BuildEntity)target;
TileEntity core = getClosestCore(); TileEntity core = getClosestCore();
if(isBuilding() && entity == null && isRebuild()){ if(isBuilding() && entity == null && canRebuild()){
target = world.tile(buildRequest().x, buildRequest().y); target = world.tile(buildRequest().x, buildRequest().y);
circle(placeDistance * 0.7f); circle(placeDistance * 0.7f);
target = null; target = null;
@@ -100,9 +96,9 @@ public class BuilderDrone extends BaseDrone implements BuilderTrait{
incDrones(playerTarget); incDrones(playerTarget);
TargetTrait prev = target; TargetTrait prev = target;
target = playerTarget; target = playerTarget;
float dst = 90f + (id % 4)*30; float dst = 90f + (id % 10)*3;
float tdst = dst(target); float tdst = dst(target);
float scale = (Mathf.lerp(1f, 0.77f, 1f - Mathf.clamp((tdst - dst) / dst))); float scale = (Mathf.lerp(1f, 0.2f, 1f - Mathf.clamp((tdst - dst) / dst)));
circle(dst); circle(dst);
velocity.scl(scale); velocity.scl(scale);
target = prev; target = prev;
@@ -151,9 +147,8 @@ public class BuilderDrone extends BaseDrone implements BuilderTrait{
} }
} }
boolean isRebuild(){ boolean canRebuild(){
//disabled until further notice, reason being that it's too annoying when playing enemies and too broken for ally use return true;
return false; //Vars.state.rules.enemyCheat && team == waveTeam;
} }
@Override @Override
@@ -188,13 +183,14 @@ public class BuilderDrone extends BaseDrone implements BuilderTrait{
} }
} }
if(isRebuild() && !isBuilding()){ if(timer.get(timerTarget, 80) && Units.closestEnemy(getTeam(), x, y, 100f, u -> !(u instanceof BaseDrone)) == null && !isBuilding()){
TeamData data = Vars.state.teams.get(team); TeamData data = Vars.state.teams.get(team);
if(!data.brokenBlocks.isEmpty()){ if(!data.brokenBlocks.isEmpty()){
long block = data.brokenBlocks.removeLast(); BrokenBlock block = data.brokenBlocks.removeLast();
if(Build.validPlace(getTeam(), block.x, block.y, content.block(block.block), block.rotation)){
placeQueue.addFirst(new BuildRequest(BrokenBlock.x(block), BrokenBlock.y(block), BrokenBlock.rotation(block), content.block(BrokenBlock.block(block)))); placeQueue.addFirst(new BuildRequest(block.x, block.y, block.rotation, content.block(block.block)).configure(block.config));
setState(build); setState(build);
}
} }
} }
} }

View File

@@ -1,6 +1,4 @@
package io.anuke.mindustry.entities.type.base; package io.anuke.mindustry.entities.type.base;
import io.anuke.mindustry.entities.type.GroundUnit;
public class Crawler extends GroundUnit{ public class Crawler extends GroundUnit{
} }

View File

@@ -1,7 +1,5 @@
package io.anuke.mindustry.entities.type.base; package io.anuke.mindustry.entities.type.base;
import io.anuke.mindustry.entities.type.GroundUnit;
public class Dagger extends GroundUnit{ public class Dagger extends GroundUnit{
} }

View File

@@ -1,6 +1,4 @@
package io.anuke.mindustry.entities.type.base; package io.anuke.mindustry.entities.type.base;
import io.anuke.mindustry.entities.type.GroundUnit;
public class Eruptor extends GroundUnit{ public class Eruptor extends GroundUnit{
} }

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.entities.type; package io.anuke.mindustry.entities.type.base;
import io.anuke.arc.graphics.*; import io.anuke.arc.graphics.*;
import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.graphics.g2d.*;
@@ -8,6 +8,7 @@ import io.anuke.arc.util.*;
import io.anuke.mindustry.*; import io.anuke.mindustry.*;
import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.bullet.*; import io.anuke.mindustry.entities.bullet.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.entities.units.*; import io.anuke.mindustry.entities.units.*;
import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.*;
@@ -15,7 +16,7 @@ import io.anuke.mindustry.world.meta.*;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public abstract class FlyingUnit extends BaseUnit{ public class FlyingUnit extends BaseUnit{
protected float[] weaponAngles = {0,0}; protected float[] weaponAngles = {0,0};
protected final UnitState protected final UnitState
@@ -36,6 +37,10 @@ public abstract class FlyingUnit extends BaseUnit{
if(target == null) targetClosestEnemyFlag(BlockFlag.producer); if(target == null) targetClosestEnemyFlag(BlockFlag.producer);
if(target == null) targetClosestEnemyFlag(BlockFlag.turret); if(target == null) targetClosestEnemyFlag(BlockFlag.turret);
if(target == null && isCommanded() && getCommand() != UnitCommand.attack){
onCommand(getCommand());
}
} }
if(getClosestSpawner() == null && getSpawner() != null && target == null){ if(getClosestSpawner() == null && getSpawner() != null && target == null){

View File

@@ -1,6 +1,4 @@
package io.anuke.mindustry.entities.type.base; package io.anuke.mindustry.entities.type.base;
import io.anuke.mindustry.entities.type.GroundUnit;
public class Fortress extends GroundUnit{ public class Fortress extends GroundUnit{
} }

View File

@@ -1,7 +1,5 @@
package io.anuke.mindustry.entities.type.base; package io.anuke.mindustry.entities.type.base;
import io.anuke.mindustry.entities.type.FlyingUnit;
public class Ghoul extends FlyingUnit{ public class Ghoul extends FlyingUnit{
} }

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.entities.type; package io.anuke.mindustry.entities.type.base;
import io.anuke.arc.graphics.*; import io.anuke.arc.graphics.*;
import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.graphics.g2d.*;
@@ -9,6 +9,7 @@ import io.anuke.mindustry.*;
import io.anuke.mindustry.ai.Pathfinder.*; import io.anuke.mindustry.ai.Pathfinder.*;
import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.bullet.*; import io.anuke.mindustry.entities.bullet.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.entities.units.*; import io.anuke.mindustry.entities.units.*;
import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.*;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
@@ -18,7 +19,7 @@ import io.anuke.mindustry.world.meta.*;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public abstract class GroundUnit extends BaseUnit{ public class GroundUnit extends BaseUnit{
protected static Vector2 vec = new Vector2(); protected static Vector2 vec = new Vector2();
protected float walkTime; protected float walkTime;

View File

@@ -4,7 +4,6 @@ import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.math.Angles; import io.anuke.arc.math.Angles;
import io.anuke.arc.math.Mathf; import io.anuke.arc.math.Mathf;
import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.entities.Units;
import io.anuke.mindustry.entities.type.FlyingUnit;
public class Revenant extends FlyingUnit{ public class Revenant extends FlyingUnit{

View File

@@ -1,7 +1,5 @@
package io.anuke.mindustry.entities.type.base; package io.anuke.mindustry.entities.type.base;
import io.anuke.mindustry.entities.type.GroundUnit;
public class Titan extends GroundUnit{ public class Titan extends GroundUnit{
} }

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