Merge branch 'master' into patch-2

This commit is contained in:
Anuken
2018-08-06 11:17:20 -04:00
committed by GitHub
219 changed files with 4930 additions and 3375 deletions

View File

@@ -18,7 +18,7 @@ Once this is done, all you need to do is wait for me to approve your changes.
If a translation bundle for your language *doesn't* exist, you need to create one yourself. If a translation bundle for your language *doesn't* exist, you need to create one yourself.
In the folder with all the bundles in it, click the *'create new file'* button, and name it `bundle_(locale code here).properties`. In the folder with all the bundles in it, click the *'create new file'* button, and name it `bundle_(locale code here).properties`.
Then, copy-paste the entire contents of the [English translation bundle](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets/bundles/bundle.propertie) into the file, and translate all the necessary text to your language. Then, copy-paste the entire contents of the [English translation bundle](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets/bundles/bundle.properties) into the file, and translate all the necessary text to your language.
Once you are done, press the *propose new file* button at the bottom, then 'create pull request twice'. Once you are done, press the *propose new file* button at the bottom, then 'create pull request twice'.
#### Useful Information #### Useful Information
@@ -36,4 +36,4 @@ There are two ways to test the translation bundle:
**And that's it.** **And that's it.**
*(...of course, that's never really it. Bother me on Discord when something inevatably goes wrong.)* *(...of course, that's never really it. Bother me on Discord when something inevitably goes wrong.)*

View File

@@ -24,7 +24,6 @@ dependencies {
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
implementation "com.badlogicgames.gdx:gdx-ai:$aiVersion"
implementation "com.badlogicgames.gdx:gdx-controllers-android:$gdxVersion" implementation "com.badlogicgames.gdx:gdx-controllers-android:$gdxVersion"
} }

View File

@@ -12,7 +12,6 @@ import android.provider.Settings.Secure;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.Base64Coder; import com.badlogic.gdx.utils.Base64Coder;
@@ -25,8 +24,8 @@ import io.anuke.kryonet.KryoClient;
import io.anuke.kryonet.KryoServer; import io.anuke.kryonet.KryoServer;
import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.core.Platform;
import io.anuke.mindustry.core.ThreadHandler.ThreadProvider; import io.anuke.mindustry.core.ThreadHandler.ThreadProvider;
import io.anuke.mindustry.io.SaveIO;
import io.anuke.mindustry.game.Saves.SaveSlot; import io.anuke.mindustry.game.Saves.SaveSlot;
import io.anuke.mindustry.io.SaveIO;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.ui.dialogs.FileChooser; import io.anuke.mindustry.ui.dialogs.FileChooser;
import io.anuke.ucore.function.Consumer; import io.anuke.ucore.function.Consumer;
@@ -48,19 +47,16 @@ import java.util.Locale;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class AndroidLauncher extends AndroidApplication{ public class AndroidLauncher extends PatchedAndroidApplication{
public static final int PERMISSION_REQUEST_CODE = 1; public static final int PERMISSION_REQUEST_CODE = 1;
boolean doubleScaleTablets = true; boolean doubleScaleTablets = true;
FileChooser chooser; FileChooser chooser;
@Override @Override
protected void onCreate(Bundle savedInstanceState){ protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.useImmersiveMode = true; config.useImmersiveMode = true;
Platform.instance = new Platform(){ Platform.instance = new Platform(){
DateFormat format = SimpleDateFormat.getDateTimeInstance(); DateFormat format = SimpleDateFormat.getDateTimeInstance();
@@ -108,19 +104,15 @@ public class AndroidLauncher extends AndroidApplication{
public String getUUID(){ public String getUUID(){
try{ try{
String s = Secure.getString(getContext().getContentResolver(), String s = Secure.getString(getContext().getContentResolver(),
Secure.ANDROID_ID); Secure.ANDROID_ID);
int len = s.length(); int len = s.length();
byte[] data = new byte[len / 2]; byte[] data = new byte[len / 2];
for(int i = 0; i < len; i += 2){ for(int i = 0; i < len; i += 2){
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i + 1), 16)); + Character.digit(s.charAt(i + 1), 16));
} }
String result = new String(Base64Coder.encode(data)); String result = new String(Base64Coder.encode(data));
if(result.equals("AAAAAAAAAOA=")) throw new RuntimeException("Bad UUID."); if(result.equals("AAAAAAAAAOA=")) throw new RuntimeException("Bad UUID.");
return result; return result;
}catch(Exception e){ }catch(Exception e){
return super.getUUID(); return super.getUUID();
@@ -129,28 +121,23 @@ public class AndroidLauncher extends AndroidApplication{
@Override @Override
public void shareFile(FileHandle file){ public void shareFile(FileHandle file){
} }
@Override @Override
public void showFileChooser(String text, String content, Consumer<FileHandle> cons, boolean open, String filetype){ public void showFileChooser(String text, String content, Consumer<FileHandle> cons, boolean open, String filetype){
chooser = new FileChooser(text, file -> file.extension().equalsIgnoreCase(filetype), open, cons); chooser = new FileChooser(text, file -> file.extension().equalsIgnoreCase(filetype), open, cons);
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M || (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M || (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){ checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){
chooser.show(); chooser.show();
chooser = null; chooser = null;
}else{ }else{
ArrayList<String> perms = new ArrayList<>(); ArrayList<String> perms = new ArrayList<>();
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
perms.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); perms.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
} }
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
perms.add(Manifest.permission.READ_EXTERNAL_STORAGE); perms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
} }
requestPermissions(perms.toArray(new String[perms.size()]), PERMISSION_REQUEST_CODE); requestPermissions(perms.toArray(new String[perms.size()]), PERMISSION_REQUEST_CODE);
} }
} }
@@ -170,7 +157,6 @@ public class AndroidLauncher extends AndroidApplication{
return true; return true;
} }
}; };
try{ try{
ProviderInstaller.installIfNeeded(this); ProviderInstaller.installIfNeeded(this);
}catch(GooglePlayServicesRepairableException e){ }catch(GooglePlayServicesRepairableException e){
@@ -179,18 +165,13 @@ public class AndroidLauncher extends AndroidApplication{
}catch(GooglePlayServicesNotAvailableException e){ }catch(GooglePlayServicesNotAvailableException e){
Log.e("SecurityException", "Google Play Services not available."); Log.e("SecurityException", "Google Play Services not available.");
} }
if(doubleScaleTablets && isTablet(this.getContext())){ if(doubleScaleTablets && isTablet(this.getContext())){
Unit.dp.addition = 0.5f; Unit.dp.addition = 0.5f;
} }
config.hideStatusBar = true; config.hideStatusBar = true;
Net.setClientProvider(new KryoClient()); Net.setClientProvider(new KryoClient());
Net.setServerProvider(new KryoServer()); Net.setServerProvider(new KryoServer());
initialize(new Mindustry(), config); initialize(new Mindustry(), config);
checkFiles(getIntent()); checkFiles(getIntent());
} }
@@ -200,7 +181,6 @@ public class AndroidLauncher extends AndroidApplication{
for(int i : grantResults){ for(int i : grantResults){
if(i != PackageManager.PERMISSION_GRANTED) return; if(i != PackageManager.PERMISSION_GRANTED) return;
} }
if(chooser != null){ if(chooser != null){
chooser.show(); chooser.show();
} }
@@ -220,21 +200,16 @@ public class AndroidLauncher extends AndroidApplication{
//error //error
return; return;
} }
boolean save = uri.getPath().endsWith(saveExtension); boolean save = uri.getPath().endsWith(saveExtension);
boolean map = uri.getPath().endsWith(mapExtension); boolean map = uri.getPath().endsWith(mapExtension);
InputStream inStream; InputStream inStream;
if(myFile != null) inStream = new FileInputStream(myFile); if(myFile != null) inStream = new FileInputStream(myFile);
else inStream = getContentResolver().openInputStream(uri); else inStream = getContentResolver().openInputStream(uri);
Gdx.app.postRunnable(() -> { Gdx.app.postRunnable(() -> {
if(save){ //open save if(save){ //open save
System.out.println("Opening save."); System.out.println("Opening save.");
FileHandle file = Gdx.files.local("temp-save." + saveExtension); FileHandle file = Gdx.files.local("temp-save." + saveExtension);
file.write(inStream, false); file.write(inStream, false);
if(SaveIO.isSaveValid(file)){ if(SaveIO.isSaveValid(file)){
try{ try{
SaveSlot slot = control.getSaves().importSave(file); SaveSlot slot = control.getSaves().importSave(file);
@@ -245,20 +220,17 @@ public class AndroidLauncher extends AndroidApplication{
}else{ }else{
ui.showError("$text.save.import.invalid"); ui.showError("$text.save.import.invalid");
} }
}else if(map){ //open map }else if(map){ //open map
Gdx.app.postRunnable(() -> { Gdx.app.postRunnable(() -> {
System.out.println("Opening map."); System.out.println("Opening map.");
if(!ui.editor.isShown()){ if(!ui.editor.isShown()){
ui.editor.show(); ui.editor.show();
} }
ui.editor.beginEditMap(inStream); ui.editor.beginEditMap(inStream);
}); });
} }
}); });
} }
}catch(IOException e){ }catch(IOException e){
e.printStackTrace(); e.printStackTrace();
} }

View File

@@ -0,0 +1,20 @@
package io.anuke.mindustry;
import com.badlogic.gdx.backends.android.AndroidApplication;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class PatchedAndroidApplication extends AndroidApplication {
private final ExecutorService exec = Executors.newSingleThreadExecutor();
@Override
protected void onPause () {
if(useImmersiveMode) {
exec.submit(() -> {
try {Thread.sleep(100);} catch (InterruptedException ignored) {}
graphics.onDrawFrame(null);
});
}
super.onPause();
}
}

View File

@@ -80,9 +80,6 @@ public class Annotations{
*/ */
boolean unreliable() default false; boolean unreliable() default false;
/** The simple class name where this method is placed. */
String in() default "Call";
/** Priority of this event. */ /** Priority of this event. */
PacketPriority priority() default PacketPriority.normal; PacketPriority priority() default PacketPriority.normal;
} }

View File

@@ -35,6 +35,8 @@ public class RemoteMethodAnnotationProcessor extends AbstractProcessor{
private static final String readServerName = "RemoteReadServer"; private static final String readServerName = "RemoteReadServer";
/** Name of class that handles reading and invoking packets on the client. */ /** Name of class that handles reading and invoking packets on the client. */
private static final String readClientName = "RemoteReadClient"; private static final String readClientName = "RemoteReadClient";
/**Simple class name of generated class name.*/
private static final String callLocation = "Call";
/** Processing round number. */ /** Processing round number. */
private int round; private int round;
@@ -102,15 +104,15 @@ public class RemoteMethodAnnotationProcessor extends AbstractProcessor{
} }
//get and create class entry if needed //get and create class entry if needed
if(!classMap.containsKey(annotation.in())){ if(!classMap.containsKey(callLocation)){
ClassEntry clas = new ClassEntry(annotation.in()); ClassEntry clas = new ClassEntry(callLocation);
classMap.put(annotation.in(), clas); classMap.put(callLocation, clas);
classes.add(clas); classes.add(clas);
Utils.messager.printMessage(Kind.NOTE, "Generating class '" + clas.name + "'."); Utils.messager.printMessage(Kind.NOTE, "Generating class '" + clas.name + "'.");
} }
ClassEntry entry = classMap.get(annotation.in()); ClassEntry entry = classMap.get(callLocation);
//create and add entry //create and add entry
MethodEntry method = new MethodEntry(entry.name, Utils.getMethodName(element), annotation.targets(), annotation.variants(), MethodEntry method = new MethodEntry(entry.name, Utils.getMethodName(element), annotation.targets(), annotation.variants(),

View File

@@ -26,8 +26,7 @@ allprojects {
appName = 'Mindustry' appName = 'Mindustry'
gdxVersion = '1.9.8' gdxVersion = '1.9.8'
roboVMVersion = '2.3.0' roboVMVersion = '2.3.0'
aiVersion = '1.8.1' uCoreVersion = '239e6a5bad'
uCoreVersion = 'b93d02efe3fdbe1a10b33d59597da8693d4f7de3'
getVersionString = { getVersionString = {
String buildVersion = getBuildVersion() String buildVersion = getBuildVersion()
@@ -97,7 +96,6 @@ project(":desktop") {
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
compile "com.badlogicgames.gdx:gdx-controllers-lwjgl3:$gdxVersion" compile "com.badlogicgames.gdx:gdx-controllers-lwjgl3:$gdxVersion"
compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.0' compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.0'
compile 'com.yuvimasory:orange-extensions:1.3.0'
} }
} }
@@ -113,13 +111,10 @@ project(":html") {
compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion" compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion"
compile "com.badlogicgames.gdx:gdx:$gdxVersion:sources" compile "com.badlogicgames.gdx:gdx:$gdxVersion:sources"
compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources" compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources"
compile "com.badlogicgames.gdx:gdx-ai:$aiVersion:sources"
compile "com.badlogicgames.gdx:gdx-controllers:$gdxVersion:sources" compile "com.badlogicgames.gdx:gdx-controllers:$gdxVersion:sources"
compile "com.badlogicgames.gdx:gdx-controllers-gwt:$gdxVersion" compile "com.badlogicgames.gdx:gdx-controllers-gwt:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-controllers-gwt:$gdxVersion:sources" compile "com.badlogicgames.gdx:gdx-controllers-gwt:$gdxVersion:sources"
compile "com.sksamuel.gwt:gwt-websockets:1.0.4"
compile "com.sksamuel.gwt:gwt-websockets:1.0.4:sources"
} }
compileJava.options.compilerArgs = [ compileJava.options.compilerArgs = [
@@ -154,13 +149,9 @@ project(":core") {
compileOnly project(":annotations") compileOnly project(":annotations")
build.finalizedBy(finish) build.finalizedBy(finish)
boolean comp = System.properties["release"] == null || System.properties["release"] == "false" def comp = System.properties["release"] == null || System.properties["release"] == "false"
if(!comp){ if(!comp) println("Note: Compiling release build.")
println("NOTICE: Compiling release build.")
}else{
println("Compiling DEBUG build.")
}
if(new File(projectDir.parent, '../uCore').exists() && comp){ if(new File(projectDir.parent, '../uCore').exists() && comp){
compile project(":uCore") compile project(":uCore")
@@ -220,7 +211,6 @@ project(":kryonet") {
dependencies { dependencies {
compile project(":core") compile project(":core")
compile 'com.github.crykn:kryonet:2.22.1' compile 'com.github.crykn:kryonet:2.22.1'
compile "org.java-websocket:Java-WebSocket:1.3.7"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 682 B

After

Width:  |  Height:  |  Size: 789 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 580 B

After

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 574 B

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 524 B

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 B

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 313 B

After

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 377 B

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

View File

Before

Width:  |  Height:  |  Size: 310 B

After

Width:  |  Height:  |  Size: 310 B

View File

Before

Width:  |  Height:  |  Size: 306 B

After

Width:  |  Height:  |  Size: 306 B

View File

Before

Width:  |  Height:  |  Size: 266 B

After

Width:  |  Height:  |  Size: 266 B

View File

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 363 B

View File

Before

Width:  |  Height:  |  Size: 384 B

After

Width:  |  Height:  |  Size: 384 B

View File

Before

Width:  |  Height:  |  Size: 266 B

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

View File

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 195 B

View File

Before

Width:  |  Height:  |  Size: 177 B

After

Width:  |  Height:  |  Size: 177 B

View File

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 279 B

View File

Before

Width:  |  Height:  |  Size: 298 B

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 B

View File

@@ -1,4 +1,4 @@
text.about=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.credits=Credits text.credits=Credits
text.discord=Join the mindustry discord! text.discord=Join the mindustry discord!
text.link.discord.description=the official Mindustry discord chatroom text.link.discord.description=the official Mindustry discord chatroom
@@ -11,11 +11,11 @@ text.link.wiki.description=official Mindustry wiki
text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard. text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
text.editor.web=The web version does not support the editor!\nDownload the game to use it. text.editor.web=The web version does not support the editor!\nDownload the game to use it.
text.web.unsupported=The web version does not support this feature! Download the game to use it. text.web.unsupported=The web version does not support this feature! Download the game to use it.
text.multiplayer.web=The web version of the game does not support multiplayer!\nUse the downloadable PC, Android or iOS versions. text.gameover=Your core has been destroyed
text.host.web=The web version does not support hosting games! Download the game to use this feature. text.sector.gameover=This sector has been lost. Re-deploy?
text.gameover=The core was destroyed. text.sector.retry=Retry
text.highscore=[YELLOW]New highscore! text.highscore=[accent]New highscore!
text.lasted=You lasted until wave text.wave.lasted=You lasted until wave [accent]{0}[].
text.level.highscore=High Score: [accent]{0} text.level.highscore=High Score: [accent]{0}
text.level.delete.title=Confirm Delete text.level.delete.title=Confirm Delete
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"? text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
@@ -50,13 +50,19 @@ text.addplayers=Add/Remove Players
text.customgame=Custom Game text.customgame=Custom Game
text.campaign=Campaign text.campaign=Campaign
text.sectors=Sectors text.sectors=Sectors
text.sector=Selected Sector: [LIGHT_GRAY]{0} text.sector=Sector: [LIGHT_GRAY]{0}
text.sector.time=Time: [LIGHT_GRAY]{0} text.sector.time=Time: [LIGHT_GRAY]{0}
text.sector.deploy=Deploy text.sector.deploy=Deploy
text.sector.resume=Resume text.sector.resume=Resume
text.sector.unlocked=Sector completed!
text.sector.locked=[scarlet][[Incomplete] text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored] text.sector.unexplored=[accent][[Unexplored]
text.mission=Mission:[LIGHT_GRAY] {0}
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
text.mission.wave=Survive [accent]{0}[] waves.
text.mission.battle=Destroy the enemy base.
text.mission.resource=Obtain {0} x{1}
text.none=<none>
text.close=Close text.close=Close
text.quit=Quit text.quit=Quit
text.maps=Maps text.maps=Maps
@@ -80,7 +86,7 @@ text.server.kicked.nameInUse=There is someone with that name\nalready on this se
text.server.kicked.nameEmpty=Your name must contain at least one character or number. text.server.kicked.nameEmpty=Your name must contain at least one character or number.
text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted. text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
text.server.kicked.customClient=This server does not support custom builds. Download an official version. text.server.kicked.customClient=This server does not support custom builds. Download an official version.
text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\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. text.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.
text.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. text.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.
text.hostserver=Host Server text.hostserver=Host Server
text.host=Host text.host=Host
@@ -149,6 +155,7 @@ text.save.rename.text=New name:
text.selectslot=Select a save. text.selectslot=Select a save.
text.slot=[accent]Slot {0} text.slot=[accent]Slot {0}
text.save.corrupted=[orange]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. text.save.corrupted=[orange]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.
text.sector.corrupted=[orange]A save file for this sector was found, but loading failed.\nA new one has been created.
text.empty=<empty> text.empty=<empty>
text.on=On text.on=On
text.off=Off text.off=Off
@@ -253,9 +260,6 @@ text.settings.controls=Controls
text.settings.game=Game text.settings.game=Game
text.settings.sound=Sound text.settings.sound=Sound
text.settings.graphics=Graphics text.settings.graphics=Graphics
text.upgrades=Upgrades
text.purchased=[LIME]Created!
text.weapons=Weapons
text.paused=Paused text.paused=Paused
text.yes=Yes text.yes=Yes
text.no=No text.no=No
@@ -320,6 +324,9 @@ text.category.liquids=Liquids
text.category.items=Items text.category.items=Items
text.category.crafting=Crafting text.category.crafting=Crafting
text.category.shooting=Shooting text.category.shooting=Shooting
setting.fpscap.name=Max FPS
setting.fpscap.none=None
setting.fpscap.text={0} FPS
setting.difficulty.easy=easy setting.difficulty.easy=easy
setting.difficulty.normal=normal setting.difficulty.normal=normal
setting.difficulty.hard=hard setting.difficulty.hard=hard
@@ -343,41 +350,27 @@ setting.musicvol.name=Music Volume
setting.mutemusic.name=Mute Music setting.mutemusic.name=Mute Music
setting.sfxvol.name=SFX Volume setting.sfxvol.name=SFX Volume
setting.mutesound.name=Mute Sound setting.mutesound.name=Mute Sound
map.maze.name=maze
map.fortress.name=fortress
map.sinkhole.name=sinkhole
map.caves.name=caves
map.volcano.name=volcano
map.caldera.name=caldera
map.scorch.name=scorch
map.desert.name=desert
map.island.name=island
map.grassland.name=grassland
map.tundra.name=tundra
map.spiral.name=spiral
map.tutorial.name=tutorial
text.keybind.title=Rebind Keys text.keybind.title=Rebind Keys
keybind.move_x.name=move_x keybind.move_x.name=Move x
keybind.move_y.name=move_y keybind.move_y.name=Move y
keybind.select.name=select keybind.select.name=Select
keybind.break.name=break keybind.break.name=Break
keybind.shoot.name=shoot keybind.shoot.name=Shoot
keybind.zoom_hold.name=zoom_hold keybind.zoom_hold.name=Zoom Hold
keybind.zoom.name=zoom keybind.zoom.name=Zoom
keybind.block_info.name=block_info keybind.menu.name=Menu
keybind.menu.name=menu keybind.pause.name=Pause
keybind.pause.name=pause 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_alt.name=rotate_alt keybind.rotate.name=Rotate
keybind.rotate.name=rotate
mode.text.help.title=Description of modes mode.text.help.title=Description of modes
mode.waves.name=waves mode.waves.name=waves
mode.waves.description=the normal mode. limited resources and automatic incoming waves. mode.waves.description=the normal mode. limited resources and automatic incoming waves.
mode.sandbox.name=sandbox mode.sandbox.name=sandbox
mode.sandbox.description=infinite resources and no timer for waves. mode.sandbox.description=infinite resources and no timer for waves.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
mode.freebuild.name=freebuild mode.freebuild.name=freebuild
mode.freebuild.description=limited resources and no timer for waves. mode.freebuild.description=limited resources and no timer for waves.
@@ -426,6 +419,9 @@ text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0} text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
text.item.hardness=[LIGHT_GRAY]Hardness: {0} text.item.hardness=[LIGHT_GRAY]Hardness: {0}
text.unit.health=[LIGHT_GRAY]Health: {0}
text.unit.speed=[LIGHT_GRAY]Speed: {0}
text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0} text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0} text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
text.liquid.temperature=[LIGHT_GRAY]Temperature: {0} text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
@@ -479,9 +475,9 @@ block.carbide-drill.name=Carbide Drill
block.laser-drill.name=Laser Drill block.laser-drill.name=Laser Drill
block.water-extractor.name=Water Extractor block.water-extractor.name=Water Extractor
block.cultivator.name=Cultivator block.cultivator.name=Cultivator
block.dart-ship-factory.name=Dart Ship Factory block.dart-ship-factory.name=Dart Ship Reconstructor
block.delta-mech-factory.name=Delta Mech Factory block.delta-mech-factory.name=Delta Mech Reconstructor
block.dronefactory.name=Drone Factory block.javelin-ship-factory.name=Javelin Ship Reconstructor
block.repairpoint.name=Repair Point block.repairpoint.name=Repair Point
block.resupplypoint.name=Resupply Point block.resupplypoint.name=Resupply Point
block.conduit.name=Conduit block.conduit.name=Conduit
@@ -512,9 +508,10 @@ block.solidifer.name=Solidifer
block.solar-panel.name=Solar Panel block.solar-panel.name=Solar Panel
block.solar-panel-large.name=Large Solar Panel block.solar-panel-large.name=Large Solar Panel
block.oil-extractor.name=Oil Extractor block.oil-extractor.name=Oil Extractor
block.javelin-ship-factory.name=Javelin Ship factory block.drone-pad.name=Drone Pad
block.drone-factory.name=Drone Factory block.fabricator-pad.name=Fabricator Pad
block.fabricator-factory.name=Fabricator Factory block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
block.repair-point.name=Repair Point block.repair-point.name=Repair Point
block.resupply-point.name=Resupply Point block.resupply-point.name=Resupply Point
block.pulse-conduit.name=Pulse Conduit block.pulse-conduit.name=Pulse Conduit
@@ -525,3 +522,23 @@ block.liquid-junction.name=Liquid Junction
block.bridge-conduit.name=Bridge Conduit block.bridge-conduit.name=Bridge Conduit
block.rotary-pump.name=Rotary Pump block.rotary-pump.name=Rotary Pump
block.nuclear-reactor.name=Nuclear Reactor block.nuclear-reactor.name=Nuclear Reactor
block.command-center.name=Command Center
block.mass-driver.name=Mass Driver
block.blast-drill.name=Blast Drill
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator
unit.drone.name=Drone
unit.drone.description=The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks.
unit.fabricator.name=Fabricator
unit.fabricator.description=An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone.
unit.scout.name=Scout
unit.scout.description=A basic ground unit. Uses lead as ammo.
unit.titan.name=Titan
unit.titan.description=An advanced armored ground unit. Uses carbide as ammo. Attacks both ground and air targets.
unit.monsoon.name=Monsoon
unit.monsoon.description=A heavy carpet bomber. Uses blast compound or pyratite as ammo.
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.

View File

@@ -1,8 +1,6 @@
text.about=Erstellt von [ROYAL] Anuken. [] \nUrsprünglich ein Eintrag im [orange] GDL [] MM Jam.\n\nCredits: \n- SFX gemacht mit [yellow] bfxr [] - Musik gemacht von [green] RoccoW [] / gefunden auf [lime] FreeMusicArchive.org [] \n\nBesonderer Dank geht an: \n- [coral] MitchellFJN []: Umfangreicher Spieletest und Feedback \n- [sky] Luxray5474 []: Wiki-Arbeit, Code-Beiträge \n- Alle Beta-Tester auf itch.io und Google Play\n
text.discord=Trete dem Mindustry Discord bei! text.discord=Trete dem Mindustry Discord bei!
text.gameover=Der Kern wurde zerstört. text.gameover=Der Kern wurde zerstört.
text.highscore=[YELLOW] Neuer Highscore! text.highscore=[YELLOW] Neuer Highscore!
text.lasted=Du hast bis zur folgenden Welle überlebt
text.level.highscore=High Score: [accent] {0} text.level.highscore=High Score: [accent] {0}
text.level.delete.title=Löschen bestätigen text.level.delete.title=Löschen bestätigen
text.level.select=Level Auswahl text.level.select=Level Auswahl
@@ -111,9 +109,6 @@ text.settings.controls=Steuerung
text.settings.game=Spiel text.settings.game=Spiel
text.settings.sound=Audio text.settings.sound=Audio
text.settings.graphics=Grafiken text.settings.graphics=Grafiken
text.upgrades=Verbesserungen
text.purchased=[LIME] Erstellt!
text.weapons=Waffen
text.paused=Pausiert text.paused=Pausiert
text.error.title=[crimson] Ein Fehler ist aufgetreten text.error.title=[crimson] Ein Fehler ist aufgetreten
text.error.crashtitle=EIn Fehler ist aufgetreten! text.error.crashtitle=EIn Fehler ist aufgetreten!
@@ -153,19 +148,6 @@ setting.musicvol.name=Musiklautstärke
setting.mutemusic.name=Musik stummschalten setting.mutemusic.name=Musik stummschalten
setting.sfxvol.name=Audioeffekte Lautstärke setting.sfxvol.name=Audioeffekte Lautstärke
setting.mutesound.name=Audioeffekte stummschalten setting.mutesound.name=Audioeffekte stummschalten
map.maze.name=Labyrinth
map.fortress.name=Festung
map.sinkhole.name=Sinkloch
map.caves.name=Höhlen
map.volcano.name=Vulkan
map.caldera.name=Lavakessel
map.scorch.name=Flammen
map.desert.name=Wüste
map.island.name=Insel
map.grassland.name=Grasland
map.tundra.name=Kältesteppe
map.spiral.name=Spirale
map.tutorial.name=Tutorial
keybind.move_x.name=bewege_x keybind.move_x.name=bewege_x
keybind.move_y.name=bewege_y keybind.move_y.name=bewege_y
keybind.select.name=wählen keybind.select.name=wählen
@@ -176,7 +158,6 @@ keybind.zoom.name=zoomen
keybind.menu.name=Menü keybind.menu.name=Menü
keybind.pause.name=Pause keybind.pause.name=Pause
keybind.dash.name=Bindestrich keybind.dash.name=Bindestrich
keybind.rotate_alt.name=drehen_alt
keybind.rotate.name=Drehen keybind.rotate.name=Drehen
mode.waves.name=Wellen mode.waves.name=Wellen
mode.sandbox.name=Sandkasten mode.sandbox.name=Sandkasten
@@ -211,8 +192,6 @@ text.link.wiki.description=official Mindustry wiki
text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard. text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
text.editor.web=The web version does not support the editor!\nDownload the game to use it. text.editor.web=The web version does not support the editor!\nDownload the game to use it.
text.web.unsupported=The web version does not support this feature! Download the game to use it. text.web.unsupported=The web version does not support this feature! Download the game to use it.
text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
text.host.web=The web version does not support hosting games! Download the game to use this feature.
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"? text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
text.construction.title=Block Construction Guide text.construction.title=Block Construction Guide
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left. text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
@@ -359,7 +338,6 @@ setting.fullscreen.name=Fullscreen
setting.multithread.name=Multithreading setting.multithread.name=Multithreading
setting.minimap.name=Show Minimap setting.minimap.name=Show Minimap
text.keybind.title=Rebind Keys text.keybind.title=Rebind Keys
keybind.block_info.name=block_info
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
@@ -447,7 +425,6 @@ block.water-extractor.name=Water Extractor
block.cultivator.name=Cultivator block.cultivator.name=Cultivator
block.dart-ship-factory.name=Dart Ship Factory block.dart-ship-factory.name=Dart Ship Factory
block.delta-mech-factory.name=Delta Mech Factory block.delta-mech-factory.name=Delta Mech Factory
block.dronefactory.name=Drone Factory
block.repairpoint.name=Repair Point block.repairpoint.name=Repair Point
block.resupplypoint.name=Resupply Point block.resupplypoint.name=Resupply Point
block.liquidtank.name=Liquid Tank block.liquidtank.name=Liquid Tank
@@ -475,8 +452,6 @@ block.solar-panel.name=Solar Panel
block.solar-panel-large.name=Large Solar Panel block.solar-panel-large.name=Large Solar Panel
block.oil-extractor.name=Oil Extractor block.oil-extractor.name=Oil Extractor
block.javelin-ship-factory.name=Javelin Ship factory block.javelin-ship-factory.name=Javelin Ship factory
block.drone-factory.name=Drone Factory
block.fabricator-factory.name=Fabricator Factory
block.repair-point.name=Repair Point block.repair-point.name=Repair Point
block.resupply-point.name=Resupply Point block.resupply-point.name=Resupply Point
block.pulse-conduit.name=Pulse Conduit block.pulse-conduit.name=Pulse Conduit
@@ -495,9 +470,49 @@ text.sector=Selected Sector: [LIGHT_GRAY]{0}
text.sector.time=Time: [LIGHT_GRAY]{0} text.sector.time=Time: [LIGHT_GRAY]{0}
text.sector.deploy=Deploy text.sector.deploy=Deploy
text.sector.resume=Resume text.sector.resume=Resume
text.sector.unlocked=Sector completed!
text.sector.locked=[scarlet][[Incomplete] text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored] text.sector.unexplored=[accent][[Unexplored]
text.close=Close text.close=Close
text.save.playtime=Playtime: {0} text.save.playtime=Playtime: {0}
text.editor.brush=Brush text.editor.brush=Brush
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.sector.gameover=This sector has been lost. Re-deploy?
text.sector.retry=Retry
text.wave.lasted=You lasted until wave [accent]{0}[].
setting.fpscap.name=Max FPS
setting.fpscap.none=None
setting.fpscap.text={0} FPS
block.command-center.name=Command Center
text.mission=Mission:[LIGHT_GRAY] {0}
text.mission.wave=Survive [accent]{0}[] waves.
text.mission.battle=Destroy the enemy base.
text.none=<none>
text.sector.corrupted=[orange]A save file for this sector was found, but loading failed.\nA new one has been created.
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
text.mission.resource=Obtain {0} x{1}
text.unit.health=[LIGHT_GRAY]Health: {0}
text.unit.speed=[LIGHT_GRAY]Speed: {0}
block.drone-pad.name=Drone Pad
block.fabricator-pad.name=Fabricator Pad
block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
block.mass-driver.name=Mass Driver
block.blast-drill.name=Blast Drill
unit.drone.name=Drone
unit.drone.description=The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks.
unit.fabricator.name=Fabricator
unit.fabricator.description=An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone.
unit.scout.name=Scout
unit.scout.description=A basic ground unit. Uses lead as ammo.
unit.titan.name=Titan
unit.titan.description=An advanced armored ground unit. Uses carbide as ammo. Attacks both ground and air targets.
unit.monsoon.name=Monsoon
unit.monsoon.description=A heavy carpet bomber. Uses blast compound or pyratite as ammo.
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator

View File

@@ -1,4 +1,3 @@
text.about=Creado por [ROYAL]Anuken [] - [SKY] anukendev@gmail.com [] Originalmente una entrada en el [naranja] GDL [] Metal Monstrosity Jam. Créditos: - SFX hecho con [AMARILLO] bfxr [] - Música hecha por [VERDE] RoccoW [] / encontrado en [lime] FreeMusicArchive.org [] Agradecimientos especiales a: - [coral] MitchellFJN []: extensa prueba de juego y comentarios - [cielo] Luxray5474 []: trabajo wiki, contribuciones de código - [lime] Epowerj []: sistema de compilación de código, icono - Todos los probadores beta en itch.io y Google Play\n
text.credits=Créditos text.credits=Créditos
text.discord=¡Únete al Discord de Mindustry! text.discord=¡Únete al Discord de Mindustry!
text.link.discord.description=La sala oficial del discord de Mindustry text.link.discord.description=La sala oficial del discord de Mindustry
@@ -10,10 +9,8 @@ text.link.google-play.description=Listado en la tienda de Google Play
text.link.wiki.description=Wiki oficial de Mindustry text.link.wiki.description=Wiki oficial de Mindustry
text.linkfail=¡Error al abrir el enlace!\nLa URL ha sido copiada a su portapapeles text.linkfail=¡Error al abrir el enlace!\nLa URL ha sido copiada a su portapapeles
text.editor.web=¡La versión web no es compatible con el editor!\nDescargue el juego para usarlo. text.editor.web=¡La versión web no es compatible con el editor!\nDescargue el juego para usarlo.
text.multiplayer.web=¡Esta versión del juego no admite multijugador!\nPara jugar al modo multijugador desde su navegador, use el enlace "versión de varios jugadores" en la página itch.io.
text.gameover=El núcleo fue destruido. text.gameover=El núcleo fue destruido.
text.highscore=[YELLOW]¡Nueva mejor puntuación! text.highscore=[YELLOW]¡Nueva mejor puntuación!
text.lasted=Duró hasta la ronda
text.level.highscore=Puntuación màs alta: [accent] text.level.highscore=Puntuación màs alta: [accent]
text.level.delete.title=Confirmar Eliminación text.level.delete.title=Confirmar Eliminación
text.level.select=Selección de nivel text.level.select=Selección de nivel
@@ -165,9 +162,6 @@ text.settings.controls=Controles
text.settings.game=Juego text.settings.game=Juego
text.settings.sound=Sonido text.settings.sound=Sonido
text.settings.graphics=Gráficos text.settings.graphics=Gráficos
text.upgrades=Mejoras
text.purchased=[LIME] Creado!
text.weapons=Armas
text.paused=Pausado text.paused=Pausado
text.info.title=[acento] Información text.info.title=[acento] Información
text.error.title=[carmesí] Se ha producido un error text.error.title=[carmesí] Se ha producido un error
@@ -210,19 +204,6 @@ setting.musicvol.name=Volumen de la música
setting.mutemusic.name=Apagar música setting.mutemusic.name=Apagar música
setting.sfxvol.name=Volumen de los efectos de sonido setting.sfxvol.name=Volumen de los efectos de sonido
setting.mutesound.name=Apagar sonidos setting.mutesound.name=Apagar sonidos
map.maze.name=Laberinto
map.fortress.name=Fortaleza
map.sinkhole.name=Sumidero
map.caves.name=Cuevas
map.volcano.name=Volcán
map.caldera.name=Caldera
map.scorch.name=Desierto volcánico
map.desert.name=Desierto
map.island.name=Isla
map.grassland.name=Pastizal
map.tundra.name=Tundra
map.spiral.name=Espiral
map.tutorial.name=Tutorial
text.keybind.title=Vuelva a conectar las llaves text.keybind.title=Vuelva a conectar las llaves
keybind.move_x.name=mover_x keybind.move_x.name=mover_x
keybind.move_y.name=mover_y keybind.move_y.name=mover_y
@@ -231,14 +212,12 @@ keybind.break.name=Romper
keybind.shoot.name=¡Dispara! keybind.shoot.name=¡Dispara!
keybind.zoom_hold.name=Enfoque_Mantener keybind.zoom_hold.name=Enfoque_Mantener
keybind.zoom.name=Enfoquè keybind.zoom.name=Enfoquè
keybind.block_info.name=Bloque_informacion
keybind.menu.name=Menú keybind.menu.name=Menú
keybind.pause.name=Pausa keybind.pause.name=Pausa
keybind.dash.name=Deslizar keybind.dash.name=Deslizar
keybind.chat.name=Chat keybind.chat.name=Chat
keybind.player_list.name=Jugadores_lista keybind.player_list.name=Jugadores_lista
keybind.console.name=Console keybind.console.name=Console
keybind.rotate_alt.name=Rotacion_alt
keybind.rotate.name=Girar keybind.rotate.name=Girar
mode.text.help.title=Descripción de modos mode.text.help.title=Descripción de modos
mode.waves.name=Hordas mode.waves.name=Hordas
@@ -266,7 +245,6 @@ block.liquidjunction.name=Unión líquida
block.sorter.name=Clasificador block.sorter.name=Clasificador
block.smelter.name=horno de fundición block.smelter.name=horno de fundición
text.web.unsupported=The web version does not support this feature! Download the game to use it. text.web.unsupported=The web version does not support this feature! Download the game to use it.
text.host.web=The web version does not support hosting games! Download the game to use this feature.
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"? text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
text.construction.title=Block Construction Guide text.construction.title=Block Construction Guide
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left. text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
@@ -447,7 +425,6 @@ block.water-extractor.name=Water Extractor
block.cultivator.name=Cultivator block.cultivator.name=Cultivator
block.dart-ship-factory.name=Dart Ship Factory block.dart-ship-factory.name=Dart Ship Factory
block.delta-mech-factory.name=Delta Mech Factory block.delta-mech-factory.name=Delta Mech Factory
block.dronefactory.name=Drone Factory
block.repairpoint.name=Repair Point block.repairpoint.name=Repair Point
block.resupplypoint.name=Resupply Point block.resupplypoint.name=Resupply Point
block.liquidtank.name=Liquid Tank block.liquidtank.name=Liquid Tank
@@ -475,8 +452,6 @@ block.solar-panel.name=Solar Panel
block.solar-panel-large.name=Large Solar Panel block.solar-panel-large.name=Large Solar Panel
block.oil-extractor.name=Oil Extractor block.oil-extractor.name=Oil Extractor
block.javelin-ship-factory.name=Javelin Ship factory block.javelin-ship-factory.name=Javelin Ship factory
block.drone-factory.name=Drone Factory
block.fabricator-factory.name=Fabricator Factory
block.repair-point.name=Repair Point block.repair-point.name=Repair Point
block.resupply-point.name=Resupply Point block.resupply-point.name=Resupply Point
block.pulse-conduit.name=Pulse Conduit block.pulse-conduit.name=Pulse Conduit
@@ -495,9 +470,49 @@ text.sector=Selected Sector: [LIGHT_GRAY]{0}
text.sector.time=Time: [LIGHT_GRAY]{0} text.sector.time=Time: [LIGHT_GRAY]{0}
text.sector.deploy=Deploy text.sector.deploy=Deploy
text.sector.resume=Resume text.sector.resume=Resume
text.sector.unlocked=Sector completed!
text.sector.locked=[scarlet][[Incomplete] text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored] text.sector.unexplored=[accent][[Unexplored]
text.close=Close text.close=Close
text.save.playtime=Playtime: {0} text.save.playtime=Playtime: {0}
text.editor.brush=Brush text.editor.brush=Brush
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.sector.gameover=This sector has been lost. Re-deploy?
text.sector.retry=Retry
text.wave.lasted=You lasted until wave [accent]{0}[].
setting.fpscap.name=Max FPS
setting.fpscap.none=None
setting.fpscap.text={0} FPS
block.command-center.name=Command Center
text.mission=Mission:[LIGHT_GRAY] {0}
text.mission.wave=Survive [accent]{0}[] waves.
text.mission.battle=Destroy the enemy base.
text.none=<none>
text.sector.corrupted=[orange]A save file for this sector was found, but loading failed.\nA new one has been created.
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
text.mission.resource=Obtain {0} x{1}
text.unit.health=[LIGHT_GRAY]Health: {0}
text.unit.speed=[LIGHT_GRAY]Speed: {0}
block.drone-pad.name=Drone Pad
block.fabricator-pad.name=Fabricator Pad
block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
block.mass-driver.name=Mass Driver
block.blast-drill.name=Blast Drill
unit.drone.name=Drone
unit.drone.description=The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks.
unit.fabricator.name=Fabricator
unit.fabricator.description=An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone.
unit.scout.name=Scout
unit.scout.description=A basic ground unit. Uses lead as ammo.
unit.titan.name=Titan
unit.titan.description=An advanced armored ground unit. Uses carbide as ammo. Attacks both ground and air targets.
unit.monsoon.name=Monsoon
unit.monsoon.description=A heavy carpet bomber. Uses blast compound or pyratite as ammo.
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator

View File

@@ -1,8 +1,6 @@
text.about=Créé par [ROYAL]Anuken.[]\nA l'origine une entrée dans le [orange]GDL[] MM Jam.\n\nCrédits: \n- SFX réalisé avec [yellow]bfxr[] \n- Musique faite par [lime]RoccoW[] / trouvé sur [lime]FreeMusicArchive.org[] \n\nRemerciements particuliers à:\n- [coral]MitchellFJN[]: nombreux tests et retours d'expérience \n- [sky]Luxray5474[]: travail wiki, contributions de code \n- [lime]Epowerj[]: système de compilation de code, icône \n- Tous les beta testeurs sont sur itch.io et Google Play\n
text.discord=Rejoignez le discord de Mindustry text.discord=Rejoignez le discord de Mindustry
text.gameover=Le noyau a été détruit. text.gameover=Le noyau a été détruit.
text.highscore=[YELLOW]Nouveau meilleur score! text.highscore=[YELLOW]Nouveau meilleur score!
text.lasted=Vous avez duré jusqu'à la vague
text.level.highscore=Meilleur score: [accent]{0} text.level.highscore=Meilleur score: [accent]{0}
text.level.delete.title=Confirmer text.level.delete.title=Confirmer
text.level.select=Sélection de niveau text.level.select=Sélection de niveau
@@ -147,9 +145,6 @@ text.settings.controls=Contrôles
text.settings.game=Jeu text.settings.game=Jeu
text.settings.sound=Son text.settings.sound=Son
text.settings.graphics=Graphique text.settings.graphics=Graphique
text.upgrades=Améliorations
text.purchased=[VERT]Créé!
text.weapons=Armes
text.paused=Pause text.paused=Pause
text.info.title=[accent]Info text.info.title=[accent]Info
text.error.title=[crimson]Une erreur est survenue text.error.title=[crimson]Une erreur est survenue
@@ -192,19 +187,6 @@ setting.musicvol.name=volume musique
setting.mutemusic.name=Musique muette setting.mutemusic.name=Musique muette
setting.sfxvol.name=Volume SFX setting.sfxvol.name=Volume SFX
setting.mutesound.name=Son muet setting.mutesound.name=Son muet
map.maze.name=Labyrinthe
map.fortress.name=forteresse
map.sinkhole.name=gouffre
map.caves.name=cavernes
map.volcano.name=volcan
map.caldera.name=chaudron
map.scorch.name=brûlure
map.desert.name=désert
map.island.name=Île
map.grassland.name=prairie
map.tundra.name=toundra
map.spiral.name=spirale
map.tutorial.name=tutoriel
text.keybind.title=Relier le clés text.keybind.title=Relier le clés
keybind.move_x.name=mouvement x keybind.move_x.name=mouvement x
keybind.move_y.name=mouvement y keybind.move_y.name=mouvement y
@@ -213,14 +195,12 @@ keybind.break.name=Pause
keybind.shoot.name=tirer keybind.shoot.name=tirer
keybind.zoom_hold.name=tenir le zoom keybind.zoom_hold.name=tenir le zoom
keybind.zoom.name=zoom keybind.zoom.name=zoom
keybind.block_info.name=bloc_info
keybind.menu.name=menu keybind.menu.name=menu
keybind.pause.name=Pause keybind.pause.name=Pause
keybind.dash.name=attaque frontal keybind.dash.name=attaque frontal
keybind.chat.name=chat keybind.chat.name=chat
keybind.player_list.name=Liste des joueurs keybind.player_list.name=Liste des joueurs
keybind.console.name=console keybind.console.name=console
keybind.rotate_alt.name=tourner_alt
keybind.rotate.name=Tourner keybind.rotate.name=Tourner
mode.waves.name=Vagues mode.waves.name=Vagues
mode.sandbox.name=bac à sable mode.sandbox.name=bac à sable
@@ -254,8 +234,6 @@ text.link.wiki.description=official Mindustry wiki
text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard. text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
text.editor.web=The web version does not support the editor!\nDownload the game to use it. text.editor.web=The web version does not support the editor!\nDownload the game to use it.
text.web.unsupported=The web version does not support this feature! Download the game to use it. text.web.unsupported=The web version does not support this feature! Download the game to use it.
text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
text.host.web=The web version does not support hosting games! Download the game to use this feature.
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"? text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
text.construction.title=Block Construction Guide text.construction.title=Block Construction Guide
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left. text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
@@ -447,7 +425,6 @@ block.water-extractor.name=Water Extractor
block.cultivator.name=Cultivator block.cultivator.name=Cultivator
block.dart-ship-factory.name=Dart Ship Factory block.dart-ship-factory.name=Dart Ship Factory
block.delta-mech-factory.name=Delta Mech Factory block.delta-mech-factory.name=Delta Mech Factory
block.dronefactory.name=Drone Factory
block.repairpoint.name=Repair Point block.repairpoint.name=Repair Point
block.resupplypoint.name=Resupply Point block.resupplypoint.name=Resupply Point
block.liquidtank.name=Liquid Tank block.liquidtank.name=Liquid Tank
@@ -475,8 +452,6 @@ block.solar-panel.name=Solar Panel
block.solar-panel-large.name=Large Solar Panel block.solar-panel-large.name=Large Solar Panel
block.oil-extractor.name=Oil Extractor block.oil-extractor.name=Oil Extractor
block.javelin-ship-factory.name=Javelin Ship factory block.javelin-ship-factory.name=Javelin Ship factory
block.drone-factory.name=Drone Factory
block.fabricator-factory.name=Fabricator Factory
block.repair-point.name=Repair Point block.repair-point.name=Repair Point
block.resupply-point.name=Resupply Point block.resupply-point.name=Resupply Point
block.pulse-conduit.name=Pulse Conduit block.pulse-conduit.name=Pulse Conduit
@@ -495,9 +470,49 @@ text.sector=Selected Sector: [LIGHT_GRAY]{0}
text.sector.time=Time: [LIGHT_GRAY]{0} text.sector.time=Time: [LIGHT_GRAY]{0}
text.sector.deploy=Deploy text.sector.deploy=Deploy
text.sector.resume=Resume text.sector.resume=Resume
text.sector.unlocked=Sector completed!
text.sector.locked=[scarlet][[Incomplete] text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored] text.sector.unexplored=[accent][[Unexplored]
text.close=Close text.close=Close
text.save.playtime=Playtime: {0} text.save.playtime=Playtime: {0}
text.editor.brush=Brush text.editor.brush=Brush
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.sector.gameover=This sector has been lost. Re-deploy?
text.sector.retry=Retry
text.wave.lasted=You lasted until wave [accent]{0}[].
setting.fpscap.name=Max FPS
setting.fpscap.none=None
setting.fpscap.text={0} FPS
block.command-center.name=Command Center
text.mission=Mission:[LIGHT_GRAY] {0}
text.mission.wave=Survive [accent]{0}[] waves.
text.mission.battle=Destroy the enemy base.
text.none=<none>
text.sector.corrupted=[orange]A save file for this sector was found, but loading failed.\nA new one has been created.
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
text.mission.resource=Obtain {0} x{1}
text.unit.health=[LIGHT_GRAY]Health: {0}
text.unit.speed=[LIGHT_GRAY]Speed: {0}
block.drone-pad.name=Drone Pad
block.fabricator-pad.name=Fabricator Pad
block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
block.mass-driver.name=Mass Driver
block.blast-drill.name=Blast Drill
unit.drone.name=Drone
unit.drone.description=The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks.
unit.fabricator.name=Fabricator
unit.fabricator.description=An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone.
unit.scout.name=Scout
unit.scout.description=A basic ground unit. Uses lead as ammo.
unit.titan.name=Titan
unit.titan.description=An advanced armored ground unit. Uses carbide as ammo. Attacks both ground and air targets.
unit.monsoon.name=Monsoon
unit.monsoon.description=A heavy carpet bomber. Uses blast compound or pyratite as ammo.
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator

View File

@@ -1,8 +1,6 @@
text.about=Dibuat oleh [ROYAL]Anuken.[]\nAwalnya masuk di [orange]GDL[] MM Jam.\n\nKredit:\n- SFX dibuat dengan [YELLOW]bfxr[]\n- Musik dibuat oleh [GREEN]RoccoW[] / ditemukan di [lime]FreeMusicArchive.org[]\n\nTerima kasih khusus kepada:\n- [coral]MitchellFJN[]: playtesting dan umpan balik yang luas\n- [sky]Luxray5474[]: pekerjaan wiki, kontribusi kode\n- Semua penguji beta di itch.io dan Google Play\n
text.discord=Bergabunglah dengan Discord Mindustry! text.discord=Bergabunglah dengan Discord Mindustry!
text.gameover=Intinya hancur. text.gameover=Intinya hancur.
text.highscore=[YELLOW]Rekor baru! text.highscore=[YELLOW]Rekor baru!
text.lasted=Anda bertahan sampai gelombang
text.level.highscore=Skor Tinggi: [accent]{0} text.level.highscore=Skor Tinggi: [accent]{0}
text.level.delete.title=Konfirmasi Hapus text.level.delete.title=Konfirmasi Hapus
text.level.select=Pilih Level text.level.select=Pilih Level
@@ -117,9 +115,6 @@ text.settings.controls=Kontrol
text.settings.game=Permainan text.settings.game=Permainan
text.settings.sound=Suara text.settings.sound=Suara
text.settings.graphics=Grafis text.settings.graphics=Grafis
text.upgrades=Perbaruan
text.purchased=[LIME]Dibuat!
text.weapons=Senjata
text.paused=Jeda text.paused=Jeda
text.info.title=[accent]Info text.info.title=[accent]Info
text.error.title=[crimson]Telah terjadi kesalahan text.error.title=[crimson]Telah terjadi kesalahan
@@ -161,19 +156,6 @@ setting.musicvol.name=Volume Musik
setting.mutemusic.name=Bisukan Musik setting.mutemusic.name=Bisukan Musik
setting.sfxvol.name=Volume Suara setting.sfxvol.name=Volume Suara
setting.mutesound.name=Bisukan Suara setting.mutesound.name=Bisukan Suara
map.maze.name=labirin
map.fortress.name=benteng
map.sinkhole.name=lubang pembuangan
map.caves.name=gua
map.volcano.name=gunung berapi
map.caldera.name=kaldera
map.scorch.name=penghangusan
map.desert.name=gurun
map.island.name=pulau
map.grassland.name=padang rumput
map.tundra.name=tundra
map.spiral.name=spiral
map.tutorial.name=tutorial
keybind.move_x.name=gerak_x keybind.move_x.name=gerak_x
keybind.move_y.name=gerak_y keybind.move_y.name=gerak_y
keybind.select.name=pilih keybind.select.name=pilih
@@ -184,7 +166,6 @@ keybind.zoom.name=perbesar
keybind.menu.name=menu keybind.menu.name=menu
keybind.pause.name=jeda keybind.pause.name=jeda
keybind.dash.name=berlari keybind.dash.name=berlari
keybind.rotate_alt.name=putar_alt
keybind.rotate.name=putar keybind.rotate.name=putar
mode.waves.name=gelombang mode.waves.name=gelombang
mode.sandbox.name=sandbox mode.sandbox.name=sandbox
@@ -219,8 +200,6 @@ text.link.wiki.description=official Mindustry wiki
text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard. text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
text.editor.web=The web version does not support the editor!\nDownload the game to use it. text.editor.web=The web version does not support the editor!\nDownload the game to use it.
text.web.unsupported=The web version does not support this feature! Download the game to use it. text.web.unsupported=The web version does not support this feature! Download the game to use it.
text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
text.host.web=The web version does not support hosting games! Download the game to use this feature.
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"? text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
text.construction.title=Block Construction Guide text.construction.title=Block Construction Guide
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left. text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
@@ -359,7 +338,6 @@ text.category.shooting=Shooting
setting.multithread.name=Multithreading setting.multithread.name=Multithreading
setting.minimap.name=Show Minimap setting.minimap.name=Show Minimap
text.keybind.title=Rebind Keys text.keybind.title=Rebind Keys
keybind.block_info.name=block_info
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
@@ -447,7 +425,6 @@ block.water-extractor.name=Water Extractor
block.cultivator.name=Cultivator block.cultivator.name=Cultivator
block.dart-ship-factory.name=Dart Ship Factory block.dart-ship-factory.name=Dart Ship Factory
block.delta-mech-factory.name=Delta Mech Factory block.delta-mech-factory.name=Delta Mech Factory
block.dronefactory.name=Drone Factory
block.repairpoint.name=Repair Point block.repairpoint.name=Repair Point
block.resupplypoint.name=Resupply Point block.resupplypoint.name=Resupply Point
block.liquidtank.name=Liquid Tank block.liquidtank.name=Liquid Tank
@@ -475,8 +452,6 @@ block.solar-panel.name=Solar Panel
block.solar-panel-large.name=Large Solar Panel block.solar-panel-large.name=Large Solar Panel
block.oil-extractor.name=Oil Extractor block.oil-extractor.name=Oil Extractor
block.javelin-ship-factory.name=Javelin Ship factory block.javelin-ship-factory.name=Javelin Ship factory
block.drone-factory.name=Drone Factory
block.fabricator-factory.name=Fabricator Factory
block.repair-point.name=Repair Point block.repair-point.name=Repair Point
block.resupply-point.name=Resupply Point block.resupply-point.name=Resupply Point
block.pulse-conduit.name=Pulse Conduit block.pulse-conduit.name=Pulse Conduit
@@ -495,9 +470,49 @@ text.sector=Selected Sector: [LIGHT_GRAY]{0}
text.sector.time=Time: [LIGHT_GRAY]{0} text.sector.time=Time: [LIGHT_GRAY]{0}
text.sector.deploy=Deploy text.sector.deploy=Deploy
text.sector.resume=Resume text.sector.resume=Resume
text.sector.unlocked=Sector completed!
text.sector.locked=[scarlet][[Incomplete] text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored] text.sector.unexplored=[accent][[Unexplored]
text.close=Close text.close=Close
text.save.playtime=Playtime: {0} text.save.playtime=Playtime: {0}
text.editor.brush=Brush text.editor.brush=Brush
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.sector.gameover=This sector has been lost. Re-deploy?
text.sector.retry=Retry
text.wave.lasted=You lasted until wave [accent]{0}[].
setting.fpscap.name=Max FPS
setting.fpscap.none=None
setting.fpscap.text={0} FPS
block.command-center.name=Command Center
text.mission=Mission:[LIGHT_GRAY] {0}
text.mission.wave=Survive [accent]{0}[] waves.
text.mission.battle=Destroy the enemy base.
text.none=<none>
text.sector.corrupted=[orange]A save file for this sector was found, but loading failed.\nA new one has been created.
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
text.mission.resource=Obtain {0} x{1}
text.unit.health=[LIGHT_GRAY]Health: {0}
text.unit.speed=[LIGHT_GRAY]Speed: {0}
block.drone-pad.name=Drone Pad
block.fabricator-pad.name=Fabricator Pad
block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
block.mass-driver.name=Mass Driver
block.blast-drill.name=Blast Drill
unit.drone.name=Drone
unit.drone.description=The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks.
unit.fabricator.name=Fabricator
unit.fabricator.description=An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone.
unit.scout.name=Scout
unit.scout.description=A basic ground unit. Uses lead as ammo.
unit.titan.name=Titan
unit.titan.description=An advanced armored ground unit. Uses carbide as ammo. Attacks both ground and air targets.
unit.monsoon.name=Monsoon
unit.monsoon.description=A heavy carpet bomber. Uses blast compound or pyratite as ammo.
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator

View File

@@ -1,4 +1,3 @@
text.about=Creato da [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\nOriginariamente parte del [orange]GDL[] Metal Monstrosity Jam.\n\n Crediti:\n - SFX realizzato con [YELLOW]bfxr [] \n - Musica creata da [GREEN]RoccoW[] / trovata su [lime]FreeMusicArchive.org[]\n\n Un ringraziamento speciale a:\n - [coral]MitchellFJN []: esteso test del gioco e feedback\n - [sky]Luxray5474 []: sviluppo della wiki, contributi col codice\n - [lime]Epowerj []: sistema di costruzione del codice, icone\n - Tutti i beta tester su itch.io e Google Play\n - [SCARLET] Ludovico Vaghi [], [SCARLET] Enrico Franciscono [] e [SCARLET] Luca Deluigi [] per la traduzione italiana\n
text.credits=Crediti text.credits=Crediti
text.discord=Unisciti sul server discord di mindustry! text.discord=Unisciti sul server discord di mindustry!
text.link.discord.description=la chatroom ufficiale del server discord di Mindustry text.link.discord.description=la chatroom ufficiale del server discord di Mindustry
@@ -10,10 +9,8 @@ text.link.google-play.description=Elenco di Google Play Store
text.link.wiki.description=wiki ufficiale di Mindustry text.link.wiki.description=wiki ufficiale di Mindustry
text.linkfail=Impossibile aprire il link! L'URL è stato copiato nella tua bacheca. text.linkfail=Impossibile aprire il link! L'URL è stato copiato nella tua bacheca.
text.editor.web=La versione web non supporta l'editor! Scarica il gioco per usarlo. text.editor.web=La versione web non supporta l'editor! Scarica il gioco per usarlo.
text.multiplayer.web=Questa versione del gioco non supporta il multiplayer! Per giocare in multiplayer dal tuo browser, usa il link "versione web multiplayer" nella pagina itch.io.
text.gameover=Il nucleo è stato distrutto. text.gameover=Il nucleo è stato distrutto.
text.highscore=[YELLOW]Nuovo record! text.highscore=[YELLOW]Nuovo record!
text.lasted=Sei durato fino all'ondata
text.level.highscore=Miglior punteggio: [accent]{0} text.level.highscore=Miglior punteggio: [accent]{0}
text.level.delete.title=Conferma Eliminazione text.level.delete.title=Conferma Eliminazione
text.level.select=Selezione del livello text.level.select=Selezione del livello
@@ -165,9 +162,6 @@ text.settings.controls=Controlli
text.settings.game=Gioco text.settings.game=Gioco
text.settings.sound=Suono text.settings.sound=Suono
text.settings.graphics=Grafica text.settings.graphics=Grafica
text.upgrades=Miglioramenti
text.purchased=[LIME]Creato!
text.weapons=Armi
text.paused=In pausa text.paused=In pausa
text.info.title=[Accent]Info text.info.title=[Accent]Info
text.error.title=[crimson]Si è verificato un errore text.error.title=[crimson]Si è verificato un errore
@@ -210,19 +204,6 @@ setting.musicvol.name=Volume Musica
setting.mutemusic.name=Silenzia musica setting.mutemusic.name=Silenzia musica
setting.sfxvol.name=Volume SFX setting.sfxvol.name=Volume SFX
setting.mutesound.name=Togli suoni setting.mutesound.name=Togli suoni
map.maze.name=labirinto
map.fortress.name=fortezza
map.sinkhole.name=dolina
map.caves.name=grotte
map.volcano.name=vulcano
map.caldera.name=caldera
map.scorch.name=bruciatura
map.desert.name=deserto
map.island.name=isola
map.grassland.name=prateria
map.tundra.name=tundra
map.spiral.name=spirale
map.tutorial.name=tutorial
text.keybind.title=Configurazione Tasti text.keybind.title=Configurazione Tasti
keybind.move_x.name=Sposta_x keybind.move_x.name=Sposta_x
keybind.move_y.name=Sposta_y keybind.move_y.name=Sposta_y
@@ -231,14 +212,12 @@ keybind.break.name=rompi
keybind.shoot.name=spara keybind.shoot.name=spara
keybind.zoom_hold.name=zoom_hold keybind.zoom_hold.name=zoom_hold
keybind.zoom.name=zoom keybind.zoom.name=zoom
keybind.block_info.name=Informazioni blocco
keybind.menu.name=menu keybind.menu.name=menu
keybind.pause.name=pausa keybind.pause.name=pausa
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_giocatori
keybind.console.name=console keybind.console.name=console
keybind.rotate_alt.name=rotate_alt
keybind.rotate.name=Ruotare keybind.rotate.name=Ruotare
mode.text.help.title=Descrizione delle modalità mode.text.help.title=Descrizione delle modalità
mode.waves.name=ondate mode.waves.name=ondate
@@ -500,4 +479,4 @@ block.liquid-tank.name=Tanica d'acqua
block.liquid-junction.name=Giunzione liquida block.liquid-junction.name=Giunzione liquida
block.bridge-conduit.name=Condotta forzata sopraelevata block.bridge-conduit.name=Condotta forzata sopraelevata
block.rotary-pump.name=Pompa a turbina block.rotary-pump.name=Pompa a turbina
block.nuclear-reactor.name=Reattore nucleare block.nuclear-reactor.name=Reattore nucleare

View File

@@ -1,4 +1,3 @@
text.about=제작자 : [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]
text.credits=제작자 text.credits=제작자
text.discord=Mindustry Discord 에 참여하세요! text.discord=Mindustry Discord 에 참여하세요!
text.link.discord.description=공식 Mindustry Discord 채팅방 text.link.discord.description=공식 Mindustry Discord 채팅방
@@ -11,11 +10,8 @@ text.link.wiki.description=공식 Mindustry 위키
text.linkfail=링크를 여는데 실패했습니다!URL이 기기의 클립보드에 복사되었습니다. text.linkfail=링크를 여는데 실패했습니다!URL이 기기의 클립보드에 복사되었습니다.
text.editor.web=HTML5 버전은 에디터 기능을 지원하지 않습니다!게임을 다운로드 한 뒤에 사용 해 주세요. text.editor.web=HTML5 버전은 에디터 기능을 지원하지 않습니다!게임을 다운로드 한 뒤에 사용 해 주세요.
text.web.unsupported=HTML5 버전은 이 기능을 지원하지 않습니다!게임을 다운로드 한 뒤에 사용 해 주세요. text.web.unsupported=HTML5 버전은 이 기능을 지원하지 않습니다!게임을 다운로드 한 뒤에 사용 해 주세요.
text.multiplayer.web=이 버전은 멀티플레이를 지원하지 않습니다!멀티플레이를 웹 브라우저에서 즐기고 싶다면, itch.io 페이지에서 "multiplayer web version" 링크로 들어가면 됩니다.
text.host.web=HTML5 버전은 게임 호스팅을 지원하지 않습니다!게임을 다운로드 한 뒤에 사용 해 주세요.
text.gameover=코어가 터졌습니다. 게임 오버! text.gameover=코어가 터졌습니다. 게임 오버!
text.highscore=[YELLOW]최고점수 달성! text.highscore=[YELLOW]최고점수 달성!
text.lasted=마지막으로 달성한 웨이브
text.level.highscore=최고 점수 : [accent]{0} text.level.highscore=최고 점수 : [accent]{0}
text.level.delete.title=삭제 확인 text.level.delete.title=삭제 확인
text.map.delete=정말로 "[orange]{0}[]" 맵을 삭제하시겠습니까? text.map.delete=정말로 "[orange]{0}[]" 맵을 삭제하시겠습니까?
@@ -223,9 +219,6 @@ text.settings.controls=컨트롤
text.settings.game=게임 text.settings.game=게임
text.settings.sound=소리 text.settings.sound=소리
text.settings.graphics=화면 text.settings.graphics=화면
text.upgrades=강화
text.purchased=[LIME]생성됨!
text.weapons=무기
text.paused=일시 정지 text.paused=일시 정지
text.yes= text.yes=
text.no=아니오 text.no=아니오
@@ -311,19 +304,6 @@ setting.musicvol.name=음악 크기
setting.mutemusic.name=음소거 setting.mutemusic.name=음소거
setting.sfxvol.name=효과음 크기 setting.sfxvol.name=효과음 크기
setting.mutesound.name=소리 끄기 setting.mutesound.name=소리 끄기
map.maze.name=미로
map.fortress.name=요새
map.sinkhole.name=싱크홀
map.caves.name=동굴
map.volcano.name=화산
map.caldera.name=칼데라
map.scorch.name=타버림
map.desert.name=사막
map.island.name=
map.grassland.name=목초지
map.tundra.name=툰트라
map.spiral.name=나선
map.tutorial.name=게임 방법
text.keybind.title=키 바인딩 text.keybind.title=키 바인딩
keybind.move_x.name=오른쪽/왼쪽 이동 keybind.move_x.name=오른쪽/왼쪽 이동
keybind.move_y.name=위쪽/아래쪽 이동 keybind.move_y.name=위쪽/아래쪽 이동
@@ -332,14 +312,12 @@ keybind.break.name=파괴
keybind.shoot.name=사격 keybind.shoot.name=사격
keybind.zoom_hold.name=길게눌러 확대 keybind.zoom_hold.name=길게눌러 확대
keybind.zoom.name=확대 keybind.zoom.name=확대
keybind.block_info.name=블럭 정보
keybind.menu.name=메뉴 keybind.menu.name=메뉴
keybind.pause.name=일시중지 keybind.pause.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_alt.name=rotate_alt
keybind.rotate.name=회전 keybind.rotate.name=회전
mode.text.help.title=도움말 mode.text.help.title=도움말
mode.waves.name=웨이브 mode.waves.name=웨이브
@@ -443,7 +421,6 @@ block.water-extractor.name=물 추출기
block.cultivator.name=경운기 block.cultivator.name=경운기
block.dart-ship-factory.name=다트 선박 공장 block.dart-ship-factory.name=다트 선박 공장
block.delta-mech-factory.name=델타 메크 공장 block.delta-mech-factory.name=델타 메크 공장
block.dronefactory.name=드론 공장
block.repairpoint.name=수리 포인트 block.repairpoint.name=수리 포인트
block.resupplypoint.name=재공급 포인트 block.resupplypoint.name=재공급 포인트
block.conduit.name=도관 block.conduit.name=도관
@@ -475,8 +452,6 @@ block.solar-panel.name=태양 전지 패널
block.solar-panel-large.name=대형 태양 전지판 block.solar-panel-large.name=대형 태양 전지판
block.oil-extractor.name=오일 추출기 block.oil-extractor.name=오일 추출기
block.javelin-ship-factory.name=창 던지기 선박 공장 block.javelin-ship-factory.name=창 던지기 선박 공장
block.drone-factory.name=드론 팩토리
block.fabricator-factory.name=Fabricator 공장
block.repair-point.name=수리 점 block.repair-point.name=수리 점
block.resupply-point.name=재 공급 포인트 block.resupply-point.name=재 공급 포인트
block.pulse-conduit.name=펄스 도관 block.pulse-conduit.name=펄스 도관
@@ -495,9 +470,49 @@ text.sector=Selected Sector: [LIGHT_GRAY]{0}
text.sector.time=Time: [LIGHT_GRAY]{0} text.sector.time=Time: [LIGHT_GRAY]{0}
text.sector.deploy=Deploy text.sector.deploy=Deploy
text.sector.resume=Resume text.sector.resume=Resume
text.sector.unlocked=Sector completed!
text.sector.locked=[scarlet][[Incomplete] text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored] text.sector.unexplored=[accent][[Unexplored]
text.close=Close text.close=Close
text.save.playtime=Playtime: {0} text.save.playtime=Playtime: {0}
text.editor.brush=Brush text.editor.brush=Brush
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.sector.gameover=This sector has been lost. Re-deploy?
text.sector.retry=Retry
text.wave.lasted=You lasted until wave [accent]{0}[].
setting.fpscap.name=Max FPS
setting.fpscap.none=None
setting.fpscap.text={0} FPS
block.command-center.name=Command Center
text.mission=Mission:[LIGHT_GRAY] {0}
text.mission.wave=Survive [accent]{0}[] waves.
text.mission.battle=Destroy the enemy base.
text.none=<none>
text.sector.corrupted=[orange]A save file for this sector was found, but loading failed.\nA new one has been created.
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
text.mission.resource=Obtain {0} x{1}
text.unit.health=[LIGHT_GRAY]Health: {0}
text.unit.speed=[LIGHT_GRAY]Speed: {0}
block.drone-pad.name=Drone Pad
block.fabricator-pad.name=Fabricator Pad
block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
block.mass-driver.name=Mass Driver
block.blast-drill.name=Blast Drill
unit.drone.name=Drone
unit.drone.description=The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks.
unit.fabricator.name=Fabricator
unit.fabricator.description=An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone.
unit.scout.name=Scout
unit.scout.description=A basic ground unit. Uses lead as ammo.
unit.titan.name=Titan
unit.titan.description=An advanced armored ground unit. Uses carbide as ammo. Attacks both ground and air targets.
unit.monsoon.name=Monsoon
unit.monsoon.description=A heavy carpet bomber. Uses blast compound or pyratite as ammo.
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator

View File

@@ -1,8 +1,6 @@
text.about=Stworzony przez [ROYAL] Anuken. []\nPierwotnie wpis w [orange] GDL [] MM Jam.\n\nNapisy:\n- SFX wykonane z pomocą [YELLOW] bfxr []\n- Muzyka wykonana przez [GREEN] RoccoW [] / znaleziona na [lime] FreeMusicArchive.org []\n\nSpecjalne podziękowania dla:\n- [coral] MitchellFJN []: obszerne testowanie i feedback\n- [niebo] Luxray5474 []: prace związane z wiki, pomoc z kodem\n- Wszystkich beta testerów na itch.io i Google Play\n
text.discord=Odwiedź nasz serwer Discord text.discord=Odwiedź nasz serwer Discord
text.gameover=Rdzeń został zniszczony. text.gameover=Rdzeń został zniszczony.
text.highscore=[YELLOW] Nowy rekord! text.highscore=[YELLOW] Nowy rekord!
text.lasted=Wytrwałeś do fali
text.level.highscore=Rekord: [accent]{0} text.level.highscore=Rekord: [accent]{0}
text.level.delete.title=Potwierdź usuwanie text.level.delete.title=Potwierdź usuwanie
text.level.select=Wybrany poziom text.level.select=Wybrany poziom
@@ -117,9 +115,6 @@ text.settings.controls=Sterowanie
text.settings.game=Gra text.settings.game=Gra
text.settings.sound=Dźwięk text.settings.sound=Dźwięk
text.settings.graphics=Grafika text.settings.graphics=Grafika
text.upgrades=Ulepszenia
text.purchased=[LIME]Stworzono!
text.weapons=Bronie
text.paused=Wstrzymano text.paused=Wstrzymano
text.info.title=[accent]Informacje text.info.title=[accent]Informacje
text.error.title=[crimson]Wystąpił błąd text.error.title=[crimson]Wystąpił błąd
@@ -160,19 +155,6 @@ setting.musicvol.name=Głośność muzyki
setting.mutemusic.name=Wycisz muzykę setting.mutemusic.name=Wycisz muzykę
setting.sfxvol.name=Głośność dźwięków setting.sfxvol.name=Głośność dźwięków
setting.mutesound.name=Wycisz dźwięki setting.mutesound.name=Wycisz dźwięki
map.maze.name=labirynt
map.fortress.name=twierdza
map.sinkhole.name=wgłębienie
map.caves.name=jaskinie
map.volcano.name=wulkan
map.caldera.name=kaldera
map.scorch.name=opalacz
map.desert.name=pustynia
map.island.name=wyspa
map.grassland.name=łąka
map.tundra.name=tundra
map.spiral.name=spirala
map.tutorial.name=Poradnik
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.select.name=Wybieranie keybind.select.name=Wybieranie
@@ -183,7 +165,6 @@ keybind.zoom.name=Przybliżanie
keybind.menu.name=menu keybind.menu.name=menu
keybind.pause.name=pauza keybind.pause.name=pauza
keybind.dash.name=przyśpieszenie keybind.dash.name=przyśpieszenie
keybind.rotate_alt.name=Obracanie (1)
keybind.rotate.name=Obracanie (2) keybind.rotate.name=Obracanie (2)
mode.waves.name=Fale mode.waves.name=Fale
mode.sandbox.name=sandbox mode.sandbox.name=sandbox
@@ -218,8 +199,6 @@ text.link.wiki.description=Oficjana Wiki Mindustry
text.linkfail=Nie udało się otworzyć linku!\nURL został skopiowany. text.linkfail=Nie udało się otworzyć linku!\nURL został skopiowany.
text.editor.web=Wersja przeglądarkowa nie wspomaga edytora map!\nPobierz grę aby użyć edytora. text.editor.web=Wersja przeglądarkowa nie wspomaga edytora map!\nPobierz grę aby użyć edytora.
text.web.unsupported=Wersja przeglądarkowa nie wspomaga tej fukcji!\nPobierz grę aby użyć tej funkcji. text.web.unsupported=Wersja przeglądarkowa nie wspomaga tej fukcji!\nPobierz grę aby użyć tej funkcji.
text.multiplayer.web=Ta wersja gry nie wspomaga gry wieloosobowej!\nAby zagrać w grę wieloosobową, użyj wersji "wieloosobowa gra przeglądarkowa" na stronie itch.io.
text.host.web=Wersja przglądarkowa nie wspomaga tworzenia serwerów!\nPobierz grę aby użyć tej funkcji.
text.map.delete=Jesteś pewny, że chcesz usunąć "[orange]{0}[]"? text.map.delete=Jesteś pewny, że chcesz usunąć "[orange]{0}[]"?
text.construction.title=Poradnik tworzenia bloków text.construction.title=Poradnik tworzenia bloków
text.construction=Wybrałeś [accent]tryb tworzenia bloków[].\n\nAby zacząć stawiać bloki, po prostu kliknij na dostępne pole obot twojego statku.\nKiedy wybrałeś kilka bloków, kliknij ptaszek i twój statek zacznie budować bloki.\n\n- [accent]Anuluj bloki[] z twojej kolekcji przez klikanie ich(?).\n- [accent]Przesuwaj bloki w kolekcji[] przez przeciąganie ich w opowiednim kierunku.\n- [accent]Stawiaj bloki w lini[] przez kliknięcie w wybranym miejscu i przesuięcie palca.\n- [accent]Anuluj konstrukcję lub kolekcję [] przez kliknięcie X w lewym dolnym rogu. text.construction=Wybrałeś [accent]tryb tworzenia bloków[].\n\nAby zacząć stawiać bloki, po prostu kliknij na dostępne pole obot twojego statku.\nKiedy wybrałeś kilka bloków, kliknij ptaszek i twój statek zacznie budować bloki.\n\n- [accent]Anuluj bloki[] z twojej kolekcji przez klikanie ich(?).\n- [accent]Przesuwaj bloki w kolekcji[] przez przeciąganie ich w opowiednim kierunku.\n- [accent]Stawiaj bloki w lini[] przez kliknięcie w wybranym miejscu i przesuięcie palca.\n- [accent]Anuluj konstrukcję lub kolekcję [] przez kliknięcie X w lewym dolnym rogu.
@@ -359,7 +338,6 @@ setting.fullscreen.name=Pełny ekran
setting.multithread.name=Wielowątkowość setting.multithread.name=Wielowątkowość
setting.minimap.name=Pokaż Minimapę setting.minimap.name=Pokaż Minimapę
text.keybind.title=Zmień ustawienia przycisków text.keybind.title=Zmień ustawienia przycisków
keybind.block_info.name=Informacje o bloku
keybind.chat.name=Chat keybind.chat.name=Chat
keybind.player_list.name=Lista graczy keybind.player_list.name=Lista graczy
keybind.console.name=Konsola keybind.console.name=Konsola
@@ -447,7 +425,6 @@ block.water-extractor.name=Wodny Ekstraktor
block.cultivator.name=Spluchniacz block.cultivator.name=Spluchniacz
block.dart-ship-factory.name=Fabryka Staktów "DART" block.dart-ship-factory.name=Fabryka Staktów "DART"
block.delta-mech-factory.name=Fabryka Mecha "DELTA" block.delta-mech-factory.name=Fabryka Mecha "DELTA"
block.dronefactory.name=Fabryka Dronów
block.repairpoint.name=Punkt Naprawy block.repairpoint.name=Punkt Naprawy
block.resupplypoint.name=Punkt Uzupełniania Amunicji block.resupplypoint.name=Punkt Uzupełniania Amunicji
block.liquidtank.name=Zbiornik na Płyny block.liquidtank.name=Zbiornik na Płyny
@@ -473,8 +450,6 @@ block.solar-panel.name=Panel Słoneczny
block.solar-panel-large.name=Duży Panel Słoneczny block.solar-panel-large.name=Duży Panel Słoneczny
block.oil-extractor.name=Ekstraktor Ropy block.oil-extractor.name=Ekstraktor Ropy
block.javelin-ship-factory.name=Fabryka Statków "JAVELIN" block.javelin-ship-factory.name=Fabryka Statków "JAVELIN"
block.drone-factory.name=Fabryka Dronów
block.fabricator-factory.name=Fabryka Dronów Budowlanych
block.repair-point.name=Punkt Napraw block.repair-point.name=Punkt Napraw
block.resupply-point.name=Punkt Uzupełniania Amunicji block.resupply-point.name=Punkt Uzupełniania Amunicji
block.pulse-conduit.name=Rura Pulsacyjna block.pulse-conduit.name=Rura Pulsacyjna
@@ -493,7 +468,6 @@ text.sector=Wybrany Sektor: [LIGHT_GRAY]{0}
text.sector.time=Czas: [LIGHT_GRAY]{0} text.sector.time=Czas: [LIGHT_GRAY]{0}
text.sector.deploy=Wejdź text.sector.deploy=Wejdź
text.sector.resume=Wznów text.sector.resume=Wznów
text.sector.unlocked=Sektor ukończony!
text.sector.locked=[scarlet][[Niegotowy] text.sector.locked=[scarlet][[Niegotowy]
text.sector.unexplored=[accent][[Nieodkryty] text.sector.unexplored=[accent][[Nieodkryty]
text.close=Zamknij text.close=Zamknij
@@ -501,3 +475,44 @@ text.save.playtime=Czas gry: {0}
text.editor.brush=Pędzel text.editor.brush=Pędzel
block.itemvoid.name=Item Void block.itemvoid.name=Item Void
block.powervoid.name=Power Void block.powervoid.name=Power Void
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.sector.gameover=This sector has been lost. Re-deploy?
text.sector.retry=Retry
text.wave.lasted=You lasted until wave [accent]{0}[].
setting.fpscap.name=Max FPS
setting.fpscap.none=None
setting.fpscap.text={0} FPS
block.command-center.name=Command Center
text.mission=Mission:[LIGHT_GRAY] {0}
text.mission.wave=Survive [accent]{0}[] waves.
text.mission.battle=Destroy the enemy base.
text.none=<none>
text.sector.corrupted=[orange]A save file for this sector was found, but loading failed.\nA new one has been created.
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
text.mission.resource=Obtain {0} x{1}
text.unit.health=[LIGHT_GRAY]Health: {0}
text.unit.speed=[LIGHT_GRAY]Speed: {0}
block.drone-pad.name=Drone Pad
block.fabricator-pad.name=Fabricator Pad
block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
block.mass-driver.name=Mass Driver
block.blast-drill.name=Blast Drill
unit.drone.name=Drone
unit.drone.description=The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks.
unit.fabricator.name=Fabricator
unit.fabricator.description=An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone.
unit.scout.name=Scout
unit.scout.description=A basic ground unit. Uses lead as ammo.
unit.titan.name=Titan
unit.titan.description=An advanced armored ground unit. Uses carbide as ammo. Attacks both ground and air targets.
unit.monsoon.name=Monsoon
unit.monsoon.description=A heavy carpet bomber. Uses blast compound or pyratite as ammo.
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator

View File

@@ -1,8 +1,6 @@
text.about=Criado por [ROYAL]Anuken.[]\nOriginalmente uma entrada para a [orange]GDL[] MM Jam.\n\nCredits:\n- SFX feito com [YELLOW]bfxr[]\n- Música feita por [GREEN]RoccoW[] / encontrada em [lime]FreeMusicArchive.org[]\n\nAgradecimento especial para:\n- [coral]MitchellFJN[]: playtesting extensivo e feedback\n- [sky]Luxray5474[]: wiki work e contribuições com código\n- Todos os beta testers do itch.io e Google Play\n
text.discord=Junte-se ao Discord do Mindustry! (Lá nós falamos em inglês) text.discord=Junte-se ao Discord do Mindustry! (Lá nós falamos em inglês)
text.gameover=O núcleo foi destruído. text.gameover=O núcleo foi destruído.
text.highscore=[YELLOW]Novo recorde! text.highscore=[YELLOW]Novo recorde!
text.lasted=Você durou até a horda
text.level.highscore=Melhor\npontuação: [accent] {0} text.level.highscore=Melhor\npontuação: [accent] {0}
text.level.delete.title=Confirmar exclusão text.level.delete.title=Confirmar exclusão
text.level.select=Seleção de Fase text.level.select=Seleção de Fase
@@ -48,7 +46,7 @@ text.editor.saveimage=Salvar\nImagem
text.editor.unsaved=[scarlet]Você tem alterações não salvas![]\nTem certeza que quer sair? text.editor.unsaved=[scarlet]Você tem alterações não salvas![]\nTem certeza que quer sair?
text.editor.resizemap=Redimensionar Mapa text.editor.resizemap=Redimensionar Mapa
text.editor.mapname=Nome do Mapa: text.editor.mapname=Nome do Mapa:
text.editor.overwrite=[accent]Aviso!\nIsso sobrescreve um mapa existente. text.editor.overwrite=[accent]Aviso!\nIsso Subistitui um mapa existente.
text.editor.selectmap=Selecione uma mapa para carregar: text.editor.selectmap=Selecione uma mapa para carregar:
text.width=Largura: text.width=Largura:
text.height=Altura: text.height=Altura:
@@ -66,12 +64,9 @@ text.settings.controls=Controles
text.settings.game=Jogo text.settings.game=Jogo
text.settings.sound=Som text.settings.sound=Som
text.settings.graphics=Gráficos text.settings.graphics=Gráficos
text.upgrades=Melhorias
text.purchased=[LIME]Comprado!
text.weapons=Arsenal
text.paused=Pausado text.paused=Pausado
text.error.title=[crimson]Um erro ocorreu text.error.title=[crimson]Ocorreu um Erro.
text.error.crashtitle=Um erro ocorreu. text.error.crashtitle=Ocorreu um Erro
text.blocks.blockinfo=Informação do Bloco text.blocks.blockinfo=Informação do Bloco
text.blocks.powercapacity=Capacidade de Energia text.blocks.powercapacity=Capacidade de Energia
text.blocks.powershot=Energia/tiro text.blocks.powershot=Energia/tiro
@@ -92,7 +87,7 @@ setting.difficulty.hard=Difícil
setting.difficulty.name=Dificuldade setting.difficulty.name=Dificuldade
setting.screenshake.name=Balanço da Tela setting.screenshake.name=Balanço da Tela
setting.indicators.name=Indicadores de Inimigos setting.indicators.name=Indicadores de Inimigos
setting.effects.name=Particulas setting.effects.name=Efeitos
setting.sensitivity.name=Sensibilidade do Controle setting.sensitivity.name=Sensibilidade do Controle
setting.fps.name=Mostrar FPS setting.fps.name=Mostrar FPS
setting.vsync.name=VSync setting.vsync.name=VSync
@@ -102,19 +97,6 @@ setting.musicvol.name=Volume da Música
setting.mutemusic.name=Desligar Musica setting.mutemusic.name=Desligar Musica
setting.sfxvol.name=Volume de Efeitos setting.sfxvol.name=Volume de Efeitos
setting.mutesound.name=Desligar Som setting.mutesound.name=Desligar Som
map.maze.name=maze
map.fortress.name=fortress
map.sinkhole.name=sinkhole
map.caves.name=caves
map.volcano.name=volcano
map.caldera.name=caldera
map.scorch.name=scorch
map.desert.name=desert
map.island.name=island
map.grassland.name=grassland
map.tundra.name=tundra
map.spiral.name=spiral
map.tutorial.name=tutorial
keybind.move_x.name=move_x keybind.move_x.name=move_x
keybind.move_y.name=move_y keybind.move_y.name=move_y
keybind.select.name=selecionar keybind.select.name=selecionar
@@ -124,7 +106,6 @@ keybind.zoom.name=zoom
keybind.menu.name=menu keybind.menu.name=menu
keybind.pause.name=pausar keybind.pause.name=pausar
keybind.dash.name=Correr keybind.dash.name=Correr
keybind.rotate_alt.name=girar_alt*
keybind.rotate.name=girar keybind.rotate.name=girar
mode.waves.name=hordas mode.waves.name=hordas
mode.sandbox.name=sandbox mode.sandbox.name=sandbox
@@ -149,310 +130,305 @@ block.liquidjunction.name=Junção de líquido
block.sorter.name=Ordenador block.sorter.name=Ordenador
block.sorter.description=[interact]Aperte no bloco para configurar[] block.sorter.description=[interact]Aperte no bloco para configurar[]
block.smelter.name=Fornalha block.smelter.name=Fornalha
text.credits=Credits text.credits=Creditos
text.link.discord.description=the official Mindustry discord chatroom text.link.discord.description=O discord oficial do Mindustry
text.link.github.description=Game source code text.link.github.description=Game source code
text.link.dev-builds.description=Unstable development builds text.link.dev-builds.description=Desenvolvimentos Instaveis
text.link.trello.description=Official trello board for planned features text.link.trello.description=Trello Oficial para Updates Planejados
text.link.itch.io.description=itch.io page with PC downloads and web version text.link.itch.io.description=Pagina da Itch.io com os Downloads
text.link.google-play.description=Google Play store listing text.link.google-play.description=Google Play store listing
text.link.wiki.description=official Mindustry wiki text.link.wiki.description=Wiki oficial do Mindustry
text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard. text.linkfail=Falha ao abrir o link\nO Url foi copiado
text.editor.web=The web version does not support the editor!\nDownload the game to use it. text.editor.web=A versão web não suporta o editor!\nBaixe o jogo para usar.
text.web.unsupported=The web version does not support this feature! Download the game to use it. text.web.unsupported=A versão web não suporta este recurso! Baixe o jogo para usar.
text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page. text.map.delete=Certeza que quer deletar o mapa "[orange]{0}[]"?
text.host.web=The web version does not support hosting games! Download the game to use this feature. text.construction.title=Guia de contrução de blocos
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
text.construction.title=Block Construction Guide
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left. text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
text.deconstruction.title=Block Deconstruction Guide text.deconstruction.title=Block Deconstruction Guide
text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left. text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
text.showagain=Don't show again next session text.showagain=Não mostrar na proxima sessão
text.unlocks=Unlocks text.unlocks=Desbloqueados
text.joingame=Join Game text.joingame=Entrar no Jogo
text.addplayers=Add/Remove Players text.addplayers=Adicionar/Remover Jogador
text.maps=Maps text.maps=Mapas
text.maps.none=[LIGHT_GRAY]No maps found! text.maps.none=[LIGHT_GRAY]Nenhum Mapa Encontrado!
text.about.button=About text.about.button=Sobre
text.name=Name: text.name=Nome:
text.unlocked=New Block Unlocked! text.unlocked=Novo bloco Desbloqueado!
text.unlocked.plural=New Blocks Unlocked! text.unlocked.plural=Novos Blocos desbloqueados!
text.players={0} players online text.players={0} Jogadores Ativos
text.players.single={0} player online text.players.single={0} Jogador Ativo
text.server.mismatch=Packet error: possible client/server version mismatch.\nMake sure you and the host have the\nlatest version of Mindustry! text.server.mismatch=Packet error: Versão do Cliente/Servidor Incompativel.\nTenha certeza Que Host tem\nA ultima versão de Mindustry!
text.server.closing=[accent]Closing server... text.server.closing=[accent]Fechando servidor...
text.server.kicked.kick=You have been kicked from the server! text.server.kicked.kick=Voce foi expulso do servidor!
text.server.kicked.fastShoot=You are shooting too quickly. text.server.kicked.fastShoot=Voce esta atirando rapido demais.
text.server.kicked.invalidPassword=Invalid password! text.server.kicked.invalidPassword=Senha Incorreta!
text.server.kicked.clientOutdated=Outdated client! Update your game! text.server.kicked.clientOutdated=Cliente desatualizado! Atualize seu jogo!
text.server.kicked.serverOutdated=Outdated server! Ask the host to update! text.server.kicked.serverOutdated=Servidor desatualiado! Peca ao dono para atualizar!
text.server.kicked.banned=You are banned on this server. text.server.kicked.banned=Voce foi banido do servidor.
text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again. text.server.kicked.recentKick=Voce foi banido recentemente.\nEspere para conectar de novo.
text.server.kicked.nameInUse=There is someone with that name\nalready on this server. text.server.kicked.nameInUse=Este nome ja esta sendo usado\nneste servidor.
text.server.kicked.nameEmpty=Your name must contain at least one character or number. text.server.kicked.nameEmpty=Voce deve ter pelo menos uma letra ou numero.
text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted. text.server.kicked.idInUse=Voce ja esta neste servidor! Conectar com duas contas não é permitido.
text.server.kicked.customClient=This server does not support custom builds. Download an official version. text.server.kicked.customClient=Este servidor não suporta construções customizadas. Baixe a versão original.
text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\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. text.host.info=The [accent]Hospedar[]Botão Hopeda um servidor no Host[scarlet]6567[] e [scarlet]6568.[]\nQualquer um no [LIGHT_GRAY]Wi-fi Ou Internet local[] Pode ver este servidor na lista de servidores.\n\nSe voce quer poder entrar em qualquer servidor em seu ip, [accent]port forwarding[] é requerido.\n\n[LIGHT_GRAY]Note: Se alguem esta com problemas em conectar no seu servidor lan, Tenha certeza que deixou mindustry Acessar sua internet local nas configurações de firewall
text.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. text.hostserver=Hospedar servidor
text.hostserver=Host Server text.host=Hospedar
text.host=Host text.hosting=[accent]Abrindo server...
text.hosting=[accent]Opening server... text.hosts.refresh=atualizar
text.hosts.refresh=Refresh text.hosts.discovering=Descobrindo jogos em lan
text.hosts.discovering=Discovering LAN games text.server.refreshing=Atualizando servidor
text.server.refreshing=Refreshing server text.hosts.none=[lightgray]Nenhum jogo lan encontrado!
text.hosts.none=[lightgray]No LAN games found! text.host.invalid=[scarlet]Não foi possivel Hospedar.
text.host.invalid=[scarlet]Can't connect to host. text.trace=Traçar jogador
text.trace=Trace Player text.trace.playername=Nome do jogador: [accent]{0}
text.trace.playername=Player name: [accent]{0}
text.trace.ip=IP: [accent]{0} text.trace.ip=IP: [accent]{0}
text.trace.id=Unique ID: [accent]{0} text.trace.id=Unique ID: [accent]{0}
text.trace.android=Android Client: [accent]{0} text.trace.android=Cliente Androide: [accent]{0}
text.trace.modclient=Custom Client: [accent]{0} text.trace.modclient=Cliente Customizado: [accent]{0}
text.trace.totalblocksbroken=Total blocks broken: [accent]{0} text.trace.totalblocksbroken=Blocos totais quebrados: [accent]{0}
text.trace.structureblocksbroken=Structure blocks broken: [accent]{0} text.trace.structureblocksbroken=Blocos de estrutura quebrados: [accent]{0}
text.trace.lastblockbroken=Last block broken: [accent]{0} text.trace.lastblockbroken=Ultimo bloco quebrado: [accent]{0}
text.trace.totalblocksplaced=Total blocks placed: [accent]{0} text.trace.totalblocksplaced=Blocos totais Colocados: [accent]{0}
text.trace.lastblockplaced=Last block placed: [accent]{0} text.trace.lastblockplaced=Ultimo bloco colocado: [accent]{0}
text.invalidid=Invalid client ID! Submit a bug report. text.invalidid=ID do cliente invalido! Reporte o bug.
text.server.bans=Bans text.server.bans=Banidos
text.server.bans.none=No banned players found! text.server.bans.none=Nenhum jogador banido encontrado!
text.server.admins=Admins text.server.admins=Administradores
text.server.admins.none=No admins found! text.server.admins.none=Nenhum administrador encontrado!
text.server.add=Add Server text.server.add=Adicionar servidor
text.server.delete=Are you sure you want to delete this server? text.server.delete=Certeza que quer deletar o servidor?
text.server.hostname=Host: {0} text.server.hostname=Hospedar: {0}
text.server.edit=Edit Server text.server.edit=Editar servidor
text.server.outdated=[crimson]Outdated Server![] text.server.outdated=[crimson]Servidor desatualizado![]
text.server.outdated.client=[crimson]Outdated Client![] text.server.outdated.client=[crimson]Cliente desatualiado![]
text.server.version=[lightgray]Version: {0} text.server.version=[lightgray]Versão: {0}
text.server.custombuild=[yellow]Custom Build text.server.custombuild=[yellow]Construção customizada
text.confirmban=Are you sure you want to ban this player? text.confirmban=Certeza que quer banir este jogador?
text.confirmunban=Are you sure you want to unban this player? text.confirmunban=Certeza que quer desbanir este jogador?
text.confirmadmin=Are you sure you want to make this player an admin? text.confirmadmin=Certeza que quer fazer este jogador um administrador?
text.confirmunadmin=Are you sure you want to remove admin status from this player? text.confirmunadmin=Certeza que quer remover o estatus de adminstrador deste jogador?
text.joingame.title=Join Game text.joingame.title=Entrar no jogo
text.joingame.ip=IP: text.joingame.ip=IP:
text.disconnect=Disconnected. text.disconnect=Desconectado.
text.disconnect.data=Failed to load world data! text.disconnect.data=Falha ao abrir a data do mundo!
text.connecting=[accent]Connecting... text.connecting=[accent]Conectando...
text.connecting.data=[accent]Loading world data... text.connecting.data=[accent]Carregando data do mundo...
text.connectfail=[crimson]Failed to connect to server: [orange]{0} text.connectfail=[crimson]Falha ao entrar no servidor: [orange]{0}
text.server.port=Port: text.server.port=Porte:
text.server.addressinuse=Address already in use! text.server.addressinuse=Senha em uso!
text.server.invalidport=Invalid port number! text.server.invalidport=Numero de port invalido!
text.server.error=[crimson]Error hosting server: [orange]{0} text.server.error=[crimson]Erro ao hospedar o servidor: [orange]{0}
text.save.new=New Save text.save.new=Novo Save
text.save.none=No saves found! text.save.none=Nenhum save encontrado!
text.save.delete.confirm=Are you sure you want to delete this save? text.save.delete.confirm=Certeza que quer deletar este save?
text.save.delete=Delete text.save.delete=Deletar
text.save.export=Export Save text.save.export=Exportar save
text.save.import.invalid=[orange]This save is invalid! text.save.import.invalid=[orange]Este save é invalido!
text.save.import.fail=[crimson]Failed to import save: [orange]{0} text.save.import.fail=[crimson]Falha ao importar save: [orange]{0}
text.save.export.fail=[crimson]Failed to export save: [orange]{0} text.save.export.fail=[crimson]Falha ao Exportar save: [orange]{0}
text.save.import=Import Save text.save.import=Importar save
text.save.newslot=Save name: text.save.newslot=Nome do save:
text.save.rename=Rename text.save.rename=Renomear
text.save.rename.text=New name: text.save.rename.text=Novo jogo:
text.on=On text.on=Ligado
text.off=Off text.off=Desligado
text.save.autosave=Autosave: {0} text.save.autosave=Autosalvar: {0}
text.save.map=Map: {0} text.save.map=Mapa: {0}
text.save.difficulty=Difficulty: {0} text.save.difficulty=Dificuldade: {0}
text.copylink=Copy Link text.copylink=Copiar link
text.changelog.title=Changelog text.changelog.title=Changelog
text.changelog.loading=Getting changelog... text.changelog.loading=Coletando changelog...
text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug. text.changelog.error.android=[orange]Note que a Changelog as vezes Funciona no android 4.4 e abaixo!\nIsso é por causa de um erro interno no sistema android.
text.changelog.error.ios=[orange]The changelog is currently not supported in iOS. text.changelog.error.ios=[orange]A changelog não é suportada no IOS.
text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection. text.changelog.error=[scarlet]Erro ao coletar Changelog!\nCheque a Conexão com a internet.
text.changelog.current=[yellow][[Current version] text.changelog.current=[yellow][[Primeira versão]
text.changelog.latest=[orange][[Latest version] text.changelog.latest=[orange][[Ultima versão]
text.saving=[accent]Saving... text.saving=[accent]Salvando...
text.unknown=Unknown text.unknown=Desconhecido
text.custom=Custom text.custom=Customizado
text.builtin=Built-In text.builtin=Built-In
text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone! text.map.delete.confirm=Certeza que quer deletar este mapa? Isto não pode ser desfeito!
text.map.random=[accent]Random Map text.map.random=[accent]Mapa aleatório
text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor. text.map.nospawn=Esse mapa não contém um [yellow]core[] para o jogador Nascer! [ROYAL]blue[] Coloque um [yellow]core[] no editor de mapa.
text.editor.slope=\\ text.editor.slope=\\
text.editor.openin=Open In Editor text.editor.openin=Abrir no Editor
text.editor.oregen=Ore Generation text.editor.oregen=Geração de minério
text.editor.oregen.info=Ore Generation: text.editor.oregen.info=Geração de minério:
text.editor.mapinfo=Map Info text.editor.mapinfo=Informação do mapa
text.editor.author=Author: text.editor.author=Autor:
text.editor.description=Description: text.editor.description=Descrição:
text.editor.name=Name: text.editor.name=Nome:
text.editor.teams=Teams text.editor.teams=Time
text.editor.elevation=Elevation text.editor.elevation=Elevação
text.editor.saved=Saved! text.editor.saved=Salvo!
text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu. text.editor.save.noname=Seu mapa não tem um nome! Coloque um no menu de "Informação do mapa"
text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu. text.editor.save.overwrite=O seu mapa Substitui um mapa já construído! Coloque um nome diferente no menu "Informação do mapa"
text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists! text.editor.import.exists=[scarlet]Não foi possivel importar:[] Um mapa Construído chamado '{0}' Já existe!
text.editor.import=Import... text.editor.import=Importando...
text.editor.importmap=Import Map text.editor.importmap=Importar Mapa
text.editor.importmap.description=Import an already existing map text.editor.importmap.description=Importar um mapa existente
text.editor.importfile=Import File text.editor.importfile=Importar arquivo
text.editor.importfile.description=Import an external map file text.editor.importfile.description=Importar um arquivo externo
text.editor.importimage=Import Terrain Image text.editor.importimage=Importar imagem do terreno
text.editor.importimage.description=Import an external map image file text.editor.importimage.description=Importar uma imagem de terreno externa
text.editor.export=Export... text.editor.export=Exportando...
text.editor.exportfile=Export File text.editor.exportfile=Exportar arquivo
text.editor.exportfile.description=Export a map file text.editor.exportfile.description=Exportar um arquivo de mapa
text.editor.exportimage=Export Terrain Image text.editor.exportimage=Exportar imagem de terreno
text.editor.exportimage.description=Export a map image file text.editor.exportimage.description=Exportar um arquivo de imagem de mapa
text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it? text.editor.overwrite.confirm=[scarlet]Aviso![] Um mapa com esse nome existe. Tem certeza que deseja substituir?
text.fps=FPS: {0} text.fps=FPS: {0}
text.tps=TPS: {0} text.tps=TPS: {0}
text.ping=Ping: {0}ms text.ping=Ping: {0}ms
text.language.restart=Please restart your game for the language settings to take effect. text.language.restart=Por favor Reinicie seu jogo para a tradução tomar efeito.
text.settings.language=Language text.settings.language=Linguagem
text.settings.rebind=Rebind text.settings.rebind=Religar
text.yes=Yes text.yes=Sim
text.no=No text.no=Não
text.info.title=[accent]Info text.info.title=[accent]Informação
text.blocks.targetsair=Targets Air text.blocks.targetsair=Mirar no ar
text.blocks.itemspeed=Units Moved text.blocks.itemspeed=Unidades mobilizadas
text.blocks.shootrange=Range text.blocks.shootrange=Alcance
text.blocks.poweruse=Power Use text.blocks.poweruse=Uso de energia
text.blocks.inputitemcapacity=Input Item Capacity text.blocks.inputitemcapacity=Configurar capacidade de itens
text.blocks.outputitemcapacity=Input Item Capacity text.blocks.outputitemcapacity=Configurar capacidade de itens
text.blocks.maxpowergeneration=Max Power Generation text.blocks.maxpowergeneration=Geração maxima de energia
text.blocks.powertransferspeed=Power Transfer text.blocks.powertransferspeed=Transferência de energia
text.blocks.craftspeed=Production Speed text.blocks.craftspeed=Velocidade de produção
text.blocks.inputliquidaux=Aux Liquid text.blocks.inputliquidaux=Líquido auxiliar
text.blocks.inputitems=Input Items text.blocks.inputitems=Itens de entrada
text.blocks.outputitem=Output Item text.blocks.outputitem=Itens de saida
text.blocks.drilltier=Drillables text.blocks.drilltier=Furaveis
text.blocks.drillspeed=Base Drill Speed text.blocks.drillspeed=Velocidade da furadeira base
text.blocks.liquidoutput=Liquid Output text.blocks.liquidoutput=Saida de liquido
text.blocks.liquiduse=Liquid Use text.blocks.liquiduse=Uso de liquido
text.blocks.coolant=Coolant text.blocks.coolant=Esfriador
text.blocks.coolantuse=Coolant Use text.blocks.coolantuse=Uso do esfriador
text.blocks.inputliquidfuel=Fuel Liquid text.blocks.inputliquidfuel=Liquido de combustivel
text.blocks.liquidfueluse=Liquid Fuel Use text.blocks.liquidfueluse=Uso do liquido de combustivel
text.blocks.reload=Reload text.blocks.reload=Recarregar
text.blocks.inputfuel=Fuel text.blocks.inputfuel=Combustivel
text.blocks.fuelburntime=Fuel Burn Time text.blocks.fuelburntime=Tempo de queima de combustivel
text.blocks.inputcapacity=Input capacity text.blocks.inputcapacity=Capacidade de entrada
text.blocks.outputcapacity=Output capacity text.blocks.outputcapacity=Capacidade de saída
text.unit.blocks=blocks text.unit.blocks=blocos
text.unit.powersecond=power units/second text.unit.powersecond=Unidades de energia/segundo
text.unit.liquidsecond=liquid units/second text.unit.liquidsecond=Unidades de líquido/segundo
text.unit.itemssecond=items/second text.unit.itemssecond=itens/segundo
text.unit.pixelssecond=pixels/second text.unit.pixelssecond=pixeis/segundo
text.unit.liquidunits=liquid units text.unit.liquidunits=Unidades de liquido
text.unit.powerunits=power units text.unit.powerunits=Unidades de energia
text.unit.degrees=degrees text.unit.degrees=Graus
text.unit.seconds=seconds text.unit.seconds=segundos
text.unit.none= text.unit.none=
text.unit.items=items text.unit.items=itens
text.category.general=General text.category.general=Geral
text.category.power=Power text.category.power=Poder
text.category.liquids=Liquids text.category.liquids=Liquidos
text.category.items=Items text.category.items=Itens
text.category.crafting=Crafting text.category.crafting=Construindo
text.category.shooting=Shooting text.category.shooting=Atirando
setting.difficulty.insane=insane setting.difficulty.insane=insano
setting.difficulty.purge=purge setting.difficulty.purge=purge
setting.saveinterval.name=Autosave Interval setting.saveinterval.name=Intervalo de autosalvamento
setting.seconds={0} Seconds setting.seconds={0} Segundos
setting.fullscreen.name=Fullscreen setting.fullscreen.name=Tela Cheia
setting.multithread.name=Multithreading setting.multithread.name=Multithreading
setting.minimap.name=Show Minimap setting.minimap.name=Mostrar minimapa
text.keybind.title=Rebind Keys text.keybind.title=Refazer teclas
keybind.shoot.name=shoot keybind.shoot.name=Atirar
keybind.block_info.name=block_info keybind.chat.name=Conversa
keybind.chat.name=chat keybind.player_list.name=Lista_de_jogadores
keybind.player_list.name=player_list
keybind.console.name=console keybind.console.name=console
mode.text.help.title=Description of modes mode.text.help.title=Descrição dos modos
mode.waves.description=the normal mode. limited resources and automatic incoming waves. mode.waves.description=O modo normal. Recursos limitados E os ataques vem automaticamente.
mode.sandbox.description=infinite resources and no timer for waves. mode.sandbox.description=Recursos infinitos E sem tempo para Ataques.
mode.freebuild.description=limited resources and no timer for waves. mode.freebuild.description=recursos limitados e Sem tempo para Ataques.
content.item.name=Items content.item.name=Itens
content.liquid.name=Liquids content.liquid.name=Liquidos
content.unit-type.name=Units content.unit-type.name=Unidades
content.recipe.name=Blocks content.recipe.name=Blocos
item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava. item.stone.description=Um Material Incomum Cru. Usado para separar e refinar Em outros materiais,Ou Derreter em Lava.
item.tungsten.name=Tungsten item.tungsten.name=Tungstenio
item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries. item.tungsten.description=Comum, Mas muito util Material de estrutura. Usado em blocos anti-Aquecimento e blocos com geradores E ferrarias.
item.lead.name=Lead item.lead.name=Chumbo
item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks. item.lead.description=Material de comeco basico. usado intensivamente em Blocos de transporte de liquidos e eletronicos.
item.coal.description=A common and readily available fuel. item.coal.description=Combustivel pronto.
item.carbide.name=Carbide item.carbide.name=Carboneto
item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills. item.carbide.description=Uma aliança dura feita com Tugstenio e Carbono. Usado em blocos de transportação avançados E brocas de alto nivel.
item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft. item.titanium.description=Um Material raro super leve, metal usado intensivamente na transportação de líquidos, Brocas e Aeronaves.
item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel. item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
item.silicon.name=Silicon item.silicon.name=Sílicio
item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics. item.silcion.description=Condutor extremamente importante,Com aplicação em paneis solares e dispositivos complexos.
item.plastanium.name=Plastanium item.plastanium.name=Plastanio
item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition. item.plastanium.description=Leve, Material dutil Usado em aeronaves Avançadas E munição de fragmentação.
item.phase-matter.name=Phase Matter item.phase-matter.name=Materia fase
item.surge-alloy.name=Surge Alloy item.surge-alloy.name=Liga de surto
item.biomatter.name=Biomatter item.biomatter.name=Biomateria
item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel. item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
item.sand.name=Sand item.sand.name=Areia
item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux. item.sand.description=Um material comum Que é usado intensivamente em derretimento, Tanto em ligas como fluxo.
item.blast-compound.name=Blast Compound item.blast-compound.name=Composto de explosão
item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised. item.blast-compound.description=Um composto volatil usado em bombas em bombas em explosivos. Enquanto pode ser queimado como combustivel, Isso não é recomendado.
item.pyratite.name=Pyratite item.pyratite.name=piratita
item.pyratite.description=An extremely flammable substance used in incendiary weapons. item.pyratite.description=Substancia extremamente inflamavel usado em armas incendiarias.
liquid.cryofluid.name=Cryofluid liquid.cryofluid.name=Crio Fluido
text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0} text.item.explosiveness=[LIGHT_GRAY]Explosividade: {0}
text.item.flammability=[LIGHT_GRAY]Flammability: {0} text.item.flammability=[LIGHT_GRAY]Inflamabilidade: {0}
text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0} text.item.radioactivity=[LIGHT_GRAY]RadioAtividade: {0}
text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0} text.item.fluxiness=[LIGHT_GRAY]Poder do fluxo: {0}
text.item.hardness=[LIGHT_GRAY]Hardness: {0} text.item.hardness=[LIGHT_GRAY]Dureza: {0}
text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0} text.liquid.heatcapacity=[LIGHT_GRAY]Capacidade de aquecimento: {0}
text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0} text.liquid.viscosity=[LIGHT_GRAY]Viscosidade: {0}
text.liquid.temperature=[LIGHT_GRAY]Temperature: {0} text.liquid.temperature=[LIGHT_GRAY]Temperatura: {0}
block.tungsten-wall.name=Tungsten Wall block.tungsten-wall.name=Parede de tugstenio
block.tungsten-wall-large.name=Large Tungsten Wall block.tungsten-wall-large.name=Parede larga de Tugstenio
block.carbide-wall.name=Carbide Wall block.carbide-wall.name=Parede de carboneto
block.carbide-wall-large.name=Large Carbide Wall block.carbide-wall-large.name=Parede de Carboneto
block.thorium-wall.name=Thorium Wall block.thorium-wall.name=Parede de tório
block.thorium-wall-large.name=Large Thorium Wall block.thorium-wall-large.name=Parede larga de tório
block.duo.name=Duo block.duo.name=Duplo
block.scorch.name=Scorch block.scorch.name=Quimar
block.hail.name=Hail block.hail.name=Hail
block.lancer.name=Lancer block.lancer.name=Lancer
block.titanium-conveyor.name=Titanium Conveyor block.titanium-conveyor.name=Esteira de Titanio
block.splitter.name=Splitter block.splitter.name=Divisor
block.splitter.description=Outputs items into two opposite directions immediately after they are recieved. block.splitter.description=Manda os itens em duas direções diferentes imediatamente quando chegam.
block.distributor.name=Distributor block.distributor.name=Distribuidor
block.distributor.description=A splitter that can split items into 8 directions. block.distributor.description=Um divisor que pode dividir itens em 8.
block.overflow-gate.name=Overflow Gate block.overflow-gate.name=Portão Sobrecarregado
block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked. block.overflow-gate.description=Uma combinação de roteador e divisor Que apenas manda para a esquerda e Direita se a frente estiver bloqueada.
block.bridgeconveyor.name=Bridge Conveyor block.bridgeconveyor.name=Esteira de ponte
block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks. block.bridgeconveyor.description=Uma esteira que pode ir acima de outros blocos, No total de 2 blocos.
block.arc-smelter.name=Arc Smelter block.arc-smelter.name=Fundidora Arc
block.silicon-smelter.name=Silicon Smelter block.silicon-smelter.name=Fundidora de silicio
block.phase-weaver.name=Phase Weaver block.phase-weaver.name=Palheta de fase
block.pulverizer.name=Pulverizer block.pulverizer.name=Pulverizador
block.cryofluidmixer.name=Cryofluid Mixer block.cryofluidmixer.name=Misturador de Crio Fluido
block.melter.name=Melter block.melter.name=Aparelho de fusão
block.incinerator.name=Incinerator block.incinerator.name=Incinerador
block.biomattercompressor.name=Biomatter Compressor block.biomattercompressor.name=Compressor de bio-matéria
block.separator.name=Separator block.separator.name=Separador
block.centrifuge.name=Centrifuge block.centrifuge.name=Centrifuga
block.power-node.name=Power Node block.power-node.name=Célula de energia
block.power-node-large.name=Large Power Node block.power-node-large.name=Célula de energia Grande
block.battery.name=Battery block.battery.name=Bateria
block.battery-large.name=Large Battery block.battery-large.name=Bateria Grande
block.combustion-generator.name=Combustion Generator block.combustion-generator.name=Gerador de combustão
block.turbine-generator.name=Turbine Generator block.turbine-generator.name=Gerador de Turbina
block.tungsten-drill.name=Tungsten Drill block.tungsten-drill.name=Broca de Tungstenio
block.carbide-drill.name=Carbide Drill block.carbide-drill.name=Broca de Carboneto
block.laser-drill.name=Laser Drill block.laser-drill.name=Broca a Laser
block.water-extractor.name=Water Extractor block.water-extractor.name=Extrator de Agua
block.cultivator.name=Cultivator block.cultivator.name=Cultivador
block.dart-ship-factory.name=Dart Ship Factory block.dart-ship-factory.name=Dart Ship Factory
block.delta-mech-factory.name=Delta Mech Factory block.delta-mech-factory.name=Fabrica de Mecha Delta
block.dronefactory.name=Drone Factory block.repairpoint.name=Ponto de Reparo
block.repairpoint.name=Repair Point block.resupplypoint.name=Ponto de Reabesticento
block.resupplypoint.name=Resupply Point block.liquidtank.name=Tanque de líquido
block.liquidtank.name=Liquid Tank block.bridgeconduit.name=Conduto Ponte
block.bridgeconduit.name=Bridge Conduit block.mechanical-pump.name=Bomba Mecanica
block.mechanical-pump.name=Mechanical Pump
block.itemsource.name=Item Source block.itemsource.name=Item Source
block.itemvoid.name=Item Void block.itemvoid.name=Item Void
block.liquidsource.name=Liquid Source block.liquidsource.name=Liquid Source
@@ -460,44 +436,83 @@ block.powervoid.name=Power Void
block.powerinfinite.name=Power Infinite block.powerinfinite.name=Power Infinite
block.unloader.name=Unloader block.unloader.name=Unloader
block.sortedunloader.name=Sorted Unloader block.sortedunloader.name=Sorted Unloader
block.vault.name=Vault block.vault.name=Cofre
block.wave.name=Wave block.wave.name=Wave
block.swarmer.name=Swarmer block.swarmer.name=Swarmer
block.salvo.name=Salvo block.salvo.name=Salvo
block.ripple.name=Ripple block.ripple.name=Ripple
block.phase-conveyor.name=Phase Conveyor block.phase-conveyor.name=Esteira de Fases
block.bridge-conveyor.name=Bridge Conveyor block.bridge-conveyor.name=Esteira-Ponte
block.plastanium-compressor.name=Plastanium Compressor block.plastanium-compressor.name=Compressor de Plastanio
block.pyratite-mixer.name=Pyratite Mixer block.pyratite-mixer.name=Misturador de Piratita
block.blast-mixer.name=Blast Mixer block.blast-mixer.name=Blast Mixer
block.solidifer.name=Solidifer block.solidifer.name=Solidificador
block.solar-panel.name=Solar Panel block.solar-panel.name=Painel Solar
block.solar-panel-large.name=Large Solar Panel block.solar-panel-large.name=Painel Solar Grande
block.oil-extractor.name=Oil Extractor block.oil-extractor.name=Extrator de Oleo
block.javelin-ship-factory.name=Javelin Ship factory block.javelin-ship-factory.name=Fabrica de Nave Javelin
block.drone-factory.name=Drone Factory block.repair-point.name=Ponto de Reparo
block.fabricator-factory.name=Fabricator Factory block.resupply-point.name=Ponto de Reabastecimento
block.repair-point.name=Repair Point block.pulse-conduit.name=Conduto de Pulso
block.resupply-point.name=Resupply Point block.phase-conduit.name=Conduto de Fase
block.pulse-conduit.name=Pulse Conduit block.liquid-router.name=Roteador de Líquido
block.phase-conduit.name=Phase Conduit block.liquid-tank.name=Tanque de Líquido
block.liquid-router.name=Liquid Router block.liquid-junction.name=Junção de Líquido
block.liquid-tank.name=Liquid Tank block.bridge-conduit.name=Conduto-Ponte
block.liquid-junction.name=Liquid Junction block.rotary-pump.name=Bomba Rotatoria
block.bridge-conduit.name=Bridge Conduit block.nuclear-reactor.name=Reator Nuclear
block.rotary-pump.name=Rotary Pump text.save.old=Este save é para uma versão antiga do jogo, E não pode ser usado.\n\n[LIGHT_GRAY]Salvar Versões antigas vai ser Implementado Na versão 4.0 completa
block.nuclear-reactor.name=Nuclear Reactor text.customgame=Jogo Customizado
text.save.old=This save is for an older version of the game, and can no longer be used.\n\n[LIGHT_GRAY]Save backwards compatibility will be implemented in the full 4.0 release. text.campaign=Campanha
text.customgame=Custom Game text.sectors=Setores
text.campaign=Campaign text.sector=Setor Selecionado: [LIGHT_GRAY]{0}
text.sectors=Sectors text.sector.time=Tempo: [LIGHT_GRAY]{0}
text.sector=Selected Sector: [LIGHT_GRAY]{0} text.sector.deploy=Soltar
text.sector.time=Time: [LIGHT_GRAY]{0} text.sector.resume=Voltar
text.sector.deploy=Deploy
text.sector.resume=Resume
text.sector.unlocked=Sector completed!
text.sector.locked=[scarlet][[Incomplete] text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored] text.sector.unexplored=[accent][[Unexplored]
text.close=Close text.close=Fechar
text.save.playtime=Playtime: {0} text.save.playtime=Playtime: {0}
text.editor.brush=Brush text.editor.brush=Brush
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.sector.gameover=Esse setor foi perdido! Soltar Novamente?
text.sector.retry=Tentar novamente?
text.wave.lasted=Você sobreviveu até a onda [accent]{0}[].
setting.fpscap.name=FPS Maximo
setting.fpscap.none=Nenhum
setting.fpscap.text={0} FPS
block.command-center.name=Centro De Comando
text.mission=Missão:[LIGHT_GRAY] {0}
text.mission.wave=Sobrevive [accent]{0}[] Onda.
text.mission.battle=Destrua a base inimiga.
text.none=<none>
text.sector.corrupted=[orange]Um arquivo de save Foi encontrado neste setor, Mas o login falhou.\nUm novo foi criado.
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
text.mission.resource=Obtain {0} x{1}
text.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.
text.unit.health=[LIGHT_GRAY]Health: {0}
text.unit.speed=[LIGHT_GRAY]Speed: {0}
block.drone-pad.name=Drone Pad
block.fabricator-pad.name=Fabricator Pad
block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
block.mass-driver.name=Mass Driver
block.blast-drill.name=Blast Drill
unit.drone.name=Drone
unit.drone.description=The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks.
unit.fabricator.name=Fabricator
unit.fabricator.description=An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone.
unit.scout.name=Scout
unit.scout.description=A basic ground unit. Uses lead as ammo.
unit.titan.name=Titan
unit.titan.description=An advanced armored ground unit. Uses carbide as ammo. Attacks both ground and air targets.
unit.monsoon.name=Monsoon
unit.monsoon.description=A heavy carpet bomber. Uses blast compound or pyratite as ammo.
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator

View File

@@ -1,6 +1,6 @@
text.about=Создатель [ROYAL] Anuken. [] \nИзначально игра была создана для участия в [orange] GDL [] MM Jam. \n\nАвторы: \n- Звуковые эффекты, сделаны с помощью [YELLOW] bfxr [] \n- Музыка, создана [GREEN] RoccoW [] / найденная на [lime] FreeMusicArchive.org [] \n\nОсобая благодарность: \n- [coral] MitchellFJN []: в тестировании и отзывах \n- [sky] Luxray5474 []: работа в вики, помощь в разработке \n- Все бета-тестеры на itch.io и Google Play\n\nИгра переведена полностью на русский язык [GREEN]krocotavus[] и [GREEN]lexa1549. Дополнил перевод [GREEN]Prosta4ok_ua[]\n text.credits.text=Создатель [ROYAL] Anuken. - [SKY]anukendev@gmail.com[]\n\nЕсть недороботки в переводе?\nПишите в офф. discord-сервер mindustry в канал #русский.
text.credits=Авторы text.credits=Авторы
text.discord=Присоединяйтесь к нашему Discord чату! text.discord=Присоединяйтесь к нашему Discord!
text.link.discord.description=официальный discord-сервер Mindustry text.link.discord.description=официальный discord-сервер Mindustry
text.link.github.description=Исходный код игры text.link.github.description=Исходный код игры
text.link.dev-builds.description=Нестабильные разработки text.link.dev-builds.description=Нестабильные разработки
@@ -10,23 +10,54 @@ text.link.google-play.description=Google Play список магазинов
text.link.wiki.description=официальная вики Mindustry text.link.wiki.description=официальная вики Mindustry
text.linkfail=Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена. text.linkfail=Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена.
text.editor.web=Веб-версия не поддерживает редактор!\nЗагрузите игру, чтобы использовать ее. text.editor.web=Веб-версия не поддерживает редактор!\nЗагрузите игру, чтобы использовать ее.
text.multiplayer.web=Эта версия игры не поддерживает многопользовательскую игру! \n Чтобы играть в мультиплеер из своего браузера, используйте ссылку «Многопользовательская веб-версия» на странице itch.io. text.web.unsupported=Веб-версия не поддерживает эту функцию! Загрузите игру, чтобы использовать её.
text.gameover=Ядро было уничтожено. text.gameover=Ядро было уничтожено.
text.sector.gameover=Этот сектор потерян. Разблокировать повторно?
text.sector.retry=Повторить попытку
text.highscore=[YELLOW]Новый рекорд! text.highscore=[YELLOW]Новый рекорд!
text.lasted=Вы продержались до волны text.wave.lasted=Вы продержались до волны [accent]{0}[].
text.level.highscore=Рекорд: [accent]{0} text.level.highscore=Рекорд: [accent]{0}
text.level.delete.title=Подтвердите удаление text.level.delete.title=Подтвердите удаление
text.map.delete=Вы действительно хотите удалить карту "[orange]{0}[]"?
text.level.select=Выбор уровня text.level.select=Выбор уровня
text.level.mode=Режим игры: text.level.mode=Режим игры:
text.construction.title=Руководство по строительству блоков
text.construction=Вы только что выбрали режим строительства [accent]блоков[].\n\nЧтобы начать размещение, просто коснитесь действительного местоположения рядом с вашим кораблем.\nПосле того, как вы выбрали несколько блоков, установите флажок, чтобы подтвердить, и ваш корабль начнет их строить.\n\n- [accent]Удалите блоки [] из вашего выбора, нажав на них.n- [accent]Shift выделение [], удерживая и перетаскивая любой блок в выборе.\n- [accent]Поместите блоки в линию [], нажимая и удерживая пустое место, а затем перетаскивая его в направлении.\n- [accent]Отмените строительство или выбор [], нажав X в левом нижнем углу.
text.deconstruction.title=Руководство по разрушении блоков
text.deconstruction=Вы только что выбрали режим удаления[accent] блока.[].\n\nЧтобы начать ломать, просто нажмите на блок рядом с вашим кораблем.\nПосле того как вы выбрали некоторые блоки, установите флажок, чтобы подтвердить, и ваш корабль начнет их деконструкцию.\n\n- [accent]Удалите блоки [] из вашего выбора, нажав на них.\n- [accent]Удалите блоки в области [], нажав и удерживая пустое место, а затем перетащив его в направлении.\n- [accent]Отмените деконструкцию или выбор [], нажав X в левом нижнем углу.
text.showagain=Не показывать снова до следующей сессии
text.unlocks=Разблокированные
text.savegame=Сохранить игру text.savegame=Сохранить игру
text.loadgame=Загрузить игру text.loadgame=Загрузить игру
text.joingame=Присоединиться text.joingame=Присоединиться
text.addplayers=Доб/удалить игроков
text.customgame=Пользовательская игра
text.campaign=Кампания
text.sectors=Секторы
text.sector=Выбранный сектор: [LIGHT_GRAY]{0}
text.sector.time=Время: [LIGHT_GRAY]{0}
text.sector.deploy=Высадиться
text.sector.resume=Продолжить
text.sector.locked=[scarlet][[Не завершено]
text.sector.unexplored=[accent][[Не изучено]
text.mission=Миссия:[LIGHT_GRAY] {0}
text.mission.complete=Миссия выполнена!
text.mission.complete.body=Сектор {0},{1} был завоёван.
text.mission.wave=Пережено следующее количество волн:[accent]{0}[].
text.mission.battle=Уничтожьте базу противника.
text.mission.resource=Приобретено {0} x{1}
text.none=<ничего>
text.close=Закрыть
text.quit=Выход text.quit=Выход
text.maps=Карты
text.maps.none=[LIGHT_GRAY]Карты не найдены!
text.about.button=Об игре text.about.button=Об игре
text.name=Название: text.name=Ник:
text.unlocked=Новый блок разблокирован!
text.unlocked.plural=Новые блоки разблокированы!
text.players=Игроков на сервере: {0} text.players=Игроков на сервере: {0}
text.players.single={0} игрок на сервере text.players.single={0} игрок на сервере
text.server.mismatch=Ошибка пакета: возможное несоответствие версии клиента / сервера. Убедитесь, что у вас и у создателя сервера установлена последняя версия Mindustry! text.server.mismatch=Ошибка пакета: возможное несоответствие версии клиента/сервера. Убедитесь, что у вас и у создателя сервера установлена последняя версия Mindustry!
text.server.closing=[accent]Закрытие сервера... text.server.closing=[accent]Закрытие сервера...
text.server.kicked.kick=Вас выгнали с сервера! text.server.kicked.kick=Вас выгнали с сервера!
text.server.kicked.fastShoot=Вы стреляете слишком быстро. text.server.kicked.fastShoot=Вы стреляете слишком быстро.
@@ -35,8 +66,12 @@ text.server.kicked.clientOutdated=Устаревший клиент! Обнов
text.server.kicked.serverOutdated=Устаревший сервер! Попросите хост обновить! text.server.kicked.serverOutdated=Устаревший сервер! Попросите хост обновить!
text.server.kicked.banned=Вы заблокированы на этом сервере. text.server.kicked.banned=Вы заблокированы на этом сервере.
text.server.kicked.recentKick=Вы недавно были кикнуты.\n Подождите немного перед следующим подключением text.server.kicked.recentKick=Вы недавно были кикнуты.\n Подождите немного перед следующим подключением
text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\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. text.server.kicked.nameInUse=На этом сервере есть кто-то с этим именем.
text.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. text.server.kicked.nameEmpty=Ваше имя должно содержать хотя бы один символ или цифру.
text.server.kicked.idInUse=Вы уже на этом сервере! Соединение с двумя учетными записями не разрешено.
text.server.kicked.customClient=Этот сервер не поддерживает пользовательские сборки. Загрузите официальную версию.
text.host.info=Кнопка [accent] Сервер [] размещает сервер на порт [accent]6567[].[]\nЛюбой пользователь в той же [LIGHT_GRAY]сети или локальной сети [] должен иметь возможность видеть ваш сервер в своём списке серверов.\n\nЕсли вы хотите, чтобы люди могли подключаться из любого места по IP, то требуется переадресация(проброс) портов.[].\n\n[LIGHT_GRAY] Примечание. Если у кого-то возникают проблемы с подключением к вашей локальной сети, убедитесь, что вы разрешили Mindustry доступ к вашей локальной сети в настройках брандмауэра.
text.join.info=Здесь вы можете ввести IP-адрес [accent]сервера[] для подключения или открыть [accent]локальную сеть [] для подключения к серверам.\nПоддерживается многопользовательский режим LAN и WAN.\n\n[LIGHT_GRAY] Примечание: это не является автоматическим глобальным списком серверов; если вы хотите подключиться к кому-то по IP, вам нужно будет спросить хост о его IP-адресе.
text.hostserver=Запустить сервер text.hostserver=Запустить сервер
text.host=Сервер text.host=Сервер
text.hosting=[accent]Открытие сервера... text.hosting=[accent]Открытие сервера...
@@ -52,6 +87,7 @@ text.trace.id=Уникальный идентификатор: [accent]{0}
text.trace.android=Клиент Android: [accent]{0} text.trace.android=Клиент Android: [accent]{0}
text.trace.modclient=Пользовательский клиент: [accent]{0} text.trace.modclient=Пользовательский клиент: [accent]{0}
text.trace.totalblocksbroken=Всего разбитых блоков: [accent]{0} text.trace.totalblocksbroken=Всего разбитых блоков: [accent]{0}
text.trace.structureblocksbroken=Структурных блоков сломано: [accent]{0}
text.trace.lastblockbroken=Последний сломанный блок:[accent]{0} text.trace.lastblockbroken=Последний сломанный блок:[accent]{0}
text.trace.totalblocksplaced=Всего размещено блоков: [accent]{0} text.trace.totalblocksplaced=Всего размещено блоков: [accent]{0}
text.trace.lastblockplaced=Последний размещенный блок: [accent]{0} text.trace.lastblockplaced=Последний размещенный блок: [accent]{0}
@@ -83,6 +119,7 @@ text.server.port=Порт:
text.server.addressinuse=Адрес уже используется! text.server.addressinuse=Адрес уже используется!
text.server.invalidport=Неверный номер порта! text.server.invalidport=Неверный номер порта!
text.server.error=[crimson]Ошибка создания сервера: [orange] {0} text.server.error=[crimson]Ошибка создания сервера: [orange] {0}
text.save.old=Это сохранение для более старой версии игры и больше не может использоваться.\n\n[LIGHT_GRAY]Сохранение обратной совместимости будет реализовано в полной версии 4.0.
text.save.new=Новое сохранение text.save.new=Новое сохранение
text.save.overwrite=Вы уверены,что хотите перезаписать этот слот для сохранения? text.save.overwrite=Вы уверены,что хотите перезаписать этот слот для сохранения?
text.overwrite=Перезаписать text.overwrite=Перезаписать
@@ -91,7 +128,7 @@ text.saveload=[accent]Сохранение...
text.savefail=Не удалось сохранить игру! text.savefail=Не удалось сохранить игру!
text.save.delete.confirm=Вы уверены,что хотите удалить это сохранение? text.save.delete.confirm=Вы уверены,что хотите удалить это сохранение?
text.save.delete=Удалить text.save.delete=Удалить
text.save.export=Отправить сохранение text.save.export=Экспортировать сохранение
text.save.import.invalid=[orange]Это сохранение недействительно! text.save.import.invalid=[orange]Это сохранение недействительно!
text.save.import.fail=[crimson]Не удалось импортировать сохранение: [orange] {0} text.save.import.fail=[crimson]Не удалось импортировать сохранение: [orange] {0}
text.save.export.fail=[crimson]Не удалось отправить сохранение: [orange] {0} text.save.export.fail=[crimson]Не удалось отправить сохранение: [orange] {0}
@@ -101,7 +138,8 @@ text.save.rename=Переименовывать
text.save.rename.text=Новое название: text.save.rename.text=Новое название:
text.selectslot=Выберите сохранение. text.selectslot=Выберите сохранение.
text.slot=[accent]Слот {0} text.slot=[accent]Слот {0}
text.save.corrupted=[orange]Файл сохранения поврежден или имеет недействительный формат! text.save.corrupted=[orange]Сохранённый файл повреждён или имеет недействительный формат!\nЕсли вы только что обновили свою игру, это, вероятно, изменение формата сохранения[scarlet], а не []ошибка.
text.sector.corrupted=[orange] Файл сохранения для этого сектора был найден, но загрузка не удалась.\nСоздан новый.
text.empty=<Пусто> text.empty=<Пусто>
text.on=Вкл text.on=Вкл
text.off=Выкл text.off=Выкл
@@ -110,6 +148,7 @@ text.save.map=Карта: {0}
text.save.wave=Волна: {0} text.save.wave=Волна: {0}
text.save.difficulty=Сложность: {0} text.save.difficulty=Сложность: {0}
text.save.date=Последнее сохранение: {0} text.save.date=Последнее сохранение: {0}
text.save.playtime=Время в игре: {0}
text.confirm=Подтвердить text.confirm=Подтвердить
text.delete=Удалить text.delete=Удалить
text.ok=ОК text.ok=ОК
@@ -127,6 +166,7 @@ text.changelog.error=[scarlet]Ошибка при получении измен
text.changelog.current=[yellow][[Текущая версия] text.changelog.current=[yellow][[Текущая версия]
text.changelog.latest=[orange][[Последняя версия] text.changelog.latest=[orange][[Последняя версия]
text.loading=[accent] Загрузка... text.loading=[accent] Загрузка...
text.saving=[accent]Сохранение..
text.wave=[orange]Волна {0} text.wave=[orange]Волна {0}
text.wave.waiting=Волна через {0} text.wave.waiting=Волна через {0}
text.waiting=Ожидание... text.waiting=Ожидание...
@@ -134,6 +174,23 @@ text.enemies={0} Противников
text.enemies.single={0} Противник text.enemies.single={0} Противник
text.loadimage=Загрузить изображение text.loadimage=Загрузить изображение
text.saveimage=Сохранить изображение text.saveimage=Сохранить изображение
text.unknown=Неизвестный
text.custom=Клиентский
text.builtin=Встроенный
text.map.delete.confirm=Вы действительно хотите удалить эту карту? Это действие не может быть отменено!
text.map.random=[accent]Случайная карта
text.map.nospawn=Эта карта не имеет ядер, в которых игрок может появиться! Добавьте [ROYAL]blue[] ядро в эту карте в редакторе карт.
text.editor.brush=Кисть
text.editor.slope=\\
text.editor.openin=Открыть в редакторе
text.editor.oregen=Генерация Руд
text.editor.oregen.info=Генерация Руд:
text.editor.mapinfo=Информация о карте
text.editor.author=Автор:
text.editor.description=Описание:
text.editor.name=Ник:
text.editor.teams=Команды
text.editor.elevation=возвышение
text.editor.badsize=[orange]Недопустимый формат изображения! [] \nДопустимый формат карты: {0} text.editor.badsize=[orange]Недопустимый формат изображения! [] \nДопустимый формат карты: {0}
text.editor.errorimageload=Ошибка загрузки изображения: [orange] {0} text.editor.errorimageload=Ошибка загрузки изображения: [orange] {0}
text.editor.errorimagesave=Ошибка сохранения изображения: [orange] {0} text.editor.errorimagesave=Ошибка сохранения изображения: [orange] {0}
@@ -141,12 +198,29 @@ text.editor.generate=Создать
text.editor.resize=Изменить \nразмер text.editor.resize=Изменить \nразмер
text.editor.loadmap=Загрузить\nкарту text.editor.loadmap=Загрузить\nкарту
text.editor.savemap=Сохранить\nкарту text.editor.savemap=Сохранить\nкарту
text.editor.saved=Сохранено!
text.editor.save.noname=У вашей карты нет названия! Установите его в меню «Информация о карте».
text.editor.save.overwrite=Ваша карта перезаписывает встроенную карту! Выберите другое имя в меню 'Информация о карте'.
text.editor.import.exists=[scarlet]Не удалось импортировать: [] уже существует встроенная карта с именем '{0}' !
text.editor.import=Импорт...
text.editor.importmap=Импорт карты
text.editor.importmap.description=Импортировать уже существующую карту
text.editor.importfile=Импорт файла
text.editor.importfile.description=Импортировать внешний файл карты
text.editor.importimage=Импортировать изображение ландшафта
text.editor.importimage.description=Импорт внешнего файла изображения карты
text.editor.export=Экспорт...
text.editor.exportfile=Экспортировать файл
text.editor.exportfile.description=Экспорт файла карты
text.editor.exportimage=Экспортировать изображение ландшафта
text.editor.exportimage.description=Экспортировать файл изображения карты
text.editor.loadimage=Загрузить \nизображение text.editor.loadimage=Загрузить \nизображение
text.editor.saveimage=Сохранить \nизображение text.editor.saveimage=Сохранить \nизображение
text.editor.unsaved=[scarlet]У вас есть не сохраненные изменения![] \nВы уверены,что хотите выйти? text.editor.unsaved=[scarlet]У вас есть несохраненные изменения![] \nВы уверены,что хотите выйти?
text.editor.resizemap=Изменить размер карты text.editor.resizemap=Изменить размер карты
text.editor.mapname=Название карты: text.editor.mapname=Название карты:
text.editor.overwrite=[accent]Внимание! \nЭто перезапишет уже существующую карту. text.editor.overwrite=[accent]Внимание! \nЭто перезапишет уже существующую карту.
text.editor.overwrite.confirm=[scarlet]Осторожно![] Карта с таким названием уже существует. Вы действительно хотите её перезаписать?
text.editor.selectmap=Выберите карту для загрузки: text.editor.selectmap=Выберите карту для загрузки:
text.width=Ширина: text.width=Ширина:
text.height=Высота: text.height=Высота:
@@ -154,6 +228,9 @@ text.menu=Меню
text.play=Играть text.play=Играть
text.load=Загрузить text.load=Загрузить
text.save=Сохранить text.save=Сохранить
text.fps=FPS: {0}
text.tps=TPS: {0}
text.ping=Пинг: {0} мс
text.language.restart=Перезагрузите игру, чтобы настройки языка вступили в силу. text.language.restart=Перезагрузите игру, чтобы настройки языка вступили в силу.
text.settings.language=Язык text.settings.language=Язык
text.settings=Настройки text.settings=Настройки
@@ -162,39 +239,82 @@ text.editor=Редактор
text.mapeditor=Редактор карт text.mapeditor=Редактор карт
text.donate=Донат text.donate=Донат
text.settings.reset=Сбросить по умолчанию text.settings.reset=Сбросить по умолчанию
text.settings.rebind=Переназначить
text.settings.controls=Управление text.settings.controls=Управление
text.settings.game=Игра text.settings.game=Игра
text.settings.sound=Звук text.settings.sound=Звук
text.settings.graphics=Графика text.settings.graphics=Графика
text.upgrades=Улучшения
text.purchased=[LIME]Создан!
text.weapons=Оружие
text.paused=Пауза text.paused=Пауза
text.yes=Да
text.no=Нет
text.info.title=[accent]Информация text.info.title=[accent]Информация
text.error.title=[crimson]Произошла ошибка text.error.title=[crimson]Произошла ошибка
text.error.crashtitle=Произошла ошибка text.error.crashtitle=Произошла ошибка
text.blocks.blockinfo=Информация о блоке text.blocks.blockinfo=Информация о блоке
text.blocks.powercapacity=Вместимость энергии text.blocks.powercapacity=Вместимость энергии
text.blocks.powershot=Энергия / выстрел text.blocks.powershot=Энергия/выстрел
text.blocks.targetsair=Атакует воздуш. юнитов?
text.blocks.itemspeed=Перемещение единиц
text.blocks.shootrange=Радиус действия
text.blocks.size=Размер text.blocks.size=Размер
text.blocks.liquidcapacity=Вместимость жидкости text.blocks.liquidcapacity=Вместимость жидкости
text.blocks.maxitemssecond=Макс. Количество предметов / в секунду text.blocks.maxitemssecond=Макс. количество предметов/секунду
text.blocks.powerrange=Диапазон мощности энергии text.blocks.powerrange=Диапазон мощности энергии
text.blocks.poweruse=Энергии используется
text.blocks.inputitemcapacity=Ёмкость входных элементов
text.blocks.outputitemcapacity=Ёмкость выходных элементов
text.blocks.itemcapacity=Вместимость предметов text.blocks.itemcapacity=Вместимость предметов
text.blocks.maxpowergeneration=Максимальная мощность
text.blocks.powertransferspeed=Передача энергии
text.blocks.craftspeed=Скорость производства
text.blocks.inputliquid=Прием жидкости text.blocks.inputliquid=Прием жидкости
text.blocks.inputitem=Прием предмета text.blocks.inputliquidaux=Вспом. жидкость
text.blocks.inputitem=Входной предмет
text.blocks.inputitems=Входные предметы
text.blocks.outputitem=Выходной предмет
text.blocks.drilltier=Добывает
text.blocks.drillspeed=Базовая скорость сверления
text.blocks.liquidoutput=Выходная жидкость
text.blocks.liquiduse=Используется жидкости
text.blocks.coolant=Охлаждающая жидкость
text.blocks.coolantuse=Охлажд. жидк. используется
text.blocks.inputliquidfuel=Жидкое топливо
text.blocks.liquidfueluse=Жидкого топлива используется
text.blocks.explosive=Взрывоопасно! text.blocks.explosive=Взрывоопасно!
text.blocks.health=Здоровье text.blocks.health=Здоровье
text.blocks.inaccuracy=Разброс text.blocks.inaccuracy=Разброс
text.blocks.shots=Выстрелы text.blocks.shots=Выстрелы
text.blocks.reload=Перезарядка
text.blocks.inputfuel=Принимает топливо
text.blocks.fuelburntime=Время горения топлива
text.blocks.inputcapacity=Вместимость ввода text.blocks.inputcapacity=Вместимость ввода
text.blocks.outputcapacity=Вместимость вывода text.blocks.outputcapacity=Вместимость вывода
text.unit.blocks=блоки
text.unit.powersecond=единиц энергии/секунду
text.unit.liquidsecond=жидкостных единиц/секунду
text.unit.itemssecond=предметов/секунду
text.unit.pixelssecond=пикселей/секунду
text.unit.liquidunits=жидкостных единиц
text.unit.powerunits=энерг. единиц
text.unit.degrees=град.
text.unit.seconds=сек.
text.unit.none=
text.unit.items=предм.
text.category.general=Общие
text.category.power=Энергия
text.category.liquids=Жидкости
text.category.items=Предметы
text.category.crafting=Создание
text.category.shooting=рельба
setting.fpscap.name=Макс. FPS
setting.fpscap.none=Ничто
setting.fpscap.text={0} FPS
setting.difficulty.easy=легко setting.difficulty.easy=легко
setting.difficulty.normal=нормально setting.difficulty.normal=нормально
setting.difficulty.hard=тяжело setting.difficulty.hard=тяжело
setting.difficulty.insane=нереально setting.difficulty.insane=безумно
setting.difficulty.purge=зачистка setting.difficulty.purge=зачистка
setting.difficulty.name=Сложность setting.difficulty.name=Сложность:
setting.screenshake.name=Дрожание экрана setting.screenshake.name=Дрожание экрана
setting.indicators.name=Индикаторы противников setting.indicators.name=Индикаторы противников
setting.effects.name=Эффекты на экране setting.effects.name=Эффекты на экране
@@ -207,297 +327,196 @@ setting.fps.name=Показать FPS
setting.vsync.name=Верт. синхронизация setting.vsync.name=Верт. синхронизация
setting.lasers.name=Показывать энергетические лазеры setting.lasers.name=Показывать энергетические лазеры
setting.healthbars.name=Показать полоски здоровья объекта setting.healthbars.name=Показать полоски здоровья объекта
setting.minimap.name=Показать миникарту
setting.musicvol.name=Громкость музыки setting.musicvol.name=Громкость музыки
setting.mutemusic.name=Заглушить музыку setting.mutemusic.name=Заглушить музыку
setting.sfxvol.name=Громкость звуковых эффектов setting.sfxvol.name=Громкость звуковых эффектов
setting.mutesound.name=Заглушить звук setting.mutesound.name=Заглушить звук
map.maze.name=лабиринт
map.fortress.name=крепость
map.sinkhole.name=раковина
map.caves.name=пещеры
map.volcano.name=вулкан
map.caldera.name=кальдера
map.scorch.name=горение
map.desert.name=пустыня
map.island.name=остров
map.grassland.name=луг
map.tundra.name=тундра
map.spiral.name=спираль
map.tutorial.name=обучение
text.keybind.title=Переназначить клавиши text.keybind.title=Переназначить клавиши
keybind.move_x.name=движение_x keybind.move_x.name=Движение x
keybind.move_y.name=движение_y keybind.move_y.name=Движение y
keybind.select.name=выбрать keybind.select.name=выбрать
keybind.break.name=Разрушить keybind.break.name=Разрушить
keybind.shoot.name=стрельба keybind.shoot.name=Выстрел
keybind.zoom_hold.name=удержание_зума keybind.zoom_hold.name=Удержание зума
keybind.zoom.name=Приблизить keybind.zoom.name=Приблизить
keybind.block_info.name=инфо_о_блоке
keybind.menu.name=Меню keybind.menu.name=Меню
keybind.pause.name=Пауза keybind.pause.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_alt.name=вращать_alt keybind.rotate.name=Вращать
keybind.rotate.name=вращать
mode.text.help.title=Описание режимов mode.text.help.title=Описание режимов
mode.waves.name=волны mode.waves.name=волны
mode.waves.description=в нормальном режиме. ограниченные ресурсы и автоматические наступающие волны. mode.waves.description=в нормальном режиме. ограниченные ресурсы и автоматические наступающие волны.
mode.sandbox.name=песочница mode.sandbox.name=песочница
mode.sandbox.description=бесконечные ресурсы и нет таймера для волн. mode.sandbox.description=бесконечные ресурсы и нет таймера для волн.
mode.sandbox.warning=Обратите внимание, что блоки нельзя использовать в режиме песочницы, пока они не будут разблокированы в других режимах.\n\n[LIGHT_GRAY] Если вы не разблокировали какие-либо блоки, ни один из них не появится.
mode.freebuild.name=свободная\nстройка mode.freebuild.name=свободная\nстройка
mode.freebuild.description=ограниченные ресурсы и нет таймера для волн. mode.freebuild.description=ограниченные ресурсы и нет таймера для волн.
item.stone.name=камень content.item.name=Предметы
content.liquid.name=Жидкости
content.unit-type.name=Боевые единицы
content.recipe.name=Блоки
item.stone.name=Камень
item.stone.description=Обычное сырье. Используется для разделения и переработки в другие материалы или плавления в лаву.
item.tungsten.name=Вольфрам
item.tungsten.description=Обычный, но очень полезный строительный материал . Используется в бурах и теплостойких блоках, таких как генераторы и плавильные печи.
item.lead.name=Свинец
item.lead.description=Основной начальный материал. Широко используется в блоках электроники и транспортировки жидкости.
item.coal.name=Уголь item.coal.name=Уголь
item.titanium.name=титан item.coal.description=Распростанённое и легкодоступное топливо.
item.thorium.name=уран item.carbide.name=Карбид
item.sand.name=песок item.carbide.description=Жёсткий сплав, изготовленный из вольфрама и угля. Используется в передовых транспортных блоках и высокоуровневых бурах.
item.titanium.name=Титан
item.titanium.description=Редкий сверхлёгкий металл широко используется в транспортировке, бурах и самолётах.
item.thorium.name=Торий
item.thorium.description=Плотный радиоактивный металл используется в качестве структурной поддержки и ядерного топлива.
item.silicon.name=Кремень
item.silcion.description=Очень полезный полупроводник с применениями в солнечных батареях и множестве сложной электроники.
item.plastanium.name=Пластиний
item.plastanium.description=Легкий, пластичный материал, используемый в современных самолетах и боеприпасах для фрагментации.
item.phase-matter.name=Фазовая материя
item.surge-alloy.name=Волнистый сплав
item.biomatter.name=Биоматерия
item.biomatter.description=Скопление органической каши; используется для превращения в нефть или в качестве основного топлива.
item.sand.name=Песок
item.sand.description=Обычный материал, который широко используется при плавке как в сплаве, так и в виде шлака.
item.blast-compound.name=Взрывоопасное соединение
item.blast-compound.description=Летучее соединение, используемое в бомбах и взрывчатых веществах. Хотя это может сгореть в качестве топлива, но не рекомендуется этого делать.
item.pyratite.name=Пиротит
item.pyratite.description=Очень огнеопасное вещество, используемое в зажигательном оружии.
liquid.water.name=Вода liquid.water.name=Вода
liquid.lava.name=лава liquid.lava.name=Лава
liquid.oil.name=Нефть liquid.oil.name=Нефть
block.door.name=дверь liquid.cryofluid.name=Криогенная жидкость
block.door-large.name=большая дверь text.item.explosiveness=[LIGHT_GRAY]Взрывоопасность: {0}
block.conduit.name=трубопровод text.item.flammability=[LIGHT_GRAY]Воспламеняемость: {0}
block.pulseconduit.name=импульсный трубопровод text.item.radioactivity=[LIGHT_GRAY]Радиоактивность: {0}
block.liquidrouter.name=Маршрутизатор житкостей text.item.fluxiness=[LIGHT_GRAY]Осадочность: {0}
block.conveyor.name=конвейер text.item.hardness=[LIGHT_GRAY]Прочность: {0}
text.unit.health=[LIGHT_GRAY]Здоровье: {0}
text.unit.speed=[LIGHT_GRAY]Скорость: {0}
text.liquid.heatcapacity=[LIGHT_GRAY]Теплоёмкость: {0}
text.liquid.viscosity=[LIGHT_GRAY]Вязкость: {0}
text.liquid.temperature=[LIGHT_GRAY]Температура: {0}
block.tungsten-wall.name=Вольфрамовая стена
block.tungsten-wall-large.name=Большая вольфрамовая стена
block.carbide-wall.name=Карбидная стена
block.carbide-wall-large.name=Большая карбидная стена
block.thorium-wall.name=Ториевая стена
block.thorium-wall-large.name=Большая ториевая стена
block.door.name=Дверь
block.door-large.name=Большая дверь
block.duo.name=Двойная
block.scorch.name=Обжигатель
block.hail.name=Град
block.lancer.name=Копейщик
block.conveyor.name=Конвейер
block.titanium-conveyor.name=Титановый конвейер
block.junction.name=Перекрёсток
block.splitter.name=Разветвитель
block.splitter.description=Выводит предметы на два противоположных направления сразу после их получения.
block.router.name=Маршрутизатор block.router.name=Маршрутизатор
block.junction.name=Перекресток block.router.description=Распределяет предметы во все 4 направления. Может хранить элементы как буфера.
block.liquidjunction.name=Перекресток для жидкостей block.distributor.name=Распределитель
block.sorter.name=сортировщик block.distributor.description=Разветвитель, который может распределять предметы на 8 направлений.
block.sorter.name=Сортировщик
block.sorter.description=Сортирует предметы. Если предмет соответствует выбранному, то ему можно пройти. В противном случае элемент выводится слева и справа.
block.overflow-gate.name=Избыточный затвор
block.overflow-gate.description=Комбинированный разветвитель и маршрутизатор, который выводится только слева и справа, если передний путь заблокирован.
block.bridgeconveyor.name=Мостовой конвейер
block.bridgeconveyor.description=Конвейер, который может переходить через другие блоки, до двух блоков в сумме.
block.smelter.name=Плавильный завод block.smelter.name=Плавильный завод
text.web.unsupported=The web version does not support this feature! Download the game to use it. block.arc-smelter.name=Дуговая печь
text.host.web=The web version does not support hosting games! Download the game to use this feature. block.silicon-smelter.name=Кремниевый плавильный завод
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"? block.phase-weaver.name=Фазовый ткач
text.construction.title=Block Construction Guide block.pulverizer.name=Распылитель
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left. block.cryofluidmixer.name=Смеситель для криогенных жидкостей
text.deconstruction.title=Block Deconstruction Guide block.melter.name=Плавильня
text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left. block.incinerator.name=Мусоросжигательная печь
text.showagain=Don't show again next session block.biomattercompressor.name=Компрессор биоматерии
text.unlocks=Unlocks block.separator.name=Разделитель
text.addplayers=Add/Remove Players block.centrifuge.name=Центрифуга
text.maps=Maps block.power-node.name=Силовой узел
text.maps.none=[LIGHT_GRAY]No maps found! block.power-node-large.name=Большой силовой узел
text.unlocked=New Block Unlocked! block.battery.name=Аккумулятор
text.unlocked.plural=New Blocks Unlocked! block.battery-large.name=Большой аккумулятор
text.server.kicked.nameInUse=There is someone with that name\nalready on this server. block.combustion-generator.name=Генератор внутреннего сгорания
text.server.kicked.nameEmpty=Your name must contain at least one character or number. block.turbine-generator.name=Турбинный генератор
text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted. block.tungsten-drill.name=Вольфрамовый бур
text.server.kicked.customClient=This server does not support custom builds. Download an official version. block.carbide-drill.name=Карбидовый бур
text.trace.structureblocksbroken=Structure blocks broken: [accent]{0} block.laser-drill.name=Лазерный бур
text.saving=[accent]Saving... block.water-extractor.name=Экстрактор воды
text.unknown=Unknown block.cultivator.name=Культиватор
text.custom=Custom block.dart-ship-factory.name=Завод дротиковых самолётов
text.builtin=Built-In block.delta-mech-factory.name=Завод механического дельта броневика
text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone! block.repairpoint.name=Ремонтная точка
text.map.random=[accent]Random Map block.resupplypoint.name=Точка снабжения
text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor. block.conduit.name=Трубопровод
text.editor.slope=\\ block.pulseconduit.name=Импульсный трубопровод
text.editor.openin=Open In Editor block.liquidrouter.name=Маршрутизатор жидкостей
text.editor.oregen=Ore Generation block.liquidtank.name=Жидкостный резервуар
text.editor.oregen.info=Ore Generation: block.liquidjunction.name=Перекресток для жидкостей
text.editor.mapinfo=Map Info block.bridgeconduit.name=Мостовой трубопровод
text.editor.author=Author: block.mechanical-pump.name=Механическая помпа
text.editor.description=Description: block.itemsource.name=Источник предметов
text.editor.name=Name: block.itemvoid.name=Предметный вакуум
text.editor.teams=Teams block.liquidsource.name=Источник жидкостей
text.editor.elevation=Elevation block.powervoid.name=Энергитический вакуум
text.editor.saved=Saved! block.powerinfinite.name=Бесконечная энергия
text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu. block.unloader.name=Разгрузчик
text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu. block.sortedunloader.name=Сортированный разгрузчик
text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists! block.vault.name=Хранилище
text.editor.import=Import... block.wave.name=Волна
text.editor.importmap=Import Map block.swarmer.name=Зерг
text.editor.importmap.description=Import an already existing map block.salvo.name=Залп
text.editor.importfile=Import File block.ripple.name=Волнистость
text.editor.importfile.description=Import an external map file block.phase-conveyor.name=Фазовый конвейер
text.editor.importimage=Import Terrain Image block.bridge-conveyor.name=Мостовой конвейер
text.editor.importimage.description=Import an external map image file block.plastanium-compressor.name=Пластиниевый компрессор
text.editor.export=Export... block.pyratite-mixer.name=Смеситель пиротита
text.editor.exportfile=Export File block.blast-mixer.name=Смеситель взрывоопасного соединения
text.editor.exportfile.description=Export a map file block.solidifer.name=Отвердитель
text.editor.exportimage=Export Terrain Image block.solar-panel.name=Солнечная панель
text.editor.exportimage.description=Export a map image file block.solar-panel-large.name=Большая солнечная панель
text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it? block.oil-extractor.name=Нефтяной экстрактор
text.fps=FPS: {0} block.drone-pad.name=Стартовая площадка дронов
text.tps=TPS: {0} block.fabricator-pad.name=Стартовая площадка сборщиков
text.ping=Ping: {0}ms block.interceptor-pad.name=Стартовая площадка истребителей-перехватчиков
text.settings.rebind=Rebind block.monsoon-pad.name=Стартовая площадка муссонов
text.yes=Yes block.javelin-ship-factory.name=Фабрика кораблей класса "Копьё"
text.no=No block.repair-point.name=Ремонтный пункт
text.blocks.targetsair=Targets Air block.resupply-point.name=Точка снабжения
text.blocks.itemspeed=Units Moved block.pulse-conduit.name=Импульсный трубопровод
text.blocks.shootrange=Range block.phase-conduit.name=Фазовый трубопровод
text.blocks.poweruse=Power Use block.liquid-router.name=Жидкостный маршрутизатор
text.blocks.inputitemcapacity=Input Item Capacity block.liquid-tank.name=Жидкостный резервуар
text.blocks.outputitemcapacity=Input Item Capacity block.liquid-junction.name=Жидкое соединение
text.blocks.maxpowergeneration=Max Power Generation block.bridge-conduit.name=Мостовой трубопровод
text.blocks.powertransferspeed=Power Transfer block.rotary-pump.name=Роторный насос
text.blocks.craftspeed=Production Speed block.nuclear-reactor.name=Ядерный реактор
text.blocks.inputliquidaux=Aux Liquid block.command-center.name=Командный центр
text.blocks.inputitems=Input Items block.mass-driver.name=Электромагнитная катапульта
text.blocks.outputitem=Output Item block.blast-drill.name=Буровая установка
text.blocks.drilltier=Drillables block.thermal-pump.name=Тепловой насос
text.blocks.drillspeed=Base Drill Speed block.dagger-pad.name=Стартовая площадка "Кинжал"
text.blocks.liquidoutput=Liquid Output block.titan-pad.name=Стартовая площадка титанов
text.blocks.liquiduse=Liquid Use block.thermal-generator.name=Термальный генератор
text.blocks.coolant=Coolant unit.drone.name=Дрон
text.blocks.coolantuse=Coolant Use unit.drone.description=Начальный дрон. По умолчанию появляется из ядра. Автоматически добывает руды, собирает предметы, ремонтирует блоки.
text.blocks.inputliquidfuel=Fuel Liquid unit.fabricator.name=Сборщик
text.blocks.liquidfueluse=Liquid Fuel Use unit.fabricator.description=Продвинутый дрон. Автоматически добывает руды, собирает предметы, ремонтирует блоки. Значительнее эффективней нежели обычный дрон
text.blocks.reload=Reload unit.scout.name=Разведчик
text.blocks.inputfuel=Fuel unit.scout.description=Основная наземная боевая единица. Использует свинец как боеприпасы.
text.blocks.fuelburntime=Fuel Burn Time unit.titan.name=Титан
text.unit.blocks=blocks unit.titan.description=Улучшенная бронированная наземная боевая единица. Использует карбид в качестве боеприпасов. Атакует наземные и воздушные цели.
text.unit.powersecond=power units/second unit.monsoon.name=Муссон
text.unit.liquidsecond=liquid units/second unit.monsoon.description=Тяжелый ковровый бомбардировщик. Использует взрывоопасное соединение или пиратит в качестве боеприпасов.
text.unit.itemssecond=items/second unit.interceptor.name=Истребитель-перехватчик
text.unit.pixelssecond=pixels/second unit.interceptor.description=Быстрая и ударная боевая единица, которая использует набег с отскоком. Использует свинец как боеприпасы.
text.unit.liquidunits=liquid units block.thermal-pump.name=Thermal Pump
text.unit.powerunits=power units block.dagger-pad.name=Dagger Pad
text.unit.degrees=degrees block.titan-pad.name=Titan Pad
text.unit.seconds=seconds block.thermal-generator.name=Thermal Generator
text.unit.none=
text.unit.items=items
text.category.general=General
text.category.power=Power
text.category.liquids=Liquids
text.category.items=Items
text.category.crafting=Crafting
text.category.shooting=Shooting
setting.minimap.name=Show Minimap
content.item.name=Items
content.liquid.name=Liquids
content.unit-type.name=Units
content.recipe.name=Blocks
item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava.
item.tungsten.name=Tungsten
item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries.
item.lead.name=Lead
item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks.
item.coal.description=A common and readily available fuel.
item.carbide.name=Carbide
item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills.
item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft.
item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
item.silicon.name=Silicon
item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics.
item.plastanium.name=Plastanium
item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition.
item.phase-matter.name=Phase Matter
item.surge-alloy.name=Surge Alloy
item.biomatter.name=Biomatter
item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux.
item.blast-compound.name=Blast Compound
item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised.
item.pyratite.name=Pyratite
item.pyratite.description=An extremely flammable substance used in incendiary weapons.
liquid.cryofluid.name=Cryofluid
text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0}
text.item.flammability=[LIGHT_GRAY]Flammability: {0}
text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
text.item.hardness=[LIGHT_GRAY]Hardness: {0}
text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
block.tungsten-wall.name=Tungsten Wall
block.tungsten-wall-large.name=Large Tungsten Wall
block.carbide-wall.name=Carbide Wall
block.carbide-wall-large.name=Large Carbide Wall
block.thorium-wall.name=Thorium Wall
block.thorium-wall-large.name=Large Thorium Wall
block.duo.name=Duo
block.scorch.name=Scorch
block.hail.name=Hail
block.lancer.name=Lancer
block.titanium-conveyor.name=Titanium Conveyor
block.splitter.name=Splitter
block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
block.router.description=Splits items into all 4 directions. Can store items as a buffer.
block.distributor.name=Distributor
block.distributor.description=A splitter that can split items into 8 directions.
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.overflow-gate.name=Overflow Gate
block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
block.bridgeconveyor.name=Bridge Conveyor
block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
block.arc-smelter.name=Arc Smelter
block.silicon-smelter.name=Silicon Smelter
block.phase-weaver.name=Phase Weaver
block.pulverizer.name=Pulverizer
block.cryofluidmixer.name=Cryofluid Mixer
block.melter.name=Melter
block.incinerator.name=Incinerator
block.biomattercompressor.name=Biomatter Compressor
block.separator.name=Separator
block.centrifuge.name=Centrifuge
block.power-node.name=Power Node
block.power-node-large.name=Large Power Node
block.battery.name=Battery
block.battery-large.name=Large Battery
block.combustion-generator.name=Combustion Generator
block.turbine-generator.name=Turbine Generator
block.tungsten-drill.name=Tungsten Drill
block.carbide-drill.name=Carbide Drill
block.laser-drill.name=Laser Drill
block.water-extractor.name=Water Extractor
block.cultivator.name=Cultivator
block.dart-ship-factory.name=Dart Ship Factory
block.delta-mech-factory.name=Delta Mech Factory
block.dronefactory.name=Drone Factory
block.repairpoint.name=Repair Point
block.resupplypoint.name=Resupply Point
block.liquidtank.name=Liquid Tank
block.bridgeconduit.name=Bridge Conduit
block.mechanical-pump.name=Mechanical Pump
block.itemsource.name=Item Source
block.itemvoid.name=Item Void
block.liquidsource.name=Liquid Source
block.powervoid.name=Power Void
block.powerinfinite.name=Power Infinite
block.unloader.name=Unloader
block.sortedunloader.name=Sorted Unloader
block.vault.name=Vault
block.wave.name=Wave
block.swarmer.name=Swarmer
block.salvo.name=Salvo
block.ripple.name=Ripple
block.phase-conveyor.name=Phase Conveyor
block.bridge-conveyor.name=Bridge Conveyor
block.plastanium-compressor.name=Plastanium Compressor
block.pyratite-mixer.name=Pyratite Mixer
block.blast-mixer.name=Blast Mixer
block.solidifer.name=Solidifer
block.solar-panel.name=Solar Panel
block.solar-panel-large.name=Large Solar Panel
block.oil-extractor.name=Oil Extractor
block.javelin-ship-factory.name=Javelin Ship factory
block.drone-factory.name=Drone Factory
block.fabricator-factory.name=Fabricator Factory
block.repair-point.name=Repair Point
block.resupply-point.name=Resupply Point
block.pulse-conduit.name=Pulse Conduit
block.phase-conduit.name=Phase Conduit
block.liquid-router.name=Liquid Router
block.liquid-tank.name=Liquid Tank
block.liquid-junction.name=Liquid Junction
block.bridge-conduit.name=Bridge Conduit
block.rotary-pump.name=Rotary Pump
block.nuclear-reactor.name=Nuclear Reactor
text.save.old=This save is for an older version of the game, and can no longer be used.\n\n[LIGHT_GRAY]Save backwards compatibility will be implemented in the full 4.0 release.
text.customgame=Custom Game
text.campaign=Campaign
text.sectors=Sectors
text.sector=Selected Sector: [LIGHT_GRAY]{0}
text.sector.time=Time: [LIGHT_GRAY]{0}
text.sector.deploy=Deploy
text.sector.resume=Resume
text.sector.unlocked=Sector completed!
text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored]
text.close=Close
text.save.playtime=Playtime: {0}
text.editor.brush=Brush

View File

@@ -1,4 +1,3 @@
text.about=[ROYAL] Anuken tarafından oluşturuldu [] - [SKY] anukendev@gmail.com [] Aslen [turuncu] GDL [] Metal Monstrosity Jam. Kredi: - [SARI] ile yapılan SFX bfxr [] - [YEŞİL] RoccoW tarafından yapılan müzik [] / [kireç] bulunan FreeMusicArchive.org [] Özel teşekkürler: - [mercan] MitchellFJN []: Kapsamlı oyun testi ve geri bildirim - [sky] Luxray5474 []: wiki çalışması, kod katkıları - [kireç] Epowerj []: kod sistemi yapılandırması, icon - itch.io ve Google Play'deki tüm beta test kullanıcıları\n
text.credits=Yapımcılar text.credits=Yapımcılar
text.discord=Mindustry Discord'una katılın! text.discord=Mindustry Discord'una katılın!
text.link.discord.description=Resmi Mindustry Discord iletişim kanalı text.link.discord.description=Resmi Mindustry Discord iletişim kanalı
@@ -10,10 +9,8 @@ text.link.google-play.description=Google Play mağaza sayfası
text.link.wiki.description=Resmi Mindustry Wikipedi'si text.link.wiki.description=Resmi Mindustry Wikipedi'si
text.linkfail=Bağlantıılamadı! URL, yazı tahtanıza kopyalandı. text.linkfail=Bağlantıılamadı! URL, yazı tahtanıza kopyalandı.
text.editor.web=Web sürümü editörü desteklemiyor! Editörü kullanmak için oyunu indirin. text.editor.web=Web sürümü editörü desteklemiyor! Editörü kullanmak için oyunu indirin.
text.multiplayer.web=Oyunun bu sürümü çok oyunculuyu desteklemiyor! Tarayıcınızdan çok oyunculu oynamak için, itch.io sayfasındaki "çok oyunculu web sürümü" bağlantısını kullanın.
text.gameover=Çekirdek yok edildi. text.gameover=Çekirdek yok edildi.
text.highscore=[SARI] Yeni yüksek puan! text.highscore=[SARI] Yeni yüksek puan!
text.lasted=Dalgaya kadar sürdün
text.level.highscore=Yüksek Puan: [accent] {0} text.level.highscore=Yüksek Puan: [accent] {0}
text.level.delete.title=Silmeyi onaylayın text.level.delete.title=Silmeyi onaylayın
text.level.select=Seviye Seç text.level.select=Seviye Seç
@@ -165,9 +162,6 @@ text.settings.controls=kontroller
text.settings.game=Oyun text.settings.game=Oyun
text.settings.sound=Ses text.settings.sound=Ses
text.settings.graphics=Grafik text.settings.graphics=Grafik
text.upgrades=Geliştirmeler
text.purchased=[KİREÇ] Yap၊ld၊
text.weapons=Silahlar
text.paused=Duraklatıldı text.paused=Duraklatıldı
text.info.title=[Vurgu] Bilgi text.info.title=[Vurgu] Bilgi
text.error.title=[crimson] Bir hata oluştu text.error.title=[crimson] Bir hata oluştu
@@ -210,19 +204,6 @@ setting.musicvol.name=Müzik sesi
setting.mutemusic.name=Müziği Kapat setting.mutemusic.name=Müziği Kapat
setting.sfxvol.name=SFX Hacmi setting.sfxvol.name=SFX Hacmi
setting.mutesound.name=Sesi kapat setting.mutesound.name=Sesi kapat
map.maze.name=Labirent
map.fortress.name=Kale
map.sinkhole.name=düden
map.caves.name=mağaralar
map.volcano.name=volkan
map.caldera.name=kaldera
map.scorch.name=alazlamak
map.desert.name=çöl
map.island.name=ada
map.grassland.name=Çayır
map.tundra.name=tundra
map.spiral.name=sarmal
map.tutorial.name=Eğitim
text.keybind.title=Tuşları yeniden ayarla text.keybind.title=Tuşları yeniden ayarla
keybind.move_x.name=sağ / sol keybind.move_x.name=sağ / sol
keybind.move_y.name=yukarı / aşağı keybind.move_y.name=yukarı / aşağı
@@ -231,14 +212,12 @@ keybind.break.name=kırmak
keybind.shoot.name=ateş etme keybind.shoot.name=ateş etme
keybind.zoom_hold.name=tut ve büyüt keybind.zoom_hold.name=tut ve büyüt
keybind.zoom.name=Yakınlaştır keybind.zoom.name=Yakınlaştır
keybind.block_info.name=blok bilgisi
keybind.menu.name=menü keybind.menu.name=menü
keybind.pause.name=duraklatma keybind.pause.name=duraklatma
keybind.dash.name=tire keybind.dash.name=tire
keybind.chat.name=Sohbet keybind.chat.name=Sohbet
keybind.player_list.name=oyuncu listesi keybind.player_list.name=oyuncu listesi
keybind.console.name=KONTROL MASASI keybind.console.name=KONTROL MASASI
keybind.rotate_alt.name=rotate_alt
keybind.rotate.name=Döndür keybind.rotate.name=Döndür
mode.text.help.title=Modların açıklaması mode.text.help.title=Modların açıklaması
mode.waves.name=dalgalar mode.waves.name=dalgalar
@@ -266,7 +245,6 @@ block.liquidjunction.name=sıvı bağlantı
block.sorter.name=ayrıştırıcı block.sorter.name=ayrıştırıcı
block.smelter.name=dökümcü block.smelter.name=dökümcü
text.web.unsupported=The web version does not support this feature! Download the game to use it. text.web.unsupported=The web version does not support this feature! Download the game to use it.
text.host.web=The web version does not support hosting games! Download the game to use this feature.
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"? text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
text.construction.title=Block Construction Guide text.construction.title=Block Construction Guide
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left. text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
@@ -447,7 +425,6 @@ block.water-extractor.name=Water Extractor
block.cultivator.name=Cultivator block.cultivator.name=Cultivator
block.dart-ship-factory.name=Dart Ship Factory block.dart-ship-factory.name=Dart Ship Factory
block.delta-mech-factory.name=Delta Mech Factory block.delta-mech-factory.name=Delta Mech Factory
block.dronefactory.name=Drone Factory
block.repairpoint.name=Repair Point block.repairpoint.name=Repair Point
block.resupplypoint.name=Resupply Point block.resupplypoint.name=Resupply Point
block.liquidtank.name=Liquid Tank block.liquidtank.name=Liquid Tank
@@ -475,8 +452,6 @@ block.solar-panel.name=Solar Panel
block.solar-panel-large.name=Large Solar Panel block.solar-panel-large.name=Large Solar Panel
block.oil-extractor.name=Oil Extractor block.oil-extractor.name=Oil Extractor
block.javelin-ship-factory.name=Javelin Ship factory block.javelin-ship-factory.name=Javelin Ship factory
block.drone-factory.name=Drone Factory
block.fabricator-factory.name=Fabricator Factory
block.repair-point.name=Repair Point block.repair-point.name=Repair Point
block.resupply-point.name=Resupply Point block.resupply-point.name=Resupply Point
block.pulse-conduit.name=Pulse Conduit block.pulse-conduit.name=Pulse Conduit
@@ -495,9 +470,49 @@ text.sector=Selected Sector: [LIGHT_GRAY]{0}
text.sector.time=Time: [LIGHT_GRAY]{0} text.sector.time=Time: [LIGHT_GRAY]{0}
text.sector.deploy=Deploy text.sector.deploy=Deploy
text.sector.resume=Resume text.sector.resume=Resume
text.sector.unlocked=Sector completed!
text.sector.locked=[scarlet][[Incomplete] text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored] text.sector.unexplored=[accent][[Unexplored]
text.close=Close text.close=Close
text.save.playtime=Playtime: {0} text.save.playtime=Playtime: {0}
text.editor.brush=Brush text.editor.brush=Brush
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.sector.gameover=This sector has been lost. Re-deploy?
text.sector.retry=Retry
text.wave.lasted=You lasted until wave [accent]{0}[].
setting.fpscap.name=Max FPS
setting.fpscap.none=None
setting.fpscap.text={0} FPS
block.command-center.name=Command Center
text.mission=Mission:[LIGHT_GRAY] {0}
text.mission.wave=Survive [accent]{0}[] waves.
text.mission.battle=Destroy the enemy base.
text.none=<none>
text.sector.corrupted=[orange]A save file for this sector was found, but loading failed.\nA new one has been created.
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
text.mission.resource=Obtain {0} x{1}
text.unit.health=[LIGHT_GRAY]Health: {0}
text.unit.speed=[LIGHT_GRAY]Speed: {0}
block.drone-pad.name=Drone Pad
block.fabricator-pad.name=Fabricator Pad
block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
block.mass-driver.name=Mass Driver
block.blast-drill.name=Blast Drill
unit.drone.name=Drone
unit.drone.description=The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks.
unit.fabricator.name=Fabricator
unit.fabricator.description=An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone.
unit.scout.name=Scout
unit.scout.description=A basic ground unit. Uses lead as ammo.
unit.titan.name=Titan
unit.titan.description=An advanced armored ground unit. Uses carbide as ammo. Attacks both ground and air targets.
unit.monsoon.name=Monsoon
unit.monsoon.description=A heavy carpet bomber. Uses blast compound or pyratite as ammo.
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator

View File

@@ -1,8 +1,6 @@
text.about=Створено [ROYAL] Anuken. []\nСпочатку запис у [orange] GDL [] MM Jam.\nТворці:\n- SFX зроблено з [YELLOW] bfxr []\n- Музика зроблена [GREEN] RoccoW [] / Знайдено на [lime] FreeMusicArchive.org [] \nОсоблива подяка:\n- [coral] MitchellFJN []: екстенсивне тестування та відгуки\n- [sky] Luxray5474 []: робота з вікі, вклади коду\n- Всі бета-тестери на itch.io та Google Play\n
text.discord=Приєднуйтесь до нашого Discord! text.discord=Приєднуйтесь до нашого Discord!
text.gameover=Ядро було зруйновано. text.gameover=Ядро було зруйновано.
text.highscore=[YELLOW] Новий рекорд! text.highscore=[YELLOW] Новий рекорд!
text.lasted=Ви тримались до хвилі
text.level.highscore=Рекорд: [accent] {0} text.level.highscore=Рекорд: [accent] {0}
text.level.delete.title=Підтвердьте видалення text.level.delete.title=Підтвердьте видалення
text.level.select=Вибір рівня text.level.select=Вибір рівня
@@ -118,9 +116,6 @@ text.settings.controls=Елементи управління
text.settings.game=Гра text.settings.game=Гра
text.settings.sound=Звук text.settings.sound=Звук
text.settings.graphics=Графіка text.settings.graphics=Графіка
text.upgrades=Оновлення
text.purchased=[LIME] Створено!
text.weapons=Зброя
text.paused=Пауза text.paused=Пауза
text.info.title=[accent] інформація text.info.title=[accent] інформація
text.error.title=[crimson] Виникла помилка text.error.title=[crimson] Виникла помилка
@@ -163,19 +158,6 @@ setting.musicvol.name=Гучність музики
setting.mutemusic.name=Вимкнути музику setting.mutemusic.name=Вимкнути музику
setting.sfxvol.name=Гучність ефектів setting.sfxvol.name=Гучність ефектів
setting.mutesound.name=Вимкнути звук setting.mutesound.name=Вимкнути звук
map.maze.name=Лабіринт
map.fortress.name=Фортеця
map.sinkhole.name=Свердловина
map.caves.name=Печери
map.volcano.name=Вулкан
map.caldera.name=Кальдера
map.scorch.name=Мертва земля
map.desert.name=Пустеля
map.island.name=Острів
map.grassland.name=Пасовища
map.tundra.name=Тундра
map.spiral.name=Спіраль
map.tutorial.name=Навчання
text.keybind.title=Ключ перемотки text.keybind.title=Ключ перемотки
keybind.move_x.name=move_x keybind.move_x.name=move_x
keybind.move_y.name=move_y keybind.move_y.name=move_y
@@ -184,14 +166,12 @@ keybind.break.name={0}break{/0}{1}; {/1}
keybind.shoot.name=Постріл keybind.shoot.name=Постріл
keybind.zoom_hold.name=zoom_hold keybind.zoom_hold.name=zoom_hold
keybind.zoom.name=Збільшити keybind.zoom.name=Збільшити
keybind.block_info.name=Інформація про блок
keybind.menu.name=Меню keybind.menu.name=Меню
keybind.pause.name=Пауза keybind.pause.name=Пауза
keybind.dash.name=Тире keybind.dash.name=Тире
keybind.chat.name=Чат keybind.chat.name=Чат
keybind.player_list.name=Список гравців keybind.player_list.name=Список гравців
keybind.console.name=// Консоль 1 keybind.console.name=// Консоль 1
keybind.rotate_alt.name=rotate_alt
keybind.rotate.name=Повернути keybind.rotate.name=Повернути
mode.waves.name=Хвилі mode.waves.name=Хвилі
mode.sandbox.name=Пісочниця mode.sandbox.name=Пісочниця
@@ -226,8 +206,6 @@ text.link.wiki.description=official Mindustry wiki
text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard. text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
text.editor.web=The web version does not support the editor!\nDownload the game to use it. text.editor.web=The web version does not support the editor!\nDownload the game to use it.
text.web.unsupported=The web version does not support this feature! Download the game to use it. text.web.unsupported=The web version does not support this feature! Download the game to use it.
text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
text.host.web=The web version does not support hosting games! Download the game to use this feature.
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"? text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
text.construction.title=Block Construction Guide text.construction.title=Block Construction Guide
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left. text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
@@ -447,7 +425,6 @@ block.water-extractor.name=Water Extractor
block.cultivator.name=Cultivator block.cultivator.name=Cultivator
block.dart-ship-factory.name=Dart Ship Factory block.dart-ship-factory.name=Dart Ship Factory
block.delta-mech-factory.name=Delta Mech Factory block.delta-mech-factory.name=Delta Mech Factory
block.dronefactory.name=Drone Factory
block.repairpoint.name=Repair Point block.repairpoint.name=Repair Point
block.resupplypoint.name=Resupply Point block.resupplypoint.name=Resupply Point
block.liquidtank.name=Liquid Tank block.liquidtank.name=Liquid Tank
@@ -475,8 +452,6 @@ block.solar-panel.name=Solar Panel
block.solar-panel-large.name=Large Solar Panel block.solar-panel-large.name=Large Solar Panel
block.oil-extractor.name=Oil Extractor block.oil-extractor.name=Oil Extractor
block.javelin-ship-factory.name=Javelin Ship factory block.javelin-ship-factory.name=Javelin Ship factory
block.drone-factory.name=Drone Factory
block.fabricator-factory.name=Fabricator Factory
block.repair-point.name=Repair Point block.repair-point.name=Repair Point
block.resupply-point.name=Resupply Point block.resupply-point.name=Resupply Point
block.pulse-conduit.name=Pulse Conduit block.pulse-conduit.name=Pulse Conduit
@@ -495,9 +470,49 @@ text.sector=Selected Sector: [LIGHT_GRAY]{0}
text.sector.time=Time: [LIGHT_GRAY]{0} text.sector.time=Time: [LIGHT_GRAY]{0}
text.sector.deploy=Deploy text.sector.deploy=Deploy
text.sector.resume=Resume text.sector.resume=Resume
text.sector.unlocked=Sector completed!
text.sector.locked=[scarlet][[Incomplete] text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored] text.sector.unexplored=[accent][[Unexplored]
text.close=Close text.close=Close
text.save.playtime=Playtime: {0} text.save.playtime=Playtime: {0}
text.editor.brush=Brush text.editor.brush=Brush
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.sector.gameover=This sector has been lost. Re-deploy?
text.sector.retry=Retry
text.wave.lasted=You lasted until wave [accent]{0}[].
setting.fpscap.name=Max FPS
setting.fpscap.none=None
setting.fpscap.text={0} FPS
block.command-center.name=Command Center
text.mission=Mission:[LIGHT_GRAY] {0}
text.mission.wave=Survive [accent]{0}[] waves.
text.mission.battle=Destroy the enemy base.
text.none=<none>
text.sector.corrupted=[orange]A save file for this sector was found, but loading failed.\nA new one has been created.
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
text.mission.resource=Obtain {0} x{1}
text.unit.health=[LIGHT_GRAY]Health: {0}
text.unit.speed=[LIGHT_GRAY]Speed: {0}
block.drone-pad.name=Drone Pad
block.fabricator-pad.name=Fabricator Pad
block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
block.mass-driver.name=Mass Driver
block.blast-drill.name=Blast Drill
unit.drone.name=Drone
unit.drone.description=The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks.
unit.fabricator.name=Fabricator
unit.fabricator.description=An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone.
unit.scout.name=Scout
unit.scout.description=A basic ground unit. Uses lead as ammo.
unit.titan.name=Titan
unit.titan.description=An advanced armored ground unit. Uses carbide as ammo. Attacks both ground and air targets.
unit.monsoon.name=Monsoon
unit.monsoon.description=A heavy carpet bomber. Uses blast compound or pyratite as ammo.
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator

View File

@@ -0,0 +1,518 @@
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.credits=致谢
text.discord=加入 Mindustry 的 Discord!
text.link.discord.description=官方 Mindustry discord 聊天室
text.link.github.description=游戏源码
text.link.dev-builds.description=不稳定开发版
text.link.trello.description=Trello board 上的官方计划表
text.link.itch.io.description=PC版下载和网页版(itch.io)
text.link.google-play.description=从谷歌商店获取安卓版
text.link.wiki.description=官方 Mindustry 维基
text.linkfail=打开链接失败!\nURL 已经复制到剪贴板。
text.editor.web=网页版不支持地图编辑器!\n下载以使用编辑器。
text.web.unsupported=网页版不支持此功能,请下载以使用此功能。
text.gameover=你的核心被摧毁了!
text.sector.gameover=这个区域失守了,要重新部署吗?
text.sector.retry=重试
text.highscore=[accent]新纪录!
text.wave.lasted=你坚持到了第 [accent]{0}[] 波。
text.level.highscore=最高分: [accent]{0}
text.level.delete.title=确认删除
text.map.delete=确定要删除 "[orange]{0}[]" 地图吗?
text.level.select=选择关卡
text.level.mode=游戏模式:
text.construction.title=方块建造指导
text.construction=你选择了 [accent]建造模式[].\n\n点击你附近的有效位置以放置\n选择了方块以后, 点击复选框就会开始建造。\n\n- [accent]移除方块-[] 点击想要删除的方块。\n- [accent]直线放置方块-[] 按住一个空点然后拖到目的地。\n- [accent]取消建造或选择-[] 按左下角的X。
text.deconstruction.title=方块删除指导
text.deconstruction=你选择了 [accent]删除模式[]。\n\n点击你附近的有效位置以删除\n选择了方块以后点击复选框就会开始删除。\n\n- [accent]移除方块-[] 点击想要删除的方块。\n- [accent]移除选中部分-[] 按住并拖动以选中一个区域。\n- [accent]取消删除或选择-[] 按左下角的X.
text.showagain=不再显示
text.unlocks=已解锁
text.savegame=保存游戏
text.loadgame=载入游戏
text.joingame=加入游戏
text.addplayers=增加/删除玩家
text.customgame=自定义游戏
text.campaign=战役
text.sectors=区域
text.sector=区域: [LIGHT_GRAY]{0}
text.sector.time=时间: [LIGHT_GRAY]{0}
text.sector.deploy=部署
text.sector.resume=继续
text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored]
text.mission=任务[LIGHT_GRAY] {0}
text.mission.wave=存活了 [accent]{0}[] 波。
text.mission.battle=摧毁敌方基地。
text.mission.resource=获得 {0} x{1}
text.none=<none>
text.close=关闭
text.quit=退出
text.maps=地图
text.maps.none=[LIGHT_GRAY]未发现地图!
text.about.button=关于
text.name=名字:
text.unlocked=新方块解锁!
text.unlocked.plural=新方块解锁!
text.players={0} 玩家在线
text.players.single={0} 玩家在线
text.server.mismatch=Packet error: 可能是客户端/服务器版本不匹配\n请确保你和房主\n都安装了最新版 Mindustry
text.server.closing=[accent]正在关闭服务器...
text.server.kicked.kick=你被踢出服务器了!
text.server.kicked.fastShoot=你发射得太快了!
text.server.kicked.invalidPassword=无效的密码!
text.server.kicked.clientOutdated=客户端版本过旧!请升级!
text.server.kicked.serverOutdated=服务器版本过旧!请联系房主升级!
text.server.kicked.banned=你被这个服务器拉黑了。
text.server.kicked.recentKick=你刚刚被踢出服务器\n请稍后再重新连接
text.server.kicked.nameInUse=服务器中已经\n有相同的名字了。
text.server.kicked.nameEmpty=你的名字必须至少包含一个字母或数字。
text.server.kicked.idInUse=你已经在服务器中了!不允许用两个账号。
text.server.kicked.customClient=这个服务器不支持修改版连接,请下载官方版本。
text.host.info=[accent]创建局域网游戏[] 按钮会在 [scarlet]6567[] 端口运行一个服务器并且 [scarlet]6568.[]\n任何在同一个 [LIGHT_GRAY]wifi或本地网络[] 下的人都将在服务器列表中看到你的服务器。\n\n如果你想让别人在任何地方都能通过ip地址连接 那么需要[accent]端口转发[]。\n\n[LIGHT_GRAY]请注意:如果某人无法连接到你的局域网游戏,请确保你在防火墙设置里允许了 Mindustry 连接本地网络。
text.join.info=你可以在这里输入[accent]服务器的IP地址[]以连接,或寻找[accent]本地网络[]中的服务器以连接。\n支持局域网或广域网多人游戏。\n\n[LIGHT_GRAY]请注意没有全球服务器列表如果你想通过IP地址连接某个服务器你需要向房主询问IP地址。
text.hostserver=服务器
text.host=创建服务器
text.hosting=[accent]正在打开服务器...
text.hosts.refresh=刷新
text.hosts.discovering=正在搜索局域网服务器
text.server.refreshing=正在刷新服务器
text.hosts.none=[lightgray]未发现局域网游戏!
text.host.invalid=[scarlet]无法连接服务器。
text.trace=跟踪玩家
text.trace.playername=玩家名字: [accent]{0}
text.trace.ip=IP地址 [accent]{0}
text.trace.id=ID: [accent]{0}
text.trace.android=安卓客户端: [accent]{0}
text.trace.modclient=修改版客户端: [accent]{0}
text.trace.totalblocksbroken=总共破坏了 [accent]{0} 个方块。
text.trace.structureblocksbroken=总共破坏了 [accent]{0} 个结构。
text.trace.lastblockbroken=最后破坏的方块: [accent]{0}
text.trace.totalblocksplaced=总共放置了 [accent]{0} 个方块。
text.trace.lastblockplaced=最后放置的方块: [accent]{0}
text.invalidid=无效的客户端ID请提交 bug 报告。
text.server.bans=黑名单
text.server.bans.none=没有被拉黑的玩家!
text.server.admins=管理员
text.server.admins.none=没有管理员!
text.server.add=添加服务器
text.server.delete=确定要删除这个服务器吗?
text.server.hostname=主机: {0}
text.server.edit=编辑服务器
text.server.outdated=[crimson]服务器过旧![]
text.server.outdated.client=[crimson]客户端过旧![]
text.server.version=[lightgray]版本: {0}
text.server.custombuild=[yellow]修改版
text.confirmban=确认拉黑这个玩家?
text.confirmunban=确认要取消拉黑这个玩家吗?
text.confirmadmin=确认要添加这个玩家为管理员吗?
text.confirmunadmin=确认要取消这个玩家的管理员身份吗?
text.joingame.title=加入游戏
text.joingame.ip=IP:
text.disconnect=已断开
text.disconnect.data=载入世界失败!
text.connecting=[accent]连接中...
text.connecting.data=[accent]加载世界中...
text.connectfail=[crimson]服务器连接失败: [orange]{0}
text.server.port=端口:
text.server.addressinuse=地址已经使用!
text.server.invalidport=无效的端口!
text.server.error=[crimson]创建服务器错误:[orange]{0}
text.save.old=这个存档属于旧版本游戏,无法继续使用了。\n\n[LIGHT_GRAY]存档向下兼容将在 4.0 版本中实现。
text.save.new=新存档
text.save.overwrite=确认要\n覆盖这个存档吗
text.overwrite=覆盖
text.save.none=没有存档!
text.saveload=[accent]保存中...
text.savefail=保存失败!
text.save.delete.confirm=确认要删除这个存档吗?
text.save.delete=删除
text.save.export=导出存档
text.save.import.invalid=[orange]存档无效!
text.save.import.fail=[crimson]导入存档:[orange]{0} 失败
text.save.export.fail=[crimson]导出存档“[orange]{0} 失败
text.save.import=导入存档
text.save.newslot=保存游戏:
text.save.rename=重命名
text.save.rename.text=新名字:
text.selectslot=选择一个存档
text.slot=[accent]存档 {0}
text.save.corrupted=[orange]存档损坏或无效!\n如果你刚刚升级了游戏那么这可能是因为存档格式改变了而[scarlet]不是[] bug 。
text.sector.corrupted=[orange]发现了一个此区域的保存文件,但是加载失败。\n已经创建了一个新的。
text.empty=<empty>
text.on=
text.off=
text.save.autosave=自动保存:{0}
text.save.map=地图:{0}
text.save.wave=第 {0} 波
text.save.difficulty=难度: {0}
text.save.date=最后保存日期:{0}
text.save.playtime=游戏时间:{0}
text.confirm=确认
text.delete=删除
text.ok=好的
text.open=打开
text.cancel=取消
text.openlink=打开链接
text.copylink=删除链接
text.back=返回
text.quit.confirm=确认要退出?
text.changelog.title=更新日志
text.changelog.loading=正在获取更新日志...
text.changelog.error.android=[orange]请注意更新日志有时在安卓 4.4 以下不工作。\n这是因为安卓系统的一个 bug 。
text.changelog.error.ios=[orange]iOS还不支持更新日志。
text.changelog.error=[scarlet]获取更新日志失败!\n请检查你的网络。
text.changelog.current=[yellow][[Current version]
text.changelog.latest=[orange][[Latest version]
text.loading=[accent]加载中...
text.saving=[accent]保存中...
text.wave=[orange]第 {0} 波
text.wave.waiting=下一波将在 {0} 秒后到来
text.waiting=等待中...
text.enemies={0} 个敌人
text.enemies.single={0} 个敌人
text.loadimage=加载图片
text.saveimage=保存图片
text.unknown=未知
text.custom=自定义
text.builtin=内建的
text.map.delete.confirm=确认要删除地图吗?这个操作无法撤销!
text.map.random=[accent]随机地图
text.map.nospawn=这个地图没有核心!请在编辑器中添加一个[ROYAL]蓝色[]的核心。
text.editor.brush=笔刷
text.editor.slope=\\
text.editor.openin=在编辑器中打开
text.editor.oregen=生成矿石
text.editor.oregen.info=生成矿石:
text.editor.mapinfo=地图详情
text.editor.author=作者:
text.editor.description=描述:
text.editor.name=名字:
text.editor.teams=团队
text.editor.elevation=高度
text.editor.badsize=[orange]图片尺寸无效![]\n正确的尺寸{0}
text.editor.errorimageload=载入文件出错:\n[orange]{0}
text.editor.errorimagesave=保存文件出错:\n[orange]{0}
text.editor.generate=生成
text.editor.resize=调整
text.editor.loadmap=载入地图
text.editor.savemap=保存地图
text.editor.saved=已保存!
text.editor.save.noname=你的地图还没有名字!在“地图信息”菜单里设置一个名字。
text.editor.save.overwrite=你的地图覆盖了一个内建的地图!在“地图信息”菜单里重新设置一个。
text.editor.import.exists=[scarlet]无法导入:[] 一个叫 '{0}' 的内建地图已经存在。
text.editor.import=导入...
text.editor.importmap=导入地图
text.editor.importmap.description=导入一个已经存在的地图
text.editor.importfile=导入文件
text.editor.importfile.description=导入一个外置的地图文件
text.editor.importimage=导入地形图像
text.editor.importimage.description=导入外置地图图像文件
text.editor.export=导出...
text.editor.exportfile=导出文件
text.editor.exportfile.description=导出一个地图文件
text.editor.exportimage=导出一个地形文件
text.editor.exportimage.description=导出一个地图图像文件
text.editor.loadimage=导入地形
text.editor.saveimage=导出地形
text.editor.unsaved=[scarlet]你有未保存的更改![]\n确定要退出
text.editor.resizemap=调整地图
text.editor.mapname=地图名字:
text.editor.overwrite=[accent]警告!\n这将会覆盖一个已经存在的地图。
text.editor.overwrite.confirm=[scarlet]警告![] 存在同名地图,确定要覆盖?
text.editor.selectmap=选择一个地图加载:
text.width=宽度:
text.height=高度:
text.menu=菜单
text.play=开始游戏
text.load=载入游戏
text.save=保存
text.fps=FPS: {0}
text.tps=TPS: {0}
text.ping=Ping: {0}ms
text.language.restart=为了使语言设置生效请重启游戏。
text.settings.language=语言
text.settings=设置
text.tutorial=教程
text.editor=编辑器
text.mapeditor=地图编辑器
text.donate=捐赠
text.settings.reset=恢复默认
text.settings.rebind=重新绑定
text.settings.controls=控制
text.settings.game=游戏
text.settings.sound=声音
text.settings.graphics=图像
text.paused=暂停
text.yes=
text.no=
text.info.title=[accent]详情
text.error.title=[crimson]发生了一个错误
text.error.crashtitle=发生了一个错误
text.blocks.blockinfo=方块详情
text.blocks.powercapacity=能量容量
text.blocks.powershot=能量/发射
text.blocks.targetsair=攻击空中单位
text.blocks.itemspeed=移动速度
text.blocks.shootrange=范围
text.blocks.size=尺寸
text.blocks.liquidcapacity=液体容量
text.blocks.maxitemssecond=最大物品数量
text.blocks.powerrange=能量范围
text.blocks.poweruse=能量使用
text.blocks.inputitemcapacity=最大输入
text.blocks.outputitemcapacity=最大输出
text.blocks.itemcapacity=物品容量
text.blocks.maxpowergeneration=最大能量
text.blocks.powertransferspeed=能量传输
text.blocks.craftspeed=生产速度
text.blocks.inputliquid=输入液体
text.blocks.inputliquidaux=Aux 液体
text.blocks.inputitem=输入物品
text.blocks.inputitems=输入物品
text.blocks.outputitem=输出物品
text.blocks.drilltier=可钻探矿物
text.blocks.drillspeed=基础钻探速度
text.blocks.liquidoutput=液体输出速度
text.blocks.liquiduse=使用液体
text.blocks.coolant=冷却剂
text.blocks.coolantuse=使用冷却剂
text.blocks.inputliquidfuel=使用燃料
text.blocks.liquidfueluse=使用液体燃料
text.blocks.explosive=高度易燃易爆!
text.blocks.health=生命值
text.blocks.inaccuracy=误差
text.blocks.shots=发射
text.blocks.reload=重新装弹
text.blocks.inputfuel=燃料
text.blocks.fuelburntime=燃料燃烧时间
text.blocks.inputcapacity=输入容量
text.blocks.outputcapacity=输出容量
text.unit.blocks=方块
text.unit.powersecond=能量单位/秒
text.unit.liquidsecond=液体单位/秒
text.unit.itemssecond=物品/秒
text.unit.pixelssecond=像素/秒
text.unit.liquidunits=液体单位
text.unit.powerunits=能量单位
text.unit.degrees=
text.unit.seconds=
text.unit.none=
text.unit.items=物品
text.category.general=普通
text.category.power=能量
text.category.liquids=液体
text.category.items=物品
text.category.crafting=制造速度
text.category.shooting=射速
setting.fpscap.name=最高 FPS
setting.fpscap.none=None
setting.fpscap.text={0} FPS
setting.difficulty.easy=简单
setting.difficulty.normal=普通
setting.difficulty.hard=困难
setting.difficulty.insane=疯狂
setting.difficulty.purge=清除
setting.difficulty.name=难度:
setting.screenshake.name=屏幕抖动
setting.indicators.name=指出敌人
setting.effects.name=显示效果
setting.sensitivity.name=控制器灵敏度
setting.saveinterval.name=自动保存间隔
setting.seconds={0} 秒
setting.fullscreen.name=全屏
setting.multithread.name=多线程
setting.fps.name=显示 FPS
setting.vsync.name=帧同步
setting.lasers.name=显示能量射线
setting.healthbars.name=显示生命值
setting.minimap.name=显示小地图
setting.musicvol.name=音乐音量
setting.mutemusic.name=静音
setting.sfxvol.name=音效音量
setting.mutesound.name=静音
text.keybind.title=重新绑定按键
keybind.move_x.name=X轴移动
keybind.move_y.name=Y轴移动
keybind.select.name=选择
keybind.break.name=破坏
keybind.shoot.name=射击
keybind.zoom_hold.name=保持缩放
keybind.zoom.name=缩放
keybind.menu.name=菜单
keybind.pause.name=暂停
keybind.dash.name=冲刺
keybind.chat.name=聊天
keybind.player_list.name=玩家列表
keybind.console.name=控制台
keybind.rotate.name=旋转
mode.text.help.title=模式说明
mode.waves.name=普通
mode.waves.description=普通模式,有限的资源和自动生成敌人。
mode.sandbox.name=沙盒
mode.sandbox.description=无限的资源,不会自动生成敌人。
mode.freebuild.name=自由建造
mode.freebuild.description=有限的资源,不会自动生成敌人。
content.item.name=物品
content.liquid.name=液体
content.unit-type.name=单位
content.recipe.name=方块
item.stone.name=石头
item.stone.description=一种常见的原料。用于分离和提炼成其他材料,或熔化成熔岩。
item.tungsten.name=
item.tungsten.description=一种常见但非常有用的结构材料。用于钻头和耐热方块,比如发电机和冶炼器。
item.lead.name=
item.lead.description=基本的起始材料。被广泛用于电气和液体运输方块。
item.coal.name=
item.coal.description=一种常见并容易获得的燃料。
item.carbide.name=电石
item.carbide.description=由钨和碳制成的坚韧合金。被用在高级的运输方块和高层钻机。
item.titanium.name=
item.titanium.description=一种罕见的超轻金属,被广泛运用于液体运输,钻机和飞机。
item.thorium.name=
item.thorium.description=一种致密的放射性金属,用作支撑结构和核燃料。
item.silicon.name=
item.silcion.description=非常有用的半导体,被用于太阳能电池板和很多复杂的电子设备。
item.plastanium.name=塑料
item.plastanium.description=一种轻质,可延展的材料,用于高级的飞机和碎片弹药。
item.phase-matter.name=相位问题
item.surge-alloy.name=巨浪合金
item.biomatter.name=生物质
item.biomatter.description=一种有机糊;用于转化为油或作为基本燃料。
item.sand.name=沙子
item.sand.description=一种常见的材料,广泛用于冶炼,制作合金和助熔剂。
item.blast-compound.name=爆炸混合物
item.blast-compound.description=一种用于炸弹和炸药的挥发性化合物。虽然它可以作为燃料燃烧,但不建议这样做。
item.pyratite.name=
item.pyratite.description=燃烧武器中使用的极易燃物质。
liquid.water.name=
liquid.lava.name=岩浆
liquid.oil.name=石油
liquid.cryofluid.name=冷冻液
text.item.explosiveness=[LIGHT_GRAY]爆炸威力:{0}
text.item.flammability=[LIGHT_GRAY]易燃性:{0}
text.item.radioactivity=[LIGHT_GRAY]放射性:{0}
text.item.fluxiness=[LIGHT_GRAY]流通力:{0}
text.item.hardness=[LIGHT_GRAY]硬度:{0}
text.unit.health=[LIGHT_GRAY]生命值: {0}
text.unit.speed=[LIGHT_GRAY]速度: {0}
text.liquid.heatcapacity=[LIGHT_GRAY]热容量:{0}
text.liquid.viscosity=[LIGHT_GRAY]粘度:{0}
text.liquid.temperature=[LIGHT_GRAY]温度:{0}
block.tungsten-wall.name=钨墙
block.tungsten-wall-large.name=大型钨墙
block.carbide-wall.name=电石
block.carbide-wall-large.name=大型电石墙
block.thorium-wall.name=钍墙
block.thorium-wall-large.name=大型钍墙
block.door.name=
block.door-large.name=大门
block.duo.name=
block.scorch.name=灼烧炮
block.hail.name=Hail
block.lancer.name=枪骑兵
block.conveyor.name=传送带
block.titanium-conveyor.name=钛传送带
block.junction.name=连接点
block.splitter.name=分离器
block.splitter.description=将物品输出到三个不同的方向。
block.router.name=路由器
block.router.description=将物品分配到 4 个方向。可以作为缓冲区储存物品。
block.distributor.name=分配器
block.distributor.description=把物品分到 8 个方向的分配器。
block.sorter.name=分类器
block.sorter.description=对物品进行分类。如果物品与所选种类,则允许其通过。否则,物品将从左边和右边输出。
block.overflow-gate.name=溢流门
block.overflow-gate.description=分离器和路由器的组合,如果前面被挡住,则向从左和右输出。
block.bridgeconveyor.name=传送桥
block.bridgeconveyor.description=一种传送带,可以越过其他方块,最多两个方块。
block.smelter.name=冶炼厂
block.arc-smelter.name=电弧冶炼厂
block.silicon-smelter.name=硅冶炼厂
block.phase-weaver.name=相位编织器
block.pulverizer.name=粉碎机
block.cryofluidmixer.name=冷冻液混合器
block.melter.name=熔炉
block.incinerator.name=焚化炉
block.biomattercompressor.name=生物质压缩机
block.separator.name=分离机
block.centrifuge.name=离心机
block.power-node.name=能量节点
block.power-node-large.name=大型能量节点
block.battery.name=电池
block.battery-large.name=大型电池
block.combustion-generator.name=燃烧发电机
block.turbine-generator.name=涡轮发电机
block.tungsten-drill.name=钨钻头
block.carbide-drill.name=电石钻头
block.laser-drill.name=激光钻头
block.water-extractor.name=抽水机
block.cultivator.name=耕种机
block.dart-ship-factory.name=飞船制造工厂
block.delta-mech-factory.name=机械制造工厂
block.repairpoint.name=维修点
block.resupplypoint.name=补给点
block.conduit.name=导管
block.pulseconduit.name=脉冲导管
block.liquidrouter.name=液体路由器
block.liquidtank.name=储液罐
block.liquidjunction.name=液体连接点
block.bridgeconduit.name=导管桥
block.mechanical-pump.name=机械泵
block.itemsource.name=物品源
block.itemvoid.name=Item Void
block.liquidsource.name=液体源
block.powervoid.name=Power Void
block.powerinfinite.name=无限能源
block.unloader.name=装卸器
block.sortedunloader.name=分类装卸器
block.vault.name=仓库
block.wave.name=波浪
block.swarmer.name=蜂群
block.salvo.name=齐射炮
block.ripple.name=波纹
block.phase-conveyor.name=相位传送带
block.bridge-conveyor.name=传送带桥
block.plastanium-compressor.name=塑料压缩机
block.pyratite-mixer.name=硫混合器
block.blast-mixer.name=爆炸混合器
block.solidifer.name=凝固剂
block.solar-panel.name=太阳能电池
block.solar-panel-large.name=大型太阳能电池
block.oil-extractor.name=石油钻井
block.javelin-ship-factory.name=标枪船工厂
block.repair-point.name=维修点
block.resupply-point.name=供应点
block.pulse-conduit.name=脉冲导管
block.phase-conduit.name=相位导管
block.liquid-router.name=液体路由器
block.liquid-tank.name=储液罐
block.liquid-junction.name=液体连接点
block.bridge-conduit.name=导管桥
block.rotary-pump.name=回旋泵
block.nuclear-reactor.name=核反应堆
block.command-center.name=指令中心
block.mass-driver.name=质量驱动器
block.blast-drill.name=爆破钻头
unit.drone.name=无人机
unit.drone.description=初始的无人机单位.自动在核心生成,自动采矿,收集物品,修复方块
unit.fabricator.name=装配工
unit.fabricator.description=高级无人机单位,自动采矿,收集物品和修复方块.比普通无人机快很多.
unit.scout.name=侦察机
unit.scout.description=基础地面单位,使用钨作为弹药.
unit.titan.name=泰坦
unit.titan.description=高级的有武装地面单位,使用电石作为弹药.攻击地面单位和空中单位.
unit.monsoon.name=狂风
unit.monsoon.description=重型地毯式轰炸机,使用爆炸混合物或硫作为弹药。
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
block.drone-pad.name=Drone Pad
block.fabricator-pad.name=Fabricator Pad
block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator

View File

@@ -1,4 +1,3 @@
text.about=開發者 [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n最初構想於 [orange]GDL[] Metal Monstrosity Jam.\n\n銘謝\n- 音效作者 [YELLOW]bfxr[]\n- 音樂作者 [GREEN]a beat a day[]\n\n特別感謝:\n- [coral]MitchellFJN[]:大量的測試與回饋\n- [sky]Luxray5474[]:維基編纂、程式碼貢獻\n- [lime]Epowerj[]: 撰寫建造系統、繪製圖示\n- 所有在 itch.io 與 Google Play 上的測試版玩家\n
text.credits=致謝名單 text.credits=致謝名單
text.discord=加入 Mindustry 的 Discord 聊天室 text.discord=加入 Mindustry 的 Discord 聊天室
text.link.discord.description=官方 Mindustry Discord 聊天室 text.link.discord.description=官方 Mindustry Discord 聊天室
@@ -10,10 +9,8 @@ text.link.google-play.description=Google Play 商店頁面
text.link.wiki.description=官方 Mindustry 維基 text.link.wiki.description=官方 Mindustry 維基
text.linkfail=無法打開連結!我們已將該網址複製到您的剪貼簿。\n text.linkfail=無法打開連結!我們已將該網址複製到您的剪貼簿。\n
text.editor.web=線上版本不支援地圖編輯器!請下載遊戲已使用這項功能。\n text.editor.web=線上版本不支援地圖編輯器!請下載遊戲已使用這項功能。\n
text.multiplayer.web=此遊戲版本不支援多人連線!請在 itch.io 頁面使用「多人線上版」連結以進入多人遊戲。
text.gameover=核心已被摧毀。 text.gameover=核心已被摧毀。
text.highscore=[YELLOW]新的高分紀錄! text.highscore=[YELLOW]新的高分紀錄!
text.lasted=您存活到波次
text.level.highscore=最高分:[accent] {0} text.level.highscore=最高分:[accent] {0}
text.level.delete.title=確認刪除 text.level.delete.title=確認刪除
text.level.select=選擇關卡 text.level.select=選擇關卡
@@ -167,9 +164,6 @@ text.settings.controls=操作
text.settings.game=遊戲 text.settings.game=遊戲
text.settings.sound=音效 text.settings.sound=音效
text.settings.graphics=圖形 text.settings.graphics=圖形
text.upgrades=升級
text.purchased=[LIME]已建立!
text.weapons=武器
text.paused=已暫停 text.paused=已暫停
text.info.title=[accent]資訊 text.info.title=[accent]資訊
text.error.title=[crimson]發生錯誤 text.error.title=[crimson]發生錯誤
@@ -212,19 +206,6 @@ setting.musicvol.name=音樂音量
setting.mutemusic.name=靜音 setting.mutemusic.name=靜音
setting.sfxvol.name=音效音量 setting.sfxvol.name=音效音量
setting.mutesound.name=靜音 setting.mutesound.name=靜音
map.maze.name=迷宮
map.fortress.name=堡壘
map.sinkhole.name=天坑
map.caves.name=洞窟
map.volcano.name=火山
map.caldera.name=火山口
map.scorch.name=焦土
map.desert.name=沙漠
map.island.name=島嶼
map.grassland.name=草原
map.tundra.name=凍原
map.spiral.name=螺旋
map.tutorial.name=教學
text.keybind.title=重新綁定按鍵 text.keybind.title=重新綁定按鍵
keybind.move_x.name=水平移動 keybind.move_x.name=水平移動
keybind.move_y.name=垂直移動 keybind.move_y.name=垂直移動
@@ -233,14 +214,12 @@ keybind.break.name=拆除
keybind.shoot.name=射擊 keybind.shoot.name=射擊
keybind.zoom_hold.name=按住縮放 keybind.zoom_hold.name=按住縮放
keybind.zoom.name=縮放 keybind.zoom.name=縮放
keybind.block_info.name=方塊資訊
keybind.menu.name=主選單 keybind.menu.name=主選單
keybind.pause.name=暫停遊戲 keybind.pause.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_alt.name=反向旋轉
keybind.rotate.name=旋轉 keybind.rotate.name=旋轉
mode.text.help.title=模式說明 mode.text.help.title=模式說明
mode.waves.name=一般 mode.waves.name=一般
@@ -268,7 +247,6 @@ block.liquidjunction.name=液體樞紐
block.sorter.name=分類器 block.sorter.name=分類器
block.smelter.name=煉鋼廠 block.smelter.name=煉鋼廠
text.web.unsupported=The web version does not support this feature! Download the game to use it. text.web.unsupported=The web version does not support this feature! Download the game to use it.
text.host.web=The web version does not support hosting games! Download the game to use this feature.
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"? text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
text.construction.title=Block Construction Guide text.construction.title=Block Construction Guide
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left. text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
@@ -448,7 +426,6 @@ block.water-extractor.name=Water Extractor
block.cultivator.name=Cultivator block.cultivator.name=Cultivator
block.dart-ship-factory.name=Dart Ship Factory block.dart-ship-factory.name=Dart Ship Factory
block.delta-mech-factory.name=Delta Mech Factory block.delta-mech-factory.name=Delta Mech Factory
block.dronefactory.name=Drone Factory
block.repairpoint.name=Repair Point block.repairpoint.name=Repair Point
block.resupplypoint.name=Resupply Point block.resupplypoint.name=Resupply Point
block.liquidtank.name=Liquid Tank block.liquidtank.name=Liquid Tank
@@ -476,8 +453,6 @@ block.solar-panel.name=Solar Panel
block.solar-panel-large.name=Large Solar Panel block.solar-panel-large.name=Large Solar Panel
block.oil-extractor.name=Oil Extractor block.oil-extractor.name=Oil Extractor
block.javelin-ship-factory.name=Javelin Ship factory block.javelin-ship-factory.name=Javelin Ship factory
block.drone-factory.name=Drone Factory
block.fabricator-factory.name=Fabricator Factory
block.repair-point.name=Repair Point block.repair-point.name=Repair Point
block.resupply-point.name=Resupply Point block.resupply-point.name=Resupply Point
block.pulse-conduit.name=Pulse Conduit block.pulse-conduit.name=Pulse Conduit
@@ -495,9 +470,49 @@ text.sector=Selected Sector: [LIGHT_GRAY]{0}
text.sector.time=Time: [LIGHT_GRAY]{0} text.sector.time=Time: [LIGHT_GRAY]{0}
text.sector.deploy=Deploy text.sector.deploy=Deploy
text.sector.resume=Resume text.sector.resume=Resume
text.sector.unlocked=Sector completed!
text.sector.locked=[scarlet][[Incomplete] text.sector.locked=[scarlet][[Incomplete]
text.sector.unexplored=[accent][[Unexplored] text.sector.unexplored=[accent][[Unexplored]
text.close=Close text.close=Close
text.save.playtime=Playtime: {0} text.save.playtime=Playtime: {0}
text.editor.brush=Brush text.editor.brush=Brush
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
text.sector.gameover=This sector has been lost. Re-deploy?
text.sector.retry=Retry
text.wave.lasted=You lasted until wave [accent]{0}[].
setting.fpscap.name=Max FPS
setting.fpscap.none=None
setting.fpscap.text={0} FPS
block.command-center.name=Command Center
text.mission=Mission:[LIGHT_GRAY] {0}
text.mission.wave=Survive [accent]{0}[] waves.
text.mission.battle=Destroy the enemy base.
text.none=<none>
text.sector.corrupted=[orange]A save file for this sector was found, but loading failed.\nA new one has been created.
text.mission.complete=Mission complete!
text.mission.complete.body=Sector {0},{1} has been conquered.
text.mission.resource=Obtain {0} x{1}
text.unit.health=[LIGHT_GRAY]Health: {0}
text.unit.speed=[LIGHT_GRAY]Speed: {0}
block.drone-pad.name=Drone Pad
block.fabricator-pad.name=Fabricator Pad
block.interceptor-pad.name=Interceptor Pad
block.monsoon-pad.name=Monsoon Pad
block.mass-driver.name=Mass Driver
block.blast-drill.name=Blast Drill
unit.drone.name=Drone
unit.drone.description=The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks.
unit.fabricator.name=Fabricator
unit.fabricator.description=An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone.
unit.scout.name=Scout
unit.scout.description=A basic ground unit. Uses lead as ammo.
unit.titan.name=Titan
unit.titan.description=An advanced armored ground unit. Uses carbide as ammo. Attacks both ground and air targets.
unit.monsoon.name=Monsoon
unit.monsoon.description=A heavy carpet bomber. Uses blast compound or pyratite as ammo.
unit.interceptor.name=Interceptor
unit.interceptor.description=A fast, hit-and-run strike unit. Uses lead as ammo.
mode.sandbox.warning=Note that blocks cannot be used in sandbox mode until they are unlocked in other modes.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
block.thermal-pump.name=Thermal Pump
block.dagger-pad.name=Dagger Pad
block.titan-pad.name=Titan Pad
block.thermal-generator.name=Thermal Generator

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

View File

@@ -1,5 +1,5 @@
{ {
com.badlogic.gdx.graphics.g2d.BitmapFont: { Font: {
default-font: { default-font: {
file: square.fnt, file: square.fnt,
markupEnabled: true, markupEnabled: true,
@@ -26,22 +26,16 @@ com.badlogic.gdx.graphics.g2d.BitmapFont: {
scale: 2 scale: 2
} }
}, },
com.badlogic.gdx.graphics.Color: { Color: {
black: {a: 1, b: 0, g: 0, r: 0 }, black: {a: 1, b: 0, g: 0, r: 0 },
white: {a: 1, b: 1, g: 1, r: 1 }, white: {a: 1, b: 1, g: 1, r: 1 },
green: {a: 1, b: 0, g: 1, r: 0 }, gray: {a: 1, b: 0.32, g: 0.32, r: 0.32 },
red: {a: 1, b: 0, g: 0, r: 1 }, lightgray: {a: 1, b: 0.65, g: 0.65, r: 0.65 }
blue: {a: 1, b: 1, g: 0, r: 0 }, orange: {hex: "FFA500"},
grey: {a: 1, b: 0.32, g: 0.32, r: 0.32 },
lightgray: {a: 1, b: 0.3, g: 0.3, r: 0.3 },
orange: {hex: "#FFA500"},
accent: {hex: "f4ba6e"}, accent: {hex: "f4ba6e"},
vis-blue: {a: 1, b: 0.886, g: 0.631, r: 0.105 }, accentDark: {hex: "f4ba6e"},
vis-red: {a: 1, b: 0.047, g: 0, r: 0.862 },
menuitem: {a: 1, b: 0.65, g: 0.65, r: 0.65 },
link-label: {a: 1, b: 0.886, g: 0.631, r: 0.105 }
}, },
io.anuke.ucore.scene.Skin$TintedDrawable: { TintedDrawable: {
dialogDim: {name: white, color: {r: 0, g: 0, b: 0, a: 0.9} }, dialogDim: {name: white, color: {r: 0, g: 0, b: 0, a: 0.9} },
invis: {name: white, color: {r: 0, g: 0, b: 0, a: 0} } invis: {name: white, color: {r: 0, g: 0, b: 0, a: 0} }
loadDim: {name: white, color: {r: 0, g: 0, b: 0, a: 0.8} }, loadDim: {name: white, color: {r: 0, g: 0, b: 0, a: 0.8} },
@@ -50,61 +44,58 @@ io.anuke.ucore.scene.Skin$TintedDrawable: {
clear-over: {name: white, color: {r: 1, g: 1, b: 1, a: 0.2} }, clear-over: {name: white, color: {r: 1, g: 1, b: 1, a: 0.2} },
clear-down: {name: white, color: {r: 1, g: 1, b: 1, a: 0.4} } clear-down: {name: white, color: {r: 1, g: 1, b: 1, a: 0.4} }
}, },
io.anuke.ucore.scene.ui.Button$ButtonStyle: { ButtonStyle: {
default: {down: button-down, up: button }, default: {down: button-down, up: button },
menu: {up: text-sides, over: text-sides-over, down: text-sides-down}, menu: {up: text-sides, over: text-sides-over, down: text-sides-down},
toggle: {checked: button-down, down: button-down, up: button } toggle: {checked: button-down, down: button-down, up: button }
}, },
io.anuke.ucore.scene.ui.TextButton$TextButtonStyle: { TextButtonStyle: {
default: {over: button-over, disabled: button, font: default-font, fontColor: white, disabledFontColor: grey, down: button-down, up: button, transition: 0 }, default: {over: button-over, disabled: button, font: default-font, fontColor: white, disabledFontColor: gray, down: button-down, up: button, transition: 0 },
discord: {over: discord-banner-over, font: default-font, fontColor: white, up: discord-banner}, discord: {over: discord-banner-over, font: default-font, fontColor: white, up: discord-banner},
info: {font: default-font, fontColor: white, up: info-banner}, info: {font: default-font, fontColor: white, up: info-banner},
clear: {down: clear-down, up: clear, over: clear-over, font: default-font, fontColor: white, disabledFontColor: grey }, clear: {down: clear-down, up: clear, over: clear-over, font: default-font, fontColor: white, disabledFontColor: gray },
empty: {font: default-font}, empty: {font: default-font},
toggle: {font: default-font, fontColor: white, checked: button-down, down: button-down, up: button, over: button-over, disabled: button, disabledFontColor: grey } toggle: {font: default-font, fontColor: white, checked: button-down, down: button-down, up: button, over: button-over, disabled: button, disabledFontColor: gray }
}, },
io.anuke.ucore.scene.ui.ImageButton$ImageButtonStyle: { ImageButtonStyle: {
default: {down: button-down, up: button, over: button-over, imageDisabledColor: lightgray, imageUpColor: white }, default: {down: button-down, up: button, over: button-over, imageDisabledColor: gray, imageUpColor: white },
empty: { imageDownColor: accent, imageUpColor: white}, empty: { imageDownColor: accent, imageUpColor: white},
emptytoggle: {imageCheckedColor: white, imageDownColor: white, imageUpColor: lightgray}, emptytoggle: {imageCheckedColor: white, imageDownColor: white, imageUpColor: gray},
static: {up: button }, static: {up: button },
static-down: {up: button-down }, static-down: {up: button-down },
toggle: {checked: button-down, down: button-down, up: button, imageDisabledColor: lightgray, imageUpColor: white }, toggle: {checked: button-down, down: button-down, up: button, imageDisabledColor: gray, imageUpColor: white },
togglemap: {down: button-map-down, up: button-map },
select: {checked: button-select, up: clear }, select: {checked: button-select, up: clear },
clear: {down: clear-down, up: clear, over: clear-over}, clear: {down: clear-down, up: clear, over: clear-over},
}, },
io.anuke.ucore.scene.ui.ScrollPane$ScrollPaneStyle: { ScrollPaneStyle: {
default: {background: border, vScroll: scroll, vScrollKnob: scroll-knob-vertical-black}, default: {background: border, vScroll: scroll, vScrollKnob: scroll-knob-vertical-black},
horizontal: {background: border, vScroll: scroll, vScrollKnob: scroll-knob-vertical, hScroll: scroll-horizontal, hScrollKnob: scroll-knob-horizontal}, horizontal: {background: border, vScroll: scroll, vScrollKnob: scroll-knob-vertical, hScroll: scroll-horizontal, hScrollKnob: scroll-knob-horizontal},
volume: {background: button-map, vScroll: scroll, vScrollKnob: scroll-knob-vertical-black}, volume: {background: button-map, vScroll: scroll, vScrollKnob: scroll-knob-vertical-black},
clear: {vScroll: scroll, vScrollKnob: scroll-knob-vertical-black}, clear: {vScroll: scroll, vScrollKnob: scroll-knob-vertical-black},
clear-black: {vScroll: scroll, vScrollKnob: scroll-knob-vertical-black} clear-black: {vScroll: scroll, vScrollKnob: scroll-knob-vertical-black}
}, },
io.anuke.ucore.scene.ui.Window$WindowStyle: { WindowStyle: {
default: {titleFont: default-font, background: window, titleFontColor: accent }, default: {titleFont: default-font, background: window, titleFontColor: accent },
dialog: {stageBackground: dialogDim, titleFont: default-font, background: window-empty, titleFontColor: accent } dialog: {stageBackground: dialogDim, titleFont: default-font, background: window-empty, titleFontColor: accent }
}, },
io.anuke.ucore.scene.ui.KeybindDialog$KeybindDialogStyle: { KeybindDialogStyle: {
default: {keyColor: accent, keyNameColor: white, controllerColor: menuitem, paneStyle: clear}, default: {keyColor: accent, keyNameColor: white, controllerColor: lightgray, paneStyle: clear},
}, },
io.anuke.ucore.scene.ui.Slider$SliderStyle: { SliderStyle: {
default-horizontal: {background: slider, knob: slider-knob, knobOver: slider-knob-over, knobDown: slider-knob-down}, default-horizontal: {background: slider, knob: slider-knob, knobOver: slider-knob-over, knobDown: slider-knob-down},
default-vertical: {background: slider-vertical, knob: slider-knob, knobOver: slider-knob-over, knobDown: slider-knob-down} default-vertical: {background: slider-vertical, knob: slider-knob, knobOver: slider-knob-over, knobDown: slider-knob-down}
}, },
io.anuke.ucore.scene.ui.Label$LabelStyle: { LabelStyle: {
default: {font: default-font, fontColor: white }, default: {font: default-font, fontColor: white },
title: {font: title, fontColor: white }, title: {font: title, fontColor: white },
link-label: {fontColor: link-label, font: default-font }, small: {font: default-font, fontColor: white }
small: {font: default-font, fontColor: white },
menuitem-shortcut: {font: default-font, fontColor: menuitem }
}, },
io.anuke.ucore.scene.ui.TextField$TextFieldStyle: { TextFieldStyle: {
default: {font: default-font-chat, fontColor: white, disabledFontColor: grey, selection: selection, background: button, cursor: cursor, messageFont: default-font, messageFontColor: grey } default: {font: default-font-chat, fontColor: white, disabledFontColor: gray, selection: selection, background: button, cursor: cursor, messageFont: default-font, messageFontColor: gray }
textarea: {font: default-font-chat, fontColor: white, disabledFontColor: grey, selection: selection, background: textarea, cursor: cursor, messageFont: default-font, messageFontColor: grey } textarea: {font: default-font-chat, fontColor: white, disabledFontColor: gray, selection: selection, background: textarea, cursor: cursor, messageFont: default-font, messageFontColor: gray }
} }
io.anuke.ucore.scene.ui.CheckBox$CheckBoxStyle: { CheckBoxStyle: {
default: {checkboxOn: check-on, checkboxOff: check-off, checkboxOnOver: check-on-over, checkboxOver: check-over, font: default-font, fontColor: white, disabledFontColor: grey } default: {checkboxOn: check-on, checkboxOff: check-off, checkboxOnOver: check-on-over, checkboxOver: check-over, font: default-font, fontColor: white, disabledFontColor: gray }
} }
} }

View File

@@ -19,4 +19,6 @@
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.meta.BlockBar"/> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.meta.BlockBar"/>
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.maps.generation.WorldGenerator"/> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.maps.generation.WorldGenerator"/>
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.StatusController"/> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.StatusController"/>
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.maps.Sector"/>
<extend-configuration-property name="gdx.reflect.include" value="com.badlogic.gdx.utils.Predicate"/>
</module> </module>

View File

@@ -29,14 +29,18 @@ public class Mindustry extends ModuleCore{
module(ui = new UI()); module(ui = new UI());
module(netServer = new NetServer()); module(netServer = new NetServer());
module(netClient = new NetClient()); module(netClient = new NetClient());
}
@Override
public void postInit(){
Log.info("Time to load [total]: {0}", Timers.elapsed()); Log.info("Time to load [total]: {0}", Timers.elapsed());
} }
@Override @Override
public void render(){ public void render(){
threads.handleBeginRender();
super.render(); super.render();
threads.handleRender(); threads.handleEndRender();
} }
} }

View File

@@ -32,8 +32,6 @@ public class Vars{
public static final float respawnduration = 60 * 4; public static final float respawnduration = 60 * 4;
//time between waves in frames (on normal mode) //time between waves in frames (on normal mode)
public static final float wavespace = 60 * 60 * 2f; public static final float wavespace = 60 * 60 * 2f;
//waves can last no longer than 3 minutes, otherwise the next one spawns
public static final float maxwavespace = 60 * 60 * 4f;
//set ridiculously high for now //set ridiculously high for now
public static final float coreBuildRange = 800999f; public static final float coreBuildRange = 800999f;
//discord group URL //discord group URL
@@ -41,11 +39,9 @@ public class Vars{
public static final String releasesURL = "https://api.github.com/repos/Anuken/Mindustry/releases"; public static final String releasesURL = "https://api.github.com/repos/Anuken/Mindustry/releases";
public static final int maxTextLength = 150; public static final int maxTextLength = 150;
public static final int maxNameLength = 40; public static final int maxNameLength = 40;
//public static final int maxCharNameLength = 20;
// public static final int saveSlots = 64;
public static final float itemSize = 5f; public static final float itemSize = 5f;
public static final int tilesize = 8; public static final int tilesize = 8;
public static final int sectorSize = 256; public static final int sectorSize = 300;
public static final int mapPadding = 3; public static final int mapPadding = 3;
public static final int invalidSector = Integer.MAX_VALUE; public static final int invalidSector = Integer.MAX_VALUE;
public static Locale[] locales; public static Locale[] locales;
@@ -69,7 +65,6 @@ public class Vars{
}; };
//server port //server port
public static final int port = 6567; public static final int port = 6567;
public static final int webPort = 6568;
public static boolean testMobile; public static boolean testMobile;
//shorthand for whether or not this is running on android or ios //shorthand for whether or not this is running on android or ios
public static boolean mobile; public static boolean mobile;
@@ -143,8 +138,6 @@ public class Vars{
String code = stra[i]; String code = stra[i];
if(code.contains("_")){ if(code.contains("_")){
locales[i] = new Locale(code.split("_")[0], code.split("_")[1]); locales[i] = new Locale(code.split("_")[0], code.split("_")[1]);
}else if(code.contains("-")){
locales[i] = new Locale(code.split("-")[0], code.split("-")[1]);
}else{ }else{
locales[i] = new Locale(code); locales[i] = new Locale(code);
} }

View File

@@ -89,7 +89,7 @@ public class Pathfinder{
} }
private boolean passable(Tile tile, Team team){ private boolean passable(Tile tile, Team team){
return (tile.block() == Blocks.air && !tile.floor().isLiquid && tile.cliffs == 0 && !tile.floor().solid && !(tile.floor().isLiquid && (tile.floor().damageTaken > 0 || tile.floor().drownTime > 0))) return (tile.block() == Blocks.air && !tile.floor().isLiquid && !tile.hasCliffs() && !tile.floor().solid && !(tile.floor().isLiquid && (tile.floor().damageTaken > 0 || tile.floor().drownTime > 0)))
|| (tile.breakable() && (tile.getTeam() != team)) || !tile.solid(); || (tile.breakable() && (tile.getTeam() != team)) || !tile.solid();
} }

View File

@@ -71,9 +71,16 @@ public class Items implements ContentList{
cost = 1.5f; cost = 1.5f;
}}; }};
surgealloy = new Item("surge-alloy", Color.valueOf("b4d5c7")){{ surgealloy = new Item("surge-alloy", Color.valueOf("b4d5c7")){
type = ItemType.material; {
}}; type = ItemType.material;
}
@Override
public boolean isHidden(){
return true;
}
};
biomatter = new Item("biomatter", Color.valueOf("648b55")){{ biomatter = new Item("biomatter", Color.valueOf("648b55")){{
flammability = 0.4f; flammability = 0.4f;

View File

@@ -24,11 +24,12 @@ public class Mechs implements ContentList{
speed = 0.5f; speed = 0.5f;
weapon = Weapons.blaster; weapon = Weapons.blaster;
trailColor = Palette.lightTrail; trailColor = Palette.lightTrail;
maxSpeed = 4f;
}}; }};
delta = new Mech("delta-mech", false){{ delta = new Mech("delta-mech", false){{
drillPower = -1; drillPower = -1;
speed = 0.63f; speed = 0.75f;
boostSpeed = 0.86f; boostSpeed = 0.86f;
itemCapacity = 15; itemCapacity = 15;
armor = 30f; armor = 30f;
@@ -37,16 +38,19 @@ public class Mechs implements ContentList{
weapon = Weapons.shockgun; weapon = Weapons.shockgun;
ammoCapacity = 50; ammoCapacity = 50;
trailColor = Color.valueOf("d3ddff"); trailColor = Color.valueOf("d3ddff");
maxSpeed = 5f;
}}; }};
tau = new Mech("tau-mech", false){{ tau = new Mech("tau-mech", false){{
drillPower = 2; drillPower = 2;
speed = 0.5f; speed = 0.5f;
maxSpeed = 5f;
}}; }};
omega = new Mech("omega-mech", false){{ omega = new Mech("omega-mech", false){{
drillPower = 1; drillPower = 1;
speed = 0.4f; speed = 0.4f;
maxSpeed = 3f;
}}; }};
dart = new Mech("dart-ship", true){{ dart = new Mech("dart-ship", true){{

View File

@@ -51,6 +51,7 @@ public class Recipes implements ContentList{
new Recipe(distribution, DistributionBlocks.sorter, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 4)); new Recipe(distribution, DistributionBlocks.sorter, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 4));
new Recipe(distribution, DistributionBlocks.overflowGate, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 8)); new Recipe(distribution, DistributionBlocks.overflowGate, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 8));
new Recipe(distribution, DistributionBlocks.bridgeConveyor, new ItemStack(Items.carbide, 8), new ItemStack(Items.tungsten, 8)); new Recipe(distribution, DistributionBlocks.bridgeConveyor, new ItemStack(Items.carbide, 8), new ItemStack(Items.tungsten, 8));
new Recipe(distribution, DistributionBlocks.massDriver, new ItemStack(Items.carbide, 400), new ItemStack(Items.silicon, 300), new ItemStack(Items.lead, 400), new ItemStack(Items.thorium, 250));
//CRAFTING //CRAFTING
@@ -74,7 +75,6 @@ public class Recipes implements ContentList{
new Recipe(crafting, CraftingBlocks.solidifier, new ItemStack(Items.carbide, 30), new ItemStack(Items.tungsten, 20)); new Recipe(crafting, CraftingBlocks.solidifier, new ItemStack(Items.carbide, 30), new ItemStack(Items.tungsten, 20));
new Recipe(crafting, CraftingBlocks.melter, new ItemStack(Items.tungsten, 60), new ItemStack(Items.lead, 70), new ItemStack(Items.carbide, 90)); new Recipe(crafting, CraftingBlocks.melter, new ItemStack(Items.tungsten, 60), new ItemStack(Items.lead, 70), new ItemStack(Items.carbide, 90));
new Recipe(crafting, CraftingBlocks.incinerator, new ItemStack(Items.carbide, 10), new ItemStack(Items.lead, 30)); new Recipe(crafting, CraftingBlocks.incinerator, new ItemStack(Items.carbide, 10), new ItemStack(Items.lead, 30));
//processing //processing
@@ -95,6 +95,7 @@ public class Recipes implements ContentList{
//generators - combustion //generators - combustion
new Recipe(power, PowerBlocks.combustionGenerator, new ItemStack(Items.tungsten, 50), new ItemStack(Items.lead, 30)); new Recipe(power, PowerBlocks.combustionGenerator, new ItemStack(Items.tungsten, 50), new ItemStack(Items.lead, 30));
new Recipe(power, PowerBlocks.turbineGenerator, new ItemStack(Items.tungsten, 70), new ItemStack(Items.carbide, 50), new ItemStack(Items.lead, 80), new ItemStack(Items.silicon, 60)); new Recipe(power, PowerBlocks.turbineGenerator, new ItemStack(Items.tungsten, 70), new ItemStack(Items.carbide, 50), new ItemStack(Items.lead, 80), new ItemStack(Items.silicon, 60));
new Recipe(power, PowerBlocks.thermalGenerator, new ItemStack(Items.tungsten, 80), new ItemStack(Items.carbide, 70), new ItemStack(Items.lead, 100), new ItemStack(Items.silicon, 70), new ItemStack(Items.thorium, 70));
//generators - solar //generators - solar
new Recipe(power, PowerBlocks.solarPanel, new ItemStack(Items.lead, 20), new ItemStack(Items.silicon, 30)); new Recipe(power, PowerBlocks.solarPanel, new ItemStack(Items.lead, 20), new ItemStack(Items.silicon, 30));
@@ -104,14 +105,14 @@ public class Recipes implements ContentList{
new Recipe(power, PowerBlocks.nuclearReactor, new ItemStack(Items.lead, 600), new ItemStack(Items.silicon, 400), new ItemStack(Items.carbide, 300), new ItemStack(Items.thorium, 300)); new Recipe(power, PowerBlocks.nuclearReactor, new ItemStack(Items.lead, 600), new ItemStack(Items.silicon, 400), new ItemStack(Items.carbide, 300), new ItemStack(Items.thorium, 300));
//new Recipe(distribution, StorageBlocks.core, new ItemStack(Items.carbide, 50)); //new Recipe(distribution, StorageBlocks.core, new ItemStack(Items.carbide, 50));
//new Recipe(distribution, StorageBlocks.unloader, new ItemStack(Items.carbide, 40), new ItemStack(Items.silicon, 50)); new Recipe(distribution, StorageBlocks.unloader, new ItemStack(Items.carbide, 40), new ItemStack(Items.silicon, 50));
new Recipe(distribution, StorageBlocks.unloader, new ItemStack(Items.carbide, 40), new ItemStack(Items.silicon, 70));
new Recipe(distribution, StorageBlocks.vault, new ItemStack(Items.carbide, 500), new ItemStack(Items.thorium, 350)); new Recipe(distribution, StorageBlocks.vault, new ItemStack(Items.carbide, 500), new ItemStack(Items.thorium, 350));
//DRILLS, PRODUCERS //DRILLS, PRODUCERS
new Recipe(production, ProductionBlocks.tungstenDrill, new ItemStack(Items.tungsten, 25)); new Recipe(production, ProductionBlocks.tungstenDrill, new ItemStack(Items.tungsten, 25));
new Recipe(production, ProductionBlocks.carbideDrill, new ItemStack(Items.tungsten, 50), new ItemStack(Items.carbide, 60)); new Recipe(production, ProductionBlocks.carbideDrill, new ItemStack(Items.tungsten, 50), new ItemStack(Items.carbide, 60));
new Recipe(production, ProductionBlocks.laserdrill, new ItemStack(Items.tungsten, 90), new ItemStack(Items.carbide, 110), new ItemStack(Items.silicon, 70), new ItemStack(Items.titanium, 80)); new Recipe(production, ProductionBlocks.laserdrill, new ItemStack(Items.tungsten, 90), new ItemStack(Items.carbide, 110), new ItemStack(Items.silicon, 70), new ItemStack(Items.titanium, 80));
new Recipe(production, ProductionBlocks.blastdrill, new ItemStack(Items.tungsten, 140), new ItemStack(Items.carbide, 180), new ItemStack(Items.silicon, 120), new ItemStack(Items.titanium, 130), new ItemStack(Items.thorium, 130));
new Recipe(production, ProductionBlocks.waterextractor, new ItemStack(Items.tungsten, 50), new ItemStack(Items.carbide, 50), new ItemStack(Items.lead, 40)); new Recipe(production, ProductionBlocks.waterextractor, new ItemStack(Items.tungsten, 50), new ItemStack(Items.carbide, 50), new ItemStack(Items.lead, 40));
new Recipe(production, ProductionBlocks.cultivator, new ItemStack(Items.tungsten, 20), new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 20)); new Recipe(production, ProductionBlocks.cultivator, new ItemStack(Items.tungsten, 20), new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 20));
@@ -120,7 +121,6 @@ public class Recipes implements ContentList{
//UNITS //UNITS
//bodies //bodies
new Recipe(units, UpgradeBlocks.dartFactory, new ItemStack(Items.lead, 150), new ItemStack(Items.silicon, 200), new ItemStack(Items.titanium, 240)) new Recipe(units, UpgradeBlocks.dartFactory, new ItemStack(Items.lead, 150), new ItemStack(Items.silicon, 200), new ItemStack(Items.titanium, 240))
.setDesktop(); //dart is desktop only, because it's the starter mobile ship .setDesktop(); //dart is desktop only, because it's the starter mobile ship
@@ -132,11 +132,18 @@ public class Recipes implements ContentList{
//new Recipe(units, UpgradeBlocks.deltaFactory, new ItemStack(Items.tungsten, 30), new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 30)); //new Recipe(units, UpgradeBlocks.deltaFactory, new ItemStack(Items.tungsten, 30), new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 30));
//actual unit related stuff //actual unit related stuff
new Recipe(units, UnitBlocks.droneFactory, new ItemStack(Items.tungsten, 50), new ItemStack(Items.lead, 90), new ItemStack(Items.silicon, 130)); new Recipe(units, UnitBlocks.dronePad, new ItemStack(Items.tungsten, 50), new ItemStack(Items.lead, 90), new ItemStack(Items.silicon, 130));
new Recipe(units, UnitBlocks.fabricatorFactory, new ItemStack(Items.carbide, 70), new ItemStack(Items.thorium, 100), new ItemStack(Items.lead, 150), new ItemStack(Items.silicon, 300)); new Recipe(units, UnitBlocks.fabricatorPad, new ItemStack(Items.carbide, 70), new ItemStack(Items.thorium, 60), new ItemStack(Items.lead, 130), new ItemStack(Items.silicon, 200));
new Recipe(units, UnitBlocks.daggerPad, new ItemStack(Items.lead, 80), new ItemStack(Items.silicon, 70));
new Recipe(units, UnitBlocks.titanPad, new ItemStack(Items.thorium, 90), new ItemStack(Items.lead, 140), new ItemStack(Items.silicon, 180));
new Recipe(units, UnitBlocks.interceptorPad, new ItemStack(Items.titanium, 40), new ItemStack(Items.lead, 80), new ItemStack(Items.silicon, 90));
new Recipe(units, UnitBlocks.monsoonPad, new ItemStack(Items.plastanium, 70), new ItemStack(Items.titanium, 100), new ItemStack(Items.lead, 130), new ItemStack(Items.silicon, 220));
new Recipe(units, UnitBlocks.repairPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.tungsten, 30), new ItemStack(Items.silicon, 30)); new Recipe(units, UnitBlocks.repairPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.tungsten, 30), new ItemStack(Items.silicon, 30));
new Recipe(units, UnitBlocks.resupplyPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.tungsten, 30), new ItemStack(Items.silicon, 30)); new Recipe(units, UnitBlocks.resupplyPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.tungsten, 30), new ItemStack(Items.silicon, 30));
new Recipe(units, UnitBlocks.commandCenter, new ItemStack(Items.lead, 100), new ItemStack(Items.carbide, 140), new ItemStack(Items.silicon, 250));
//LIQUIDS //LIQUIDS
new Recipe(liquid, LiquidBlocks.conduit, new ItemStack(Items.lead, 1)) new Recipe(liquid, LiquidBlocks.conduit, new ItemStack(Items.lead, 1))
@@ -144,7 +151,6 @@ public class Recipes implements ContentList{
new Recipe(liquid, LiquidBlocks.pulseConduit, new ItemStack(Items.titanium, 1), new ItemStack(Items.lead, 1)); new Recipe(liquid, LiquidBlocks.pulseConduit, new ItemStack(Items.titanium, 1), new ItemStack(Items.lead, 1));
new Recipe(liquid, LiquidBlocks.phaseConduit, new ItemStack(Items.phasematter, 10), new ItemStack(Items.silicon, 15), new ItemStack(Items.lead, 20), new ItemStack(Items.titanium, 20)); new Recipe(liquid, LiquidBlocks.phaseConduit, new ItemStack(Items.phasematter, 10), new ItemStack(Items.silicon, 15), new ItemStack(Items.lead, 20), new ItemStack(Items.titanium, 20));
new Recipe(liquid, LiquidBlocks.liquidRouter, new ItemStack(Items.carbide, 4), new ItemStack(Items.lead, 4)); new Recipe(liquid, LiquidBlocks.liquidRouter, new ItemStack(Items.carbide, 4), new ItemStack(Items.lead, 4));
new Recipe(liquid, LiquidBlocks.liquidtank, new ItemStack(Items.titanium, 50), new ItemStack(Items.lead, 50), new ItemStack(Items.carbide, 20)); new Recipe(liquid, LiquidBlocks.liquidtank, new ItemStack(Items.titanium, 50), new ItemStack(Items.lead, 50), new ItemStack(Items.carbide, 20));
new Recipe(liquid, LiquidBlocks.liquidJunction, new ItemStack(Items.carbide, 4), new ItemStack(Items.lead, 4)); new Recipe(liquid, LiquidBlocks.liquidJunction, new ItemStack(Items.carbide, 4), new ItemStack(Items.lead, 4));
@@ -153,6 +159,7 @@ public class Recipes implements ContentList{
new Recipe(liquid, LiquidBlocks.mechanicalPump, new ItemStack(Items.tungsten, 30), new ItemStack(Items.lead, 20)) new Recipe(liquid, LiquidBlocks.mechanicalPump, new ItemStack(Items.tungsten, 30), new ItemStack(Items.lead, 20))
.setDependencies(CraftingBlocks.smelter); .setDependencies(CraftingBlocks.smelter);
new Recipe(liquid, LiquidBlocks.rotaryPump, new ItemStack(Items.tungsten, 140), new ItemStack(Items.lead, 100), new ItemStack(Items.silicon, 40), new ItemStack(Items.titanium, 70)); new Recipe(liquid, LiquidBlocks.rotaryPump, new ItemStack(Items.tungsten, 140), new ItemStack(Items.lead, 100), new ItemStack(Items.silicon, 40), new ItemStack(Items.titanium, 70));
new Recipe(liquid, LiquidBlocks.thermalPump, new ItemStack(Items.tungsten, 160), new ItemStack(Items.lead, 130), new ItemStack(Items.silicon, 60), new ItemStack(Items.titanium, 80), new ItemStack(Items.thorium, 70));
//DEBUG //DEBUG
new Recipe(units, DebugBlocks.itemSource, new ItemStack(Items.carbide, 10)).setDebug(); new Recipe(units, DebugBlocks.itemSource, new ItemStack(Items.carbide, 10)).setDebug();
@@ -170,8 +177,6 @@ public class Recipes implements ContentList{
new Recipe(production, ProductionBlocks.oilextractor, new ItemStack(Items.titanium, 40), new ItemStack(Items.surgealloy, 40));*/ new Recipe(production, ProductionBlocks.oilextractor, new ItemStack(Items.titanium, 40), new ItemStack(Items.surgealloy, 40));*/
//new Recipe(distribution, DistributionBlocks.massDriver, new ItemStack(Items.carbide, 1));
/* /*
@@ -258,7 +263,7 @@ public class Recipes implements ContentList{
new Recipe(units, UnitBlocks.dropPoint, new ItemStack(Items.carbide, 10)); new Recipe(units, UnitBlocks.dropPoint, new ItemStack(Items.carbide, 10));
new Recipe(units, UnitBlocks.resupplyPoint, new ItemStack(Items.carbide, 10)); new Recipe(units, UnitBlocks.resupplyPoint, new ItemStack(Items.carbide, 10));
new Recipe(units, UnitBlocks.droneFactory, new ItemStack(Items.tungsten, 50)); new Recipe(units, UnitBlocks.dronePad, new ItemStack(Items.tungsten, 50));
new Recipe(units, UnitBlocks.reconstructor, new ItemStack(Items.tungsten, 1)); new Recipe(units, UnitBlocks.reconstructor, new ItemStack(Items.tungsten, 1));
new Recipe(units, UnitBlocks.overdriveProjector, new ItemStack(Items.tungsten, 1)); new Recipe(units, UnitBlocks.overdriveProjector, new ItemStack(Items.tungsten, 1));

View File

@@ -1,13 +1,14 @@
package io.anuke.mindustry.content; package io.anuke.mindustry.content;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.ObjectSet;
import io.anuke.mindustry.entities.units.UnitType; import io.anuke.mindustry.entities.units.UnitType;
import io.anuke.mindustry.entities.units.types.*; import io.anuke.mindustry.entities.units.types.*;
import io.anuke.mindustry.game.Content; import io.anuke.mindustry.game.Content;
import io.anuke.mindustry.type.ContentList; import io.anuke.mindustry.type.ContentList;
public class UnitTypes implements ContentList{ public class UnitTypes implements ContentList{
public static UnitType drone, scout, vtol, monsoon, titan, fabricator; public static UnitType drone, dagger, interceptor, monsoon, titan, fabricator;
@Override @Override
public void load(){ public void load(){
@@ -22,7 +23,7 @@ public class UnitTypes implements ContentList{
health = 45; health = 45;
}}; }};
scout = new UnitType("scout", Scout.class, Scout::new){{ dagger = new UnitType("dagger", Dagger.class, Dagger::new){{
maxVelocity = 1.1f; maxVelocity = 1.1f;
speed = 0.2f; speed = 0.2f;
drag = 0.4f; drag = 0.4f;
@@ -40,7 +41,7 @@ public class UnitTypes implements ContentList{
health = 260; health = 260;
}}; }};
vtol = new UnitType("vtol", Vtol.class, Vtol::new){{ interceptor = new UnitType("interceptor", Interceptor.class, Interceptor::new){{
speed = 0.3f; speed = 0.3f;
maxVelocity = 1.9f; maxVelocity = 1.9f;
drag = 0.01f; drag = 0.01f;
@@ -54,13 +55,14 @@ public class UnitTypes implements ContentList{
drag = 0.01f; drag = 0.01f;
isFlying = true; isFlying = true;
weapon = Weapons.bomber; weapon = Weapons.bomber;
ammoCapacity = 50;
}}; }};
fabricator = new UnitType("fabricator", Fabricator.class, Fabricator::new){{ fabricator = new UnitType("fabricator", Fabricator.class, Fabricator::new){{
isFlying = true; isFlying = true;
drag = 0.01f; drag = 0.01f;
speed = 0.2f; speed = 0.2f;
maxVelocity = 0.6f; maxVelocity = 0.9f;
ammoCapacity = 0; ammoCapacity = 0;
range = 70f; range = 70f;
itemCapacity = 70; itemCapacity = 70;
@@ -69,6 +71,7 @@ public class UnitTypes implements ContentList{
buildPower = 0.9f; buildPower = 0.9f;
minePower = 1.1f; minePower = 1.1f;
healSpeed = 0.09f; healSpeed = 0.09f;
toMine = ObjectSet.with(Items.lead, Items.tungsten, Items.titanium);
}}; }};
} }

View File

@@ -46,7 +46,7 @@ public class Weapons implements ContentList{
reload = 50f; reload = 50f;
roundrobin = true; roundrobin = true;
shots = 6; shots = 6;
inaccuracy = 15f; inaccuracy = 10f;
recoil = 2f; recoil = 2f;
velocityRnd = 0.7f; velocityRnd = 0.7f;
ejectEffect = ShootFx.shellEjectSmall; ejectEffect = ShootFx.shellEjectSmall;
@@ -93,7 +93,7 @@ public class Weapons implements ContentList{
bomber = new Weapon("bomber"){{ bomber = new Weapon("bomber"){{
length = 0f; length = 0f;
width = 2f; width = 2f;
reload = 5f; reload = 7f;
roundrobin = true; roundrobin = true;
ejectEffect = Fx.none; ejectEffect = Fx.none;
velocityRnd = 1f; velocityRnd = 1f;

View File

@@ -12,7 +12,7 @@ import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.blocks.*;
public class Blocks extends BlockList implements ContentList{ public class Blocks extends BlockList implements ContentList{
public static Block air, spawn, blockpart, space, metalfloor, deepwater, water, lava, oil, stone, blackstone, dirt, sand, ice, snow, grass, shrub, rock, icerock, blackrock; public static Block air, blockpart, space, metalfloor, deepwater, water, lava, oil, stone, blackstone, dirt, sand, ice, snow, grass, shrub, rock, icerock, blackrock;
@Override @Override
@@ -20,6 +20,7 @@ public class Blocks extends BlockList implements ContentList{
air = new Floor("air"){ air = new Floor("air"){
{ {
blend = false; blend = false;
alwaysReplace = true;
} }
//don't draw //don't draw

View File

@@ -6,8 +6,7 @@ import io.anuke.annotations.Annotations.Remote;
import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.content.Liquids;
import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.gen.CallBlocks; import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.net.In;
import io.anuke.mindustry.type.ContentList; import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.type.Liquid;
@@ -28,7 +27,7 @@ import java.io.IOException;
public class DebugBlocks extends BlockList implements ContentList{ public class DebugBlocks extends BlockList implements ContentList{
public static Block powerVoid, powerInfinite, itemSource, liquidSource, itemVoid; public static Block powerVoid, powerInfinite, itemSource, liquidSource, itemVoid;
@Remote(targets = Loc.both, called = Loc.both, in = In.blocks, forward = true) @Remote(targets = Loc.both, called = Loc.both, forward = true)
public static void setLiquidSourceLiquid(Player player, Tile tile, Liquid liquid){ public static void setLiquidSourceLiquid(Player player, Tile tile, Liquid liquid){
LiquidSourceEntity entity = tile.entity(); LiquidSourceEntity entity = tile.entity();
entity.source = liquid; entity.source = liquid;
@@ -114,7 +113,7 @@ public class DebugBlocks extends BlockList implements ContentList{
if(i == 0) continue; if(i == 0) continue;
final int f = i; final int f = i;
ImageButton button = cont.addImageButton("white", "toggle", 24, () -> { ImageButton button = cont.addImageButton("white", "toggle", 24, () -> {
CallBlocks.setLiquidSourceLiquid(null, tile, items.get(f)); Call.setLiquidSourceLiquid(null, tile, items.get(f));
}).size(38, 42).padBottom(-5.1f).group(group).get(); }).size(38, 42).padBottom(-5.1f).group(group).get();
button.getStyle().imageUpColor = items.get(i).color; button.getStyle().imageUpColor = items.get(i).color;
button.setChecked(entity.source.id == f); button.setChecked(entity.source.id == f);

View File

@@ -50,7 +50,7 @@ public class DistributionBlocks extends BlockList implements ContentList{
massDriver = new MassDriver("mass-driver"){{ massDriver = new MassDriver("mass-driver"){{
size = 3; size = 3;
itemCapacity = 80; itemCapacity = 80;
range = 300f; range = 340f;
}}; }};
} }
} }

View File

@@ -22,15 +22,19 @@ public class LiquidBlocks extends BlockList implements ContentList{
pumpAmount = 0.25f; pumpAmount = 0.25f;
consumes.power(0.015f); consumes.power(0.015f);
liquidCapacity = 30f; liquidCapacity = 30f;
powerCapacity = 20f;
hasPower = true; hasPower = true;
size = 2; size = 2;
tier = 1; tier = 1;
}}; }};
thermalPump = new Pump("thermal-pump"){{ thermalPump = new Pump("thermal-pump"){{
pumpAmount = 0.3f; shadow = "shadow-rounded-2";
consumes.power(0.05f); pumpAmount = 0.55f;
consumes.power(0.03f);
liquidCapacity = 40f; liquidCapacity = 40f;
hasPower = true;
powerCapacity = 20f;
size = 2; size = 2;
tier = 2; tier = 2;
}}; }};

View File

@@ -21,9 +21,8 @@ public class PowerBlocks extends BlockList implements ContentList{
thermalGenerator = new LiquidHeatGenerator("thermal-generator"){{ thermalGenerator = new LiquidHeatGenerator("thermal-generator"){{
maxLiquidGenerate = 0.5f; maxLiquidGenerate = 0.5f;
powerPerLiquid = 0.08f;
powerCapacity = 40f; powerCapacity = 40f;
powerPerLiquid = 0.25f; powerPerLiquid = 0.55f;
generateEffect = BlockFx.redgeneratespark; generateEffect = BlockFx.redgeneratespark;
size = 2; size = 2;
}}; }};
@@ -74,12 +73,13 @@ public class PowerBlocks extends BlockList implements ContentList{
powerNode = new PowerNode("power-node"){{ powerNode = new PowerNode("power-node"){{
shadow = "shadow-round-1"; shadow = "shadow-round-1";
maxNodes = 4;
}}; }};
powerNodeLarge = new PowerNode("power-node-large"){{ powerNodeLarge = new PowerNode("power-node-large"){{
size = 2; size = 2;
powerSpeed = 1f; powerSpeed = 1f;
maxNodes = 5; maxNodes = 6;
laserRange = 7.5f; laserRange = 7.5f;
shadow = "shadow-round-2"; shadow = "shadow-round-2";
}}; }};

View File

@@ -8,11 +8,13 @@ import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.units.*; import io.anuke.mindustry.world.blocks.units.*;
public class UnitBlocks extends BlockList implements ContentList{ public class UnitBlocks extends BlockList implements ContentList{
public static Block resupplyPoint, repairPoint, droneFactory, fabricatorFactory, dropPoint, reconstructor, overdriveProjector, shieldProjector; public static Block resupplyPoint, repairPoint, dronePad,
fabricatorPad, interceptorPad, monsoonPad, daggerPad, titanPad,
dropPoint, reconstructor, overdriveProjector, shieldProjector, commandCenter;
@Override @Override
public void load(){ public void load(){
droneFactory = new UnitFactory("drone-factory"){{ dronePad = new UnitPad("drone-pad"){{
type = UnitTypes.drone; type = UnitTypes.drone;
produceTime = 800; produceTime = 800;
size = 2; size = 2;
@@ -20,14 +22,48 @@ public class UnitBlocks extends BlockList implements ContentList{
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30)}); consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30)});
}}; }};
fabricatorFactory = new UnitFactory("fabricator-factory"){{ fabricatorPad = new UnitPad("fabricator-pad"){{
type = UnitTypes.fabricator; type = UnitTypes.fabricator;
produceTime = 1600; produceTime = 1400;
size = 2; size = 2;
consumes.power(0.2f); consumes.power(0.2f);
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80)}); consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80)});
}}; }};
interceptorPad = new UnitPad("interceptor-pad"){{
type = UnitTypes.interceptor;
produceTime = 900;
size = 2;
consumes.power(0.08f);
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 20), new ItemStack(Items.titanium, 10)});
}};
monsoonPad = new UnitPad("monsoon-pad"){{
type = UnitTypes.monsoon;
produceTime = 1500;
size = 3;
consumes.power(0.14f);
shadow = "shadow-round-3";
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.titanium, 30), new ItemStack(Items.plastanium, 20)});
}};
daggerPad = new UnitPad("dagger-pad"){{
type = UnitTypes.dagger;
produceTime = 500;
size = 2;
consumes.power(0.06f);
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 10), new ItemStack(Items.tungsten, 20)});
}};
titanPad = new UnitPad("titan-pad"){{
type = UnitTypes.titan;
produceTime = 1300;
size = 3;
consumes.power(0.15f);
shadow = "shadow-round-3";
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 20), new ItemStack(Items.tungsten, 30), new ItemStack(Items.thorium, 30)});
}};
resupplyPoint = new ResupplyPoint("resupply-point"){{ resupplyPoint = new ResupplyPoint("resupply-point"){{
shadow = "shadow-round-1"; shadow = "shadow-round-1";
itemCapacity = 30; itemCapacity = 30;
@@ -51,7 +87,11 @@ public class UnitBlocks extends BlockList implements ContentList{
size = 2; size = 2;
}}; }};
shieldProjector = new ShieldProjector("shieldprojector"){{ shieldProjector = new ShieldProjector("shield-projector"){{
size = 2;
}};
commandCenter = new CommandCenter("command-center"){{
size = 2; size = 2;
}}; }};
} }

View File

@@ -76,12 +76,12 @@ public class TurretBullets extends BulletList implements ContentList{
} }
}; };
basicFlame = new BulletType(2f, 5){ basicFlame = new BulletType(2.3f, 5){
{ {
hitsize = 7f; hitsize = 7f;
lifetime = 30f; lifetime = 35f;
pierce = true; pierce = true;
drag = 0.07f; drag = 0.05f;
hiteffect = BulletFx.hitFlameSmall; hiteffect = BulletFx.hitFlameSmall;
despawneffect = Fx.none; despawneffect = Fx.none;
status = StatusEffects.burning; status = StatusEffects.burning;
@@ -179,7 +179,7 @@ public class TurretBullets extends BulletList implements ContentList{
} }
}; };
driverBolt = new BulletType(5f, 20){ driverBolt = new BulletType(5f, 50){
{ {
collidesTiles = false; collidesTiles = false;
lifetime = 200f; lifetime = 200f;
@@ -190,11 +190,14 @@ public class TurretBullets extends BulletList implements ContentList{
@Override @Override
public void draw(Bullet b){ public void draw(Bullet b){
Draw.color(Color.LIGHT_GRAY); float w = 11f, h = 13f;
Fill.square(b.x, b.y, 3f, b.angle());
Draw.color(Palette.bulletYellowBack);
Draw.rect("shell-back", b.x, b.y, w, h, b.angle() + 90);
Draw.color(Palette.bulletYellow);
Draw.rect("shell", b.x, b.y, w, h, b.angle() + 90);
Draw.color(Palette.lighterOrange);
Fill.square(b.x, b.y, 2f, b.angle());
Draw.reset(); Draw.reset();
} }

View File

@@ -25,13 +25,13 @@ public class WeaponBullets extends BulletList{
{ {
bulletWidth = 8f; bulletWidth = 8f;
bulletHeight = 9f; bulletHeight = 9f;
bulletShrink = 0.6f; bulletShrink = 0.5f;
lifetime = 30f; lifetime = 50f;
drag = 0.04f; drag = 0.04f;
} }
}; };
bombExplosive = new BombBulletType(20f, 20f, "shell"){ bombExplosive = new BombBulletType(10f, 20f, "shell"){
{ {
bulletWidth = 9f; bulletWidth = 9f;
bulletHeight = 13f; bulletHeight = 13f;
@@ -39,7 +39,7 @@ public class WeaponBullets extends BulletList{
} }
}; };
bombIncendiary = new BombBulletType(15f, 10f, "shell"){ bombIncendiary = new BombBulletType(7f, 10f, "shell"){
{ {
bulletWidth = 8f; bulletWidth = 8f;
bulletHeight = 12f; bulletHeight = 12f;
@@ -63,7 +63,7 @@ public class WeaponBullets extends BulletList{
} }
}; };
bombOil = new BombBulletType(3f, 3f, "shell"){ bombOil = new BombBulletType(2f, 3f, "shell"){
{ {
bulletWidth = 8f; bulletWidth = 8f;
bulletHeight = 12f; bulletHeight = 12f;

View File

@@ -16,7 +16,10 @@ import io.anuke.ucore.util.Tmp;
import static io.anuke.mindustry.Vars.tilesize; import static io.anuke.mindustry.Vars.tilesize;
public class BlockFx extends FxList implements ContentList{ public class BlockFx extends FxList implements ContentList{
public static Effect reactorsmoke, nuclearsmoke, nuclearcloud, redgeneratespark, generatespark, fuelburn, plasticburn, pulverize, pulverizeRed, pulverizeRedder, pulverizeSmall, pulverizeMedium, producesmoke, smeltsmoke, formsmoke, blastsmoke, lava, dooropen, doorclose, dooropenlarge, doorcloselarge, purify, purifyoil, purifystone, generate, mine, mineBig, mineHuge, smelt, teleportActivate, teleport, teleportOut, ripple, bubble; public static Effect reactorsmoke, nuclearsmoke, nuclearcloud, redgeneratespark, generatespark, fuelburn, plasticburn,
pulverize, pulverizeRed, pulverizeRedder, pulverizeSmall, pulverizeMedium, producesmoke, smeltsmoke, formsmoke, blastsmoke,
lava, dooropen, doorclose, dooropenlarge, doorcloselarge, purify, purifyoil, purifystone, generate, mine, mineBig, mineHuge,
smelt, teleportActivate, teleport, teleportOut, ripple, bubble, commandSend;
@Override @Override
public void load(){ public void load(){
@@ -274,5 +277,12 @@ public class BlockFx extends FxList implements ContentList{
}); });
Draw.reset(); Draw.reset();
}); });
commandSend = new Effect(28, e -> {
Draw.color(Palette.command);
Lines.stroke(e.fout() * 2f);
Lines.poly(e.x, e.y, 40, 4f + e.finpow() * 120f);
Draw.color();
});
} }
} }

View File

@@ -75,7 +75,7 @@ public class ShootFx extends FxList implements ContentList{
shootSmallFlame = new Effect(30f, e -> { shootSmallFlame = new Effect(30f, e -> {
Draw.color(Palette.lightFlame, Palette.darkFlame, Color.GRAY, e.fin()); Draw.color(Palette.lightFlame, Palette.darkFlame, Color.GRAY, e.fin());
Angles.randLenVectors(e.id, 8, e.finpow() * 26f, e.rotation, 10f, (x, y) -> { Angles.randLenVectors(e.id, 8, e.finpow() * 36f, e.rotation, 10f, (x, y) -> {
Fill.circle(e.x + x, e.y + y, 0.65f + e.fout() * 1.5f); Fill.circle(e.x + x, e.y + y, 0.65f + e.fout() * 1.5f);
}); });

View File

@@ -35,65 +35,65 @@ public class ContentLoader{
private static OrderedMap<String, Array<Content>> contentMap = new OrderedMap<>(); private static OrderedMap<String, Array<Content>> contentMap = new OrderedMap<>();
private static ObjectSet<Consumer<Content>> initialization = new ObjectSet<>(); private static ObjectSet<Consumer<Content>> initialization = new ObjectSet<>();
private static ContentList[] content = { private static ContentList[] content = {
//effects //effects
new BlockFx(), new BlockFx(),
new BulletFx(), new BulletFx(),
new EnvironmentFx(), new EnvironmentFx(),
new ExplosionFx(), new ExplosionFx(),
new Fx(), new Fx(),
new ShootFx(), new ShootFx(),
new UnitFx(), new UnitFx(),
//items //items
new Items(), new Items(),
//status effects //status effects
new StatusEffects(), new StatusEffects(),
//liquids //liquids
new Liquids(), new Liquids(),
//bullets //bullets
new ArtilleryBullets(), new ArtilleryBullets(),
new FlakBullets(), new FlakBullets(),
new MissileBullets(), new MissileBullets(),
new StandardBullets(), new StandardBullets(),
new TurretBullets(), new TurretBullets(),
new WeaponBullets(), new WeaponBullets(),
//ammotypes //ammotypes
new AmmoTypes(), new AmmoTypes(),
//weapons //weapons
new Weapons(), new Weapons(),
//mechs //mechs
new Mechs(), new Mechs(),
//units //units
new UnitTypes(), new UnitTypes(),
//blocks //blocks
new Blocks(), new Blocks(),
new DefenseBlocks(), new DefenseBlocks(),
new DistributionBlocks(), new DistributionBlocks(),
new ProductionBlocks(), new ProductionBlocks(),
new TurretBlocks(), new TurretBlocks(),
new DebugBlocks(), new DebugBlocks(),
new LiquidBlocks(), new LiquidBlocks(),
new StorageBlocks(), new StorageBlocks(),
new UnitBlocks(), new UnitBlocks(),
new PowerBlocks(), new PowerBlocks(),
new CraftingBlocks(), new CraftingBlocks(),
new UpgradeBlocks(), new UpgradeBlocks(),
new OreBlocks(), new OreBlocks(),
//not really a content class, but this makes initialization easier //not really a content class, but this makes initialization easier
new ColorMapper(), new ColorMapper(),
//recipes //recipes
new Recipes(), new Recipes(),
}; };
/** /**

View File

@@ -13,6 +13,7 @@ import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.game.Content; import io.anuke.mindustry.game.Content;
import io.anuke.mindustry.game.ContentDatabase; import io.anuke.mindustry.game.ContentDatabase;
import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.EventType.*;
import io.anuke.mindustry.game.GameMode;
import io.anuke.mindustry.game.Saves; import io.anuke.mindustry.game.Saves;
import io.anuke.mindustry.input.DefaultKeybinds; import io.anuke.mindustry.input.DefaultKeybinds;
import io.anuke.mindustry.input.DesktopInput; import io.anuke.mindustry.input.DesktopInput;
@@ -48,7 +49,6 @@ public class Control extends Module{
private ObjectMap<Sound, Long> soundMap = new ObjectMap<>(); private ObjectMap<Sound, Long> soundMap = new ObjectMap<>();
private Throwable error; private Throwable error;
//private Input gdxInput;
public Control(){ public Control(){
@@ -68,8 +68,6 @@ public class Control extends Module{
db.load(); db.load();
//gdxInput = Gdx.input;
Sounds.setFalloff(9000f); Sounds.setFalloff(9000f);
Sounds.setPlayer((sound, volume) -> { Sounds.setPlayer((sound, volume) -> {
long time = TimeUtils.millis(); long time = TimeUtils.millis();
@@ -84,14 +82,14 @@ public class Control extends Module{
DefaultKeybinds.load(); DefaultKeybinds.load();
Settings.defaultList( Settings.defaultList(
"ip", "localhost", "ip", "localhost",
"port", port + "", "port", port + "",
"color-0", Color.rgba8888(playerColors[8]), "color-0", Color.rgba8888(playerColors[8]),
"color-1", Color.rgba8888(playerColors[11]), "color-1", Color.rgba8888(playerColors[11]),
"color-2", Color.rgba8888(playerColors[13]), "color-2", Color.rgba8888(playerColors[13]),
"color-3", Color.rgba8888(playerColors[9]), "color-3", Color.rgba8888(playerColors[9]),
"name", "player", "name", "player",
"lastBuild", 0 "lastBuild", 0
); );
KeyBinds.load(); KeyBinds.load();
@@ -112,6 +110,12 @@ public class Control extends Module{
} }
state.set(State.playing); state.set(State.playing);
if(state.mode == GameMode.sandbox && !Settings.getBool("sandbox-warning", false)){
threads.runGraphics(() -> ui.showInfo("$mode.sandbox.warning"));
Settings.putBool("sandbox-warning", true);
Settings.save();
}
}); });
Events.on(WorldLoadGraphicsEvent.class, () -> { Events.on(WorldLoadGraphicsEvent.class, () -> {
@@ -144,12 +148,16 @@ public class Control extends Module{
}); });
Events.on(GameOverEvent.class, () -> { Events.on(GameOverEvent.class, () -> {
Effects.shake(5, 6, Core.camera.position.x, Core.camera.position.y); //delete saves for game-over sectors
if(world.getSector() != null && world.getSector().hasSave()){
world.getSector().getSave().delete();
}
//TODO game over effect threads.runGraphics(() -> {
ui.restart.show(); Effects.shake(5, 6, Core.camera.position.x, Core.camera.position.y);
ui.restart.show();
Timers.runTask(30f, () -> state.set(State.menu)); state.set(State.menu);
});
}); });
Events.on(WorldLoadEvent.class, () -> threads.runGraphics(() -> Events.fire(WorldLoadGraphicsEvent.class))); Events.on(WorldLoadEvent.class, () -> threads.runGraphics(() -> Events.fire(WorldLoadGraphicsEvent.class)));
@@ -362,11 +370,16 @@ public class Control extends Module{
} }
//check unlocked sectors //check unlocked sectors
if(world.getSector() != null && world.getSector().goal.isComplete() && !world.getSector().complete){ if(world.getSector() != null && !world.getSector().complete){
world.sectors().completeSector(world.getSector().x, world.getSector().y); //all assigned missions are complete
world.sectors().save(); if(world.getSector().completedMissions >= world.getSector().missions.size){
if(!headless){
ui.showInfoFade("$text.sector.unlocked"); world.sectors().completeSector(world.getSector().x, world.getSector().y);
world.sectors().save();
ui.missions.show(world.getSector());
}else if(world.getSector().currentMission().isComplete()){
//increment completed missions, check next index next frame
world.getSector().completedMissions ++;
} }
} }
@@ -374,7 +387,7 @@ public class Control extends Module{
if(!state.mode.infiniteResources && Timers.get("timerCheckUnlock", 120)){ if(!state.mode.infiniteResources && Timers.get("timerCheckUnlock", 120)){
checkUnlockableBlocks(); checkUnlockableBlocks();
//save if the db changed, but don't save unlocks //save if the db changed, but don't save in debug
if(db.isDirty() && !debug){ if(db.isDirty() && !debug){
db.save(); db.save();
} }

View File

@@ -49,9 +49,7 @@ public class Logic extends Module{
state.set(State.playing); state.set(State.playing);
state.wavetime = wavespace * state.difficulty.timeScaling * 2; state.wavetime = wavespace * state.difficulty.timeScaling * 2;
//fill inventory with items for debugging for(TeamData team : state.teams.getTeams(true)){
for(TeamData team : state.teams.getTeams()){
for(Tile tile : team.cores){ for(Tile tile : team.cores){
if(debug){ if(debug){
for(Item item : Item.all()){ for(Item item : Item.all()){
@@ -59,13 +57,20 @@ public class Logic extends Module{
tile.entity.items.set(item, 1000); tile.entity.items.set(item, 1000);
} }
} }
}else{ }else if(!state.mode.infiniteResources){
tile.entity.items.add(Items.tungsten, 50); tile.entity.items.add(Items.tungsten, 50);
tile.entity.items.add(Items.lead, 20); tile.entity.items.add(Items.lead, 20);
} }
} }
} }
for(TeamData team : state.teams.getTeams(false)){
for(Tile tile : team.cores){
tile.entity.items.add(Items.tungsten, 2000);
tile.entity.items.add(Items.blastCompound, 2000);
}
}
Events.fire(PlayEvent.class); Events.fire(PlayEvent.class);
} }
@@ -131,11 +136,11 @@ public class Logic extends Module{
if(!state.is(State.paused) || Net.active()){ if(!state.is(State.paused) || Net.active()){
if(!state.mode.disableWaveTimer){ if(!state.mode.disableWaveTimer && !state.mode.disableWaves){
state.wavetime -= Timers.delta(); state.wavetime -= Timers.delta();
} }
if(!Net.client() && state.wavetime <= 0){ if(!Net.client() && state.wavetime <= 0 && !state.mode.disableWaves){
runWave(); runWave();
} }

View File

@@ -12,9 +12,9 @@ import io.anuke.mindustry.content.Mechs;
import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.traits.SyncTrait; import io.anuke.mindustry.entities.traits.SyncTrait;
import io.anuke.mindustry.game.Version;
import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.gen.RemoteReadServer; import io.anuke.mindustry.gen.RemoteReadServer;
import io.anuke.mindustry.game.Version;
import io.anuke.mindustry.net.*; import io.anuke.mindustry.net.*;
import io.anuke.mindustry.net.Administration.PlayerInfo; import io.anuke.mindustry.net.Administration.PlayerInfo;
import io.anuke.mindustry.net.Packets.*; import io.anuke.mindustry.net.Packets.*;
@@ -80,12 +80,22 @@ public class NetServer extends Module{
Net.handleServer(ConnectPacket.class, (id, packet) -> { Net.handleServer(ConnectPacket.class, (id, packet) -> {
String uuid = packet.uuid; String uuid = packet.uuid;
if(Net.getConnection(id) == null || NetConnection connection = Net.getConnection(id);
admins.isIPBanned(Net.getConnection(id).address)) return;
if(connection == null ||
admins.isIPBanned(connection.address)) return;
if(connection.hasBegunConnecting){
kick(id, KickReason.idInUse);
return;
}
connection.hasBegunConnecting = true;
TraceInfo trace = admins.getTraceByID(uuid); TraceInfo trace = admins.getTraceByID(uuid);
PlayerInfo info = admins.getInfo(uuid); PlayerInfo info = admins.getInfo(uuid);
trace.uuid = uuid; trace.uuid = uuid;
trace.ip = connection.address;
trace.android = packet.mobile; trace.android = packet.mobile;
if(admins.isIDBanned(uuid)){ if(admins.isIDBanned(uuid)){
@@ -112,7 +122,7 @@ public class NetServer extends Module{
return; return;
} }
if(player.uuid.equals(packet.uuid)){ if(player.uuid.equals(packet.uuid) || player.usid.equals(packet.usid)){
kick(id, KickReason.idInUse); kick(id, KickReason.idInUse);
return; return;
} }
@@ -175,16 +185,14 @@ public class NetServer extends Module{
NetConnection connection = Net.getConnection(id); NetConnection connection = Net.getConnection(id);
if(player == null || connection == null || packet.snapid < connection.lastRecievedClientSnapshot) return; if(player == null || connection == null || packet.snapid < connection.lastRecievedClientSnapshot) return;
boolean verifyPosition = !player.isDead() && !debug && headless && !player.mech.flying && player.getCarrier() == null; boolean verifyPosition = !player.isDead() && !debug && headless && player.getCarrier() == null;
if(connection.lastRecievedClientTime == 0) connection.lastRecievedClientTime = TimeUtils.millis() - 16; if(connection.lastRecievedClientTime == 0) connection.lastRecievedClientTime = TimeUtils.millis() - 16;
long elapsed = TimeUtils.timeSinceMillis(connection.lastRecievedClientTime); long elapsed = TimeUtils.timeSinceMillis(connection.lastRecievedClientTime);
float maxSpeed = (packet.boosting && !player.mech.flying ? player.mech.boostSpeed : player.mech.speed) * 2.5f; float maxSpeed = packet.boosting && !player.mech.flying ? player.mech.boostSpeed : player.mech.speed;
float maxMove = elapsed / 1000f * 60f * Math.min(compound(maxSpeed, player.mech.drag) * 1.2f, player.mech.maxSpeed * 1.05f);
//extra 1.1x multiplicaton is added just in case
float maxMove = elapsed / 1000f * 60f * maxSpeed * 1.1f;
player.pointerX = packet.pointerX; player.pointerX = packet.pointerX;
player.pointerY = packet.pointerY; player.pointerY = packet.pointerY;
@@ -197,12 +205,16 @@ public class NetServer extends Module{
} }
vector.set(packet.x - player.getInterpolator().target.x, packet.y - player.getInterpolator().target.y); vector.set(packet.x - player.getInterpolator().target.x, packet.y - player.getInterpolator().target.y);
vector.limit(maxMove); vector.limit(maxMove);
float prevx = player.x, prevy = player.y; float prevx = player.x, prevy = player.y;
player.set(player.getInterpolator().target.x, player.getInterpolator().target.y); player.set(player.getInterpolator().target.x, player.getInterpolator().target.y);
player.move(vector.x, vector.y); if(!player.mech.flying){
player.move(vector.x, vector.y);
}else{
player.x += vector.x;
player.y += vector.y;
}
float newx = player.x, newy = player.y; float newx = player.x, newy = player.y;
if(!verifyPosition){ if(!verifyPosition){
@@ -213,6 +225,7 @@ public class NetServer extends Module{
}else if(Vector2.dst(packet.x, packet.y, newx, newy) > correctDist){ }else if(Vector2.dst(packet.x, packet.y, newx, newy) > correctDist){
Call.onPositionSet(id, newx, newy); //teleport and correct position when necessary Call.onPositionSet(id, newx, newy); //teleport and correct position when necessary
} }
//reset player to previous synced position so it gets interpolated //reset player to previous synced position so it gets interpolated
player.x = prevx; player.x = prevx;
player.y = prevy; player.y = prevy;
@@ -238,9 +251,16 @@ public class NetServer extends Module{
}); });
} }
/** private float compound(float speed, float drag){
* Sends a raw byte[] snapshot to a client, splitting up into chunks when needed. float total = 0f;
*/ for(int i = 0; i < 20; i++){
total *= (1f - drag);
total += speed;
}
return total;
}
/** Sends a raw byte[] snapshot to a client, splitting up into chunks when needed.*/
private static void sendSplitSnapshot(int userid, byte[] bytes, int snapshotID, int base){ private static void sendSplitSnapshot(int userid, byte[] bytes, int snapshotID, int base){
if(bytes.length < maxSnapshotSize){ if(bytes.length < maxSnapshotSize){
Call.onSnapshot(userid, bytes, snapshotID, (short) 0, bytes.length, base); Call.onSnapshot(userid, bytes, snapshotID, (short) 0, bytes.length, base);
@@ -314,6 +334,8 @@ public class NetServer extends Module{
@Remote(targets = Loc.client) @Remote(targets = Loc.client)
public static void connectConfirm(Player player){ public static void connectConfirm(Player player){
if(player.con == null || player.con.hasConnected) return;
player.add(); player.add();
player.con.hasConnected = true; player.con.hasConnected = true;
Call.sendMessage("[accent]" + player.name + " [accent]has connected."); Call.sendMessage("[accent]" + player.name + " [accent]has connected.");
@@ -352,8 +374,8 @@ public class NetServer extends Module{
Player player = connections.get(con.id); Player player = connections.get(con.id);
if(player != null && (reason == KickReason.kick || reason == KickReason.banned) && admins.getTraceByID(getUUID(con.id)).uuid != null){ if(player != null && (reason == KickReason.kick || reason == KickReason.banned) && player.uuid != null){
PlayerInfo info = admins.getInfo(admins.getTraceByID(getUUID(con.id)).uuid); PlayerInfo info = admins.getInfo(player.uuid);
info.timesKicked++; info.timesKicked++;
info.lastKicked = TimeUtils.millis(); info.lastKicked = TimeUtils.millis();
} }

View File

@@ -43,10 +43,6 @@ public abstract class Platform {
public String getLocaleName(Locale locale){ public String getLocaleName(Locale locale){
return locale.toString(); return locale.toString();
} }
/**Whether joining games is supported.*/
public boolean canJoinGame(){
return true;
}
/**Whether debug mode is enabled.*/ /**Whether debug mode is enabled.*/
public boolean isDebug(){return false;} public boolean isDebug(){return false;}
/**Must be a base64 string 8 bytes in length.*/ /**Must be a base64 string 8 bytes in length.*/

View File

@@ -66,7 +66,6 @@ public class Renderer extends RendererModule{
public Renderer(){ public Renderer(){
Core.batch = new SpriteBatch(4096); Core.batch = new SpriteBatch(4096);
pixelate = true;
Lines.setCircleVertices(14); Lines.setCircleVertices(14);
Shaders.init(); Shaders.init();
@@ -215,7 +214,24 @@ public class Renderer extends RendererModule{
blocks.processBlocks(); blocks.processBlocks();
blocks.drawShadows(); blocks.drawShadows();
blocks.drawBlocks(Layer.block); for(Team team : Team.all){
if(blocks.isTeamShown(team)){
boolean outline = team != players[0].getTeam() && team != Team.none;
if(outline){
Shaders.outline.color.set(team.color);
Shaders.outline.color.a = 0.8f;
Graphics.beginShaders(Shaders.outline);
}
blocks.drawTeamBlocks(Layer.block, team);
if(outline){
Graphics.endShaders();
}
}
}
blocks.skipLayer(Layer.block);
Graphics.shader(Shaders.blockbuild, false); Graphics.shader(Shaders.blockbuild, false);
blocks.drawBlocks(Layer.placement); blocks.drawBlocks(Layer.placement);

View File

@@ -3,6 +3,7 @@ package io.anuke.mindustry.core;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.Queue; import com.badlogic.gdx.utils.Queue;
import com.badlogic.gdx.utils.TimeUtils; import com.badlogic.gdx.utils.TimeUtils;
import io.anuke.ucore.core.Settings;
import io.anuke.ucore.core.Timers; import io.anuke.ucore.core.Timers;
import io.anuke.ucore.util.Log; import io.anuke.ucore.util.Log;
@@ -19,6 +20,7 @@ public class ThreadHandler{
private float framesSinceUpdate; private float framesSinceUpdate;
private boolean enabled; private boolean enabled;
private boolean rendered = true; private boolean rendered = true;
private long lastFrameTime;
public ThreadHandler(ThreadProvider impl){ public ThreadHandler(ThreadProvider impl){
this.impl = impl; this.impl = impl;
@@ -69,7 +71,24 @@ public class ThreadHandler{
return framesSinceUpdate; return framesSinceUpdate;
} }
public void handleRender(){ public void handleBeginRender(){
lastFrameTime = TimeUtils.millis();
}
public void handleEndRender(){
int fpsCap = Settings.getInt("fpscap", 125);
if(fpsCap <= 120){
long target = 1000/fpsCap;
long elapsed = TimeUtils.timeSinceMillis(lastFrameTime);
if(elapsed < target){
try{
impl.sleep(target - elapsed);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
if(!enabled) return; if(!enabled) return;

View File

@@ -43,7 +43,7 @@ public class UI extends SceneModule{
public AboutDialog about; public AboutDialog about;
public RestartDialog restart; public RestartDialog restart;
public LevelDialog levels; public CustomGameDialog levels;
public MapsDialog maps; public MapsDialog maps;
public LoadDialog load; public LoadDialog load;
public DiscordDialog discord; public DiscordDialog discord;
@@ -62,26 +62,27 @@ public class UI extends SceneModule{
public UnlocksDialog unlocks; public UnlocksDialog unlocks;
public ContentInfoDialog content; public ContentInfoDialog content;
public SectorsDialog sectors; public SectorsDialog sectors;
public MissionDialog missions;
private Locale lastLocale; private Locale lastLocale;
public UI(){ public UI(){
Dialog.setShowAction(() -> sequence( Dialog.setShowAction(() -> sequence(
alpha(0f), alpha(0f),
originCenter(), originCenter(),
moveToAligned(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2, Align.center), moveToAligned(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2, Align.center),
scaleTo(0.0f, 1f), scaleTo(0.0f, 1f),
parallel( parallel(
scaleTo(1f, 1f, 0.1f, Interpolation.fade), scaleTo(1f, 1f, 0.1f, Interpolation.fade),
fadeIn(0.1f, Interpolation.fade) fadeIn(0.1f, Interpolation.fade)
) )
)); ));
Dialog.setHideAction(() -> sequence( Dialog.setHideAction(() -> sequence(
parallel( parallel(
scaleTo(0.01f, 0.01f, 0.1f, Interpolation.fade), scaleTo(0.01f, 0.01f, 0.1f, Interpolation.fade),
fadeOut(0.1f, Interpolation.fade) fadeOut(0.1f, Interpolation.fade)
) )
)); ));
TooltipManager.getInstance().animations = false; TooltipManager.getInstance().animations = false;
@@ -154,7 +155,7 @@ public class UI extends SceneModule{
join = new JoinDialog(); join = new JoinDialog();
discord = new DiscordDialog(); discord = new DiscordDialog();
load = new LoadDialog(); load = new LoadDialog();
levels = new LevelDialog(); levels = new CustomGameDialog();
language = new LanguageDialog(); language = new LanguageDialog();
settings = new SettingsMenuDialog(); settings = new SettingsMenuDialog();
host = new HostDialog(); host = new HostDialog();
@@ -169,6 +170,7 @@ public class UI extends SceneModule{
unlocks = new UnlocksDialog(); unlocks = new UnlocksDialog();
content = new ContentInfoDialog(); content = new ContentInfoDialog();
sectors = new SectorsDialog(); sectors = new SectorsDialog();
missions = new MissionDialog();
Group group = Core.scene.getRoot(); Group group = Core.scene.getRoot();
@@ -179,6 +181,7 @@ public class UI extends SceneModule{
listfrag.build(group); listfrag.build(group);
debugfrag.build(group); debugfrag.build(group);
loadfrag.build(group); loadfrag.build(group);
} }
@Override @Override

View File

@@ -219,6 +219,7 @@ public class World extends Module{
/**Loads up a sector map. This does not call play(), but calls reset().*/ /**Loads up a sector map. This does not call play(), but calls reset().*/
public void loadSector(Sector sector){ public void loadSector(Sector sector){
currentSector = sector; currentSector = sector;
state.mode = sector.missions.peek().getMode();
Timers.mark(); Timers.mark();
Timers.mark(); Timers.mark();
@@ -230,16 +231,13 @@ public class World extends Module{
Tile[][] tiles = createTiles(width, height); Tile[][] tiles = createTiles(width, height);
Map map = new Map("Sector [" + sector.x + ", " + sector.y + "]", new MapMeta(0, new ObjectMap<>(), width, height, null), true, () -> null); Map map = new Map("Sector " + sector.x + ", " + sector.y, new MapMeta(0, new ObjectMap<>(), width, height, null), true, () -> null);
setMap(map); setMap(map);
EntityPhysics.resizeTree(0, 0, width * tilesize, height * tilesize); EntityPhysics.resizeTree(0, 0, width * tilesize, height * tilesize);
Timers.mark(); Timers.mark();
generator.generateMap(tiles, sector.x, sector.y); generator.generateMap(tiles, sector);
Log.info("Time to generate base map: {0}", Timers.elapsed());
Log.info("Time to generate fully without additional events: {0}", Timers.elapsed());
endMapLoad(); endMapLoad();

View File

@@ -25,7 +25,7 @@ public class MapEditor{
private byte elevation; private byte elevation;
private int rotation; private int rotation;
private Block drawBlock = Blocks.stone; private Block drawBlock = Blocks.stone;
private Team drawTeam = Team.none; private Team drawTeam = Team.blue;
public MapEditor(){ public MapEditor(){

View File

@@ -495,7 +495,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
.size(size).get().setAlignment(Align.center, Align.center); .size(size).get().setAlignment(Align.center, Align.center);
t.addImageButton("icon-arrow-right", 16 * 2f, () -> editor.setDrawElevation(editor.getDrawElevation() + 1)) t.addImageButton("icon-arrow-right", 16 * 2f, () -> editor.setDrawElevation(editor.getDrawElevation() + 1))
.disabled(b -> editor.getDrawElevation() >= 127).size(size); .disabled(b -> editor.getDrawElevation() >= 63).size(size);
}).colspan(3).height(size).padTop(-5).width(size * 3f); }).colspan(3).height(size).padTop(-5).width(size * 3f);
}).margin(0).left().growY(); }).margin(0).left().growY();
@@ -566,7 +566,8 @@ public class MapEditorDialog extends Dialog implements Disposable{
for(Block block : Block.all()){ for(Block block : Block.all()){
TextureRegion[] regions = block.getCompactIcon(); TextureRegion[] regions = block.getCompactIcon();
if((block.synthetic() && (Recipe.getByResult(block) == null || !control.database().isUnlocked(Recipe.getByResult(block)))) && !debug && block != StorageBlocks.core){ if((block.synthetic() && (Recipe.getByResult(block) == null || !control.database().isUnlocked(Recipe.getByResult(block))))
&& !debug && block != StorageBlocks.core){
continue; continue;
} }
@@ -574,6 +575,10 @@ public class MapEditorDialog extends Dialog implements Disposable{
continue; continue;
} }
if(Recipe.getByResult(block) != null && Recipe.getByResult(block).desktopOnly && mobile && !debug){
continue;
}
if(regions.length == 0 || regions[0] == Draw.region("jjfgj")) continue; if(regions.length == 0 || regions[0] == Draw.region("jjfgj")) continue;
Stack stack = new Stack(); Stack stack = new Stack();

View File

@@ -9,7 +9,7 @@ import io.anuke.mindustry.content.fx.Fx;
import io.anuke.mindustry.entities.effect.Fire; import io.anuke.mindustry.entities.effect.Fire;
import io.anuke.mindustry.entities.effect.Lightning; import io.anuke.mindustry.entities.effect.Lightning;
import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.gen.CallEntity; import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Effects;
@@ -43,7 +43,7 @@ public class Damage{
} }
for(int i = 0; i < Mathf.clamp(flammability / 4, 0, 30); i++){ for(int i = 0; i < Mathf.clamp(flammability / 4, 0, 30); i++){
Timers.run(i / 2, () -> CallEntity.createBullet(TurretBullets.fireball, x, y, Mathf.random(360f))); Timers.run(i / 2, () -> Call.createBullet(TurretBullets.fireball, x, y, Mathf.random(360f)));
} }
int waves = Mathf.clamp((int) (explosiveness / 4), 0, 30); int waves = Mathf.clamp((int) (explosiveness / 4), 0, 30);

View File

@@ -14,10 +14,9 @@ import io.anuke.mindustry.entities.effect.ItemDrop;
import io.anuke.mindustry.entities.effect.ScorchDecal; import io.anuke.mindustry.entities.effect.ScorchDecal;
import io.anuke.mindustry.entities.traits.*; import io.anuke.mindustry.entities.traits.*;
import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.gen.CallEntity; import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.graphics.Trail; import io.anuke.mindustry.graphics.Trail;
import io.anuke.mindustry.net.In;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.net.NetConnection; import io.anuke.mindustry.net.NetConnection;
import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.*;
@@ -83,7 +82,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
//region unit and event overrides, utility methods //region unit and event overrides, utility methods
@Remote(in = In.entities, targets = Loc.server, called = Loc.server) @Remote(targets = Loc.server, called = Loc.server)
public static void onPlayerDamage(Player player, float amount){ public static void onPlayerDamage(Player player, float amount){
if(player == null) return; if(player == null) return;
@@ -91,7 +90,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
player.health -= amount; player.health -= amount;
} }
@Remote(in = In.entities, targets = Loc.server, called = Loc.server) @Remote(targets = Loc.server, called = Loc.server)
public static void onPlayerDeath(Player player){ public static void onPlayerDeath(Player player){
if(player == null) return; if(player == null) return;
@@ -228,10 +227,10 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
@Override @Override
public void damage(float amount){ public void damage(float amount){
CallEntity.onPlayerDamage(this, calculateDamage(amount)); Call.onPlayerDamage(this, calculateDamage(amount));
if(health <= 0 && !dead){ if(health <= 0 && !dead){
CallEntity.onPlayerDeath(this); Call.onPlayerDeath(this);
} }
} }
@@ -511,7 +510,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
if(!ui.chatfrag.chatOpen() && Inputs.keyTap("drop_unit")){ if(!ui.chatfrag.chatOpen() && Inputs.keyTap("drop_unit")){
if(!mech.flying){ if(!mech.flying){
if(getCarrier() != null){ if(getCarrier() != null){
CallEntity.dropSelf(this); Call.dropSelf(this);
} }
}else if(getCarry() != null){ }else if(getCarry() != null){
dropCarry(); dropCarry();
@@ -548,7 +547,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
velocity.add(movement); velocity.add(movement);
} }
float prex = x, prey = y; float prex = x, prey = y;
updateVelocityStatus(mech.drag, 10f); updateVelocityStatus(mech.drag, debug ? 10f : mech.maxSpeed);
moved = distanceTo(prex, prey) > 0.01f; moved = distanceTo(prex, prey) > 0.01f;
}else{ }else{
velocity.setZero(); velocity.setZero();

View File

@@ -10,8 +10,7 @@ import io.anuke.mindustry.content.fx.Fx;
import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.bullet.Bullet;
import io.anuke.mindustry.entities.traits.TargetTrait; import io.anuke.mindustry.entities.traits.TargetTrait;
import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.gen.CallBlocks; import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.net.In;
import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Edges; import io.anuke.mindustry.world.Edges;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
@@ -55,14 +54,14 @@ public class TileEntity extends BaseEntity implements TargetTrait{
private boolean sleeping; private boolean sleeping;
private float sleepTime; private float sleepTime;
@Remote(called = Loc.server, in = In.blocks) @Remote(called = Loc.server)
public static void onTileDamage(Tile tile, float health){ public static void onTileDamage(Tile tile, float health){
if(tile.entity != null){ if(tile.entity != null){
tile.entity.health = health; tile.entity.health = health;
} }
} }
@Remote(called = Loc.server, in = In.blocks) @Remote(called = Loc.server)
public static void onTileDestroyed(Tile tile){ public static void onTileDestroyed(Tile tile){
if(tile.entity == null) return; if(tile.entity == null) return;
tile.entity.onDeath(); tile.entity.onDeath();
@@ -85,10 +84,7 @@ public class TileEntity extends BaseEntity implements TargetTrait{
return this; return this;
} }
/** /**Call when nothing is happening to the entity. This increments the internal sleep timer.*/
* Call when nothing is happening to the entity.
* This increments the internal sleep timer.
*/
public void sleep(){ public void sleep(){
sleepTime += Timers.delta(); sleepTime += Timers.delta();
if(!sleeping && sleepTime >= timeToSleep){ if(!sleeping && sleepTime >= timeToSleep){
@@ -98,20 +94,6 @@ public class TileEntity extends BaseEntity implements TargetTrait{
} }
} }
/**
* Call when something just happened to the entity.
* If the entity was sleeping, this enables it. This also resets the sleep timer.
*/
public void wakeUp(){
noSleep();
for(Tile tile : proximity){
if(tile.entity.isSleeping()){
tile.entity.wakeUp();
}
}
}
/**Call when this entity is updating. This wakes it up.*/ /**Call when this entity is updating. This wakes it up.*/
public void noSleep(){ public void noSleep(){
sleepTime = 0f; sleepTime = 0f;
@@ -159,10 +141,10 @@ public class TileEntity extends BaseEntity implements TargetTrait{
public void damage(float damage){ public void damage(float damage){
if(dead) return; if(dead) return;
CallBlocks.onTileDamage(tile, health - tile.block().handleDamage(tile, damage)); Call.onTileDamage(tile, health - tile.block().handleDamage(tile, damage));
if(health <= 0){ if(health <= 0){
CallBlocks.onTileDestroyed(tile); Call.onTileDestroyed(tile);
} }
} }

View File

@@ -214,9 +214,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
}); });
} }
/** /**Updates velocity and status effects.*/
* Updates velocity and status effects.
*/
public void updateVelocityStatus(float drag, float maxVelocity){ public void updateVelocityStatus(float drag, float maxVelocity){
if(isCarried()){ //carried units do not take into account velocity normally if(isCarried()){ //carried units do not take into account velocity normally
set(carrier.getX(), carrier.getY()); set(carrier.getX(), carrier.getY());
@@ -280,7 +278,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
if(Math.abs(py - y) <= 0.0001f) velocity.y = 0f; if(Math.abs(py - y) <= 0.0001f) velocity.y = 0f;
} }
velocity.scl(Mathf.clamp(1f - drag * floor.dragMultiplier * Timers.delta())); velocity.scl(Mathf.clamp(1f - drag * (isFlying() ? 1f : floor.dragMultiplier) * Timers.delta()));
} }
public void applyEffect(StatusEffect effect, float intensity){ public void applyEffect(StatusEffect effect, float intensity){

View File

@@ -110,6 +110,12 @@ public class UnitInventory implements Saveable{
ammos.add(entry); ammos.add(entry);
} }
public void fillAmmo(AmmoType type){
totalAmmo = ammoCapacity();
ammos.clear();
ammos.add(new AmmoEntry(type, ammoCapacity()));
}
public int capacity(){ public int capacity(){
return unit.getItemCapacity(); return unit.getItemCapacity();
} }

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