merge from master

This commit is contained in:
beito123
2018-11-25 22:39:04 +09:00
163 changed files with 3793 additions and 4253 deletions
+1
View File
@@ -27,6 +27,7 @@ logs/
/core/assets/locales /core/assets/locales
/ios/src/io/anuke/mindustry/gen/ /ios/src/io/anuke/mindustry/gen/
/core/src/io/anuke/mindustry/gen/ /core/src/io/anuke/mindustry/gen/
ios/robovm.properties
*.gif *.gif
version.properties version.properties
+2 -2
View File
@@ -3,8 +3,8 @@ jdk:
- openjdk8 - openjdk8
script: script:
- "./gradlew test" - "./gradlew test"
- "./gradlew desktop:dist" - "./gradlew desktop:dist -Pbuildversion=${TRAVIS_TAG:1}"
- "./gradlew server:dist" - "./gradlew server:dist -Pbuildversion=${TRAVIS_TAG:1}"
deploy: deploy:
provider: releases provider: releases
+1 -1
View File
@@ -20,7 +20,7 @@
<activity <activity
android:name="io.anuke.mindustry.AndroidLauncher" android:name="io.anuke.mindustry.AndroidLauncher"
android:label="@string/app_name" android:label="@string/app_name"
android:screenOrientation="user" android:screenOrientation="sensor"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout"> android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout">
<intent-filter> <intent-filter>
+1 -1
View File
@@ -93,7 +93,7 @@ android {
applicationId "io.anuke.mindustry" applicationId "io.anuke.mindustry"
minSdkVersion 14 minSdkVersion 14
targetSdkVersion 27 targetSdkVersion 28
versionCode code versionCode code
versionName versionNameResult versionName versionNameResult
} }
@@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
<EditText
android:id="@+id/gdxDialogsEditTextInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:maxLines="1"
>
<requestFocus />
</EditText>
</LinearLayout>
@@ -27,7 +27,6 @@ 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;
import io.anuke.ucore.scene.ui.TextField;
import io.anuke.ucore.scene.ui.layout.Unit; import io.anuke.ucore.scene.ui.layout.Unit;
import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Bundles;
import io.anuke.ucore.util.Strings; import io.anuke.ucore.util.Strings;
@@ -52,11 +51,6 @@ public class AndroidLauncher extends PatchedAndroidApplication{
config.useImmersiveMode = true; config.useImmersiveMode = true;
Platform.instance = new Platform(){ Platform.instance = new Platform(){
@Override
public void addDialog(TextField field, int length){
TextFieldDialogListener.add(field, 0, length);
}
@Override @Override
public void openDonations(){ public void openDonations(){
showDonations(); showDonations();
@@ -1,119 +0,0 @@
package io.anuke.mindustry;
import android.app.Activity;
import android.app.AlertDialog;
import android.text.InputFilter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager.LayoutParams;
import android.widget.EditText;
import com.badlogic.gdx.Gdx;
public class AndroidTextFieldDialog{
private Activity activity;
private EditText userInput;
private AlertDialog.Builder builder;
private TextPromptListener listener;
private boolean isBuild;
public AndroidTextFieldDialog(){
this.activity = (Activity) Gdx.app;
load();
}
public AndroidTextFieldDialog show(){
activity.runOnUiThread(() -> {
AlertDialog dialog = builder.create();
dialog.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
dialog.show();
});
return this;
}
private AndroidTextFieldDialog load(){
activity.runOnUiThread(() -> {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity);
LayoutInflater li = LayoutInflater.from(activity);
View promptsView = li.inflate(getResourceId("gdxdialogs_inputtext", "layout"), null);
alertDialogBuilder.setView(promptsView);
userInput = promptsView.findViewById(getResourceId("gdxDialogsEditTextInput", "id"));
alertDialogBuilder.setCancelable(false);
builder = alertDialogBuilder;
isBuild = true;
});
// Wait till TextPrompt is built.
while(!isBuild){
try{
Thread.sleep(10);
}catch(InterruptedException ignored){
}
}
return this;
}
public int getResourceId(String pVariableName, String pVariableType){
try{
return activity.getResources().getIdentifier(pVariableName, pVariableType, activity.getPackageName());
}catch(Exception e){
Gdx.app.error("Android Dialogs", "Cannot find resouce with name: " + pVariableName
+ " Did you copy the layouts to /res/layouts and /res/layouts_v14 ?");
e.printStackTrace();
return -1;
}
}
public AndroidTextFieldDialog setText(CharSequence value){
userInput.append(value);
return this;
}
public AndroidTextFieldDialog setCancelButtonLabel(CharSequence label){
builder.setNegativeButton(label, (dialog, id) -> dialog.cancel());
return this;
}
public AndroidTextFieldDialog setConfirmButtonLabel(CharSequence label){
builder.setPositiveButton(label, (dialog, id) -> {
if(listener != null && !userInput.getText().toString().isEmpty()){
listener.confirm(userInput.getText().toString());
}
});
return this;
}
public AndroidTextFieldDialog setTextPromptListener(TextPromptListener listener){
this.listener = listener;
return this;
}
public AndroidTextFieldDialog setInputType(int type){
userInput.setInputType(type);
return this;
}
public AndroidTextFieldDialog setMaxLength(int length){
userInput.setFilters(new InputFilter[]{new InputFilter.LengthFilter(length)});
return this;
}
public interface TextPromptListener{
void confirm(String text);
}
}
@@ -68,7 +68,6 @@ public class DonationsActivity extends FragmentActivity{
Fragment fragment = fragmentManager.findFragmentByTag("donationsFragment"); Fragment fragment = fragmentManager.findFragmentByTag("donationsFragment");
if(fragment != null){ if(fragment != null){
fragment.onActivityResult(requestCode, resultCode, data); fragment.onActivityResult(requestCode, resultCode, data);
//TODO donation event, set settings?
} }
} }
} }
@@ -1,68 +0,0 @@
package io.anuke.mindustry;
import android.text.InputType;
import com.badlogic.gdx.Application.ApplicationType;
import com.badlogic.gdx.Gdx;
import io.anuke.ucore.scene.event.ChangeListener;
import io.anuke.ucore.scene.event.ClickListener;
import io.anuke.ucore.scene.event.InputEvent;
import io.anuke.ucore.scene.event.InputListener;
import io.anuke.ucore.scene.ui.TextField;
public class TextFieldDialogListener extends ClickListener{
private TextField field;
private int type;
private int max;
//type - 0 is text, 1 is numbers, 2 is decimals
public TextFieldDialogListener(TextField field, int type, int max){
this.field = field;
this.type = type;
this.max = max;
}
public static void add(TextField field, int type, int max){
field.addListener(new TextFieldDialogListener(field, type, max));
field.addListener(new InputListener(){
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){
Gdx.input.setOnscreenKeyboardVisible(false);
return false;
}
});
}
public static void add(TextField field){
add(field, 0, 16);
}
public void clicked(final InputEvent event, float x, float y){
if(Gdx.app.getType() == ApplicationType.Desktop) return;
AndroidTextFieldDialog dialog = new AndroidTextFieldDialog();
dialog.setTextPromptListener(text ->
Gdx.app.postRunnable(() -> {
field.clearText();
field.appendText(text);
field.fire(new ChangeListener.ChangeEvent());
Gdx.graphics.requestRendering();
}));
if(type == 0){
dialog.setInputType(InputType.TYPE_CLASS_TEXT);
}else if(type == 1){
dialog.setInputType(InputType.TYPE_CLASS_NUMBER);
}else if(type == 2){
dialog.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
}
dialog.setConfirmButtonLabel("OK").setText(field.getText());
dialog.setCancelButtonLabel("Cancel");
dialog.setMaxLength(max);
dialog.show();
event.cancel();
}
}
+24 -6
View File
@@ -19,13 +19,13 @@ allprojects {
version = 'release' version = 'release'
ext { ext {
versionNumber = '4.0' versionNumber = '4'
versionModifier = 'alpha' versionModifier = 'alpha'
versionType = 'official' versionType = 'official'
appName = 'Mindustry' appName = 'Mindustry'
gdxVersion = '1.9.8' gdxVersion = '1.9.9'
roboVMVersion = '2.3.0' roboVMVersion = '2.3.0'
uCoreVersion = '2385d794f2cd3db2fb25d320f2223fa2148c25a0' uCoreVersion = '09e13f973a0769d971316d1d4f4a1eef3570926f'
getVersionString = { getVersionString = {
String buildVersion = getBuildVersion() String buildVersion = getBuildVersion()
@@ -110,17 +110,35 @@ project(":ios") {
include "**/*.java" include "**/*.java"
} }
into "ios/src/io/anuke/mindustry/gen" into "core/src/io/anuke/mindustry/gen"
} }
doFirst{ doFirst{
delete{ delete{
delete "ios/src/io/anuke/mindustry/gen/" delete "core/src/io/anuke/mindustry/gen/"
} }
} }
} }
//build.dependsOn(copyGen) task incrementConfig{
def vfile = file('robovm.properties')
def props = new Properties()
if(vfile.exists()){
props.load(new FileInputStream(vfile))
}
props['app.id'] = 'io.anuke.mindustry'
props['app.version'] = '4.0'
props['app.mainclass'] = 'io.anuke.mindustry.IOSLauncher'
props['app.executable'] = 'IOSLauncher'
props['app.name'] = 'Mindustry'
props['app.build'] = (!props.hasProperty("app.build") ? 40 : props['app.build'].toInteger() + 1)+""
props.store(vfile.newWriter(), null)
}
build.dependsOn(incrementConfig)
build.dependsOn(copyGen)
dependencies { dependencies {
compile project(":core") compile project(":core")
Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 B

Before

Width:  |  Height:  |  Size: 110 B

After

Width:  |  Height:  |  Size: 110 B

Before

Width:  |  Height:  |  Size: 98 B

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 557 B

+127 -126
View File
@@ -1,6 +1,7 @@
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 = Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]
text.credits = Credits text.credits = Credits
text.discord = Join the mindustry discord\! text.contributors = Translators and Contributors
text.discord = Join the mindustry discord!
text.link.discord.description = The official Mindustry discord chatroom text.link.discord.description = The official Mindustry discord chatroom
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 = Unstable development builds
@@ -8,27 +9,25 @@ text.link.trello.description = Official trello board for planned features
text.link.itch.io.description = itch.io page with PC downloads and web version text.link.itch.io.description = itch.io page with PC downloads and web version
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 = Official Mindustry wiki
text.linkfail = Failed to open link\!\nThe URL has been copied to your clipboard. text.linkfail = Failed to open link!\nThe URL has been copied to your clipboard.
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.gameover = Game Over text.gameover = Game Over
text.gameover.pvp = The[accent] {0}[] team is victorious\! text.gameover.pvp = The[accent] {0}[] team is victorious!
text.sector.gameover = This sector has been lost. Re-deploy? text.sector.gameover = This sector has been lost. Re-deploy?
text.sector.retry = Retry text.sector.retry = Retry
text.highscore = [accent]New highscore\! text.highscore = [accent]New highscore!
text.wave.lasted = You lasted until wave [accent]{0}[]. 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 "[accent]{0}[]"? text.map.delete = Are you sure you want to delete the map "[accent]{0}[]"?
text.level.select = Level Select text.level.select = Level Select
text.level.mode = Gamemode\: text.level.mode = Gamemode:
text.construction.desktop = To deselect a block or stop building, [accent]use space[]. text.construction.desktop = To deselect a block or stop building, [accent]use space[].
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.
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 = Don't show again next session
text.coreattack = < Core is under attack\! > text.coreattack = < Core is under attack! >
text.unlocks = Unlocks text.unlocks = Unlocks
text.savegame = Save Game text.savegame = Save Game
text.loadgame = Load Game text.loadgame = Load Game
@@ -36,19 +35,19 @@ text.joingame = Join Game
text.addplayers = Add/Remove Players text.addplayers = Add/Remove Players
text.customgame = Custom Game text.customgame = Custom Game
text.sectors = Sectors text.sectors = Sectors
text.sector = 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.abandon = Abandon text.sector.abandon = Abandon
text.sector.abandon.confirm = Are you sure you want to abandon all progress at this sector?\nThis cannot be undone\! text.sector.abandon.confirm = Are you sure you want to abandon all progress at this sector?\nThis cannot be undone!
text.sector.resume = Resume text.sector.resume = Resume
text.sector.locked = [scarlet][[Incomplete] text.sector.locked = [scarlet][[Incomplete]
text.sector.unexplored = [accent][[Unexplored] text.sector.unexplored = [accent][[Unexplored]
text.missions = Missions\:[LIGHT_GRAY] {0} text.missions = Missions:[LIGHT_GRAY] {0}
text.mission = Mission\:[LIGHT_GRAY] {0} text.mission = Mission:[LIGHT_GRAY] {0}
text.mission.main = Main Mission\:[LIGHT_GRAY] {0} text.mission.main = Main Mission:[LIGHT_GRAY] {0}
text.mission.info = Mission Info text.mission.info = Mission Info
text.mission.complete = Mission complete\! text.mission.complete = Mission complete!
text.mission.complete.body = Sector {0},{1} has been conquered. text.mission.complete.body = Sector {0},{1} has been conquered.
text.mission.wave = Survive[accent] {0}/{1} []waves\nWave in {2} text.mission.wave = Survive[accent] {0}/{1} []waves\nWave in {2}
text.mission.wave.enemies = Survive[accent] {0}/{1} []waves\n{2} Enemies text.mission.wave.enemies = Survive[accent] {0}/{1} []waves\n{2} Enemies
@@ -56,12 +55,12 @@ text.mission.wave.enemy = Survive[accent] {0}/{1} []waves\n{2} Enemy
text.mission.wave.menu = Survive[accent] {0}[] waves text.mission.wave.menu = Survive[accent] {0}[] waves
text.mission.battle = Destroy enemy core text.mission.battle = Destroy enemy core
text.mission.resource.menu = Obtain {0} x{1} text.mission.resource.menu = Obtain {0} x{1}
text.mission.resource = Obtain {0}\:\n[accent]{1}/{2}[] text.mission.resource = Obtain {0}:\n[accent]{1}/{2}[]
text.mission.block = Create {0} text.mission.block = Create {0}
text.mission.unit = Create {0} Unit text.mission.unit = Create {0} Unit
text.mission.command = Send Command {0} To Units text.mission.command = Send Command {0} To Units
text.mission.linknode = Link Power Node text.mission.linknode = Link Power Node
text.mission.display = [accent]Mission\:\n[LIGHT_GRAY]{0} text.mission.display = [accent]Mission:\n[LIGHT_GRAY]{0}
text.mission.mech = Switch to mech[accent] {0}[] text.mission.mech = Switch to mech[accent] {0}[]
text.mission.create = Create[accent] {0}[] text.mission.create = Create[accent] {0}[]
text.none = <none> text.none = <none>
@@ -70,29 +69,30 @@ text.quit = Quit
text.maps = Maps text.maps = Maps
text.continue = Continue text.continue = Continue
text.nextmission = Next Mission text.nextmission = Next Mission
text.maps.none = [LIGHT_GRAY]No maps found\! text.maps.none = [LIGHT_GRAY]No maps found!
text.about.button = About text.about.button = About
text.name = Name\: text.name = Name:
text.filename = File Name\: text.noname = Pick a[accent] player name[] first.
text.unlocked = New Block Unlocked\! text.filename = File Name:
text.unlocked.plural = New Blocks Unlocked\! text.unlocked = New Block Unlocked!
text.unlocked.plural = New Blocks Unlocked!
text.players = {0} players online text.players = {0} players online
text.players.single = {0} player online text.players.single = {0} player online
text.server.closing = [accent]Closing server... text.server.closing = [accent]Closing server...
text.server.kicked.kick = You have been kicked from the server\! text.server.kicked.kick = You have been kicked from the server!
text.server.kicked.serverClose = Server closed. text.server.kicked.serverClose = Server closed.
text.server.kicked.sectorComplete = Sector completed. text.server.kicked.sectorComplete = Sector completed.
text.server.kicked.sectorComplete.text = Your mission is complete.\nThe server will now continue at the next sector. text.server.kicked.sectorComplete.text = Your mission is complete.\nThe server will now continue at the next sector.
text.server.kicked.clientOutdated = Outdated client\! Update your game\! text.server.kicked.clientOutdated = Outdated client! Update your game!
text.server.kicked.serverOutdated = Outdated server\! Ask the host to update\! text.server.kicked.serverOutdated = Outdated server! Ask the host to update!
text.server.kicked.banned = You are banned on this server. text.server.kicked.banned = You are banned on this server.
text.server.kicked.recentKick = You have been kicked recently.\nWait before connecting again. text.server.kicked.recentKick = You have been kicked recently.\nWait before connecting again.
text.server.kicked.nameInUse = There is someone with that name\nalready on this server. text.server.kicked.nameInUse = There is someone with that name\nalready on this server.
text.server.kicked.nameEmpty = Your chosen name is invalid. text.server.kicked.nameEmpty = Your chosen name is invalid.
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 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.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 Game text.hostserver = Host Game
text.hostserver.mobile = Host\nGame text.hostserver.mobile = Host\nGame
text.host = Host text.host = Host
@@ -100,31 +100,31 @@ text.hosting = [accent]Opening server...
text.hosts.refresh = Refresh text.hosts.refresh = Refresh
text.hosts.discovering = Discovering LAN games text.hosts.discovering = Discovering LAN games
text.server.refreshing = Refreshing server text.server.refreshing = Refreshing server
text.hosts.none = [lightgray]No local games found\! text.hosts.none = [lightgray]No local games found!
text.host.invalid = [scarlet]Can't connect to host. text.host.invalid = [scarlet]Can't connect to host.
text.trace = Trace Player text.trace = Trace Player
text.trace.playername = Player name\: [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 = Android Client: [accent]{0}
text.trace.modclient = Custom Client\: [accent]{0} text.trace.modclient = Custom Client: [accent]{0}
text.trace.totalblocksbroken = Total blocks broken\: [accent]{0} text.trace.totalblocksbroken = Total blocks broken: [accent]{0}
text.trace.structureblocksbroken = Structure blocks broken\: [accent]{0} text.trace.structureblocksbroken = Structure blocks broken: [accent]{0}
text.trace.lastblockbroken = Last block broken\: [accent]{0} text.trace.lastblockbroken = Last block broken: [accent]{0}
text.trace.totalblocksplaced = Total blocks placed\: [accent]{0} text.trace.totalblocksplaced = Total blocks placed: [accent]{0}
text.trace.lastblockplaced = Last block placed\: [accent]{0} text.trace.lastblockplaced = Last block placed: [accent]{0}
text.invalidid = Invalid client ID\! Submit a bug report. text.invalidid = Invalid client ID! Submit a bug report.
text.server.bans = Bans text.server.bans = Bans
text.server.bans.none = No banned players found\! text.server.bans.none = No banned players found!
text.server.admins = Admins text.server.admins = Admins
text.server.admins.none = No admins found\! text.server.admins.none = No admins found!
text.server.add = Add Server text.server.add = Add Server
text.server.delete = Are you sure you want to delete this server? text.server.delete = Are you sure you want to delete this server?
text.server.hostname = Host\: {0} text.server.hostname = Host: {0}
text.server.edit = Edit Server text.server.edit = Edit Server
text.server.outdated = [crimson]Outdated Server\![] text.server.outdated = [crimson]Outdated Server![]
text.server.outdated.client = [crimson]Outdated Client\![] text.server.outdated.client = [crimson]Outdated Client![]
text.server.version = [lightgray]Version\: {0} {1} text.server.version = [lightgray]Version: {0} {1}
text.server.custombuild = [yellow]Custom Build text.server.custombuild = [yellow]Custom Build
text.confirmban = Are you sure you want to ban this player? text.confirmban = Are you sure you want to ban this player?
text.confirmkick = Are you sure you want to kick this player? text.confirmkick = Are you sure you want to kick this player?
@@ -132,45 +132,45 @@ text.confirmunban = Are you sure you want to unban this player?
text.confirmadmin = Are you sure you want to make this player an admin? text.confirmadmin = Are you sure you want to make this player an admin?
text.confirmunadmin = Are you sure you want to remove admin status from this player? text.confirmunadmin = Are you sure you want to remove admin status from this player?
text.joingame.title = Join Game text.joingame.title = Join Game
text.joingame.ip = IP\: text.joingame.ip = IP:
text.disconnect = Disconnected. text.disconnect = Disconnected.
text.disconnect.data = Failed to load world data\! text.disconnect.data = Failed to load world data!
text.connecting = [accent]Connecting... text.connecting = [accent]Connecting...
text.connecting.data = [accent]Loading world data... text.connecting.data = [accent]Loading world data...
text.server.port = Port\: text.server.port = Port:
text.server.addressinuse = Address already in use\! text.server.addressinuse = Address already in use!
text.server.invalidport = Invalid port number\! text.server.invalidport = Invalid port number!
text.server.error = [crimson]Error hosting server\: [accent]{0} text.server.error = [crimson]Error hosting server: [accent]{0}
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.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.save.new = New Save text.save.new = New Save
text.save.overwrite = Are you sure you want to overwrite\nthis save slot? text.save.overwrite = Are you sure you want to overwrite\nthis save slot?
text.overwrite = Overwrite text.overwrite = Overwrite
text.save.none = No saves found\! text.save.none = No saves found!
text.saveload = [accent]Saving... text.saveload = [accent]Saving...
text.savefail = Failed to save game\! text.savefail = Failed to save game!
text.save.delete.confirm = Are you sure you want to delete this save? text.save.delete.confirm = Are you sure you want to delete this save?
text.save.delete = Delete text.save.delete = Delete
text.save.export = Export Save text.save.export = Export Save
text.save.import.invalid = [accent]This save is invalid\! text.save.import.invalid = [accent]This save is invalid!
text.save.import.fail = [crimson]Failed to import save\: [accent]{0} text.save.import.fail = [crimson]Failed to import save: [accent]{0}
text.save.export.fail = [crimson]Failed to export save\: [accent]{0} text.save.export.fail = [crimson]Failed to export save: [accent]{0}
text.save.import = Import Save text.save.import = Import Save
text.save.newslot = Save name\: text.save.newslot = Save name:
text.save.rename = Rename text.save.rename = Rename
text.save.rename.text = New name\: 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 = [accent]Save file corrupted or invalid\!\nIf you have just updated your game, this is probably a change in the save format and [scarlet]not[] a bug. text.save.corrupted = [accent]Save file corrupted or invalid!\nIf you have just updated your game, this is probably a change in the save format and [scarlet]not[] a bug.
text.sector.corrupted = [accent]A save file for this sector was found, but loading failed.\nA new one has been created. text.sector.corrupted = [accent]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
text.save.autosave = Autosave\: {0} text.save.autosave = Autosave: {0}
text.save.map = Map\: {0} text.save.map = Map: {0}
text.save.wave = Wave {0} text.save.wave = Wave {0}
text.save.difficulty = Difficulty\: {0} text.save.difficulty = Difficulty: {0}
text.save.date = Last Saved\: {0} text.save.date = Last Saved: {0}
text.save.playtime = Playtime\: {0} text.save.playtime = Playtime: {0}
text.confirm = Confirm text.confirm = Confirm
text.delete = Delete text.delete = Delete
text.ok = OK text.ok = OK
@@ -182,9 +182,9 @@ text.back = Back
text.quit.confirm = Are you sure you want to quit? text.quit.confirm = Are you sure you want to quit?
text.changelog.title = Changelog text.changelog.title = Changelog
text.changelog.loading = Getting changelog... text.changelog.loading = Getting changelog...
text.changelog.error.android = [accent]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 = [accent]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.ios = [accent]The changelog is currently not supported in iOS. text.changelog.error.ios = [accent]The changelog is currently not supported in iOS.
text.changelog.error = [scarlet]Error getting changelog\!\nCheck your internet connection. text.changelog.error = [scarlet]Error getting changelog!\nCheck your internet connection.
text.changelog.current = [yellow][[Current version] text.changelog.current = [yellow][[Current version]
text.changelog.latest = [accent][[Latest version] text.changelog.latest = [accent][[Latest version]
text.loading = [accent]Loading... text.loading = [accent]Loading...
@@ -200,32 +200,32 @@ text.saveimage = Save Image
text.unknown = Unknown text.unknown = Unknown
text.custom = Custom text.custom = Custom
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 = Are you sure you want to delete this map? This action cannot be undone!
text.map.random = [accent]Random Map text.map.random = [accent]Random Map
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 = 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.pvp = This map does not have any enemy cores for player to spawn into\! Add[SCARLET] red[] cores to this map in the editor. text.map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
text.map.invalid = Error loading map\: corrupted or invalid map file. text.map.invalid = Error loading map: corrupted or invalid map file.
text.editor.brush = Brush text.editor.brush = Brush
text.editor.slope = \\ text.editor.slope = \\
text.editor.openin = Open In Editor text.editor.openin = Open In Editor
text.editor.oregen = Ore Generation text.editor.oregen = Ore Generation
text.editor.oregen.info = Ore Generation\: text.editor.oregen.info = Ore Generation:
text.editor.mapinfo = Map Info text.editor.mapinfo = Map Info
text.editor.author = Author\: text.editor.author = Author:
text.editor.description = Description\: text.editor.description = Description:
text.editor.name = Name\: text.editor.name = Name:
text.editor.teams = Teams text.editor.teams = Teams
text.editor.elevation = Elevation text.editor.elevation = Elevation
text.editor.errorimageload = Error loading file\:\n[accent]{0} text.editor.errorimageload = Error loading file:\n[accent]{0}
text.editor.errorimagesave = Error saving file\:\n[accent]{0} text.editor.errorimagesave = Error saving file:\n[accent]{0}
text.editor.generate = Generate text.editor.generate = Generate
text.editor.resize = Resize text.editor.resize = Resize
text.editor.loadmap = Load Map text.editor.loadmap = Load Map
text.editor.savemap = Save Map text.editor.savemap = Save Map
text.editor.saved = Saved\! text.editor.saved = Saved!
text.editor.save.noname = Your map does not have a name\! Set one in the 'map info' menu. text.editor.save.noname = Your map does not have a name! Set one in the 'map info' menu.
text.editor.save.overwrite = Your map overwrites a built-in map\! Pick a different name in the 'map info' menu. text.editor.save.overwrite = Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
text.editor.import.exists = [scarlet]Unable to import\:[] a built-in map named '{0}' already exists\! text.editor.import.exists = [scarlet]Unable to import:[] a built-in map named '{0}' already exists!
text.editor.import = Import... text.editor.import = Import...
text.editor.importmap = Import Map text.editor.importmap = Import Map
text.editor.importmap.description = Import an already existing map text.editor.importmap.description = Import an already existing map
@@ -240,21 +240,21 @@ text.editor.exportimage = Export Terrain Image
text.editor.exportimage.description = Export a map image file text.editor.exportimage.description = Export a map image file
text.editor.loadimage = Import Terrain text.editor.loadimage = Import Terrain
text.editor.saveimage = Export Terrain text.editor.saveimage = Export Terrain
text.editor.unsaved = [scarlet]You have unsaved changes\![]\nAre you sure you want to exit? text.editor.unsaved = [scarlet]You have unsaved changes![]\nAre you sure you want to exit?
text.editor.resizemap = Resize Map text.editor.resizemap = Resize Map
text.editor.mapname = Map Name\: text.editor.mapname = Map Name:
text.editor.overwrite = [accent]Warning\!\nThis overwrites an existing map. text.editor.overwrite = [accent]Warning!\nThis overwrites an existing map.
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]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
text.editor.selectmap = Select a map to load\: text.editor.selectmap = Select a map to load:
text.width = Width\: text.width = Width:
text.height = Height\: text.height = Height:
text.menu = Menu text.menu = Menu
text.play = Play text.play = Play
text.load = Load text.load = Load
text.save = Save text.save = Save
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 = Please restart your game for the language settings to take effect.
text.settings = Settings text.settings = Settings
text.tutorial = Tutorial text.tutorial = Tutorial
@@ -262,7 +262,7 @@ text.editor = Editor
text.mapeditor = Map Editor text.mapeditor = Map Editor
text.donate = Donate text.donate = Donate
text.connectfail = [crimson]Failed to connect to server\:\n\n[accent]{0} text.connectfail = [crimson]Failed to connect to server:\n\n[accent]{0}
text.error.unreachable = Server unreachable.\nIs the address spelled correctly? text.error.unreachable = Server unreachable.\nIs the address spelled correctly?
text.error.invalidaddress = Invalid address. text.error.invalidaddress = Invalid address.
text.error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct! text.error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct!
@@ -279,8 +279,8 @@ text.settings.game = Game
text.settings.sound = Sound text.settings.sound = Sound
text.settings.graphics = Graphics text.settings.graphics = Graphics
text.settings.cleardata = Clear Game Data... text.settings.cleardata = Clear Game Data...
text.settings.clear.confirm = Are you sure you want to clear this data?\nWhat is done cannot be undone\! text.settings.clear.confirm = Are you sure you want to clear this data?\nWhat is done cannot be undone!
text.settings.clearall.confirm = [scarlet]WARNING\![]\nThis will clear all data, including saves, maps, unlocks and keybinds.\nOnce you press 'ok' the game will wipe all data and automatically exit. text.settings.clearall.confirm = [scarlet]WARNING![]\nThis will clear all data, including saves, maps, unlocks and keybinds.\nOnce you press 'ok' the game will wipe all data and automatically exit.
text.settings.clearsectors = Clear Sectors text.settings.clearsectors = Clear Sectors
text.settings.clearunlocks = Clear Unlocks text.settings.clearunlocks = Clear Unlocks
text.settings.clearall = Clear All text.settings.clearall = Clear All
@@ -290,6 +290,7 @@ text.no = No
text.info.title = Info text.info.title = Info
text.error.title = [crimson]An error has occured text.error.title = [crimson]An error has occured
text.error.crashtitle = An error has occured text.error.crashtitle = An error has occured
text.blocks.unknown=[LIGHT_GRAY]???
text.blocks.blockinfo = Block Info text.blocks.blockinfo = Block Info
text.blocks.powercapacity = Power Capacity text.blocks.powercapacity = Power Capacity
text.blocks.powershot = Power/Shot text.blocks.powershot = Power/Shot
@@ -322,7 +323,8 @@ text.blocks.coolant = Coolant
text.blocks.coolantuse = Coolant Use text.blocks.coolantuse = Coolant Use
text.blocks.inputliquidfuel = Fuel Liquid text.blocks.inputliquidfuel = Fuel Liquid
text.blocks.liquidfueluse = Liquid Fuel Use text.blocks.liquidfueluse = Liquid Fuel Use
text.blocks.explosive = Highly explosive\! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Health text.blocks.health = Health
text.blocks.inaccuracy = Inaccuracy text.blocks.inaccuracy = Inaccuracy
text.blocks.shots = Shots text.blocks.shots = Shots
@@ -347,6 +349,7 @@ 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
text.category.optional = Optional Enhancements
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
setting.fpscap.name = Max FPS setting.fpscap.name = Max FPS
setting.fpscap.none = None setting.fpscap.none = None
@@ -356,14 +359,13 @@ setting.difficulty.easy = easy
setting.difficulty.normal = normal setting.difficulty.normal = normal
setting.difficulty.hard = hard setting.difficulty.hard = hard
setting.difficulty.insane = insane setting.difficulty.insane = insane
setting.difficulty.name = Difficulty\: setting.difficulty.name = Difficulty:
setting.screenshake.name = Screen Shake setting.screenshake.name = Screen Shake
setting.effects.name = Display Effects setting.effects.name = Display Effects
setting.sensitivity.name = Controller Sensitivity setting.sensitivity.name = Controller Sensitivity
setting.saveinterval.name = Autosave Interval setting.saveinterval.name = Autosave Interval
setting.seconds = {0} Seconds setting.seconds = {0} Seconds
setting.fullscreen.name = Fullscreen setting.fullscreen.name = Fullscreen
setting.multithread.name = Multithreading
setting.fps.name = Show FPS setting.fps.name = Show FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Show Power Lasers setting.lasers.name = Show Power Lasers
@@ -408,8 +410,6 @@ 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.custom.warning = [scarlet]UNLOCKS IN CUSTOM GAMES OR SERVERS ARE NOT SAVED.[]\n\nPlay in sectors to unlock things.
mode.custom.warning.read = Just to make sure you've read it\:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES\!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
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.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -482,21 +482,22 @@ mech.trident-ship.weapon = Bomb Bay
mech.glaive-ship.name = Glaive mech.glaive-ship.name = Glaive
mech.glaive-ship.description = A large, well-armored gunship. Equipped with an incendiary repeater. Good acceleration and maximum speed. mech.glaive-ship.description = A large, well-armored gunship. Equipped with an incendiary repeater. Good acceleration and maximum speed.
mech.glaive-ship.weapon = Flame Repeater mech.glaive-ship.weapon = Flame Repeater
text.item.explosiveness = [LIGHT_GRAY]Explosiveness\: {0}% text.item.explosiveness = [LIGHT_GRAY]Explosiveness: {0}%
text.item.flammability = [LIGHT_GRAY]Flammability\: {0}% text.item.flammability = [LIGHT_GRAY]Flammability: {0}%
text.item.radioactivity = [LIGHT_GRAY]Radioactivity\: {0}% text.item.radioactivity = [LIGHT_GRAY]Radioactivity: {0}%
text.item.fluxiness = [LIGHT_GRAY]Flux Power\: {0}% text.item.fluxiness = [LIGHT_GRAY]Flux Power: {0}%
text.unit.health = [LIGHT_GRAY]Health\: {0} text.unit.health = [LIGHT_GRAY]Health: {0}
text.unit.speed = [LIGHT_GRAY]Speed\: {0} text.unit.speed = [LIGHT_GRAY]Speed: {0}
text.mech.weapon = [LIGHT_GRAY]Weapon\: {0} text.mech.weapon = [LIGHT_GRAY]Weapon: {0}
text.mech.armor = [LIGHT_GRAY]Armor\: {0} text.mech.armor = [LIGHT_GRAY]Armor: {0}
text.mech.itemcapacity = [LIGHT_GRAY]Item Capacity\: {0} text.mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {0}
text.mech.minespeed = [LIGHT_GRAY]Mining Speed\: {0} text.mech.minespeed = [LIGHT_GRAY]Mining Speed: {0}
text.mech.minepower = [LIGHT_GRAY]Mining Power\: {0} text.mech.minepower = [LIGHT_GRAY]Mining Power: {0}
text.mech.ability = [LIGHT_GRAY]Ability\: {0} text.mech.ability = [LIGHT_GRAY]Ability: {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}
block.constructing = {0} [LIGHT_GRAY](Constructing)
block.spawn.name = Enemy Spawn block.spawn.name = Enemy Spawn
block.core.name = Core block.core.name = Core
block.metalfloor.name = Metal Floor block.metalfloor.name = Metal Floor
@@ -504,16 +505,16 @@ block.deepwater.name = deepwater
block.water.name = water block.water.name = water
block.lava.name = lava block.lava.name = lava
block.tar.name = Tar block.tar.name = Tar
block.blackstone.name = blackstone block.blackstone.name = Black Stone
block.stone.name = stone block.stone.name = Stone
block.dirt.name = dirt block.dirt.name = Dirt
block.sand.name = sand block.sand.name = Sand
block.ice.name = ice block.ice.name = Ice
block.snow.name = snow block.snow.name = Snow
block.grass.name = grass block.grass.name = Grass
block.shrub.name = shrub block.shrub.name = Shrub
block.rock.name = rock block.rock.name = Rock
block.blackrock.name = blackrock block.blackrock.name = Black Rock
block.icerock.name = icerock block.icerock.name = icerock
block.copper-wall.name = Copper Wall block.copper-wall.name = Copper Wall
block.copper-wall-large.name = Large Copper Wall block.copper-wall-large.name = Large Copper Wall
+10 -10
View File
@@ -9,8 +9,6 @@ text.link.itch.io.description = itch.io Seite mit Downloads und der Web-Version
text.link.google-play.description = Google Play Store Seite text.link.google-play.description = Google Play Store Seite
text.link.wiki.description = Offizelles Mindustry Wiki text.link.wiki.description = Offizelles Mindustry Wiki
text.linkfail = Fehler beim Öffnen des Links!\nDie URL wurde in die Zwischenablage kopiert. text.linkfail = Fehler beim Öffnen des Links!\nDie URL wurde in die Zwischenablage kopiert.
text.editor.web = Die Web-Version unterstützt den Editor nicht!\nLade das Spiel herunter um ihn zu benutzen.
text.web.unsupported = Die Web-Version unterstützt dieses Feature nicht! Lade das Spiel herunter um es zu benutzen.
text.gameover = Der Kern wurde zerstört. text.gameover = Der Kern wurde zerstört.
text.gameover.pvp = Das[accent] {0}[] Team ist siegreich! text.gameover.pvp = Das[accent] {0}[] Team ist siegreich!
text.sector.gameover = Du hast diesen Sektor verloren. Erneuter Einsatz? text.sector.gameover = Du hast diesen Sektor verloren. Erneuter Einsatz?
@@ -267,6 +265,7 @@ text.error.invalidaddress = Ungültige Adresse.
text.error.timedout = Zeitüberschreitung!\nStelle sicher, dass die Portweiterleitung auf dem Host richtig eingerichtet ist, und die Adresse stimmt! text.error.timedout = Zeitüberschreitung!\nStelle sicher, dass die Portweiterleitung auf dem Host richtig eingerichtet ist, und die Adresse stimmt!
text.error.mismatch = Paketfehler:\nClient und Server passen möglicherweise nicht zusammen.\nStelle sicher, dass du und der Host jeweils die neueste Version von Mindustry haben! text.error.mismatch = Paketfehler:\nClient und Server passen möglicherweise nicht zusammen.\nStelle sicher, dass du und der Host jeweils die neueste Version von Mindustry haben!
text.error.alreadyconnected = Bereits verbunden. text.error.alreadyconnected = Bereits verbunden.
text.error.mapnotfound = Map file not found!
text.error.any = Unbekannter Netzwerkfehler. text.error.any = Unbekannter Netzwerkfehler.
text.settings.language = Sprache text.settings.language = Sprache
text.settings.reset = Auf Standard zurücksetzen text.settings.reset = Auf Standard zurücksetzen
@@ -287,6 +286,7 @@ text.no = Nein
text.info.title = [accent]Info text.info.title = [accent]Info
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!
text.blocks.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = Blockinfo: text.blocks.blockinfo = Blockinfo:
text.blocks.powercapacity = Kapazität text.blocks.powercapacity = Kapazität
text.blocks.powershot = Stromverbrauch/Schuss text.blocks.powershot = Stromverbrauch/Schuss
@@ -319,7 +319,8 @@ text.blocks.coolant = Kühlmittel
text.blocks.coolantuse = Kühlmittelverbrauch text.blocks.coolantuse = Kühlmittelverbrauch
text.blocks.inputliquidfuel = Kraftstoff text.blocks.inputliquidfuel = Kraftstoff
text.blocks.liquidfueluse = Kraftstoffverbrauch text.blocks.liquidfueluse = Kraftstoffverbrauch
text.blocks.explosive = Hochexplosiv! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Lebenspunkte text.blocks.health = Lebenspunkte
text.blocks.inaccuracy = Ungenauigkeit text.blocks.inaccuracy = Ungenauigkeit
text.blocks.shots = Schüsse text.blocks.shots = Schüsse
@@ -344,6 +345,7 @@ text.category.liquids = Flüssigkeiten
text.category.items = Materialien text.category.items = Materialien
text.category.crafting = Erzeugung text.category.crafting = Erzeugung
text.category.shooting = Schießen text.category.shooting = Schießen
text.category.optional = Optional Enhancements
setting.autotarget.name = Auto-Zielauswahl setting.autotarget.name = Auto-Zielauswahl
setting.fpscap.name = Max FPS setting.fpscap.name = Max FPS
setting.fpscap.none = kein setting.fpscap.none = kein
@@ -360,7 +362,6 @@ setting.sensitivity.name = Controller-Empfindlichkeit
setting.saveinterval.name = Autosave Häufigkeit setting.saveinterval.name = Autosave Häufigkeit
setting.seconds = {0} Sekunden setting.seconds = {0} Sekunden
setting.fullscreen.name = Vollbild setting.fullscreen.name = Vollbild
setting.multithread.name = Multithreading
setting.fps.name = Zeige FPS setting.fps.name = Zeige FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Zeige Stromlaser setting.lasers.name = Zeige Stromlaser
@@ -369,6 +370,7 @@ setting.musicvol.name = Musiklautstärke
setting.mutemusic.name = Musik stummschalten setting.mutemusic.name = Musik stummschalten
setting.sfxvol.name = Audioeffekt-Lautstärke setting.sfxvol.name = Audioeffekt-Lautstärke
setting.mutesound.name = Audioeffekte stummschalten setting.mutesound.name = Audioeffekte stummschalten
setting.crashreport.name = Send Anonymous Crash Reports
text.keybind.title = Tasten zuweisen text.keybind.title = Tasten zuweisen
category.general.name = Allgemein category.general.name = Allgemein
category.view.name = Ansicht category.view.name = Ansicht
@@ -404,8 +406,6 @@ mode.waves.name = Wellen
mode.waves.description = Der normale Modus. Begrenzte Ressourcen und automatische Wellen. mode.waves.description = Der normale Modus. Begrenzte Ressourcen und automatische Wellen.
mode.sandbox.name = Sandkasten mode.sandbox.name = Sandkasten
mode.sandbox.description = Unendliche Ressourcen und kein Timer für Wellen. mode.sandbox.description = Unendliche Ressourcen und kein Timer für Wellen.
mode.custom.warning = [scarlet]FREISCHALTUNGEN IN BENUTZERDEFINIERTEN SPIELEN ODER SERVERN WERDEN NICHT GESPEICHERT.[]\n\nSpiele in Sektoren, um Dinge freizuschalten.
mode.custom.warning.read = Nur um sicherzugehen, dass du es gelesen hast:\n[scarlet]FREISCHALTUNGEN IN BENUTZERDEFINIERTEN SPIELEN ODER SERVERN WERDEN NICHT GESPEICHERT.[]\n\nSpiele in Sektoren, um Dinge freizuschalten.(Ich wünschte, der Hinweis wäre nicht notwendig, aber anscheinend ist er das)[]
mode.freebuild.name = Freier Bau mode.freebuild.name = Freier Bau
mode.freebuild.description = Begrenzte Ressourcen und kein Timer für Wellen. mode.freebuild.description = Begrenzte Ressourcen und kein Timer für Wellen.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -493,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Fähigkeit: {0}
text.liquid.heatcapacity = [LIGHT_GRAY]Wärmekapazität: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Wärmekapazität: {0}
text.liquid.viscosity = [LIGHT_GRAY]Viskosität: {0} text.liquid.viscosity = [LIGHT_GRAY]Viskosität: {0}
text.liquid.temperature = [LIGHT_GRAY]Temperatur: {0} text.liquid.temperature = [LIGHT_GRAY]Temperatur: {0}
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = Gegnerischer Startpunkt block.spawn.name = Gegnerischer Startpunkt
block.core.name = Basis block.core.name = Basis
block.metalfloor.name = Metallboden block.metalfloor.name = Metallboden
@@ -622,7 +623,7 @@ block.rtg-generator.name = RTG Generator
block.spectre.name = Spectre block.spectre.name = Spectre
block.meltdown.name = Meltdown block.meltdown.name = Meltdown
block.container.name = Container block.container.name = Container
block.core.description = The most important building in the game. block.core.description = Das wichtigste Gebäude im Spiel
team.blue.name = Blau team.blue.name = Blau
team.red.name = Rot team.red.name = Rot
team.orange.name = Orange team.orange.name = Orange
@@ -650,8 +651,8 @@ tutorial.begin = Deine Mission ist es den [LIGHT_GRAY]Gegner[] auszurotten.\n\n
tutorial.drill = Manuelles Abbauen von Ressourcen ist ineffizient.\n[accent]Bohrer[] können automatisch abbauen.\n Platziere einen auf einem Kupfer Vorkommen. tutorial.drill = Manuelles Abbauen von Ressourcen ist ineffizient.\n[accent]Bohrer[] können automatisch abbauen.\n Platziere einen auf einem Kupfer Vorkommen.
tutorial.conveyor = [accent]Transportbänder[] werden dazu benutzt Materialien zum Kern zu transportieren.\n Erstelle eine Reihe von Transportbändern zum Kern. tutorial.conveyor = [accent]Transportbänder[] werden dazu benutzt Materialien zum Kern zu transportieren.\n Erstelle eine Reihe von Transportbändern zum Kern.
tutorial.morecopper = Du brauchst [accent]mehr Kupfer[]!\n\nEntweder du baust es manuell ab, oder du platzierst weitere Bohrer. tutorial.morecopper = Du brauchst [accent]mehr Kupfer[]!\n\nEntweder du baust es manuell ab, oder du platzierst weitere Bohrer.
tutorial.Geschützturm = Wir benötigen Verteidigung gegen den [LIGHT_GRAY] Gegner[].\n Baue einen Duo Turm nahe deiner Basis. tutorial.turret = Defensive structures must be built to repel the[LIGHT_GRAY] enemy[].\nBuild a duo turret near your base.
tutorial.drillGeschützturm = Der Duo Turm benötigt[accent] Kupfer[] als Munition. Platziere einen Bohrer neben dem Turm, um ihn mit Kupfer zu versorgen. tutorial.drillturret = Duo turrets require[accent] copper ammo []to shoot.\nPlace a drill next to the turret to supply it with mined copper.
tutorial.waves = Der [LIGHT_GRAY] Gegner[] greift an.\n\nVerteidige deinen Kern 2 Wellen lang. Bau mehr Türme. tutorial.waves = Der [LIGHT_GRAY] Gegner[] greift an.\n\nVerteidige deinen Kern 2 Wellen lang. Bau mehr Türme.
tutorial.lead = Mehr Erz ist verfügbar. Finde Blei und bau es ab.\n\n Klicke auf deine Einheit und ziehe die Maus auf den Kern um Ressourcen zu übertragen. tutorial.lead = Mehr Erz ist verfügbar. Finde Blei und bau es ab.\n\n Klicke auf deine Einheit und ziehe die Maus auf den Kern um Ressourcen zu übertragen.
tutorial.smelter = Kupfer und Blei sind schwache Metalle.\n Super [accent]dichte Legierung [] kann in einem Schmeltzer erzeugt werden.\n\n Bau einen. tutorial.smelter = Kupfer und Blei sind schwache Metalle.\n Super [accent]dichte Legierung [] kann in einem Schmeltzer erzeugt werden.\n\n Bau einen.
@@ -667,7 +668,6 @@ tutorial.daggerfactory = Konstruiere eine Dagger Mech Fabrik.\n\n Diese wird ver
tutorial.router = Fabriken benötigen Ressourcen um zu funktionieren.\n Platziere ein Router um Materialien auf Transportbändern aufzuteilen. tutorial.router = Fabriken benötigen Ressourcen um zu funktionieren.\n Platziere ein Router um Materialien auf Transportbändern aufzuteilen.
tutorial.dagger = Verbinde die Fabrik mit einem Stromknoten. Wenn alle Voraussetzungen gegeben sind, beginnt die Fabrik Mechs zu konstruieren.\n\n Platziere mehr Bohrer und Transportbänder um die Versorgung der Fabrik zu sichern. tutorial.dagger = Verbinde die Fabrik mit einem Stromknoten. Wenn alle Voraussetzungen gegeben sind, beginnt die Fabrik Mechs zu konstruieren.\n\n Platziere mehr Bohrer und Transportbänder um die Versorgung der Fabrik zu sichern.
tutorial.battle = Der[LIGHT_GRAY] Gegner[] hat seinen Kern offenbart.\nZerstöre ihn mit deiner Einheit und den Dagger Mechs. tutorial.battle = Der[LIGHT_GRAY] Gegner[] hat seinen Kern offenbart.\nZerstöre ihn mit deiner Einheit und den Dagger Mechs.
block.core.description = Das wichtigste Gebäude im Spiel
block.copper-wall.description = Ein günstiger Verteidigungsblock.\nNützlich, um die Basis und Türme in den ersten Wellen zu beschützen. block.copper-wall.description = Ein günstiger Verteidigungsblock.\nNützlich, um die Basis und Türme in den ersten Wellen zu beschützen.
block.copper-wall-large.description = Ein günstiger Verteidigungsblock.\nNützlich, um die Basis und Türme in den ersten Wellen zu beschützen.\nBenötigt mehrere Kacheln. block.copper-wall-large.description = Ein günstiger Verteidigungsblock.\nNützlich, um die Basis und Türme in den ersten Wellen zu beschützen.\nBenötigt mehrere Kacheln.
block.dense-alloy-wall.description = Ein Standard-Verteidigungsblock.\nAngemessener Schutz vor Feinden. block.dense-alloy-wall.description = Ein Standard-Verteidigungsblock.\nAngemessener Schutz vor Feinden.
+8 -8
View File
@@ -9,8 +9,6 @@ text.link.itch.io.description = itch.io es la página donde podes descargar las
text.link.google-play.description = Ficha en la Google Play Store text.link.google-play.description = Ficha en la Google Play Store
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!\nDescarga el juego para usarlo.
text.web.unsupported = ¡La versión web no soporta esta característica! Descarga el juego para poder usarla.
text.gameover = Tu núcleo ha sido destruido. text.gameover = Tu núcleo ha sido destruido.
text.gameover.pvp = ¡El equipo[accent] {0}[] ha ganado! text.gameover.pvp = ¡El equipo[accent] {0}[] ha ganado!
text.sector.gameover = Este sector ha sido perdido. ¿Re-desplegar? text.sector.gameover = Este sector ha sido perdido. ¿Re-desplegar?
@@ -184,7 +182,7 @@ text.changelog.title = Registro de Parches
text.changelog.loading = Consiguiendo el registro de parches... text.changelog.loading = Consiguiendo el registro de parches...
text.changelog.error.android = [accent]¡Nota: el registro de parches a veces no funciona en Android 4.4 o inferior!\nEsto es por un error interno de Android. text.changelog.error.android = [accent]¡Nota: el registro de parches a veces no funciona en Android 4.4 o inferior!\nEsto es por un error interno de Android.
text.changelog.error.ios = [accent]El registro de parches no está actualmente soportado para iOS. text.changelog.error.ios = [accent]El registro de parches no está actualmente soportado para iOS.
text.changelog.error = [scarlet]¡Error consiguiendo el registro de parches!\Comprueba tu conexión a Internet. text.changelog.error = [scarlet]¡Error consiguiendo el registro de parches!Comprueba tu conexión a Internet.
text.changelog.current = [yellow][[Versión actual] text.changelog.current = [yellow][[Versión actual]
text.changelog.latest = [accent][[Última version] text.changelog.latest = [accent][[Última version]
text.loading = [accent]Cargando... text.loading = [accent]Cargando...
@@ -288,6 +286,7 @@ text.no = No
text.info.title = [accent]Información text.info.title = [accent]Información
text.error.title = [crimson]Un error ha ocurrido. text.error.title = [crimson]Un error ha ocurrido.
text.error.crashtitle = Un error ha ocurrido. text.error.crashtitle = Un error ha ocurrido.
text.blocks.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = Información del Bloque text.blocks.blockinfo = Información del Bloque
text.blocks.powercapacity = Capacidad de Energía text.blocks.powercapacity = Capacidad de Energía
text.blocks.powershot = Energía/Disparo text.blocks.powershot = Energía/Disparo
@@ -320,7 +319,8 @@ text.blocks.coolant = Refrigerante
text.blocks.coolantuse = Uso del Refrigerante text.blocks.coolantuse = Uso del Refrigerante
text.blocks.inputliquidfuel = Combustible Líquido text.blocks.inputliquidfuel = Combustible Líquido
text.blocks.liquidfueluse = Uso del Combustible Líquido text.blocks.liquidfueluse = Uso del Combustible Líquido
text.blocks.explosive = ¡Altamente Explosivo! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Vida text.blocks.health = Vida
text.blocks.inaccuracy = Imprecisión text.blocks.inaccuracy = Imprecisión
text.blocks.shots = Disparos text.blocks.shots = Disparos
@@ -345,6 +345,7 @@ text.category.liquids = Líquidos
text.category.items = Objetos text.category.items = Objetos
text.category.crafting = Fabricación text.category.crafting = Fabricación
text.category.shooting = Disparo text.category.shooting = Disparo
text.category.optional = Optional Enhancements
setting.autotarget.name = Auto apuntado setting.autotarget.name = Auto apuntado
setting.fpscap.name = Máx FPS setting.fpscap.name = Máx FPS
setting.fpscap.none = Nada setting.fpscap.none = Nada
@@ -361,7 +362,6 @@ setting.sensitivity.name = Sensibilidad del Control
setting.saveinterval.name = Intervalo del Auto-guardado setting.saveinterval.name = Intervalo del Auto-guardado
setting.seconds = {0} Segundos setting.seconds = {0} Segundos
setting.fullscreen.name = Pantalla Completa setting.fullscreen.name = Pantalla Completa
setting.multithread.name = Multiproceso
setting.fps.name = Mostrar FPS setting.fps.name = Mostrar FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Mostrar Energía de los Láseres setting.lasers.name = Mostrar Energía de los Láseres
@@ -370,6 +370,7 @@ setting.musicvol.name = Volumen de la Música
setting.mutemusic.name = Silenciar Musica setting.mutemusic.name = Silenciar Musica
setting.sfxvol.name = Volumen de los efectos de sonido setting.sfxvol.name = Volumen de los efectos de sonido
setting.mutesound.name = Silenciar Sonido setting.mutesound.name = Silenciar Sonido
setting.crashreport.name = Send Anonymous Crash Reports
text.keybind.title = Reasignar Teclas text.keybind.title = Reasignar Teclas
category.general.name = General category.general.name = General
category.view.name = Visión category.view.name = Visión
@@ -405,8 +406,6 @@ mode.waves.name = hordas
mode.waves.description = El modo normal. con recursos limitados y entrada de hordas automática. mode.waves.description = El modo normal. con recursos limitados y entrada de hordas automática.
mode.sandbox.name = sandbox mode.sandbox.name = sandbox
mode.sandbox.description = Recursos ilimitados y sin temporizador para las hordas. mode.sandbox.description = Recursos ilimitados y sin temporizador para las hordas.
mode.custom.warning = Ten en cuenta que los bloques no pueden usarse en partidas personalizadas hasta que se desbloqueen en sectores.\n\n[LIGHT_GRAY]Si no desbloqueaste ningún bloque, ningno aparecerá.
mode.custom.warning.read = Solo para asegurar que lo has leído:\n[scarlet]¡LOS DESBLOQUEOS EN PARTIDAS PERSONALIZADAS NO ESTÁN DISPONIBLES EN LOS SECTORES U OTROS MODOS DE JUEGO!\n\n[LIGHT_GRAY](Ojalá esto no fuera necesario, pero parece que lo es)
mode.freebuild.name = construcción libre mode.freebuild.name = construcción libre
mode.freebuild.description = recursos limitados y no hay temporizador para las hordas. mode.freebuild.description = recursos limitados y no hay temporizador para las hordas.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Hablidad: {0}
text.liquid.heatcapacity = [LIGHT_GRAY]Capacidad Térmica: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Capacidad Térmica: {0}
text.liquid.viscosity = [LIGHT_GRAY]Viscosidad: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosidad: {0}
text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0} text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = Punto de generación block.spawn.name = Punto de generación
block.core.name = Núcleo block.core.name = Núcleo
block.metalfloor.name = Suelo de Metal block.metalfloor.name = Suelo de Metal
@@ -623,6 +623,7 @@ block.rtg-generator.name = Generador RTG
block.spectre.name = Espectro block.spectre.name = Espectro
block.meltdown.name = Meltdown block.meltdown.name = Meltdown
block.container.name = Contenedor block.container.name = Contenedor
block.core.description = The most important building in the game.
team.blue.name = Azul team.blue.name = Azul
team.red.name = Rojo team.red.name = Rojo
team.orange.name = Naranja team.orange.name = Naranja
@@ -743,7 +744,6 @@ block.javelin-ship-pad.description = Deja tu nave actual y transfórmate en una
block.glaive-ship-pad.description = Deja tu nave actual y transfórmate en una unidad aérea grande y bien armada nave pistolera.\nUsa el pad tocándolo dos veces mientras estás en él. block.glaive-ship-pad.description = Deja tu nave actual y transfórmate en una unidad aérea grande y bien armada nave pistolera.\nUsa el pad tocándolo dos veces mientras estás en él.
block.tau-mech-pad.description = Deja tu nave actual y transfórmate en un mecanoide de soporte que puede reparar construcciones y tropas aliadas.\nUsa el pad tocándolo dos veces mientras estás en él. block.tau-mech-pad.description = Deja tu nave actual y transfórmate en un mecanoide de soporte que puede reparar construcciones y tropas aliadas.\nUsa el pad tocándolo dos veces mientras estás en él.
block.delta-mech-pad.description = Leave your current vessel and change into a fast, lightly-armored mech made for hit-and-run attacks.\nUse the pad by double tapping while standing on it. block.delta-mech-pad.description = Leave your current vessel and change into a fast, lightly-armored mech made for hit-and-run attacks.\nUse the pad by double tapping while standing on it.
Deja tu nave actual y transfórmate en un mecanoide rápido, con armas ligeras hecho para ataques de ataque y retirada.\nUsa el pad tocándolo dos veces mientras estás en él.
block.omega-mech-pad.description = Deja tu nave actual y transfórmate en un mecanoide pesado y bien armado, hecho para asaltos en primera línea.\nUsa el pad tocándolo dos veces mientras estás en él. block.omega-mech-pad.description = Deja tu nave actual y transfórmate en un mecanoide pesado y bien armado, hecho para asaltos en primera línea.\nUsa el pad tocándolo dos veces mientras estás en él.
block.spirit-factory.description = Produce drones ligeros que obtienen minerales y reparan bloques. block.spirit-factory.description = Produce drones ligeros que obtienen minerales y reparan bloques.
block.phantom-factory.description = Produce drones avanzados que son significativamente más eficientes que un dron espíritu. block.phantom-factory.description = Produce drones avanzados que son significativamente más eficientes que un dron espíritu.
+6 -6
View File
@@ -9,8 +9,6 @@ text.link.itch.io.description = page itch.io avec le lien du téléchargement po
text.link.google-play.description = listing par le store google play text.link.google-play.description = listing par le store google play
text.link.wiki.description = wiki officiel de mindustry . text.link.wiki.description = wiki officiel de mindustry .
text.linkfail = Erreur lors de l'ouverture du lien !\nL'URL a été copié avec succès. text.linkfail = Erreur lors de l'ouverture du lien !\nL'URL a été copié avec succès.
text.editor.web = La version web ne possède pas l'éditeur !\nTéléchargez le jeu pour l'avoir.
text.web.unsupported = La version web ne supporte pas cette fonction ! Téléchargez le jeu pour l'utiliser.
text.gameover = Partie terminée. text.gameover = Partie terminée.
text.gameover.pvp = L'équipe [accent] {0}[] a gagnée ! text.gameover.pvp = L'équipe [accent] {0}[] a gagnée !
text.sector.gameover = Ce secteur a été perdu. Réessayer? text.sector.gameover = Ce secteur a été perdu. Réessayer?
@@ -288,6 +286,7 @@ text.no = Non
text.info.title = Info text.info.title = Info
text.error.title = [crimson]Une erreur s'est produite text.error.title = [crimson]Une erreur s'est produite
text.error.crashtitle = Une erreur s'est produite text.error.crashtitle = Une erreur s'est produite
text.blocks.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = Info sur le bloc text.blocks.blockinfo = Info sur le bloc
text.blocks.powercapacity = capacité d'énergie text.blocks.powercapacity = capacité d'énergie
text.blocks.powershot = Énergie/Tir text.blocks.powershot = Énergie/Tir
@@ -320,7 +319,8 @@ text.blocks.coolant = Liquide de refroidissement
text.blocks.coolantuse = Quantité de liquide de refroidissement utilisée text.blocks.coolantuse = Quantité de liquide de refroidissement utilisée
text.blocks.inputliquidfuel = Carburant liquide text.blocks.inputliquidfuel = Carburant liquide
text.blocks.liquidfueluse = Quantité de carburant liquide utilisé text.blocks.liquidfueluse = Quantité de carburant liquide utilisé
text.blocks.explosive = Hautement explosif! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Santé text.blocks.health = Santé
text.blocks.inaccuracy = Précision text.blocks.inaccuracy = Précision
text.blocks.shots = Tir text.blocks.shots = Tir
@@ -345,6 +345,7 @@ text.category.liquids = Liquides
text.category.items = Objets text.category.items = Objets
text.category.crafting = Fabrication text.category.crafting = Fabrication
text.category.shooting = Défense text.category.shooting = Défense
text.category.optional = Optional Enhancements
setting.autotarget.name = Visée automatique setting.autotarget.name = Visée automatique
setting.fpscap.name = Max FPS setting.fpscap.name = Max FPS
setting.fpscap.none = None setting.fpscap.none = None
@@ -361,7 +362,6 @@ setting.sensitivity.name = Sensibilité de la manette
setting.saveinterval.name = Intervalle des sauvegardes auto setting.saveinterval.name = Intervalle des sauvegardes auto
setting.seconds = {0} secondes setting.seconds = {0} secondes
setting.fullscreen.name = Plein écran setting.fullscreen.name = Plein écran
setting.multithread.name = Multithreading [scarlet] (instable!)
setting.fps.name = Afficher FPS setting.fps.name = Afficher FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Afficher les rayons des lasers setting.lasers.name = Afficher les rayons des lasers
@@ -370,6 +370,7 @@ setting.musicvol.name = volume de la musique
setting.mutemusic.name = Couper la musique setting.mutemusic.name = Couper la musique
setting.sfxvol.name = Volume des SFX setting.sfxvol.name = Volume des SFX
setting.mutesound.name = Couper les SFX setting.mutesound.name = Couper les SFX
setting.crashreport.name = Send Anonymous Crash Reports
text.keybind.title = Paramétrer les touches text.keybind.title = Paramétrer les touches
category.general.name = General category.general.name = General
category.view.name = Voir category.view.name = Voir
@@ -405,8 +406,6 @@ mode.waves.name = Vagues
mode.waves.description = le mode de jeu normal. Ressource limitée et vagues d'ennemis. mode.waves.description = le mode de jeu normal. Ressource limitée et vagues d'ennemis.
mode.sandbox.name = bac à sable mode.sandbox.name = bac à sable
mode.sandbox.description = Ressources infinies et pas de timer pour les vagues. mode.sandbox.description = Ressources infinies et pas de timer pour les vagues.
mode.custom.warning = Notez que les blocs débloqués en partie personnalisées ne sont pas conservés pour les secteurs.\n\n[LIGHT_GRAY]En mode bac à sable, seul les blocs débloqués en mode secteur peuvent être utilisés.
mode.custom.warning.read = Simplement pour vérifier que vous l'avez lu :\n[scarlet]CE QUI EST DEBLOQUE LORS DES PARITES PERSONNALISEES NE L'EST POUR LES SECTEURS OU LES AUTRES MODES DE JEU!\n\n[LIGHT_GRAY](J'aurais souhaité que ce ne soit pas nécessaire, mais ça a l'air de l'être )
mode.freebuild.name = construction libre mode.freebuild.name = construction libre
mode.freebuild.description = Ressource limitée et pas de timer pour les vagues. mode.freebuild.description = Ressource limitée et pas de timer pour les vagues.
mode.pvp.name = JcJ mode.pvp.name = JcJ
@@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Compétence: {0}
text.liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique: {0}
text.liquid.viscosity = [LIGHT_GRAY]Viscosité: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosité: {0}
text.liquid.temperature = [LIGHT_GRAY]Température: {0} text.liquid.temperature = [LIGHT_GRAY]Température: {0}
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = Générateur d'ennemi block.spawn.name = Générateur d'ennemi
block.core.name = Base block.core.name = Base
block.metalfloor.name = Sol en métal block.metalfloor.name = Sol en métal
+8 -9
View File
@@ -9,8 +9,6 @@ text.link.itch.io.description = Page web itch.io avec les versions ordinateurs t
text.link.google-play.description = Page Google Play Store du jeu text.link.google-play.description = Page Google Play Store du jeu
text.link.wiki.description = Wiki officiel de Mindustry text.link.wiki.description = Wiki officiel de Mindustry
text.linkfail = L'ouverture du lien a échoué!\nL'URL a été copiée dans votre presse-papier. text.linkfail = L'ouverture du lien a échoué!\nL'URL a été copiée dans votre presse-papier.
text.editor.web = La version web ne prend pas en charge l'éditeur !\nTéléchargez le jeu pour l'utiliser.
text.web.unsupported = La version web ne prend pas en charge cette fonctionnalité ! Téléchargez le jeu pour l'utiliser.
text.gameover = Le base a été détruit. text.gameover = Le base a été détruit.
text.gameover.pvp = L'équipe[accent] {0}[] a gagnée ! text.gameover.pvp = L'équipe[accent] {0}[] a gagnée !
text.sector.gameover = Ce secteur a été perdu. Réessayer ? text.sector.gameover = Ce secteur a été perdu. Réessayer ?
@@ -64,7 +62,7 @@ text.mission.linknode = Reliez le transmetteur énergétique
text.mission.display = [accent]Mission:\n[LIGHT_GRAY]{0} text.mission.display = [accent]Mission:\n[LIGHT_GRAY]{0}
text.mission.mech = Changer de mécha[accent] {0}[] text.mission.mech = Changer de mécha[accent] {0}[]
text.mission.create = Créez[accent] {0}[] text.mission.create = Créez[accent] {0}[]
text.none = <none> text.none = <Vide>
text.close = Fermer text.close = Fermer
text.quit = Quitter text.quit = Quitter
text.maps = Cartes text.maps = Cartes
@@ -288,6 +286,7 @@ text.no = Non
text.info.title = Info text.info.title = Info
text.error.title = [crimson]Une erreur s'est produite text.error.title = [crimson]Une erreur s'est produite
text.error.crashtitle = Une erreur s'est produite text.error.crashtitle = Une erreur s'est produite
text.blocks.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = Info sur le bloc text.blocks.blockinfo = Info sur le bloc
text.blocks.powercapacity = Capacité d'énergie text.blocks.powercapacity = Capacité d'énergie
text.blocks.powershot = Énergie/Tir text.blocks.powershot = Énergie/Tir
@@ -320,7 +319,8 @@ text.blocks.coolant = Liquide de refroidissement
text.blocks.coolantuse = Quantité de liquide de refroidissement utilisé text.blocks.coolantuse = Quantité de liquide de refroidissement utilisé
text.blocks.inputliquidfuel = Carburant liquide text.blocks.inputliquidfuel = Carburant liquide
text.blocks.liquidfueluse = Quantité de carburant liquide utilisé text.blocks.liquidfueluse = Quantité de carburant liquide utilisé
text.blocks.explosive = Hautement explosif ! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Santé text.blocks.health = Santé
text.blocks.inaccuracy = Précision text.blocks.inaccuracy = Précision
text.blocks.shots = Tirs text.blocks.shots = Tirs
@@ -345,6 +345,7 @@ text.category.liquids = Liquides
text.category.items = Objets text.category.items = Objets
text.category.crafting = Fabrication text.category.crafting = Fabrication
text.category.shooting = Défense text.category.shooting = Défense
text.category.optional = Optional Enhancements
setting.autotarget.name = Visée automatique setting.autotarget.name = Visée automatique
setting.fpscap.name = Max FPS setting.fpscap.name = Max FPS
setting.fpscap.none = Vide setting.fpscap.none = Vide
@@ -361,7 +362,6 @@ setting.sensitivity.name = Contôle de la sensibilité
setting.saveinterval.name = Intervalle des sauvegardes auto setting.saveinterval.name = Intervalle des sauvegardes auto
setting.seconds = {0} Secondes setting.seconds = {0} Secondes
setting.fullscreen.name = Plein écran setting.fullscreen.name = Plein écran
setting.multithread.name = Multithreading
setting.fps.name = Afficher FPS setting.fps.name = Afficher FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Afficher les rayons des lasers setting.lasers.name = Afficher les rayons des lasers
@@ -370,6 +370,7 @@ setting.musicvol.name = Volume de la musique
setting.mutemusic.name = Couper la musique setting.mutemusic.name = Couper la musique
setting.sfxvol.name = Volume des SFX setting.sfxvol.name = Volume des SFX
setting.mutesound.name = Couper les SFX setting.mutesound.name = Couper les SFX
setting.crashreport.name = Envoyer des rapports d'incident anonymement.
text.keybind.title = Paramétrer les touches text.keybind.title = Paramétrer les touches
category.general.name = Général category.general.name = Général
category.view.name = Voir category.view.name = Voir
@@ -405,8 +406,6 @@ mode.waves.name = Vagues
mode.waves.description = Le mode normal. Ressources limitées et vagues déclenchées automatiquement. mode.waves.description = Le mode normal. Ressources limitées et vagues déclenchées automatiquement.
mode.sandbox.name = Bac à sable mode.sandbox.name = Bac à sable
mode.sandbox.description = Ressources infinies et pas de compte à rebours pour les vagues. mode.sandbox.description = Ressources infinies et pas de compte à rebours pour les vagues.
mode.custom.warning = Notez que les blocs débloqués en partie personnalisées ne sont pas conservés pour les secteurs.\n\n[LIGHT_GRAY]En mode bac à sable, seul les blocs débloqués en mode secteur peuvent être utilisés.
mode.custom.warning.read = Juste pour vous assurer que vous l'avez lu:\n[scarlet]Les déverrouillages dans les jeux personnalisés ne sont pas transférés aux secteurs ou à d'autres modes!\n\n[LIGHT_GRAY](J'aimerais que ce ne soit pas nécessaire, mais apparemment c'est le cas)
mode.freebuild.name = Construction libre mode.freebuild.name = Construction libre
mode.freebuild.description = Ressources limitées et pas de compte à rebours pour les vagues. mode.freebuild.description = Ressources limitées et pas de compte à rebours pour les vagues.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Compétence: {0}
text.liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique {0} text.liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique {0}
text.liquid.viscosity = [LIGHT_GRAY]Viscosité: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosité: {0}
text.liquid.temperature = [LIGHT_GRAY]Température: {0} text.liquid.temperature = [LIGHT_GRAY]Température: {0}
block.constructing = {0}\n[LIGHT_GRAY](En construction)
block.spawn.name = Générateur d'ennemi block.spawn.name = Générateur d'ennemi
block.core.name = Base block.core.name = Base
block.metalfloor.name = Sol en métal block.metalfloor.name = Sol en métal
@@ -668,7 +668,6 @@ tutorial.daggerfactory = Construire [accent]une usine de "Poignards" []est recom
tutorial.router = Les usines ont besoin de ressources pour fonctionner.\nCréez un routeur pour séparer les objets. tutorial.router = Les usines ont besoin de ressources pour fonctionner.\nCréez un routeur pour séparer les objets.
tutorial.dagger = Reliez des transmetteurs énergétiques à l'usine.\nUne fois que les conditions seront remplies , un mécha sera créé.\nConstruisez autant de foreuses, de générateurs et de tapis roulants que nécessaire. tutorial.dagger = Reliez des transmetteurs énergétiques à l'usine.\nUne fois que les conditions seront remplies , un mécha sera créé.\nConstruisez autant de foreuses, de générateurs et de tapis roulants que nécessaire.
tutorial.battle = [LIGHT_GRAY]L'Ennemi[] a révélé sa base.\nDétruisez la avec votre unité et des méchas "Poignard". tutorial.battle = [LIGHT_GRAY]L'Ennemi[] a révélé sa base.\nDétruisez la avec votre unité et des méchas "Poignard".
block.copper-wall.description = Un bloc défensif bon marché.\nUtile pour protéger le noyau et les tourelles lors des premières vagues. block.copper-wall.description = Un bloc défensif bon marché.\nUtile pour protéger le noyau et les tourelles lors des premières vagues.
block.copper-wall-large.description = Un bloc défensif bon marché.\nUtile pour protéger le noyau et les tourelles lors des premières vagues.\nS'étend sur plusieurs tuiles. block.copper-wall-large.description = Un bloc défensif bon marché.\nUtile pour protéger le noyau et les tourelles lors des premières vagues.\nS'étend sur plusieurs tuiles.
block.dense-alloy-wall.description = Un bloc défensif standard.\nUne protection adéquate contre les ennemis. block.dense-alloy-wall.description = Un bloc défensif standard.\nUne protection adéquate contre les ennemis.
@@ -685,7 +684,7 @@ block.mend-projector.description = Guérit périodiquement les bâtiments situé
block.overdrive-projector.description = Augmente la vitesse des bâtiments à proximité, comme les foreuses et les convoyeurs. block.overdrive-projector.description = Augmente la vitesse des bâtiments à proximité, comme les foreuses et les convoyeurs.
block.force-projector.description = Crée un champ de force hexagonal autour de lui-même, protégeant les bâtiments et les unités internes des dommages causés par les balles. block.force-projector.description = Crée un champ de force hexagonal autour de lui-même, protégeant les bâtiments et les unités internes des dommages causés par les balles.
block.shock-mine.description = Endommage les ennemis qui marchent sur la mine. Presque invisible à l'ennemi. block.shock-mine.description = Endommage les ennemis qui marchent sur la mine. Presque invisible à l'ennemi.
block.duo.description =Une petite tourelle pas chère. block.duo.description = Une petite tourelle pas chère.
block.arc.description = Une petite tourelle qui tire de l'électricité dans un arc au hasard vers l'ennemi. block.arc.description = Une petite tourelle qui tire de l'électricité dans un arc au hasard vers l'ennemi.
block.hail.description = Une petite tourelle d'artillerie. block.hail.description = Une petite tourelle d'artillerie.
block.lancer.description = Une tourelle de taille moyenne qui tire des faisceaux d’électricité chargés. block.lancer.description = Une tourelle de taille moyenne qui tire des faisceaux d’électricité chargés.
+6 -6
View File
@@ -9,8 +9,6 @@ text.link.itch.io.description = itch.io page with PC downloads and web version
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 = 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.web.unsupported = The web version does not support this feature! Download the game to use it.
text.gameover = Intinya hancur. text.gameover = Intinya hancur.
text.gameover.pvp = The[accent] {0}[] team is victorious! text.gameover.pvp = The[accent] {0}[] team is victorious!
text.sector.gameover = This sector has been lost. Re-deploy? text.sector.gameover = This sector has been lost. Re-deploy?
@@ -288,6 +286,7 @@ text.no = No
text.info.title = [accent]Info text.info.title = [accent]Info
text.error.title = [crimson]Telah terjadi kesalahan text.error.title = [crimson]Telah terjadi kesalahan
text.error.crashtitle = Telah terjadi kesalahan text.error.crashtitle = Telah terjadi kesalahan
text.blocks.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = Info Blok text.blocks.blockinfo = Info Blok
text.blocks.powercapacity = Kapasitas Tenaga text.blocks.powercapacity = Kapasitas Tenaga
text.blocks.powershot = Tenaga/tembakan text.blocks.powershot = Tenaga/tembakan
@@ -320,7 +319,8 @@ text.blocks.coolant = Coolant
text.blocks.coolantuse = Coolant Use text.blocks.coolantuse = Coolant Use
text.blocks.inputliquidfuel = Fuel Liquid text.blocks.inputliquidfuel = Fuel Liquid
text.blocks.liquidfueluse = Liquid Fuel Use text.blocks.liquidfueluse = Liquid Fuel Use
text.blocks.explosive = Mudah meledak! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Darah text.blocks.health = Darah
text.blocks.inaccuracy = Ketidaktelitian text.blocks.inaccuracy = Ketidaktelitian
text.blocks.shots = Tembakan text.blocks.shots = Tembakan
@@ -345,6 +345,7 @@ 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
text.category.optional = Optional Enhancements
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
setting.fpscap.name = Max FPS setting.fpscap.name = Max FPS
setting.fpscap.none = None setting.fpscap.none = None
@@ -361,7 +362,6 @@ setting.sensitivity.name = Sensitivitas Pengendali
setting.saveinterval.name = Waktu Simpan Otomatis setting.saveinterval.name = Waktu Simpan Otomatis
setting.seconds = {0} Detik setting.seconds = {0} Detik
setting.fullscreen.name = Layar Penuh setting.fullscreen.name = Layar Penuh
setting.multithread.name = Multithreading
setting.fps.name = Tunjukkan FPS setting.fps.name = Tunjukkan FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Tampilkan Laser Tenaga setting.lasers.name = Tampilkan Laser Tenaga
@@ -370,6 +370,7 @@ 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
setting.crashreport.name = Send Anonymous Crash Reports
text.keybind.title = Rebind Keys text.keybind.title = Rebind Keys
category.general.name = General category.general.name = General
category.view.name = View category.view.name = View
@@ -405,8 +406,6 @@ mode.waves.name = gelombang
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.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
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.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Ability: {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}
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = Enemy Spawn block.spawn.name = Enemy Spawn
block.core.name = Core block.core.name = Core
block.metalfloor.name = Metal Floor block.metalfloor.name = Metal Floor
+6 -6
View File
@@ -9,8 +9,6 @@ text.link.itch.io.description = pagina di itch.io con download per PC e versione
text.link.google-play.description = Elenco di Google Play Store 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.web.unsupported = La vcersione web non supporta questa funzione! Sacrica il gioco per utilizzarla.
text.gameover = Il nucleo è stato distrutto. text.gameover = Il nucleo è stato distrutto.
text.gameover.pvp = The[accent] {0}[] team is victorious! text.gameover.pvp = The[accent] {0}[] team is victorious!
text.sector.gameover = Hai perso questo settore. Attaccare di nuovo? text.sector.gameover = Hai perso questo settore. Attaccare di nuovo?
@@ -288,6 +286,7 @@ text.no = No
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
text.error.crashtitle = Si è verificato un errore text.error.crashtitle = Si è verificato un errore
text.blocks.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = info sul blocco text.blocks.blockinfo = info sul blocco
text.blocks.powercapacity = Capacità Energetica text.blocks.powercapacity = Capacità Energetica
text.blocks.powershot = Danno/Colpo text.blocks.powershot = Danno/Colpo
@@ -320,7 +319,8 @@ text.blocks.coolant = Refrigerante
text.blocks.coolantuse = uso refrigerante text.blocks.coolantuse = uso refrigerante
text.blocks.inputliquidfuel = carburante liquido text.blocks.inputliquidfuel = carburante liquido
text.blocks.liquidfueluse = Utilizzo carburante liquido text.blocks.liquidfueluse = Utilizzo carburante liquido
text.blocks.explosive = Altamente esplosivo! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Salute text.blocks.health = Salute
text.blocks.inaccuracy = Inaccuratezza text.blocks.inaccuracy = Inaccuratezza
text.blocks.shots = Colpi text.blocks.shots = Colpi
@@ -345,6 +345,7 @@ text.category.liquids = Liquidi
text.category.items = Oggetti text.category.items = Oggetti
text.category.crafting = Produzione text.category.crafting = Produzione
text.category.shooting = Potenza di fuoco text.category.shooting = Potenza di fuoco
text.category.optional = Optional Enhancements
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
setting.fpscap.name = Limite FPS setting.fpscap.name = Limite FPS
setting.fpscap.none = Niente setting.fpscap.none = Niente
@@ -361,7 +362,6 @@ setting.sensitivity.name = Sensibilità del controller
setting.saveinterval.name = Intervallo di salvataggio automatico setting.saveinterval.name = Intervallo di salvataggio automatico
setting.seconds = {0} Secondi setting.seconds = {0} Secondi
setting.fullscreen.name = Schermo Intero setting.fullscreen.name = Schermo Intero
setting.multithread.name = multithreading
setting.fps.name = Mostra FPS setting.fps.name = Mostra FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Mostra Laser Energetici setting.lasers.name = Mostra Laser Energetici
@@ -370,6 +370,7 @@ 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
setting.crashreport.name = Send Anonymous Crash Reports
text.keybind.title = Configurazione Tasti text.keybind.title = Configurazione Tasti
category.general.name = Generale category.general.name = Generale
category.view.name = Visualizzazione category.view.name = Visualizzazione
@@ -405,8 +406,6 @@ mode.waves.name = ondate
mode.waves.description = modalità normale. risorse limitate e ondate automatiche. mode.waves.description = modalità normale. risorse limitate e ondate automatiche.
mode.sandbox.name = Sandbox mode.sandbox.name = Sandbox
mode.sandbox.description = risorse infinite e nessun timer per le ondate. mode.sandbox.description = risorse infinite e nessun timer per le ondate.
mode.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
mode.freebuild.name = freebuild mode.freebuild.name = freebuild
mode.freebuild.description = risorse limitate e nessun timer per le ondate. mode.freebuild.description = risorse limitate e nessun timer per le ondate.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Abilità: {0}
text.liquid.heatcapacity = [LIGHT_GRAY]Capacità calorifica: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Capacità calorifica: {0}
text.liquid.viscosity = [LIGHT_GRAY]Viscosità: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosità: {0}
text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0} text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = Enemy Spawn block.spawn.name = Enemy Spawn
block.core.name = Nucleo block.core.name = Nucleo
block.metalfloor.name = Pavimento di ferro block.metalfloor.name = Pavimento di ferro
+118 -121
View File
@@ -1,6 +1,6 @@
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 = 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.credits = クレジット
text.discord = DiscordのMindustryに参加\! text.discord = DiscordのMindustryに参加!
text.link.discord.description = Mindustryの公式Discordグループ text.link.discord.description = Mindustryの公式Discordグループ
text.link.github.description = ゲームのソースコード text.link.github.description = ゲームのソースコード
text.link.dev-builds.description = 不安定な開発ビルド text.link.dev-builds.description = 不安定な開発ビルド
@@ -8,27 +8,25 @@ text.link.trello.description = 公式 Trelloボード の実装予定の機能
text.link.itch.io.description = itch.ioでPC版のダウンロードやweb版をプレイ text.link.itch.io.description = itch.ioでPC版のダウンロードやweb版をプレイ
text.link.google-play.description = Google Playのストアページ text.link.google-play.description = Google Playのストアページ
text.link.wiki.description = 公式 Mindustry Wiki text.link.wiki.description = 公式 Mindustry Wiki
text.linkfail = リンクを開くのに失敗しました\!\nURLをクリップボードにコピーしました。 text.linkfail = リンクを開くのに失敗しました!\nURLをクリップボードにコピーしました。
text.editor.web = Web版はエディターをサポートしていません\!\nゲームをダウンロードして、使用してください。
text.web.unsupported = Web版はこの機能をサポートしてません\! ゲームをダウンロードして、使用してください。
text.gameover = ゲームオーバー text.gameover = ゲームオーバー
text.gameover.pvp = [accent] {0}[] チームの勝利\! text.gameover.pvp = [accent] {0}[] チームの勝利!
text.sector.gameover = この区域は敗北しました。 再配備しますか? text.sector.gameover = この区域は敗北しました。 再配備しますか?
text.sector.retry = リトライ text.sector.retry = リトライ
text.highscore = [accent]ハイスコアを記録\! text.highscore = [accent]ハイスコアを記録!
text.wave.lasted = あなたはウェーブ[accent]{0}[]まで続きました。 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 = マップ "[accent]{0}[]" を削除してもよろしいですか? text.map.delete = マップ "[accent]{0}[]" を削除してもよろしいですか?
text.level.select = レベル選択 text.level.select = レベル選択
text.level.mode = ゲームモード\: text.level.mode = ゲームモード:
text.construction.desktop = ブロックの選択や建設を止めるには、[accent]スペースを使用してください[]。 text.construction.desktop = ブロックの選択や建設を止めるには、[accent]スペースを使用してください[]。
text.construction.title = ブロック建設ガイド text.construction.title = ブロック建設ガイド
text.construction = [accent]ブロック建設モード[]になりました。\n設置するには、機体の近くの設置可能な場所をタップしてください。\nブロックを選択した状態で、チェックボタンを押して確認すると、機体が建設を始めます。\n\n- [accent]ブロックの削除[]は、タップで範囲を選択してください。\n- [accent]範囲の選択[]は、長押しして、範囲のブロックをドラッグしてください。\n- [accent]一列にブロックを設置[]するには、 タップで空いている場所を長押しして、伸ばしたい方向にドラッグしてください\n- [accent]建設や範囲の選択をキャンセル[]するには、左下の X ボタンを押してください。 text.construction = [accent]ブロック建設モード[]になりました。\n設置するには、機体の近くの設置可能な場所をタップしてください。\nブロックを選択した状態で、チェックボタンを押して確認すると、機体が建設を始めます。\n\n- [accent]ブロックの削除[]は、タップで範囲を選択してください。\n- [accent]範囲の選択[]は、長押しして、範囲のブロックをドラッグしてください。\n- [accent]一列にブロックを設置[]するには、 タップで空いている場所を長押しして、伸ばしたい方向にドラッグしてください\n- [accent]建設や範囲の選択をキャンセル[]するには、左下の X ボタンを押してください。
text.deconstruction.title = ブロック撤去ガイド text.deconstruction.title = ブロック撤去ガイド
text.deconstruction = [accent]ブロック撤去モード[]になりました。\n\nブロックを撤去するには、機体の近くのブロックをタップしてください。\nブロックを選択した状態で、チェックボタンを押して確認すると、機体がブロックの撤去を始めます。\n\n- [accent]ブロックの破壊[]は、タップで範囲を選択してください。\n- [accent]範囲を選択してブロックを撤去[]するには、 タップで空いている場所を長押しして、伸ばしたい方向にドラッグしてください\n- [accent]撤去や範囲選択をキャンセル[]するには、左下の X ボタンを押してください。 text.deconstruction = [accent]ブロック撤去モード[]になりました。\n\nブロックを撤去するには、機体の近くのブロックをタップしてください。\nブロックを選択した状態で、チェックボタンを押して確認すると、機体がブロックの撤去を始めます。\n\n- [accent]ブロックの破壊[]は、タップで範囲を選択してください。\n- [accent]範囲を選択してブロックを撤去[]するには、 タップで空いている場所を長押しして、伸ばしたい方向にドラッグしてください\n- [accent]撤去や範囲選択をキャンセル[]するには、左下の X ボタンを押してください。
text.showagain = 次回以降表示しない text.showagain = 次回以降表示しない
text.coreattack = < コアが攻撃を受けています\! > text.coreattack = < コアが攻撃を受けています! >
text.unlocks = アンロック text.unlocks = アンロック
text.savegame = ゲームを保存 text.savegame = ゲームを保存
text.loadgame = ゲームを読み込む text.loadgame = ゲームを読み込む
@@ -36,19 +34,19 @@ text.joingame = ゲームに参加
text.addplayers = プレイヤーを追加/削除 text.addplayers = プレイヤーを追加/削除
text.customgame = カスタムゲーム text.customgame = カスタムゲーム
text.sectors = 区域 text.sectors = 区域
text.sector = 区域\: [LIGHT_GRAY]{0} text.sector = 区域: [LIGHT_GRAY]{0}
text.sector.time = 時間\: [LIGHT_GRAY]{0} text.sector.time = 時間: [LIGHT_GRAY]{0}
text.sector.deploy = 配備 text.sector.deploy = 配備
text.sector.abandon = 撤退 text.sector.abandon = 撤退
text.sector.abandon.confirm = 区域のすべての進行を撤退します。\nこれは元に戻すことはできません\! text.sector.abandon.confirm = 区域のすべての進行を撤退します。\nこれは元に戻すことはできません!
text.sector.resume = 再開 text.sector.resume = 再開
text.sector.locked = [scarlet][[不完全] text.sector.locked = [scarlet][[不完全]
text.sector.unexplored = [accent][[未調査] text.sector.unexplored = [accent][[未調査]
text.missions = ミッション\:[LIGHT_GRAY] {0} text.missions = ミッション:[LIGHT_GRAY] {0}
text.mission = ミッション\:[LIGHT_GRAY] {0} text.mission = ミッション:[LIGHT_GRAY] {0}
text.mission.main = メインミッション\:[LIGHT_GRAY] {0} text.mission.main = メインミッション:[LIGHT_GRAY] {0}
text.mission.info = ミッション情報 text.mission.info = ミッション情報
text.mission.complete = ミッション完了\! text.mission.complete = ミッション完了!
text.mission.complete.body = 区域 {0},{1} を征服しました。 text.mission.complete.body = 区域 {0},{1} を征服しました。
text.mission.wave = 残り[accent] {0}/{1} []ウェーブ\n次のウェーブまで {2} text.mission.wave = 残り[accent] {0}/{1} []ウェーブ\n次のウェーブまで {2}
text.mission.wave.enemies = 残り[accent] {0}/{1} []ウェーブ\n敵の残り {2} 体 text.mission.wave.enemies = 残り[accent] {0}/{1} []ウェーブ\n敵の残り {2} 体
@@ -56,12 +54,12 @@ text.mission.wave.enemy = 残り[accent] {0}/{1} []ウェーブ\n敵の残り {2
text.mission.wave.menu = 残り[accent] {0}[] ウェーブ text.mission.wave.menu = 残り[accent] {0}[] ウェーブ
text.mission.battle = 敵のコアを破壊する text.mission.battle = 敵のコアを破壊する
text.mission.resource.menu = {0} を{1}個を入手する text.mission.resource.menu = {0} を{1}個を入手する
text.mission.resource = {0} を入手する \:\n[accent]{1}/{2}[] text.mission.resource = {0} を入手する :\n[accent]{1}/{2}[]
text.mission.block = {0} を作る text.mission.block = {0} を作る
text.mission.unit = ユニット {0} を作る text.mission.unit = ユニット {0} を作る
text.mission.command = ユニットに {0} を命令する text.mission.command = ユニットに {0} を命令する
text.mission.linknode = 電源ノードを接続する text.mission.linknode = 電源ノードを接続する
text.mission.display = [accent]ミッション\:\n[LIGHT_GRAY]{0} text.mission.display = [accent]ミッション:\n[LIGHT_GRAY]{0}
text.mission.mech = 機体を[accent]{0}[]に乗り換える text.mission.mech = 機体を[accent]{0}[]に乗り換える
text.mission.create = [accent]{0}[] を作る text.mission.create = [accent]{0}[] を作る
text.none = <なし> text.none = <なし>
@@ -70,29 +68,29 @@ text.quit = 終了
text.maps = マップ text.maps = マップ
text.continue = 続ける text.continue = 続ける
text.nextmission = 次のミッションへ text.nextmission = 次のミッションへ
text.maps.none = [LIGHT_GRAY]マップが存在しません\! text.maps.none = [LIGHT_GRAY]マップが存在しません!
text.about.button = About text.about.button = About
text.name = 名前\: text.name = 名前:
text.filename = ファイル名\: text.filename = ファイル名:
text.unlocked = 新しいブロックをアンロック\! text.unlocked = 新しいブロックをアンロック!
text.unlocked.plural = 新しいブロックをアンロック\! text.unlocked.plural = 新しいブロックをアンロック!
text.players = {0} 人がオンライン text.players = {0} 人がオンライン
text.players.single = {0} 人がオンライン text.players.single = {0} 人がオンライン
text.server.closing = [accent]サーバーを閉じています... text.server.closing = [accent]サーバーを閉じています...
text.server.kicked.kick = サーバからキックされました\! text.server.kicked.kick = サーバからキックされました!
text.server.kicked.serverClose = サーバーが閉じました。 text.server.kicked.serverClose = サーバーが閉じました。
text.server.kicked.sectorComplete = 区域を制覇しました。 text.server.kicked.sectorComplete = 区域を制覇しました。
text.server.kicked.sectorComplete.text = ミッションが完了しました。\nサーバーは次の区域に移ります。 text.server.kicked.sectorComplete.text = ミッションが完了しました。\nサーバーは次の区域に移ります。
text.server.kicked.clientOutdated = 古いクライアントです\! ゲームをアップデートしてください\! text.server.kicked.clientOutdated = 古いクライアントです! ゲームをアップデートしてください!
text.server.kicked.serverOutdated = 古いサーバーです\! ホストに更新してもらってください\! text.server.kicked.serverOutdated = 古いサーバーです! ホストに更新してもらってください!
text.server.kicked.banned = サーバーからBanされています。 text.server.kicked.banned = サーバーからBanされています。
text.server.kicked.recentKick = 直前にキックされています。\nもう一度接続できるまでお待ちください。 text.server.kicked.recentKick = 直前にキックされています。\nもう一度接続できるまでお待ちください。
text.server.kicked.nameInUse = このサーバーでは、\nその名前はすでに使用されています。 text.server.kicked.nameInUse = このサーバーでは、\nその名前はすでに使用されています。
text.server.kicked.nameEmpty = 無効な名前です。 text.server.kicked.nameEmpty = 無効な名前です。
text.server.kicked.idInUse = すでにサーバーに参加しています。\! 二つのアカウントでの接続は許可されていません。 text.server.kicked.idInUse = すでにサーバーに参加しています。! 二つのアカウントでの接続は許可されていません。
text.server.kicked.customClient = このサーバーはカスタムビルドをサポートしていません。公式版をダウンロードしてください。 text.server.kicked.customClient = このサーバーはカスタムビルドをサポートしていません。公式版をダウンロードしてください。
text.host.info = [accent]ホスト[]ボタンを押すと、ポート[scarlet]6567[]でサーバーが開かれます。\同じ[LIGHT_GRAY]Wifi や ローカルネットワーク[]からはサーバーリストで見ることができます。\n\nIPアドレスからどこからでもアクセスできるようにするには、[accent]ポート開放[]する必要があります。\n\n[LIGHT_GRAY]注意:\: LAN上のゲームで接続できない場合、Mindustryがファイアウォールの設定でローカルネットワークに接続が許可されているか確認してください。 text.host.info = [accent]ホスト[]ボタンを押すと、ポート[scarlet]6567[]でサーバーが開かれます。同じ[LIGHT_GRAY]Wifi や ローカルネットワーク[]からはサーバーリストで見ることができます。\n\nIPアドレスからどこからでもアクセスできるようにするには、[accent]ポート開放[]する必要があります。\n\n[LIGHT_GRAY]注意:: LAN上のゲームで接続できない場合、Mindustryがファイアウォールの設定でローカルネットワークに接続が許可されているか確認してください。
text.join.info = ここでは、[accent]サーバーのIPアドレス[]から接続したり、[accent]ローカルネットワーク[]のサーバーを探すことができます。\nLANとWANの両方のマルチプレイに対応しています。\n\n[LIGHT_GRAY]注意\:グローバルサーバーリストはありません。誰かのサーバーにIPで接続したい場合、ホストにIPをお尋ねください。 text.join.info = ここでは、[accent]サーバーのIPアドレス[]から接続したり、[accent]ローカルネットワーク[]のサーバーを探すことができます。\nLANとWANの両方のマルチプレイに対応しています。\n\n[LIGHT_GRAY]注意:グローバルサーバーリストはありません。誰かのサーバーにIPで接続したい場合、ホストにIPをお尋ねください。
text.hostserver = ゲームをホスト text.hostserver = ゲームをホスト
text.hostserver.mobile = ホスト text.hostserver.mobile = ホスト
text.host = ホスト text.host = ホスト
@@ -100,31 +98,31 @@ text.hosting = [accent]サーバーを開いています...
text.hosts.refresh = リフレッシュ text.hosts.refresh = リフレッシュ
text.hosts.discovering = LAN上のサーバーを探しています text.hosts.discovering = LAN上のサーバーを探しています
text.server.refreshing = サーバーをリフレッシュ text.server.refreshing = サーバーをリフレッシュ
text.hosts.none = [lightgray]ローカルゲームが見つかりません\! text.hosts.none = [lightgray]ローカルゲームが見つかりません!
text.host.invalid = [scarlet]ホストに接続できません。 text.host.invalid = [scarlet]ホストに接続できません。
text.trace = プレイヤーの記録 text.trace = プレイヤーの記録
text.trace.playername = プレイヤー名\: [accent]{0} text.trace.playername = プレイヤー名: [accent]{0}
text.trace.ip = IP\: [accent]{0} text.trace.ip = IP: [accent]{0}
text.trace.id = ユニークID\: [accent]{0} text.trace.id = ユニーク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.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}
text.invalidid = 無効なクライアントIDです\! バグ報告してください。 text.invalidid = 無効なクライアントIDです! バグ報告してください。
text.server.bans = Ban text.server.bans = Ban
text.server.bans.none = Banされたプレイヤーはいません\! text.server.bans.none = Banされたプレイヤーはいません!
text.server.admins = 管理者 text.server.admins = 管理者
text.server.admins.none = 管理者はいません\! text.server.admins.none = 管理者はいません!
text.server.add = サーバーを追加 text.server.add = サーバーを追加
text.server.delete = サーバーを削除しますか? text.server.delete = サーバーを削除しますか?
text.server.hostname = ホスト\: {0} text.server.hostname = ホスト: {0}
text.server.edit = サーバーを編集 text.server.edit = サーバーを編集
text.server.outdated = [crimson]古いサーバー\![] text.server.outdated = [crimson]古いサーバー![]
text.server.outdated.client = [crimson]古いクライアント\![] text.server.outdated.client = [crimson]古いクライアント![]
text.server.version = [lightgray]バージョン\: {0} {1} text.server.version = [lightgray]バージョン: {0} {1}
text.server.custombuild = [yellow]カスタムビルド text.server.custombuild = [yellow]カスタムビルド
text.confirmban = このプレイヤーを Ban しますか? text.confirmban = このプレイヤーを Ban しますか?
text.confirmkick = このプレイヤーをキックしますか? text.confirmkick = このプレイヤーをキックしますか?
@@ -132,45 +130,45 @@ text.confirmunban = このプレイヤーの Ban を解除しますか?
text.confirmadmin = このプレイヤーを管理者にしますか? text.confirmadmin = このプレイヤーを管理者にしますか?
text.confirmunadmin = このプレイヤーを管理者から削除しますか? text.confirmunadmin = このプレイヤーを管理者から削除しますか?
text.joingame.title = サーバーに参加 text.joingame.title = サーバーに参加
text.joingame.ip = IP\: text.joingame.ip = IP:
text.disconnect = 接続が切断されました。 text.disconnect = 接続が切断されました。
text.disconnect.data = ワールドデータの読み込みに失敗しました\! text.disconnect.data = ワールドデータの読み込みに失敗しました!
text.connecting = [accent]接続中... text.connecting = [accent]接続中...
text.connecting.data = [accent]ワールドデータを読み込んでいます... text.connecting.data = [accent]ワールドデータを読み込んでいます...
text.server.port = ポート\: text.server.port = ポート:
text.server.addressinuse = アドレスがすでに使用されています。\! text.server.addressinuse = アドレスがすでに使用されています。!
text.server.invalidport = 無効なポート番号です。\! text.server.invalidport = 無効なポート番号です。!
text.server.error = [crimson]サーバーエラー\: [accent]{0} text.server.error = [crimson]サーバーエラー: [accent]{0}
text.save.old = これは古いバージョンのセーブデータで、使用することができません。\n\n[LIGHT_GRAY]下位互換性の実装は正式版の4.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 = 上書き
text.save.none = セーブデータがありません\! text.save.none = セーブデータがありません!
text.saveload = [accent]セーブしています... 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 = [accent]無効なセーブデータです。\! text.save.import.invalid = [accent]無効なセーブデータです。!
text.save.import.fail = [crimson]セーブのインポートに失敗\: [accent]{0} text.save.import.fail = [crimson]セーブのインポートに失敗: [accent]{0}
text.save.export.fail = [crimson]セーブのエクスポートに失敗\: [accent]{0} text.save.export.fail = [crimson]セーブのエクスポートに失敗: [accent]{0}
text.save.import = セーブデータを読み込む text.save.import = セーブデータを読み込む
text.save.newslot = セーブデータ名\: text.save.newslot = セーブデータ名:
text.save.rename = リネーム 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 = [accent]セーブファイルが無効、または破損しました\!\nゲームのアップデート直後の場合、恐らくセーブデータのフォーマットの変更によるもので、バグではありません。 text.save.corrupted = [accent]セーブファイルが無効、または破損しました!\nゲームのアップデート直後の場合、恐らくセーブデータのフォーマットの変更によるもので、バグではありません。
text.sector.corrupted = [accent]区域のセーブファイルが見つかりましたが、読み込みに失敗しました。\n新しく区域がが作成されます。 text.sector.corrupted = [accent]区域のセーブファイルが見つかりましたが、読み込みに失敗しました。\n新しく区域がが作成されます。
text.empty = <空> text.empty = <空>
text.on = オン text.on = オン
text.off = オフ text.off = オフ
text.save.autosave = 自動保存\: {0} text.save.autosave = 自動保存: {0}
text.save.map = マップ\: {0} 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.save.playtime = プレイ時間: {0}
text.confirm = 確認 text.confirm = 確認
text.delete = 削除 text.delete = 削除
text.ok = OK text.ok = OK
@@ -182,9 +180,9 @@ text.back = 戻る
text.quit.confirm = 終了してもよろしいですか? text.quit.confirm = 終了してもよろしいですか?
text.changelog.title = 変更履歴 text.changelog.title = 変更履歴
text.changelog.loading = 変更履歴を取得しています... text.changelog.loading = 変更履歴を取得しています...
text.changelog.error.android = [accent]Android4.4または、それ以下では変更履歴が動作しない場合があります。\!\nこれはAndroidの内部バグによるものです。 text.changelog.error.android = [accent]Android4.4または、それ以下では変更履歴が動作しない場合があります。!\nこれはAndroidの内部バグによるものです。
text.changelog.error.ios = [accent]iOSは変更履歴に対応していません。 text.changelog.error.ios = [accent]iOSは変更履歴に対応していません。
text.changelog.error = [scarlet]変更履歴の取得エラー\!\nインターネット接続を確認してください。 text.changelog.error = [scarlet]変更履歴の取得エラー!\nインターネット接続を確認してください。
text.changelog.current = [yellow][[現在のバージョン] text.changelog.current = [yellow][[現在のバージョン]
text.changelog.latest = [accent][[最新バージョン] text.changelog.latest = [accent][[最新バージョン]
text.loading = [accent]読み込み中... text.loading = [accent]読み込み中...
@@ -200,32 +198,32 @@ text.saveimage = イメージを保存
text.unknown = 不明 text.unknown = 不明
text.custom = カスタム text.custom = カスタム
text.builtin = 組み込み text.builtin = 組み込み
text.map.delete.confirm = マップを削除してもよろしいですか? これは戻すことができません\! text.map.delete.confirm = マップを削除してもよろしいですか? これは戻すことができません!
text.map.random = [accent]ランダムマップ text.map.random = [accent]ランダムマップ
text.map.nospawn = このマップにはスポーンするためのプレイヤーのコアがありません\! [ROYAL]青い[]コアをエディターでマップに追加してください。 text.map.nospawn = このマップにはスポーンするためのプレイヤーのコアがありません! [ROYAL]青い[]コアをエディターでマップに追加してください。
text.map.nospawn.pvp = このマップには敵がスポーンするためのプレイヤーのコアがありません\! [SCARLET]赤い[]コアをエディターでマップに追加してください。 text.map.nospawn.pvp = このマップには敵がスポーンするためのプレイヤーのコアがありません! [SCARLET]赤い[]コアをエディターでマップに追加してください。
text.map.invalid = マップの読み込みエラー\: ファイルが無効、または破損しています。 text.map.invalid = マップの読み込みエラー: ファイルが無効、または破損しています。
text.editor.brush = ブラシ text.editor.brush = ブラシ
text.editor.slope = \\ text.editor.slope = \\
text.editor.openin = エディターで開く text.editor.openin = エディターで開く
text.editor.oregen = 鉱石の生成 text.editor.oregen = 鉱石の生成
text.editor.oregen.info = 鉱石の生成\: text.editor.oregen.info = 鉱石の生成:
text.editor.mapinfo = マップ情報 text.editor.mapinfo = マップ情報
text.editor.author = 作者\: text.editor.author = 作者:
text.editor.description = 説明\: text.editor.description = 説明:
text.editor.name = 名前\: text.editor.name = 名前:
text.editor.teams = チーム text.editor.teams = チーム
text.editor.elevation = 標高 text.editor.elevation = 標高
text.editor.errorimageload = ファイルの読み込みエラー\:\n[accent]{0} text.editor.errorimageload = ファイルの読み込みエラー:\n[accent]{0}
text.editor.errorimagesave = ファイルの保存エラー\:\n[accent]{0} text.editor.errorimagesave = ファイルの保存エラー:\n[accent]{0}
text.editor.generate = 生成 text.editor.generate = 生成
text.editor.resize = リサイズ text.editor.resize = リサイズ
text.editor.loadmap = マップを読み込む text.editor.loadmap = マップを読み込む
text.editor.savemap = マップを保存 text.editor.savemap = マップを保存
text.editor.saved = 保存しました\! text.editor.saved = 保存しました!
text.editor.save.noname = マップに名前がありません\! メニューの 'マップ情報' から設定してください。 text.editor.save.noname = マップに名前がありません! メニューの 'マップ情報' から設定してください。
text.editor.save.overwrite = マップが組み込みマップを上書きしようとしています。\! メニューの 'マップ情報' から異なる名前に設定してください。 text.editor.save.overwrite = マップが組み込みマップを上書きしようとしています。! メニューの 'マップ情報' から異なる名前に設定してください。
text.editor.import.exists = [scarlet]インポートできません\:[] '{0}' はすでに組み込みマップの名前として存在します\! text.editor.import.exists = [scarlet]インポートできません:[] '{0}' はすでに組み込みマップの名前として存在します!
text.editor.import = インポート... text.editor.import = インポート...
text.editor.importmap = マップをインポート text.editor.importmap = マップをインポート
text.editor.importmap.description = すでに存在しているマップをインポート text.editor.importmap.description = すでに存在しているマップをインポート
@@ -240,37 +238,35 @@ text.editor.exportimage = 地形イメージをエクスポート
text.editor.exportimage.description = イメージファイルをエクスポート text.editor.exportimage.description = イメージファイルをエクスポート
text.editor.loadimage = 地形をインポート text.editor.loadimage = 地形をインポート
text.editor.saveimage = 地形をエクスポート text.editor.saveimage = 地形をエクスポート
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.overwrite.confirm = [scarlet]警告![] この名前のマップがすでに存在します。上書きしてもよろしいですか?
text.editor.selectmap = 読み込むマップを選択\: text.editor.selectmap = 読み込むマップを選択:
text.width = \: text.width = 幅:
text.height = 高さ\: text.height = 高さ:
text.menu = メニュー text.menu = メニュー
text.play = プレイ text.play = プレイ
text.load = 読み込む text.load = 読み込む
text.save = 保存 text.save = 保存
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 = 言語設定を有効にするにはゲームを再起動してください。 text.language.restart = 言語設定を有効にするにはゲームを再起動してください。
text.settings = 設定 text.settings = 設定
text.tutorial = チュートリアル text.tutorial = チュートリアル
text.editor = エディター text.editor = エディター
text.mapeditor = マップエディター text.mapeditor = マップエディター
text.donate = 寄附 text.donate = 寄附
text.connectfail = [crimson]サーバーへの接続できませんでした:\n\n[accent]{0}
text.connectfail = [crimson]サーバーへの接続できませんでした\:\n\n[accent]{0}
text.error.unreachable = サーバーに到達できません。\nアドレスは正しいですか? text.error.unreachable = サーバーに到達できません。\nアドレスは正しいですか?
text.error.invalidaddress = 無効なアドレスです。 text.error.invalidaddress = 無効なアドレスです。
text.error.timedout = タイムアウトしました!\nホストがポート開放されているか確認してください。アドレスは正しいです! text.error.timedout = タイムアウトしました!\nホストがポート開放されているか確認してください。アドレスは正しいです!
text.error.mismatch =パケットエラー:\nクライアント/サーバーのバージョンが一致しません。\nゲームとホストが最新のMindustryか確認してください! text.error.mismatch = パケットエラー:\nクライアント/サーバーのバージョンが一致しません。\nゲームとホストが最新のMindustryか確認してください!
text.error.alreadyconnected = すでに接続されています。 text.error.alreadyconnected = すでに接続されています。
text.error.mapnotfound = マップファイルが見つかりません! text.error.mapnotfound = マップファイルが見つかりません!
text.error.any = 不明なネットワークエラーです。 text.error.any = 不明なネットワークエラーです。
text.settings.language = 言語 text.settings.language = 言語
text.settings.reset = デフォルトにリセット text.settings.reset = デフォルトにリセット
text.settings.rebind = 再設定 text.settings.rebind = 再設定
@@ -279,8 +275,8 @@ text.settings.game = ゲーム
text.settings.sound = サウンド text.settings.sound = サウンド
text.settings.graphics = グラフィック text.settings.graphics = グラフィック
text.settings.cleardata = データを削除... text.settings.cleardata = データを削除...
text.settings.clear.confirm = データを削除してもよろしいですか?\n元に戻すことはできません\! text.settings.clear.confirm = データを削除してもよろしいですか?\n元に戻すことはできません!
text.settings.clearall.confirm = [scarlet]警告\![]\nこれはすべてのデータが削除されます。これにはセーブデータ、マップ、アンロック、キーバインドが含まれます。\n「ok」 を押すと、すべてのデータが削除され、自動的に終了します。 text.settings.clearall.confirm = [scarlet]警告![]\nこれはすべてのデータが削除されます。これにはセーブデータ、マップ、アンロック、キーバインドが含まれます。\n「ok」 を押すと、すべてのデータが削除され、自動的に終了します。
text.settings.clearsectors = 区域を削除 text.settings.clearsectors = 区域を削除
text.settings.clearunlocks = アンロックを削除 text.settings.clearunlocks = アンロックを削除
text.settings.clearall = すべてを削除 text.settings.clearall = すべてを削除
@@ -290,6 +286,7 @@ text.no = いいえ
text.info.title = 情報 text.info.title = 情報
text.error.title = [crimson]エラーが発生しました text.error.title = [crimson]エラーが発生しました
text.error.crashtitle = エラーが発生しました text.error.crashtitle = エラーが発生しました
text.blocks.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = ブロック情報 text.blocks.blockinfo = ブロック情報
text.blocks.powercapacity = 電力容量 text.blocks.powercapacity = 電力容量
text.blocks.powershot = 電力/ショット text.blocks.powershot = 電力/ショット
@@ -322,7 +319,8 @@ text.blocks.coolant = 冷却
text.blocks.coolantuse = 冷却使用量 text.blocks.coolantuse = 冷却使用量
text.blocks.inputliquidfuel = 液体燃料 text.blocks.inputliquidfuel = 液体燃料
text.blocks.liquidfueluse = 液体燃料使用量 text.blocks.liquidfueluse = 液体燃料使用量
text.blocks.explosive = 高い爆発性\! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = 耐久値 text.blocks.health = 耐久値
text.blocks.inaccuracy = 不正確 text.blocks.inaccuracy = 不正確
text.blocks.shots = ショット text.blocks.shots = ショット
@@ -347,6 +345,7 @@ text.category.liquids = 液体
text.category.items = アイテム text.category.items = アイテム
text.category.crafting = 製作速度 text.category.crafting = 製作速度
text.category.shooting = 攻撃速度 text.category.shooting = 攻撃速度
text.category.optional = Optional Enhancements
setting.autotarget.name = 自動ターゲット setting.autotarget.name = 自動ターゲット
setting.fpscap.name = 最大FPS setting.fpscap.name = 最大FPS
setting.fpscap.none = なし setting.fpscap.none = なし
@@ -356,14 +355,13 @@ setting.difficulty.easy = イージー
setting.difficulty.normal = ノーマル setting.difficulty.normal = ノーマル
setting.difficulty.hard = ハード setting.difficulty.hard = ハード
setting.difficulty.insane = クレイジー setting.difficulty.insane = クレイジー
setting.difficulty.name = 難易度\: setting.difficulty.name = 難易度:
setting.screenshake.name = 画面を振る setting.screenshake.name = 画面を振る
setting.effects.name = 画面効果 setting.effects.name = 画面効果
setting.sensitivity.name = 操作感度 setting.sensitivity.name = 操作感度
setting.saveinterval.name = 自動保存間隔 setting.saveinterval.name = 自動保存間隔
setting.seconds = {0} 秒 setting.seconds = {0} 秒
setting.fullscreen.name = フルスクリーン setting.fullscreen.name = フルスクリーン
setting.multithread.name = マルチスレッド
setting.fps.name = FPSを表示 setting.fps.name = FPSを表示
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = 電力レーザーを表示 setting.lasers.name = 電力レーザーを表示
@@ -408,8 +406,6 @@ mode.waves.name = ウェーブ
mode.waves.description = ノーマルモードです。限られた資源でウェーブが自動的に始まります。 mode.waves.description = ノーマルモードです。限られた資源でウェーブが自動的に始まります。
mode.sandbox.name = サンドボックス mode.sandbox.name = サンドボックス
mode.sandbox.description = 無限の資源でウェーブを自由に始められます。 mode.sandbox.description = 無限の資源でウェーブを自由に始められます。
mode.custom.warning = [scarlet]カスタムゲームまたは、サーバ内でのアンロックは保存されません。[]\n\nアンロックするには区域でプレイしてください。
mode.custom.warning.read = 必ずお読みください\:\n[scarlet]カスタムゲーム内でのアンロックは区域やほかのモードには影響しません\!\n\n[LIGHT_GRAY](多分必要ないと思いますが)
mode.freebuild.name = フリービルド mode.freebuild.name = フリービルド
mode.freebuild.description = 限られた資源でウェーブを自由に始められます。 mode.freebuild.description = 限られた資源でウェーブを自由に始められます。
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -482,21 +478,22 @@ mech.trident-ship.weapon = 爆弾
mech.glaive-ship.name = グライブ mech.glaive-ship.name = グライブ
mech.glaive-ship.description = 大きく、重武装された攻撃機です。焼夷弾が装備され、優れた加速と最高速度を保有しています。 mech.glaive-ship.description = 大きく、重武装された攻撃機です。焼夷弾が装備され、優れた加速と最高速度を保有しています。
mech.glaive-ship.weapon = 焼夷弾 mech.glaive-ship.weapon = 焼夷弾
text.item.explosiveness = [LIGHT_GRAY]爆発性\: {0}% text.item.explosiveness = [LIGHT_GRAY]爆発性: {0}%
text.item.flammability = [LIGHT_GRAY]可燃性\: {0}% text.item.flammability = [LIGHT_GRAY]可燃性: {0}%
text.item.radioactivity = [LIGHT_GRAY]放射能\: {0}% text.item.radioactivity = [LIGHT_GRAY]放射能: {0}%
text.item.fluxiness = [LIGHT_GRAY]流動性\: {0}% text.item.fluxiness = [LIGHT_GRAY]流動性: {0}%
text.unit.health = [LIGHT_GRAY]耐久値\: {0} text.unit.health = [LIGHT_GRAY]耐久値: {0}
text.unit.speed = [LIGHT_GRAY]速度\: {0} text.unit.speed = [LIGHT_GRAY]速度: {0}
text.mech.weapon = [LIGHT_GRAY]武器\: {0} text.mech.weapon = [LIGHT_GRAY]武器: {0}
text.mech.armor = [LIGHT_GRAY]装備\: {0} text.mech.armor = [LIGHT_GRAY]装備: {0}
text.mech.itemcapacity = [LIGHT_GRAY]アイテム容量\: {0} text.mech.itemcapacity = [LIGHT_GRAY]アイテム容量: {0}
text.mech.minespeed = [LIGHT_GRAY]採掘速度\: {0} text.mech.minespeed = [LIGHT_GRAY]採掘速度: {0}
text.mech.minepower = [LIGHT_GRAY]採掘力\: {0} text.mech.minepower = [LIGHT_GRAY]採掘力: {0}
text.mech.ability = [LIGHT_GRAY]能力\: {0} text.mech.ability = [LIGHT_GRAY]能力: {0}
text.liquid.heatcapacity = [LIGHT_GRAY]熱容量\: {0} text.liquid.heatcapacity = [LIGHT_GRAY]熱容量: {0}
text.liquid.viscosity = [LIGHT_GRAY]粘度\: {0} text.liquid.viscosity = [LIGHT_GRAY]粘度: {0}
text.liquid.temperature = [LIGHT_GRAY]温度\: {0} text.liquid.temperature = [LIGHT_GRAY]温度: {0}
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = エネミースポーン block.spawn.name = エネミースポーン
block.core.name = コア block.core.name = コア
block.metalfloor.name = 金属製の床 block.metalfloor.name = 金属製の床
@@ -741,11 +738,11 @@ block.blast-drill.description = 高級ドリルです。大量の電力が必要
block.water-extractor.description = 地面から水を汲み上げます。近くに湖がない場合に便利です。 block.water-extractor.description = 地面から水を汲み上げます。近くに湖がない場合に便利です。
block.cultivator.description = 水で土壌を耕して、バイオメターを回収します。 block.cultivator.description = 水で土壌を耕して、バイオメターを回収します。
block.oil-extractor.description = 大量の電力を使用して、砂から石油を回収します。近くに油田がない場合に便利です。 block.oil-extractor.description = 大量の電力を使用して、砂から石油を回収します。近くに油田がない場合に便利です。
block.dart-ship-pad.description = 今使っている機体から一般的な戦闘機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.dart-ship-pad.description =  今使っている機体から一般的な戦闘機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。
block.trident-ship-pad.description = 今使っている機体から武装した爆撃機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.trident-ship-pad.description = 今使っている機体から武装した爆撃機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。
block.javelin-ship-pad.description = 今使っている機体から速くて強い電撃を放つ要撃機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.javelin-ship-pad.description = 今使っている機体から速くて強い電撃を放つ要撃機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。
block.glaive-ship-pad.description = 今使っている機体から大きく、重武装された攻撃機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.glaive-ship-pad.description = 今使っている機体から大きく、重武装された攻撃機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。
block.tau-mech-pad.description =今使っている機体から仲間の建物やユニットを修復する支援型機体に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.tau-mech-pad.description = 今使っている機体から仲間の建物やユニットを修復する支援型機体に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。
block.delta-mech-pad.description = 今使っている機体から速く突撃攻撃に向いた軽装備の戦闘機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.delta-mech-pad.description = 今使っている機体から速く突撃攻撃に向いた軽装備の戦闘機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。
block.omega-mech-pad.description = 今使っている機体から最前線での戦いに向けた重装備の大型機体に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.omega-mech-pad.description = 今使っている機体から最前線での戦いに向けた重装備の大型機体に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。
block.spirit-factory.description = 鉱石の採掘やブロックの修復を行う軽いドローンを製造します。 block.spirit-factory.description = 鉱石の採掘やブロックの修復を行う軽いドローンを製造します。
+86 -88
View File
@@ -9,17 +9,15 @@ text.link.itch.io.description = PC 버전 다운로드와 HTML5 버전이 있는
text.link.google-play.description = Google Play 스토어 정보 text.link.google-play.description = Google Play 스토어 정보
text.link.wiki.description = 공식 Mindustry 위키 (영어) text.link.wiki.description = 공식 Mindustry 위키 (영어)
text.linkfail = 링크를 여는데 실패했습니다! URL이 기기의 클립보드에 복사되었습니다. text.linkfail = 링크를 여는데 실패했습니다! URL이 기기의 클립보드에 복사되었습니다.
text.editor.web = HTML5 버전은 에디터 기능을 지원하지 않습니다! 게임을 다운로드 한 뒤에 사용 해 주세요.
text.web.unsupported = HTML5 버전은 이 기능을 지원하지 않습니다! 게임을 다운로드 한 뒤에 사용 해 주세요.
text.gameover = 코어가 터졌습니다. 게임 오버! text.gameover = 코어가 터졌습니다. 게임 오버!
text.gameover.pvp = [accent]{0}[] 팀이 승리했습니다! text.gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
text.sector.gameover = 역을 공략하는데 실패했습니다. 포기 하시겠습니까? text.sector.gameover = 역을 공략하는데 실패했습니다. 포기 하시겠습니까?
text.sector.retry = 아니오 text.sector.retry = 아니오
text.highscore = [YELLOW]최고점수 달성! text.highscore = [YELLOW]최고점수 달성!
text.wave.lasted = [accent]{0}[] 까지 버티셨습니다. 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.map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까?
text.level.select = 맵 선택 text.level.select = 맵 선택
text.level.mode = 게임모드 : text.level.mode = 게임모드 :
text.construction.desktop = PC 에서의 조작 방법이 변경되었습니다.\n블록 선택을 해제하거나 건설을 중지하려면 [accent]스페이스 바[]를 누르세요. text.construction.desktop = PC 에서의 조작 방법이 변경되었습니다.\n블록 선택을 해제하거나 건설을 중지하려면 [accent]스페이스 바[]를 누르세요.
@@ -35,12 +33,12 @@ text.loadgame = 게임 불러오기
text.joingame = 멀티플레이 text.joingame = 멀티플레이
text.addplayers = 플레이어 추가/제거 text.addplayers = 플레이어 추가/제거
text.customgame = 커스텀 게임 text.customgame = 커스텀 게임
text.sectors = 싱글 플레이 text.sectors = 지역 플레이
text.sector = 역 : [LIGHT_GRAY]{0} text.sector = 역 : [LIGHT_GRAY]{0}
text.sector.time = 시간 : [LIGHT_GRAY]{0} text.sector.time = 시간 : [LIGHT_GRAY]{0}
text.sector.deploy = 시작 text.sector.deploy = 시작
text.sector.abandon = 초기화 text.sector.abandon = 초기화
text.sector.abandon.confirm = 정말로 이 역의 모든 진행상을 초기화 하겠습니까?\n이 작업은 되돌릴 수 없습니다! text.sector.abandon.confirm = 정말로 이 역의 모든 진행상을 초기화 하겠습니까?\n이 작업은 되돌릴 수 없습니다!
text.sector.resume = 계속하기 text.sector.resume = 계속하기
text.sector.locked = [scarlet][[완료안됨] text.sector.locked = [scarlet][[완료안됨]
text.sector.unexplored = [accent][[탐색안됨] text.sector.unexplored = [accent][[탐색안됨]
@@ -49,21 +47,21 @@ text.mission = 목표 : [LIGHT_GRAY] {0}
text.mission.main = 주요 목표 : [LIGHT_GRAY]{0} text.mission.main = 주요 목표 : [LIGHT_GRAY]{0}
text.mission.info = 미션 정보 text.mission.info = 미션 정보
text.mission.complete = 미션 성공! text.mission.complete = 미션 성공!
text.mission.complete.body = 역 {0},{1} 클리어. text.mission.complete.body = 역 {0},{1} 클리어.
text.mission.wave = [accent]{0}/{1}[] 단계동안 생존하세요.남은 시간 {2}\n text.mission.wave = [accent]{0}/{1}[] 단계 생존\n{2}초 남음
text.mission.wave.enemies = [accent] {0}/{1} []단계 생존하세요.\n{2}마리 남음 text.mission.wave.enemies = [accent]{0}/{1} []단계 생존\n{2}마리 남음
text.mission.wave.enemy = [accent] {0}/{1} []단계 생존하세요.\n{2}마리 남음 text.mission.wave.enemy = [accent]{0}/{1} []단계 생존\n{2}마리 남음
text.mission.wave.menu = [accent]{0}[] 단계 text.mission.wave.menu = [accent]{0}[] 단계
text.mission.battle = 적 코어를 파괴하세요. text.mission.battle = 적 코어를 파괴하세요
text.mission.resource.menu = {0} {1}개 수집 text.mission.resource.menu = {0} {1}개 수집
text.mission.resource = {0} 자원을 수집하세요 :\n[accent]{1}/{2}[] text.mission.resource = {0} 을(를) 수집하세요\n[accent]{1}/{2}
text.mission.block = {0} 를 만드세요 text.mission.block = {0} 를 만드세요
text.mission.unit = {0} 유닛을 만드세요 text.mission.unit = {0} 유닛을 만드세요
text.mission.command = 유닛에게 {0} 명령을 보내세요 text.mission.command = 유닛에게 {0} 명령을 보내세요
text.mission.linknode = 전력 노드를 연결하세요. text.mission.linknode = 전력 노드를 연결하세요
text.mission.display = [accent]미션 :\n[LIGHT_GRAY]{0} text.mission.display = [accent]목표 : [LIGHT_GRAY]{0}
text.mission.mech = [accent]{0}[] 기체로 바꾸세요 text.mission.mech = [accent]{0}[] 기체로 바꾸세요
text.mission.create = [accent]{0}[] 자원을 만드세요 text.mission.create = [accent]{0}[] 을(를)설치하세요.
text.none = <없음> text.none = <없음>
text.close = 닫기 text.close = 닫기
text.quit = 나가기 text.quit = 나가기
@@ -81,8 +79,8 @@ text.players.single = 현재 {0}명만 있음.
text.server.closing = [accent]서버 닫는중... text.server.closing = [accent]서버 닫는중...
text.server.kicked.kick = 서버에서 추방되었습니다! text.server.kicked.kick = 서버에서 추방되었습니다!
text.server.kicked.serverClose = 서버 종료됨. text.server.kicked.serverClose = 서버 종료됨.
text.server.kicked.sectorComplete = 역 클리어. text.server.kicked.sectorComplete = 역 클리어.
text.server.kicked.sectorComplete.text = 임무 성공.\n서버가 다음역 맵으로 이동되었습니다. text.server.kicked.sectorComplete.text = 임무 성공.\n서버가 다음역 맵으로 이동되었습니다.
text.server.kicked.clientOutdated = 오래된 버전의 클라이언트 입니다! 게임을 업데이트 하세요! text.server.kicked.clientOutdated = 오래된 버전의 클라이언트 입니다! 게임을 업데이트 하세요!
text.server.kicked.serverOutdated = 오래된 버전의 서버입니다! 서버 호스트 관리자에게 문의하세요! text.server.kicked.serverOutdated = 오래된 버전의 서버입니다! 서버 호스트 관리자에게 문의하세요!
text.server.kicked.banned = 뭘 하셨는지는 모르겠지만, 이제 영원히 서버에 접속할 수 없습니다. text.server.kicked.banned = 뭘 하셨는지는 모르겠지만, 이제 영원히 서버에 접속할 수 없습니다.
@@ -140,7 +138,7 @@ text.connecting.data = [accent]맵 데이터 다운로드중...
text.server.port = 포트 : text.server.port = 포트 :
text.server.addressinuse = 이 주소는 이미 사용중입니다! text.server.addressinuse = 이 주소는 이미 사용중입니다!
text.server.invalidport = 포트 번호가 잘못되었습니다. text.server.invalidport = 포트 번호가 잘못되었습니다.
text.server.error = [crimson]{0}[orange]서버를 여는데 오류가 발생했습니다.[] text.server.error = [crimson]{0}[accent]서버를 여는데 오류가 발생했습니다.[]
text.save.old = 이 저장파일은 이전 버전의 게임용이며, 지금은 사용할 수 없습니다. \n\n[LIGHT_GRAY]4.0 정식때 이전 게임버전에서 만든 저장파일과 호환됩니다. text.save.old = 이 저장파일은 이전 버전의 게임용이며, 지금은 사용할 수 없습니다. \n\n[LIGHT_GRAY]4.0 정식때 이전 게임버전에서 만든 저장파일과 호환됩니다.
text.save.new = 새로 저장 text.save.new = 새로 저장
text.save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까? text.save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까?
@@ -151,17 +149,17 @@ 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 = [accent]파일이 잘못되었습니다!
text.save.import.fail = [crimson]저장파일을 불러오지 못함 : [orange]{0} text.save.import.fail = [crimson]저장파일을 불러오지 못함 : [accent]{0}
text.save.export.fail = [crimson]저장파일을 내보내지 못함 : [orange]{0} text.save.export.fail = [crimson]저장파일을 내보내지 못함 : [accent]{0}
text.save.import = 저장파일 불러오기 text.save.import = 저장파일 불러오기
text.save.newslot = 저장 파일이름 : text.save.newslot = 저장 파일이름 :
text.save.rename = 이름 변경 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]세이브 파일이 손상되었거나 잘못된 파일입니다! 만약 게임을 업데이트 했다면 이것은 아마 저장 형식 변경일 것이고, 이것은 버그가 [scarlet]아닙니다[]. text.save.corrupted = [accent]세이브 파일이 손상되었거나 잘못된 파일입니다! 만약 게임을 업데이트 했다면 이것은 아마 저장 형식 변경일 것이고, 이것은 버그가 [scarlet]아닙니다[].
text.sector.corrupted = [orange]저장 파일에서 역을 발견했으나 불러오지 못했습니다.\n새로 생성되었습니다. text.sector.corrupted = [accent]저장 파일에서 역을 발견했으나 불러오지 못했습니다.\n새로 생성되었습니다.
text.empty = <비어있음> text.empty = <비어있음>
text.on = 켜기 text.on = 켜기
text.off = 끄기 text.off = 끄기
@@ -182,15 +180,15 @@ text.back = 뒤로가기
text.quit.confirm = 정말로 종료하시겠습니까? text.quit.confirm = 정말로 종료하시겠습니까?
text.changelog.title = 변경사항 text.changelog.title = 변경사항
text.changelog.loading = 변경사항 가져오는중... text.changelog.loading = 변경사항 가져오는중...
text.changelog.error.android = [orange]게임 변경사항은 가끔 Android 4.4 이하에서 작동하지 않습니다. 이것은 내부 Android 버그 때문입니다. text.changelog.error.android = [accent]게임 변경사항은 가끔 Android 4.4 이하에서 작동하지 않습니다. 이것은 내부 Android 버그 때문입니다.
text.changelog.error.ios = [orange]현재 iOS에서는 변경 사항을 지원하지 않습니다. text.changelog.error.ios = [accent]현재 iOS에서는 변경 사항을 지원하지 않습니다.
text.changelog.error = [scarlet]게임 변경사항을 가져오는 중 오류가 발생했습니다![]\n인터넷 연결을 확인하십시오. text.changelog.error = [scarlet]게임 변경사항을 가져오는 중 오류가 발생했습니다![]\n인터넷 연결을 확인하십시오.
text.changelog.current = [orange][[현재 버전] text.changelog.current = [accent][[현재 버전]
text.changelog.latest = [orange][[최신 버전] text.changelog.latest = [accent][[최신 버전]
text.loading = [accent]불러오는중... text.loading = [accent]불러오는중...
text.saving = [accent]저장중... text.saving = [accent]저장중...
text.wave = [orange]{0}단계 text.wave = [accent]{0}단계
text.wave.waiting = 다음 단계 시작까지 {0}초 text.wave.waiting = 남은 시간 : [green]{0}초[]
text.waiting = [LIGHT_GRAY]대기중... text.waiting = [LIGHT_GRAY]대기중...
text.waiting.players = 다른 플레이어를 기다리는 중.. text.waiting.players = 다른 플레이어를 기다리는 중..
text.wave.enemies = [LIGHT_GRAY]{0} 마리 남았음 text.wave.enemies = [LIGHT_GRAY]{0} 마리 남았음
@@ -216,8 +214,8 @@ text.editor.description = 설명 :
text.editor.name = 이름 : text.editor.name = 이름 :
text.editor.teams = text.editor.teams =
text.editor.elevation = 지형 높이 text.editor.elevation = 지형 높이
text.editor.errorimageload = [orange]{0}[] 파일을 불러오는데 오류가 발생했습니다. text.editor.errorimageload = [accent]{0}[] 파일을 불러오는데 오류가 발생했습니다.
text.editor.errorimagesave = [orange]{0}[] 파일 저장중 오류가 발생했습니다. text.editor.errorimagesave = [accent]{0}[] 파일 저장중 오류가 발생했습니다.
text.editor.generate = 생성 text.editor.generate = 생성
text.editor.resize = 맵 크기조정 text.editor.resize = 맵 크기조정
text.editor.loadmap = 맵 불러오기 text.editor.loadmap = 맵 불러오기
@@ -261,7 +259,7 @@ text.tutorial = 게임 방법
text.editor = 편집기 text.editor = 편집기
text.mapeditor = 맵 편집기 text.mapeditor = 맵 편집기
text.donate = 기부 text.donate = 기부
text.connectfail = [crimson]{0}[orange] 서버에 연결하지 못했습니다.[] text.connectfail = [crimson]{0}[accent] 서버에 연결하지 못했습니다.[]
text.error.unreachable = 서버에 연결하지 못했습니다. text.error.unreachable = 서버에 연결하지 못했습니다.
text.error.invalidaddress = 잘못된 주소입니다. text.error.invalidaddress = 잘못된 주소입니다.
text.error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하십시오. text.error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하십시오.
@@ -275,11 +273,11 @@ 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.settings.cleardata = 게임 데이터 초기화... text.settings.cleardata = 게임 데이터 초기화...
text.settings.clear.confirm = 정말로 초기화 하겠습니까?\n이 작업을 되돌릴 수 없습니다! text.settings.clear.confirm = 정말로 초기화 하겠습니까?\n이 작업을 되돌릴 수 없습니다!
text.settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다. text.settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다.
text.settings.clearsectors = 역 초기화 text.settings.clearsectors = 역 초기화
text.settings.clearunlocks = 잠금 해제 초기화 text.settings.clearunlocks = 잠금 해제 초기화
text.settings.clearall = 모두 초기화 text.settings.clearall = 모두 초기화
text.paused = 일시 정지 text.paused = 일시 정지
@@ -288,6 +286,7 @@ 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.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = 블록 정보 text.blocks.blockinfo = 블록 정보
text.blocks.powercapacity = 최대 전력 용량 text.blocks.powercapacity = 최대 전력 용량
text.blocks.powershot = 1발당 전력 소모량 text.blocks.powershot = 1발당 전력 소모량
@@ -320,7 +319,8 @@ text.blocks.coolant = 냉각제
text.blocks.coolantuse = 냉각수 사용 text.blocks.coolantuse = 냉각수 사용
text.blocks.inputliquidfuel = 연료 액 text.blocks.inputliquidfuel = 연료 액
text.blocks.liquidfueluse = 액체 연료 사용 text.blocks.liquidfueluse = 액체 연료 사용
text.blocks.explosive = 이 블록이 터지면 주변 블록과 같이 자폭을 합니다!! text.blocks.boostitem = 가속 아이템
text.blocks.boostliquid = 가속 액체
text.blocks.health = 체력 text.blocks.health = 체력
text.blocks.inaccuracy = 오차각 text.blocks.inaccuracy = 오차각
text.blocks.shots = 발포 횟수 text.blocks.shots = 발포 횟수
@@ -345,6 +345,7 @@ text.category.liquids = 액체
text.category.items = 아이템 text.category.items = 아이템
text.category.crafting = 제작 text.category.crafting = 제작
text.category.shooting = 사격 text.category.shooting = 사격
text.category.optional = 선택적 향상
setting.autotarget.name = 자동 조준 setting.autotarget.name = 자동 조준
setting.fpscap.name = 최대 FPS setting.fpscap.name = 최대 FPS
setting.fpscap.none = 없음 setting.fpscap.none = 없음
@@ -353,25 +354,24 @@ setting.difficulty.training = 훈련
setting.difficulty.easy = 쉬움 setting.difficulty.easy = 쉬움
setting.difficulty.normal = 보통 setting.difficulty.normal = 보통
setting.difficulty.hard = 어려움 setting.difficulty.hard = 어려움
setting.difficulty.insane = 매우 어려움 setting.difficulty.insane = [#00ff00]멀[#2efe2e]티[#58fa58]플[#81f781]레[#a9f5a9]이 [#81f781]전[#58fa58]용[]
setting.difficulty.name = 난이도 : setting.difficulty.name = 난이도 :
setting.screenshake.name = 화면 흔들기 setting.screenshake.name = 화면 흔들기 강도
setting.effects.name = 화면 효과 setting.effects.name = 화면 효과
setting.sensitivity.name = 컨트롤러 감도 setting.sensitivity.name = 컨트롤러 감도
setting.saveinterval.name = 자동저장 간격 setting.saveinterval.name = 자동저장 간격
setting.seconds = {0}초 setting.seconds = {0}초
setting.fullscreen.name = 전체 화면 setting.fullscreen.name = 전체 화면
setting.multithread.name = 멀티 스레드
setting.fps.name = FPS 표시 setting.fps.name = FPS 표시
setting.vsync.name = VSync 활성화 setting.vsync.name = VSync 활성화
setting.lasers.name = 파워 레이 표시 setting.lasers.name = 전력 노드 레이 표시
setting.minimap.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 = 소리 끄기
setting.crashreport.name = 오류 보고서 보내기 setting.crashreport.name = 오류 보고서 보내기
text.keybind.title = 키 바인딩 text.keybind.title = 조작키 설정
category.general.name = 일반 category.general.name = 일반
category.view.name = 보기 category.view.name = 보기
category.multiplayer.name = 멀티플레이 category.multiplayer.name = 멀티플레이
@@ -406,8 +406,6 @@ mode.waves.name = 단계
mode.waves.description = 이것은 일반 모드입니다. 제한된 자원과 자동으로 다음 단계가 시작됩니다. mode.waves.description = 이것은 일반 모드입니다. 제한된 자원과 자동으로 다음 단계가 시작됩니다.
mode.sandbox.name = 샌드박스 mode.sandbox.name = 샌드박스
mode.sandbox.description = 무한한 자원과 다음단계 시작을 위한 타이머가 없습니다. mode.sandbox.description = 무한한 자원과 다음단계 시작을 위한 타이머가 없습니다.
mode.custom.warning = [scarlet]서버에서 잠금해제한 블록은 저장되지 않습니다.[]\n\n구역을 플레이 하여 잠금해제하세요.
mode.custom.warning.read = 꼭 읽어보시길 바랍니다 :\n[scarlet]커스텀 게임에서 잠금해제한 블록은 구역 플레이나 다른 모드에서 적용되지 않습니다!\n\n[LIGHT_GRAY](이게 필요하지 않았으면 좋겠는데)
mode.freebuild.name = 자유 건축 mode.freebuild.name = 자유 건축
mode.freebuild.description = 제한된 자원과 다음단계 시작을 위한 타이머가 없습니다. mode.freebuild.description = 제한된 자원과 다음단계 시작을 위한 타이머가 없습니다.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -425,8 +423,8 @@ item.lead.name = 납
item.lead.description = 쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다. item.lead.description = 쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
item.coal.name = 석탄 item.coal.name = 석탄
item.coal.description = 쉽게 구할 수 있으며, 주로 제련소 등에서 연료로 사용됩니다. item.coal.description = 쉽게 구할 수 있으며, 주로 제련소 등에서 연료로 사용됩니다.
item.dense-alloy.name = 합금 item.dense-alloy.name = 고밀도 합금
item.dense-alloy.description = 납과 구리로 만든 튼튼한 합금.\n고급 수송 블록이나 상위 티어 블록을 건설하는데 사용됩니다. item.dense-alloy.description = 납과 구리로 만든 튼튼한 고밀도 합금.\n고급 수송 블록이나 상위 티어 블록을 건설하는데 사용됩니다.
item.titanium.name = 티타늄 item.titanium.name = 티타늄
item.titanium.description = 파이프 재료나 고급 드릴, 비행기/기체 등에서 재료로 사용되는 자원입니다. item.titanium.description = 파이프 재료나 고급 드릴, 비행기/기체 등에서 재료로 사용되는 자원입니다.
item.thorium.name = 토륨 item.thorium.name = 토륨
@@ -442,9 +440,9 @@ item.surge-alloy.description = 주로 건물의 재료로 사용되는 자원입
item.biomatter.name = 바이오메터 item.biomatter.name = 바이오메터
item.biomatter.description = 이것은 유기농 덤불입니다!\n압축기에 넣어 석유로 바꿀 수 있습니다. item.biomatter.description = 이것은 유기농 덤불입니다!\n압축기에 넣어 석유로 바꿀 수 있습니다.
item.sand.name = 모래 item.sand.name = 모래
item.sand.description = 합금이나 플럭스 등에서 제련시 광범위하게 사용되는 일반적인 재료입니다. item.sand.description = 고밀도 합금이나 플럭스 등에서 제련시 광범위하게 사용되는 일반적인 재료입니다.
item.blast-compound.name = 화합 item.blast-compound.name = 폭발
item.blast-compound.description = 포탑 및 건설의 재료로 사용되는 휘발성 화합물.\n연료로도 사용할 수 있지만, 별로 추천하지는 않습니다. item.blast-compound.description = 포탑 및 건설의 재료로 사용되는 휘발성 폭발물.\n연료로도 사용할 수 있지만, 별로 추천하지는 않습니다.
item.pyratite.name = 피라테 item.pyratite.name = 피라테
item.pyratite.description = 폭발성을 가진 재료로, 주로 포탑의 탄약으로 사용됩니다. item.pyratite.description = 폭발성을 가진 재료로, 주로 포탑의 탄약으로 사용됩니다.
liquid.water.name = liquid.water.name =
@@ -495,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]능력 : {0}
text.liquid.heatcapacity = [LIGHT_GRAY]발열량 : {0} text.liquid.heatcapacity = [LIGHT_GRAY]발열량 : {0}
text.liquid.viscosity = [LIGHT_GRAY]점도 : {0} text.liquid.viscosity = [LIGHT_GRAY]점도 : {0}
text.liquid.temperature = [LIGHT_GRAY]온도 : {0} text.liquid.temperature = [LIGHT_GRAY]온도 : {0}
block.constructing = {0}[LIGHT_GRAY](만드는중)
block.spawn.name = 적 스폰지점 block.spawn.name = 적 스폰지점
block.core.name = 코어 block.core.name = 코어
block.metalfloor.name = 철판 block.metalfloor.name = 철판
@@ -569,7 +568,7 @@ block.tau-mech-pad.name = 타우 기체 패드
block.conduit.name = 파이프 block.conduit.name = 파이프
block.mechanical-pump.name = 기계식 펌프 block.mechanical-pump.name = 기계식 펌프
block.itemsource.name = 아이템 소스 block.itemsource.name = 아이템 소스
block.itemvoid.name = 히오스 block.itemvoid.name = 아이템 삭제 장치
block.liquidsource.name = 무한 액체공급 장치 block.liquidsource.name = 무한 액체공급 장치
block.powervoid.name = 방전장치 block.powervoid.name = 방전장치
block.powerinfinite.name = 무한 전력공급 장치 block.powerinfinite.name = 무한 전력공급 장치
@@ -583,7 +582,7 @@ block.phase-conveyor.name = 메타 컨베이어
block.bridge-conveyor.name = 터널 block.bridge-conveyor.name = 터널
block.plastanium-compressor.name = 플라스터늄 압축기 block.plastanium-compressor.name = 플라스터늄 압축기
block.pyratite-mixer.name = 피라테 제조기 block.pyratite-mixer.name = 피라테 제조기
block.blast-mixer.name = 화합물 제조기 block.blast-mixer.name = 폭발물 제조기
block.solidifer.name = 고체 block.solidifer.name = 고체
block.solar-panel.name = 태양 전지판 block.solar-panel.name = 태양 전지판
block.solar-panel-large.name = 대형 태양 전지판 block.solar-panel-large.name = 대형 태양 전지판
@@ -592,7 +591,7 @@ block.spirit-factory.name = 스피릿 드론 공장
block.phantom-factory.name = 팬텀 드론 공장 block.phantom-factory.name = 팬텀 드론 공장
block.wraith-factory.name = 유령 전투기 공장 block.wraith-factory.name = 유령 전투기 공장
block.ghoul-factory.name = 구울 폭격기 공장 block.ghoul-factory.name = 구울 폭격기 공장
block.dagger-factory.name = 귀여운 디거 기체 공장 block.dagger-factory.name = 디거 기체 공장
block.titan-factory.name = 타이탄 기체 공장 block.titan-factory.name = 타이탄 기체 공장
block.fortress-factory.name = 포트리스 기체 공장 block.fortress-factory.name = 포트리스 기체 공장
block.revenant-factory.name = 레비던트 전투기 공장 block.revenant-factory.name = 레비던트 전투기 공장
@@ -608,18 +607,18 @@ block.thorium-reactor.name = 토륨 원자로
block.command-center.name = 명령 본부 block.command-center.name = 명령 본부
block.mass-driver.name = 물질 이동기 block.mass-driver.name = 물질 이동기
block.blast-drill.name = 고속 발열 드릴 block.blast-drill.name = 고속 발열 드릴
block.thermal-pump.name = 지열 펌프 block.thermal-pump.name = 화력 펌프
block.thermal-generator.name = 지열 발전기 block.thermal-generator.name = 발전기
block.alloy-smelter.name = 설금 제련소 block.alloy-smelter.name = 설금 제련소
block.mend-projector.name = 치료 프로젝터 block.mend-projector.name = 수리 프로젝터
block.surge-wall.name = 설금벽 block.surge-wall.name = 설금벽
block.surge-wall-large.name = 큰 설금벽 block.surge-wall-large.name = 큰 설금벽
block.cyclone.name = 사이클론 block.cyclone.name = 사이클론
block.fuse.name = 퓨즈 block.fuse.name = 퓨즈
block.shock-mine.name = 전격 지뢰 block.shock-mine.name = 전격 지뢰
block.overdrive-projector.name = 가속 프로젝터 block.overdrive-projector.name = 오버드라이브 프로젝터
block.force-projector.name = 강제 프로젝터 block.force-projector.name = 보호막 프로젝터
block.arc.name = 아크 block.arc.name = Arc
block.rtg-generator.name = 토륨 발전소 block.rtg-generator.name = 토륨 발전소
block.spectre.name = 스펙터 block.spectre.name = 스펙터
block.meltdown.name = 멜트다운 block.meltdown.name = 멜트다운
@@ -635,45 +634,44 @@ unit.spirit.name = 스피릿 드론
unit.spirit.description = 기본 드론 유닛. 기본적으로 코어에서 1개가 스폰됩니다. 자동으로 채광하며 아이템을 수집하고, 블록을 수리합니다. unit.spirit.description = 기본 드론 유닛. 기본적으로 코어에서 1개가 스폰됩니다. 자동으로 채광하며 아이템을 수집하고, 블록을 수리합니다.
unit.phantom.name = 팬텀 드론 unit.phantom.name = 팬텀 드론
unit.phantom.description = 첨단 드론 유닛. 광석을 자동으로 채광하며, 아이템을 수집하고 블록을 수리합니다. 일반 드론보다 훨씬 효과적입니다. unit.phantom.description = 첨단 드론 유닛. 광석을 자동으로 채광하며, 아이템을 수집하고 블록을 수리합니다. 일반 드론보다 훨씬 효과적입니다.
unit.dagger.name = 귀여운 디거 unit.dagger.name = 디거
unit.dagger.description = 밈의 대상으로 지정되어 이름이 바뀐 기본 지상 유닛입니다. unit.dagger.description = 기본 지상 유닛입니다. 스웜과 같이 쓰면 유용합니다.
## unit.dagger.description = 기본 지상 유닛입니다. 스웜과 같이 쓰면 유용합니다.
unit.titan.name = 타이탄 unit.titan.name = 타이탄
unit.titan.description = 고급 지상 유닛입니다. 합금을 탄약으로 사용하며 지상과 공중 둘다 공격할 수 있습니다. unit.titan.description = 고급 지상 유닛입니다. 고밀도 합금을 탄약으로 사용하며 지상과 공중 둘다 공격할 수 있습니다.
unit.ghoul.name = 구울 폭격기 unit.ghoul.name = 구울 폭격기
unit.ghoul.description = 무거운 지상 폭격기 입니다. 화합물 또는 피라테를 탄약으로 사용합니다. unit.ghoul.description = 무거운 지상 폭격기 입니다. 폭발물 또는 피라테를 탄약으로 사용합니다.
unit.wraith.name = 유령 전투기 unit.wraith.name = 유령 전투기
unit.wraith.description = 코어를 집중적으로 공격하는 방식을 사용하는 전투기 입니다. unit.wraith.description = 코어를 집중적으로 공격하는 방식을 사용하는 전투기 입니다.
unit.fortress.name = 포트리스 unit.fortress.name = 포트리스
unit.fortress.description = 중포 지상 유닛. 높은 공격력과 체력을 가지고 있습니다. unit.fortress.description = 중포 지상 유닛. 높은 공격력과 체력을 가지고 있습니다.
unit.revenant.name = 레비던트 unit.revenant.name = 레비던트
unit.revenant.description = 대형 레이저를 발사하는 공중 유닛입니다. unit.revenant.description = 대형 레이저를 발사하는 공중 유닛입니다.
tutorial.begin = 플레이어의 임무는 [LIGHT_GRAY]적군[]을 제거하는 것입니다.\n\n[accent]구리를 채광[]하는 것으로 시작합니다. 이것을 하기 위해 플레이어의 중심부 근처에 있는 구리 광맥을 누르세요. tutorial.begin = 플레이어의 주요 목표는 [LIGHT_GRAY]적군[]을 제거하는 것입니다.\n\n이 게임은 [accent]구리를 채광[]하는 것으로 시작합니다.\n이것을 하기 위해 플레이어의 중심부 근처에 있는 구리 광맥을 누르세요.
tutorial.drill = 수동으로 채광하는 것은 효율 적입니다.\n[accent]드릴[]은 자동으로 채광 작업을 합니다.\n구리 광맥에 표시된 영역에 드릴을 하나를 놓으세요. tutorial.drill = 수동으로 채광하는 것은 효율이 낮습니다.\n[accent]드릴[]은 자동으로 채광 작업을 합니다.\n구리 광맥에 표시된 영역에 드릴을 하나를 놓으세요.
tutorial.conveyor = [accent]컨베이어[]를 사용하여 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요. tutorial.conveyor = [accent]컨베이어[]를 사용하여 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.
tutorial.morecopper = 더 많은 구리가 필요합니다.\n\n수동으로 채광하거나, 드릴을 더 설치하세요. tutorial.morecopper = 더 많은 구리가 필요합니다.\n\n수동으로 채광하거나, 드릴을 더 설치하세요.
tutorial.turret = 방어 구조물은 [LIGHT_GRAY]적[]을 물리치기 위해 반드시 필요합니다.\n기지 근처에 듀오 터렛을 설치하세요. tutorial.turret = 방어 구조물은 [LIGHT_GRAY]적[]을 물리치기 위해 반드시 필요합니다.\n기지 근처에 듀오 터렛을 설치하세요.
tutorial.drillturret = 듀오 터렛이 작동하기 위해서는[accent] 구리 탄약 []을 필요로 합니다.\n터렛 옆에 드릴을 설치하여 구리를 공급하세요. tutorial.drillturret = 듀오 터렛이 작동하기 위해서는[accent] 구리 탄약 []을 필요로 합니다.\n터렛 옆에 드릴을 설치하여 구리를 공급하세요.
tutorial.waves = [LIGHT_GRAY]적[]이 접근합니다.\n\n2단계 동안 코어를 보호하고 더 많은 터렛을 만드세요. tutorial.waves = [LIGHT_GRAY]적[]이 접근합니다.\n\n2단계 동안 코어를 보호하고 더 많은 터렛을 만드세요.
tutorial.lead = 더 많은 광석을 이용할 수 있습니다. [accent]납[]을 찾아 탐색하세요.\n\n아이템을 코어로 전송할려면 플레이어 기체 또는 비행기에서 코어로 드래그 하세요. tutorial.lead = 더 많은 광석을 이용할 수 있습니다. [accent]납[]을 찾아 탐색하세요.\n\n아이템을 코어로 전송할려면 플레이어 기체 또는 비행기에서 코어로 드래그 하세요.
tutorial.smelter = 구리와 납은 약한 금속입니다.\n[accent]합금[]은 제련소에서 만들 수 있습니다.\n\n하나 만드세요. tutorial.smelter = 구리와 납은 약한 금속입니다.\n[accent]고밀도 합금[]은 제련소에서 만들 수 있습니다.\n\n하나 만드세요.
tutorial.densealloy = 이 제련소는 이제 합금을 생산할 것입니다.\n몇개 더 생산하세요.\n필요한 경우 더 만드세요. tutorial.densealloy = 이 제련소는 이제 고밀도 합금을 생산할 것입니다.\n몇개 더 생산하세요.\n필요한 경우 더 만드세요.
tutorial.siliconsmelter = 이제 이코어는 채굴과 수리하기 위한[accent] 스피릿 드론[]을 생성 할 것 입니다.\n\n[accent]실리콘[]을 사용해 다른 유닛을 생성하기 위한 공장을 만들 수 있습니다.\n실리콘 제련기를 제작하세요! tutorial.siliconsmelter = 이제 이코어는 채굴과 수리하기 위한[accent] 스피릿 드론[]을 생성 할 것 입니다.\n\n[accent]실리콘[]을 사용해 다른 유닛을 생성하기 위한 공장을 만들 수 있습니다.\n실리콘 제련기를 제작하세요!
tutorial.silicondrill = 실리콘을 제작하려면[accent] 석탄[] 과[accent] 모래[]가 필요합니다.\n드릴을 먼저 건설해보는건 어떤가요? tutorial.silicondrill = 실리콘을 제작하려면[accent] 석탄[] 과[accent] 모래[]가 필요합니다.\n드릴을 먼저 건설해보는건 어떤가요?
tutorial.generator = 기술은[LIGHT_YELLOW] 애너지[] 필요합니다.\n[accent] 석탄 발전기[]를 건설하세요. tutorial.generator = 건물은 [LIGHT_YELLOW]전력[] 필요합니다.\n[accent] 석탄 발전기[]를 건설하세요.
tutorial.generatordrill = [accent] 석탄 발전기[]는 연료가 필요합니다.\n[accent] 석탄[]을 드릴로 채굴해서 연료를 체워주세요. tutorial.generatordrill = [accent] 석탄 발전기[]는 연료가 필요합니다.\n[accent] 석탄[]을 드릴로 채굴해서 연료를 체워주세요.
tutorial.node = 전력은 송신해줄 송신기가 필요합니다.\n[accent] 전력 송신기[]를 석탄 등등 발전기 옆에 설치해서 생산된 전기를 다른곳으로 송신합시다. tutorial.node = 전력은 송신해줄 송신기가 필요합니다.\n[accent] 전력 송신기[]를 석탄 등등 발전기 옆에 설치해서 생산된 전기를 다른곳으로 송신합시다.
tutorial.nodelink = 전력은 전력 블록과 발전기에 연결하거나, 연결된 전력 송신기를 통해 전송이 가능합니다. \n\n전력 송신기를 누르고 발전기와 실리콘 제련기를 선택하여 전원을 연결합시다. tutorial.nodelink = 전력은 전력 블록과 발전기에 연결하거나, 연결된 전력 송신기를 통해 전송이 가능합니다. \n\n전력 송신기를 누르고 발전기와 실리콘 제련기를 선택하여 전원을 연결합시다.
tutorial.silicon = 실리콘이 생산되고 있습니다.\n\n생산 시스템의 개선을 권고 드립니다. tutorial.silicon = 실리콘이 생산되고 있습니다.\n\n생산 시스템의 개선을 권고 드립니다.
tutorial.daggerfactory = 이[accent] 귀여운 디거 기체 공장[]은\n\n공격하는 기체를 생산하기 위해 사용됩니다. tutorial.daggerfactory = 이[accent] 디거 기체 공장[]은\n\n공격하는 기체를 생산하기 위해 사용됩니다.
tutorial.router = 공장을 작동시키기 위해 자원이 필요합니다.\n컨베이어에 운반되고 있는 자원을 분할할 분배기를 만드세요. tutorial.router = 공장을 작동시키기 위해 자원이 필요합니다.\n컨베이어에 운반되고 있는 자원을 분할할 분배기를 만드세요.
tutorial.dagger = 전력 노드를 공장에 연결하세요.\n일단 요구 사항이 충족되면 기체 생산을 시작합니다.\n\n필요에 따라 드릴 및 발전기, 컨베이어를 더 많이 만들 수 있습니다. tutorial.dagger = 전력 노드를 공장에 연결하세요.\n일단 요구 사항이 충족되면 기체 생산을 시작합니다.\n\n필요에 따라 드릴 및 발전기, 컨베이어를 더 많이 만들 수 있습니다.
tutorial.battle = [LIGHT_GRAY]적[]의 코어가 드러났습니다.\n당신의 부대와 귀여운 디거를 사용하여 파괴하세요. tutorial.battle = [LIGHT_GRAY]적[]의 코어가 드러났습니다.\n당신의 부대와 디거를 사용하여 파괴하세요.
block.core.description = 게임에서 가장 중요한 건물.\n파괴되면 게임이 끝납니다. block.core.description = 게임에서 가장 중요한 건물.\n파괴되면 게임이 끝납니다.
block.copper-wall.description = 구리로 만든 벽. block.copper-wall.description = 구리로 만든 벽.
block.copper-wall-large.description = 구리로 만든 큰 벽. block.copper-wall-large.description = 구리로 만든 큰 벽.
block.dense-alloy-wall.description = 합금으로 만든 벽. 구리벽보다 체력이 높습니다. block.dense-alloy-wall.description = 고밀도 합금으로 만든 벽. 구리벽보다 체력이 높습니다.
block.dense-alloy-wall-large.description = 합금으로 만든 큰 벽. block.dense-alloy-wall-large.description = 고밀도 합금으로 만든 큰 벽.
block.thorium-wall.description = 토륨으로 만든 벽. block.thorium-wall.description = 토륨으로 만든 벽.
block.thorium-wall-large.description = 토륨으로 만든 큰 벽. block.thorium-wall-large.description = 토륨으로 만든 큰 벽.
block.phase-wall.description = 날라오는 모든 총알을 튕겨내고 데미지를 입는 특수한 벽입니다. block.phase-wall.description = 날라오는 모든 총알을 튕겨내고 데미지를 입는 특수한 벽입니다.
@@ -683,8 +681,8 @@ block.surge-wall-large.description = 설금을 재료로 한 큰 벽.\n데미지
block.door.description = 유닛이 지나갈 수 있도록 만든 문. 클릭하면 열고 닫습니다. block.door.description = 유닛이 지나갈 수 있도록 만든 문. 클릭하면 열고 닫습니다.
block.door-large.description = 유닛이 자나갈 수 있도록 만든 큰 문. 클릭하면 열고 닫습니다. block.door-large.description = 유닛이 자나갈 수 있도록 만든 큰 문. 클릭하면 열고 닫습니다.
block.mend-projector.description = 주위 건물을 치료하는 건물입니다. block.mend-projector.description = 주위 건물을 치료하는 건물입니다.
block.overdrive-projector.description = 범위 내 모든 행동의 속도를 높여주는 보조형 방어 건물입니다. block.overdrive-projector.description = 범위 내 모든 행동의 속도를 높여주는 보조형 건물입니다.
block.force-projector.description = 보호막을 생성하는 건물.\n기본적으로 전만 있으면 작동하지만, 메타를 넣어 보호막의 범위를 크게 확장시킬 수 있습니다. block.force-projector.description = 보호막을 생성하는 건물.\n기본적으로 전만 있으면 작동하지만, 메타를 넣어 보호막의 범위를 크게 확장시킬 수 있습니다.
block.shock-mine.description = 적이 이 블록을 지나가면 전격 공격을 하는 함정형 방어 건물입니다. block.shock-mine.description = 적이 이 블록을 지나가면 전격 공격을 하는 함정형 방어 건물입니다.
block.duo.description = 범용성을 가진 터렛.\n지상 및 공중공격을 하며, 초중반에 유용합니다. block.duo.description = 범용성을 가진 터렛.\n지상 및 공중공격을 하며, 초중반에 유용합니다.
block.arc.description = 목표 방향으로 전격 공격을 하는 포탑입니다. block.arc.description = 목표 방향으로 전격 공격을 하는 포탑입니다.
@@ -703,15 +701,15 @@ block.titanium-conveyor.description = 빠른 속도로 자원을 수송할 수
block.phase-conveyor.description = 자원을 순간이동 시켜 주는 컨베이어 입니다. block.phase-conveyor.description = 자원을 순간이동 시켜 주는 컨베이어 입니다.
block.junction.description = 컨베이어를 교차시켜 자원을 수송할 때 사용할 수 있는 블록입니다. block.junction.description = 컨베이어를 교차시켜 자원을 수송할 때 사용할 수 있는 블록입니다.
block.mass-driver.description = 자원을 받아서 다른 물질 이동기로 전달할 수 있는 블록입니다.\n엄청난 사거리를 가지고 있으며, 주로 컨베이어가 접근할 수 없는 곳에 유용하게 사용됩니다. block.mass-driver.description = 자원을 받아서 다른 물질 이동기로 전달할 수 있는 블록입니다.\n엄청난 사거리를 가지고 있으며, 주로 컨베이어가 접근할 수 없는 곳에 유용하게 사용됩니다.
block.smelter.description = 합금을 제작할 수 있는 건물입니다. block.smelter.description = 고밀도 합금을 제작할 수 있는 건물입니다.
block.arc-smelter.description = 합금을 제작할 수 있는 건물이지만, 이 건물은 석탄이 필요 없고 좀더 빠른 속도로 합금을 생산해낼 수 있습니다. block.arc-smelter.description = 고밀도 합금을 제작할 수 있는 건물이지만, 이 건물은 석탄이 필요 없고 좀더 빠른 속도로 합금을 생산해낼 수 있습니다.
block.silicon-smelter.description = 실리콘을 제작할 수 있는 건물입니다. block.silicon-smelter.description = 실리콘을 제작할 수 있는 건물입니다.
block.plastanium-compressor.description = 플라스터늄을 제조할 수 있는 건물입니다. block.plastanium-compressor.description = 플라스터늄을 제조할 수 있는 건물입니다.
block.phase-weaver.description = 메타를 제작할 수 있는 건물입니다. block.phase-weaver.description = 메타를 제작할 수 있는 건물입니다.
block.alloy-smelter.description = 설금을 제작할 수 있는 건물입니다. block.alloy-smelter.description = 설금을 제작할 수 있는 건물입니다.
block.pulverizer.description = 돌을 갈아서 모래로 만들 수 있는 건물입니다. block.pulverizer.description = 돌을 갈아서 모래로 만들 수 있는 건물입니다.
block.pyratite-mixer.description = 피라테를 제조할 수 있는 건물입니다. block.pyratite-mixer.description = 피라테를 제조할 수 있는 건물입니다.
block.blast-mixer.description = 화합물을 제조할 수 있는 건물입니다. block.blast-mixer.description = 폭발물을 제조할 수 있는 건물입니다.
block.cryofluidmixer.description = 냉각수를 제작할 수 있는 건물입니다. block.cryofluidmixer.description = 냉각수를 제작할 수 있는 건물입니다.
block.solidifer.description = 용암을 돌로 만들 수 있는 건물입니다. block.solidifer.description = 용암을 돌로 만들 수 있는 건물입니다.
block.melter.description = 돌로 용암을 만들 수 있는 건물입니다. block.melter.description = 돌로 용암을 만들 수 있는 건물입니다.
@@ -719,14 +717,14 @@ block.incinerator.description = 불필요한 아이템을 소각시켜 줄 수
block.biomattercompressor.description = 잔디밭에서 바이오메터를 추출할 수 있는 건물입니다. block.biomattercompressor.description = 잔디밭에서 바이오메터를 추출할 수 있는 건물입니다.
block.separator.description = 돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물입니다. block.separator.description = 돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물입니다.
block.centrifuge.description = 돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물이지만, 이 건물은 좀 더 다양한 자원을 얻을 수 있게 해 줍니다. block.centrifuge.description = 돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물이지만, 이 건물은 좀 더 다양한 자원을 얻을 수 있게 해 줍니다.
block.power-node.description = 생성된 전를 다른 건물로 전달하기 위한 전력 노드입니다. block.power-node.description = 생성된 전를 다른 건물로 전달하기 위한 전력 노드입니다.
block.power-node-large.description = 생성된 전를 다른 건물로 전달하기 위한 건물이며, 일반 노드보다 더 많은 전력을 이동시킬 수 있습니다. block.power-node-large.description = 생성된 전를 다른 건물로 전달하기 위한 건물이며, 일반 노드보다 더 많은 전력을 이동시킬 수 있습니다.
block.battery.description = 흔히 아는 충전식 배터리입니다.\n전력 생산건물에 전력이 떨어질경우, 이 배터리를 전력 노드에 연결하면 이 배터리에 에 있는 전력을 사용하여 전기를 소모하는 건물에 전력을 지속적으로 공급할 수 있습니다. block.battery.description = 흔히 아는 충전식 배터리입니다.\n전력을 사용하는 건물에 전력이 떨어질경우, 이 배터리를 전력 노드에 연결하면 이 배터리에 저장된 전력을 소모하여 지속적으로 공급할 수 있습니다.
block.battery-large.description = 일반 배터리보다 용량이 매우 커진 커진 배터리. block.battery-large.description = 일반 배터리보다 용량이 매우 커진 커진 배터리.
block.combustion-generator.description = 석탄을 연료로 전를 생산해내는 발전소 입니다. block.combustion-generator.description = 석탄을 연료로 전를 생산해내는 발전소 입니다.
block.turbine-generator.description = 석탄 발전기보다 더 많은량의 전를 생산하는 발전기입니다. block.turbine-generator.description = 석탄 발전기보다 더 많은량의 전를 생산하는 발전기입니다.
block.thermal-generator.description = 용암을 원료로 전력을 생산할 수 있는 발전소입니다. block.thermal-generator.description = 용암을 원료로 전력을 생산할 수 있는 발전소입니다.
block.solar-panel.description = 태양열을 받아 자기 스스로 전력을 생산하는 블록입니다. block.solar-panel.description = 태양열을 받아 자기 스스로 전력을 생산하는 건물입니다.
block.solar-panel-large.description = 태양열을 받아 자기 스스로 전력을 생산하지만, 이 블록은 더 빨리 전력을 생산할 수 있습니다. block.solar-panel-large.description = 태양열을 받아 자기 스스로 전력을 생산하지만, 이 블록은 더 빨리 전력을 생산할 수 있습니다.
block.thorium-reactor.description = 토륨을 원료로 하는 토륨 원자로 입니다.\n많은 전력을 생산하지만 엄청난 열을 발생시키기 때문에, 많은 량의 물 또는 냉각수가 있어야 터지지 않고 작동합니다. block.thorium-reactor.description = 토륨을 원료로 하는 토륨 원자로 입니다.\n많은 전력을 생산하지만 엄청난 열을 발생시키기 때문에, 많은 량의 물 또는 냉각수가 있어야 터지지 않고 작동합니다.
block.rtg-generator.description = 냉각은 필요 없지만 토륨 원자로보다 적은량의 전력을 생산하는 방사선 동위원소 열전자 발전기. block.rtg-generator.description = 냉각은 필요 없지만 토륨 원자로보다 적은량의 전력을 생산하는 방사선 동위원소 열전자 발전기.
@@ -739,7 +737,7 @@ block.laser-drill.description = 토륨을 채광할 수 있는 최고급 드릴
block.blast-drill.description = 최상위 드릴입니다. 엄청난 양의 전력과 물을 소모하는 대신, 매우 빠른 속도로 채광합니다. block.blast-drill.description = 최상위 드릴입니다. 엄청난 양의 전력과 물을 소모하는 대신, 매우 빠른 속도로 채광합니다.
block.water-extractor.description = 바닥에서 물을 추출하여 건물에 공급할 수 있는 건물입니다. block.water-extractor.description = 바닥에서 물을 추출하여 건물에 공급할 수 있는 건물입니다.
block.cultivator.description = 잔디에서 바이오메터를 추출할 수 있는 건물입니다. block.cultivator.description = 잔디에서 바이오메터를 추출할 수 있는 건물입니다.
block.oil-extractor.description = 기름(타르)을 추출 해 주는 건물입니다. block.oil-extractor.description = 석유를 추출 해 주는 건물입니다.
block.dart-ship-pad.description = 다트 비행선으로 바꿀 수 있는 패드입니다. block.dart-ship-pad.description = 다트 비행선으로 바꿀 수 있는 패드입니다.
block.trident-ship-pad.description = 삼지창 비행선으로 바꿀 수 있는 패드입니다. block.trident-ship-pad.description = 삼지창 비행선으로 바꿀 수 있는 패드입니다.
block.javelin-ship-pad.description = 자비린 비행선으로 바꿀 수 있는 패드입니다. block.javelin-ship-pad.description = 자비린 비행선으로 바꿀 수 있는 패드입니다.
@@ -751,7 +749,7 @@ block.spirit-factory.description = 스피릿 유닛을 생산하는 공장입니
block.phantom-factory.description = 유닛 팬텀을 생산하는 공장입니다. block.phantom-factory.description = 유닛 팬텀을 생산하는 공장입니다.
block.wraith-factory.description = 유닛 유령 전투기를 소환하는 공장입니다. block.wraith-factory.description = 유닛 유령 전투기를 소환하는 공장입니다.
block.ghoul-factory.description = 구울 유닛을 생산하는 공장입니다. block.ghoul-factory.description = 구울 유닛을 생산하는 공장입니다.
block.dagger-factory.description = 귀여운 디거를 생산하는 공장입니다. block.dagger-factory.description = 디거를 생산하는 공장입니다.
block.titan-factory.description = 타이탄 유닛을 생산할 수 있는 공장입니다. block.titan-factory.description = 타이탄 유닛을 생산할 수 있는 공장입니다.
block.fortress-factory.description = 포트리스를 생산하는 공장입니다. block.fortress-factory.description = 포트리스를 생산하는 공장입니다.
block.revenant-factory.description = 레비던트 유닛을 생산할 수 있는 공장입니다. block.revenant-factory.description = 레비던트 유닛을 생산할 수 있는 공장입니다.
@@ -766,17 +764,17 @@ block.liquid-junction.description = 물펌프와 다른 물펌프를 서로 교
block.bridge-conduit.description = 다리와 다리 사이를 연결하여 액체가 지나갈 수 있게 해 줍니다.\n주로 다리 사이에 지나갈 수 없는 장애물이 있을 때 사용합니다. block.bridge-conduit.description = 다리와 다리 사이를 연결하여 액체가 지나갈 수 있게 해 줍니다.\n주로 다리 사이에 지나갈 수 없는 장애물이 있을 때 사용합니다.
block.mechanical-pump.description = 구리로 제작할 수 있는 기계식 물펌프입니다. block.mechanical-pump.description = 구리로 제작할 수 있는 기계식 물펌프입니다.
block.rotary-pump.description = 일반 물 펌프보다 더 빠른 속도로 물을 끌어올릴 수 있는 펌프입니다. block.rotary-pump.description = 일반 물 펌프보다 더 빠른 속도로 물을 끌어올릴 수 있는 펌프입니다.
block.thermal-pump.description = 용암 위에서 사용할 수 있는 펌프입니다. block.thermal-pump.description = 기계식 펌프보다 3배 빠른 속도로 액체를 퍼올릴 수 있는 펌프이며, 용암도 퍼올릴 수 있는 유일한 펌프입니다.
block.router.description = 한 방향에서 아이템을 받은 후 최대 3개의 다른 방향으로 동일하게 출력합니다.\n재료를 한곳에서 여러 대상으로 분할하여 운반하는데 유용합니다. block.router.description = 한 방향에서 아이템을 받은 후 최대 3개의 다른 방향으로 동일하게 출력합니다.\n재료를 한곳에서 여러 대상으로 분할하여 운반하는데 유용합니다.
block.distributor.description = 아이템을 최대 7개의 다른 방향으로 똑같이 분할하는 고급 분배기. block.distributor.description = 아이템을 최대 7개의 다른 방향으로 똑같이 분할하는 고급 분배기.
block.bridge-conveyor.description = 고급 자원 수송 블록.\n지형이나 건물을 넘어 최대 3개 타일을 건너뛰고 자원을 운송할 수 있습니다. block.bridge-conveyor.description = 고급 자원 수송 블록.\n지형이나 건물을 넘어 최대 3개 타일을 건너뛰고 자원을 운송할 수 있습니다.
block.alpha-mech-pad.description = 알파 기체로 바꿀 수 있는 패드입니다. block.alpha-mech-pad.description = 알파 기체로 바꿀 수 있는 패드입니다.
block.itemsource.description = 자원을 선택하면 그 자원이 무한하게 생성되는 블록입니다. block.itemsource.description = 자원을 선택하면 그 자원이 무한하게 생성되는 블록입니다.
block.liquidsource.description = 무한한 액체를 출력해냅니다. block.liquidsource.description = 무한한 액체를 출력해냅니다.
block.itemvoid.description = 아이템을 시공으로 빠트려 사라지게 만듭니다. block.itemvoid.description = 아이템을 사라지게 만듭니다.
block.powerinfinite.description = 무한한 전력을 공급해주는 블록입니다. block.powerinfinite.description = 무한한 전력을 공급해주는 블록입니다.
block.powervoid.description = 설정된 아이템을 계속해서 출력하는 블록입니다. block.powervoid.description = 설정된 아이템을 계속해서 출력하는 블록입니다.
liquid.water.description = 지상 유닛이 이 위를 지나가면 이동속도가 느려지고, 깊은 물에 빠지면 죽습니다. liquid.water.description = 지상 유닛이 이 위를 지나가면 이동속도가 느려지고, 깊은 물에 빠지면 죽습니다.
liquid.lava.description = 지상 유닛이 이 위를 지나가면 이동속도가 매우 느려지고, 지속적으로 데미지를 입습니다. liquid.lava.description = 지상 유닛이 이 위를 지나가면 이동속도가 매우 느려지고, 지속적으로 데미지를 입습니다.
liquid.oil.description = 일부 조합 블록에서 사용되는 자원입니다. liquid.oil.description = 일부 조합 블록에서 사용되는 자원입니다.
liquid.cryofluid.description = 포탑 및 토륨 원자로에서 사용되는 자원입니다. 누출시 폭발 및 방화의 위험성이 있습니다. liquid.cryofluid.description = 포탑 및 토륨 원자로에서 사용되는 자원입니다.
+6 -6
View File
@@ -9,8 +9,6 @@ text.link.itch.io.description = Strona itch.io z oficjanymi wersjami do pobrania
text.link.google-play.description = Google Play store listing text.link.google-play.description = Google Play store listing
text.link.wiki.description = Oficjana Wiki Mindustry 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.web.unsupported = Wersja przeglądarkowa nie wspomaga tej fukcji!\nPobierz grę aby użyć tej funkcji.
text.gameover = Rdzeń został zniszczony. text.gameover = Rdzeń został zniszczony.
text.gameover.pvp = The[accent] {0}[] team is victorious! text.gameover.pvp = The[accent] {0}[] team is victorious!
text.sector.gameover = This sector has been lost. Re-deploy? text.sector.gameover = This sector has been lost. Re-deploy?
@@ -288,6 +286,7 @@ text.no = Nie ma mowy!
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
text.error.crashtitle = Wystąpił błąd text.error.crashtitle = Wystąpił błąd
text.blocks.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = Informacje o bloku text.blocks.blockinfo = Informacje o bloku
text.blocks.powercapacity = Pojemność mocy text.blocks.powercapacity = Pojemność mocy
text.blocks.powershot = moc / strzał text.blocks.powershot = moc / strzał
@@ -320,7 +319,8 @@ text.blocks.coolant = Płyn chłodzący
text.blocks.coolantuse = Zużycie płynu chłodzącego text.blocks.coolantuse = Zużycie płynu chłodzącego
text.blocks.inputliquidfuel = Paliwo text.blocks.inputliquidfuel = Paliwo
text.blocks.liquidfueluse = Zużycie paliwa text.blocks.liquidfueluse = Zużycie paliwa
text.blocks.explosive = Wysoce wybuchowy! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Zdrowie text.blocks.health = Zdrowie
text.blocks.inaccuracy = Niedokładność text.blocks.inaccuracy = Niedokładność
text.blocks.shots = Strzały text.blocks.shots = Strzały
@@ -345,6 +345,7 @@ text.category.liquids = Płyny
text.category.items = Przedmioty text.category.items = Przedmioty
text.category.crafting = Przetwórstwo text.category.crafting = Przetwórstwo
text.category.shooting = Strzelanie text.category.shooting = Strzelanie
text.category.optional = Optional Enhancements
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
setting.fpscap.name = Max FPS setting.fpscap.name = Max FPS
setting.fpscap.none = None setting.fpscap.none = None
@@ -361,7 +362,6 @@ setting.sensitivity.name = Czułość kontrolera
setting.saveinterval.name = Interwał automatycznego zapisywania setting.saveinterval.name = Interwał automatycznego zapisywania
setting.seconds = Sekundy setting.seconds = Sekundy
setting.fullscreen.name = Pełny ekran setting.fullscreen.name = Pełny ekran
setting.multithread.name = Wielowątkowość
setting.fps.name = Widoczny licznik FPS setting.fps.name = Widoczny licznik FPS
setting.vsync.name = Synchronizacja pionowa setting.vsync.name = Synchronizacja pionowa
setting.lasers.name = Pokaż lasery zasilające setting.lasers.name = Pokaż lasery zasilające
@@ -370,6 +370,7 @@ 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
setting.crashreport.name = Send Anonymous Crash Reports
text.keybind.title = Zmień ustawienia przycisków text.keybind.title = Zmień ustawienia przycisków
category.general.name = General category.general.name = General
category.view.name = View category.view.name = View
@@ -405,8 +406,6 @@ mode.waves.name = Fale
mode.waves.description = Normalny tryb. Normalne surowce i fale. mode.waves.description = Normalny tryb. Normalne surowce i fale.
mode.sandbox.name = sandbox mode.sandbox.name = sandbox
mode.sandbox.description = Nieskończone surowce i fale bez odliczania. Dla przedszkolaków! mode.sandbox.description = Nieskończone surowce i fale bez odliczania. Dla przedszkolaków!
mode.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
mode.freebuild.name = budowanie mode.freebuild.name = budowanie
mode.freebuild.description = Normalne surowce i fale bez odliczania. mode.freebuild.description = Normalne surowce i fale bez odliczania.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Ability: {0}
text.liquid.heatcapacity = [LIGHT_GRAY]Wytrzymałość na przegrzewanie: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Wytrzymałość na przegrzewanie: {0}
text.liquid.viscosity = [LIGHT_GRAY]Lepkość: {0} text.liquid.viscosity = [LIGHT_GRAY]Lepkość: {0}
text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0} text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = Enemy Spawn block.spawn.name = Enemy Spawn
block.core.name = Core block.core.name = Core
block.metalfloor.name = Metal Floor block.metalfloor.name = Metal Floor
+6 -6
View File
@@ -9,8 +9,6 @@ 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 = Wiki oficial do Mindustry text.link.wiki.description = Wiki oficial do Mindustry
text.linkfail = Falha ao abrir o link\nO Url foi copiado text.linkfail = Falha ao abrir o link\nO Url foi copiado
text.editor.web = A versão web não suporta o editor!\nBaixe o jogo para usar.
text.web.unsupported = A versão web não suporta este recurso! Baixe o jogo para usar.
text.gameover = O núcleo foi destruído. text.gameover = O núcleo foi destruído.
text.gameover.pvp = The[accent] {0}[] team is victorious! text.gameover.pvp = The[accent] {0}[] team is victorious!
text.sector.gameover = Esse setor foi perdido! Soltar Novamente? text.sector.gameover = Esse setor foi perdido! Soltar Novamente?
@@ -288,6 +286,7 @@ text.no = Não
text.info.title = [accent]Informação text.info.title = [accent]Informação
text.error.title = [crimson]Ocorreu um Erro. text.error.title = [crimson]Ocorreu um Erro.
text.error.crashtitle = Ocorreu um Erro text.error.crashtitle = Ocorreu um Erro
text.blocks.unknown = [LIGHT_GRAY]???
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
@@ -320,7 +319,8 @@ text.blocks.coolant = Esfriador
text.blocks.coolantuse = Uso do esfriador text.blocks.coolantuse = Uso do esfriador
text.blocks.inputliquidfuel = Liquido de combustivel text.blocks.inputliquidfuel = Liquido de combustivel
text.blocks.liquidfueluse = Uso do liquido de combustivel text.blocks.liquidfueluse = Uso do liquido de combustivel
text.blocks.explosive = Altamente Explosivo! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Saúde text.blocks.health = Saúde
text.blocks.inaccuracy = Imprecisão text.blocks.inaccuracy = Imprecisão
text.blocks.shots = Tiros text.blocks.shots = Tiros
@@ -345,6 +345,7 @@ text.category.liquids = Liquidos
text.category.items = Itens text.category.items = Itens
text.category.crafting = Construindo text.category.crafting = Construindo
text.category.shooting = Atirando text.category.shooting = Atirando
text.category.optional = Optional Enhancements
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
setting.fpscap.name = FPS Maximo setting.fpscap.name = FPS Maximo
setting.fpscap.none = Nenhum setting.fpscap.none = Nenhum
@@ -361,7 +362,6 @@ setting.sensitivity.name = Sensibilidade do Controle
setting.saveinterval.name = Intervalo de autosalvamento setting.saveinterval.name = Intervalo de autosalvamento
setting.seconds = {0} Segundos setting.seconds = {0} Segundos
setting.fullscreen.name = Tela Cheia setting.fullscreen.name = Tela Cheia
setting.multithread.name = Multithreading
setting.fps.name = Mostrar FPS setting.fps.name = Mostrar FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Mostrar lasers setting.lasers.name = Mostrar lasers
@@ -370,6 +370,7 @@ setting.musicvol.name = Volume da Música
setting.mutemusic.name = Desligar Música setting.mutemusic.name = Desligar Música
setting.sfxvol.name = Volume de Efeitos setting.sfxvol.name = Volume de Efeitos
setting.mutesound.name = Desligar Som setting.mutesound.name = Desligar Som
setting.crashreport.name = Send Anonymous Crash Reports
text.keybind.title = Refazer teclas text.keybind.title = Refazer teclas
category.general.name = General category.general.name = General
category.view.name = View category.view.name = View
@@ -405,8 +406,6 @@ mode.waves.name = hordas
mode.waves.description = O modo normal. Recursos limitados E os ataques vem automaticamente. mode.waves.description = O modo normal. Recursos limitados E os ataques vem automaticamente.
mode.sandbox.name = sandbox mode.sandbox.name = sandbox
mode.sandbox.description = Recursos infinitos E sem tempo para Ataques. mode.sandbox.description = Recursos infinitos E sem tempo para Ataques.
mode.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
mode.freebuild.name = construção \nlivre mode.freebuild.name = construção \nlivre
mode.freebuild.description = recursos limitados e Sem tempo para Ataques. mode.freebuild.description = recursos limitados e Sem tempo para Ataques.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Ability: {0}
text.liquid.heatcapacity = [LIGHT_GRAY]Capacidade de aquecimento: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Capacidade de aquecimento: {0}
text.liquid.viscosity = [LIGHT_GRAY]Viscosidade: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosidade: {0}
text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0} text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = Enemy Spawn block.spawn.name = Enemy Spawn
block.core.name = Core block.core.name = Core
block.metalfloor.name = Metal Floor block.metalfloor.name = Metal Floor
+67 -67
View File
@@ -9,8 +9,6 @@ text.link.itch.io.description = itch.io страница с загрузкой
text.link.google-play.description = Скачать для Android c Google play text.link.google-play.description = Скачать для Android c Google play
text.link.wiki.description = Официальная вики Mindustry(англ.) text.link.wiki.description = Официальная вики Mindustry(англ.)
text.linkfail = Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена. text.linkfail = Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена.
text.editor.web = Веб-версия не поддерживает редактор!\nЗагрузите игру, чтобы использовать его.
text.web.unsupported = Веб-версия не поддерживает эту функцию! Загрузите игру, чтобы использовать её.
text.gameover = Игра окончена text.gameover = Игра окончена
text.gameover.pvp = [accent] {0}[] команда победила! text.gameover.pvp = [accent] {0}[] команда победила!
text.sector.gameover = Этот сектор потерян. Высадится повторно? text.sector.gameover = Этот сектор потерян. Высадится повторно?
@@ -50,9 +48,9 @@ text.mission.main = Главная мисия:[LIGHT_GRAY] {0}
text.mission.info = Информация о миссии text.mission.info = Информация о миссии
text.mission.complete = Миссия выполнена! text.mission.complete = Миссия выполнена!
text.mission.complete.body = Сектор {0},{1} был завоёван. text.mission.complete.body = Сектор {0},{1} был завоёван.
text.mission.wave = Пережить следующее количество волн: [accent]{0}/{1}[]\nВолна в {2} text.mission.wave = Осталось[accent] {0}[] волн из[accent] {1}[]\nВолна через {2}
text.mission.wave.enemies = Осталось волн:[accent] {0}/{1}[]\n{2} враг. text.mission.wave.enemies = Осталось[accent] {0}/{1}[] волн:\n{2} враг.
text.mission.wave.enemy = Осталось волн:[accent] {0}/{1}[]\n{2} враг text.mission.wave.enemy = Осталось[accent] {0}/{1}[] волн\n{2} враг
text.mission.wave.menu = Пережить[accent] {0} []волн text.mission.wave.menu = Пережить[accent] {0} []волн
text.mission.battle = Уничтожьте ядро противника. text.mission.battle = Уничтожьте ядро противника.
text.mission.resource.menu = Добыть {0} х{1} text.mission.resource.menu = Добыть {0} х{1}
@@ -262,13 +260,13 @@ text.editor = Редактор
text.mapeditor = Редактор карт text.mapeditor = Редактор карт
text.donate = Донат text.donate = Донат
text.connectfail = [crimson]Не удалось подключиться к серверу: [accent] {0} text.connectfail = [crimson]Не удалось подключиться к серверу: [accent] {0}
text.error.unreachable = Server unreachable. text.error.unreachable = Сервер недоступен.
text.error.invalidaddress = Invalid address. text.error.invalidaddress = Некорректный адрес.
text.error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct! text.error.timedout = Время ожидания истекло!\nУбедитесь, что хост настроен для перенаправления портов и адрес корректный!
text.error.mismatch = Packet error:\npossible client/server version mismatch.\nMake sure you and the host have the latest version of Mindustry! text.error.mismatch = Ошибка пакета:\nвозможное несоответствие версии клиента/сервера. \nУбедитесь, что у вас и у создателя сервера установлена последняя версия Mindustry\\!
text.error.alreadyconnected = Already connected. text.error.alreadyconnected = Вы уже подключены.
text.error.mapnotfound = Map file not found! text.error.mapnotfound = Map file not found!
text.error.any = Unkown network error. text.error.any = Неизвестная сетевая ошибка.
text.settings.language = Язык text.settings.language = Язык
text.settings.reset = Сбросить по умолчанию text.settings.reset = Сбросить по умолчанию
text.settings.rebind = Смена text.settings.rebind = Смена
@@ -288,6 +286,7 @@ text.no = Нет
text.info.title = Информация text.info.title = Информация
text.error.title = [crimson]Произошла ошибка text.error.title = [crimson]Произошла ошибка
text.error.crashtitle = Произошла ошибка text.error.crashtitle = Произошла ошибка
text.blocks.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = Информация о блоке text.blocks.blockinfo = Информация о блоке
text.blocks.powercapacity = Вместимость энергии text.blocks.powercapacity = Вместимость энергии
text.blocks.powershot = Энергия/выстрел text.blocks.powershot = Энергия/выстрел
@@ -320,7 +319,8 @@ text.blocks.coolant = Охлаждающая жидкость
text.blocks.coolantuse = Охлажд. жидкости используется text.blocks.coolantuse = Охлажд. жидкости используется
text.blocks.inputliquidfuel = Жидкое топливо text.blocks.inputliquidfuel = Жидкое топливо
text.blocks.liquidfueluse = Жидкого топлива используется text.blocks.liquidfueluse = Жидкого топлива используется
text.blocks.explosive = Взрывоопасно! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Здоровье text.blocks.health = Здоровье
text.blocks.inaccuracy = Разброс text.blocks.inaccuracy = Разброс
text.blocks.shots = Выстрелы text.blocks.shots = Выстрелы
@@ -345,6 +345,7 @@ text.category.liquids = Жидкости
text.category.items = Предметы text.category.items = Предметы
text.category.crafting = Создание text.category.crafting = Создание
text.category.shooting = Cтрельба text.category.shooting = Cтрельба
text.category.optional = Optional Enhancements
setting.autotarget.name = Авто-цель setting.autotarget.name = Авто-цель
setting.fpscap.name = Макс. FPS setting.fpscap.name = Макс. FPS
setting.fpscap.none = Неограниченный setting.fpscap.none = Неограниченный
@@ -361,7 +362,6 @@ setting.sensitivity.name = Чувствительность контроллер
setting.saveinterval.name = Интервал автосохранения setting.saveinterval.name = Интервал автосохранения
setting.seconds = {0} Секунд setting.seconds = {0} Секунд
setting.fullscreen.name = Полноэкранный режим setting.fullscreen.name = Полноэкранный режим
setting.multithread.name = Многопоточность (TPS)
setting.fps.name = Показывать FPS setting.fps.name = Показывать FPS
setting.vsync.name = Верт. синхронизация setting.vsync.name = Верт. синхронизация
setting.lasers.name = Показывать энергетические лазеры setting.lasers.name = Показывать энергетические лазеры
@@ -370,6 +370,7 @@ setting.musicvol.name = Громкость музыки
setting.mutemusic.name = Заглушить музыку setting.mutemusic.name = Заглушить музыку
setting.sfxvol.name = Громкость звуковых эффектов setting.sfxvol.name = Громкость звуковых эффектов
setting.mutesound.name = Заглушить звук setting.mutesound.name = Заглушить звук
setting.crashreport.name = Отправлять анонимные отчёты о сбоях
text.keybind.title = Настройка управления text.keybind.title = Настройка управления
category.general.name = Основное category.general.name = Основное
category.view.name = Просмотр category.view.name = Просмотр
@@ -405,8 +406,6 @@ mode.waves.name = Волны
mode.waves.description = В режиме "волны" ограниченные ресурсы и автоматические наступающие волны. mode.waves.description = В режиме "волны" ограниченные ресурсы и автоматические наступающие волны.
mode.sandbox.name = Песочница mode.sandbox.name = Песочница
mode.sandbox.description = Бесконечные ресурсы и нет таймера для волн, но можно самим вызвать волну. mode.sandbox.description = Бесконечные ресурсы и нет таймера для волн, но можно самим вызвать волну.
mode.custom.warning = [scarlet]РАЗБЛОКИРОВАННОЕ В ПОЛЬЗОВАТЕЛЬСКИХ ИГРАХ ИЛИ НА СЕРВЕРАХ НЕ СОХРАНЯЕТСЯ[]\n\nИграйте в секторах для разблокировки чего-либо
mode.custom.warning.read = Внимательно прочитайте это!:\n[scarlet]РАЗБЛОКИРОВАННОЕ В ПОЛЬЗОВАТЕЛЬСКИХ ИГРАХ ИЛИ ДРУГИХ РЕЖИМАХ ИГРЫ НЕ РАСПРОСТРАНЯЕТСЯ НА СЕКТОРА ИЛИ ДРУГИЕ РЕЖИМЫ ИГРЫ!\n\n[LIGHT_GRAY](Я бы хотел, чтобы это не было необходимо, но, по-видимому, это так)
mode.freebuild.name = Свободная\nстройка mode.freebuild.name = Свободная\nстройка
mode.freebuild.description = ограниченные ресурсы и нет таймера для волн. mode.freebuild.description = ограниченные ресурсы и нет таймера для волн.
mode.pvp.name = Противо-\nстояние mode.pvp.name = Противо-\nстояние
@@ -434,10 +433,10 @@ item.silicon.name = Кремень
item.silicon.description = Очень полезный полупроводник с применениями в солнечных батареях и множестве сложной электроники. item.silicon.description = Очень полезный полупроводник с применениями в солнечных батареях и множестве сложной электроники.
item.plastanium.name = Пластиний item.plastanium.name = Пластиний
item.plastanium.description = Легкий, пластичный материал, используемый в современных самолетах и боеприпасах для фрагментации. item.plastanium.description = Легкий, пластичный материал, используемый в современных самолетах и боеприпасах для фрагментации.
item.phase-fabric.name = Phase Fabric item.phase-fabric.name = Фазовая ткань
item.phase-fabric.description = A near-weightless substance used in advanced electronics and self-repairing technology. item.phase-fabric.description = Невесомое вещество, используемое в современной электронике и технологии самовосстановления.
item.surge-alloy.name = Высокопрочный сплав item.surge-alloy.name = Высокопрочный сплав
item.surge-alloy.description = An advanced alloy with unique electrical properties. item.surge-alloy.description = Передовой сплав с уникальными электрическими свойствами.
item.biomatter.name = Биоматерия item.biomatter.name = Биоматерия
item.biomatter.description = Скопление органической кашки; используется для переработки в нефть или в качестве топлива. item.biomatter.description = Скопление органической кашки; используется для переработки в нефть или в качестве топлива.
item.sand.name = Песок item.sand.name = Песок
@@ -494,13 +493,14 @@ text.mech.ability = [LIGHT_GRAY]Способность: {0}
text.liquid.heatcapacity = [LIGHT_GRAY]Теплоёмкость: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Теплоёмкость: {0}
text.liquid.viscosity = [LIGHT_GRAY]Вязкость: {0} text.liquid.viscosity = [LIGHT_GRAY]Вязкость: {0}
text.liquid.temperature = [LIGHT_GRAY]Температура: {0} text.liquid.temperature = [LIGHT_GRAY]Температура: {0}
block.constructing = {0}\n[LIGHT_GRAY](В процессе)
block.spawn.name = Спаун врагов block.spawn.name = Спаун врагов
block.core.name = Ядро block.core.name = Ядро
block.metalfloor.name = Мeталичeский пoл block.metalfloor.name = Мeталичeский пoл
block.deepwater.name = Глубоководье block.deepwater.name = Глубоководье
block.water.name = Вода block.water.name = Вода
block.lava.name = Лава block.lava.name = Лава
block.tar.name = Tar block.tar.name = Дёготь
block.blackstone.name = Чёрный камень block.blackstone.name = Чёрный камень
block.stone.name = Камень block.stone.name = Камень
block.dirt.name = Земля block.dirt.name = Земля
@@ -557,9 +557,9 @@ block.pneumatic-drill.name = Пневматический бур
block.laser-drill.name = Лазерный бур block.laser-drill.name = Лазерный бур
block.water-extractor.name = Экстрактор воды block.water-extractor.name = Экстрактор воды
block.cultivator.name = Культиватор block.cultivator.name = Культиватор
block.alpha-mech-pad.name = Завод мехов "Альфа" block.alpha-mech-pad.name = Реконструктор мехов "Альфа"
block.dart-ship-pad.name = Реконструктор дротиковых самолётов block.dart-ship-pad.name = Реконструктор кораблей "Дротик"
block.delta-mech-pad.name = Завод мехов "Дельта" block.delta-mech-pad.name = Реконструктор мехов "Дельта"
block.javelin-ship-pad.name = Реконструктор кораблей "Джавелин" block.javelin-ship-pad.name = Реконструктор кораблей "Джавелин"
block.trident-ship-pad.name = Реконструктор кораблей "Трезубeц" block.trident-ship-pad.name = Реконструктор кораблей "Трезубeц"
block.glaive-ship-pad.name = Реконструктор кораблей "Копьё" block.glaive-ship-pad.name = Реконструктор кораблей "Копьё"
@@ -668,7 +668,7 @@ tutorial.daggerfactory = Постройте[accent] завод по произв
tutorial.router = Заводы нуждаются в ресурсах для работы.\nСоздайте маршрутизатор для разделения ресурсов конвейера. tutorial.router = Заводы нуждаются в ресурсах для работы.\nСоздайте маршрутизатор для разделения ресурсов конвейера.
tutorial.dagger = Соедините силовой узел с заводом.\nПосле выполнения требований будет создан мех. \n\nПри необходимости создайте дополнительные буры, генераторы и конвейеры. tutorial.dagger = Соедините силовой узел с заводом.\nПосле выполнения требований будет создан мех. \n\nПри необходимости создайте дополнительные буры, генераторы и конвейеры.
tutorial.battle = [LIGHT_GRAY] Враг[] показал своё ядро.\nУничтожьте его своим мехом и вашой новой боевой единицой. tutorial.battle = [LIGHT_GRAY] Враг[] показал своё ядро.\nУничтожьте его своим мехом и вашой новой боевой единицой.
block.copper-wall.description = Стена с самым маленьким запасом прочности.\n Хороша в начале игры для защиты. block.copper-wall.description = Дешевый оборонительный блок.\nПолезно для защиты ядра и турелей во время первых волн.
block.copper-wall-large.description = Большая стена самым маленьким запасом прочности.\n Хороша в начале игры. block.copper-wall-large.description = Большая стена самым маленьким запасом прочности.\n Хороша в начале игры.
block.dense-alloy-wall.description = Стена с показателем прочности "ниже среднего". block.dense-alloy-wall.description = Стена с показателем прочности "ниже среднего".
block.dense-alloy-wall-large.description = Большая стена с показателем прочности "ниже среднего". block.dense-alloy-wall-large.description = Большая стена с показателем прочности "ниже среднего".
@@ -684,7 +684,7 @@ block.mend-projector.description = Ремонтирует строения в н
block.overdrive-projector.description = Ускоряет в небольшом радиусе все ваши действия. block.overdrive-projector.description = Ускоряет в небольшом радиусе все ваши действия.
block.force-projector.description = Создаёт в небольшом радиусе силовое поле, которое защищает от атак противника. block.force-projector.description = Создаёт в небольшом радиусе силовое поле, которое защищает от атак противника.
block.shock-mine.description = Поставьте её на землю. Она бьётся ЭЛЕКТРИЧЕСТВОМ О_О block.shock-mine.description = Поставьте её на землю. Она бьётся ЭЛЕКТРИЧЕСТВОМ О_О
block.duo.description = Хорошая турель начальная турель. Используйте стены для её зашиты.\n\nИспользует в качестве снарядов медь, плотный сплав, кремний и пиротит.\n\nМожно подвести воду и криогенную жидкость для ускорения стрельбы. block.duo.description = Маленькая и дешёвая турель.
block.arc.description = Турель с малым радиусом атаки. В качестве патронов требует воду или криогенную жидкость. Также нужна энергия. block.arc.description = Турель с малым радиусом атаки. В качестве патронов требует воду или криогенную жидкость. Также нужна энергия.
block.hail.description = Дальнобойная начальная турель.\nИспользует в качестве снарядов плотный сплав, кремний и пиротит.\nДля ускорения стрельбы можно подвести воду и криогенную жидкость. block.hail.description = Дальнобойная начальная турель.\nИспользует в качестве снарядов плотный сплав, кремний и пиротит.\nДля ускорения стрельбы можно подвести воду и криогенную жидкость.
block.lancer.description = Турель, которая стреляет лазером на среднее расстояние.\nИспользует в качестве снарядов энергию.\nДля ускорения стрельбы можно подвести воду, нефть и криогенную жидкость. block.lancer.description = Турель, которая стреляет лазером на среднее расстояние.\nИспользует в качестве снарядов энергию.\nДля ускорения стрельбы можно подвести воду, нефть и криогенную жидкость.
@@ -727,54 +727,54 @@ block.thermal-generator.description = [accent]Горячее восприним
block.solar-panel.description = Зелёная энергия. Бесконечный источник энергии. block.solar-panel.description = Зелёная энергия. Бесконечный источник энергии.
block.solar-panel-large.description = Зелёная энергия. Большой и бесконечный источник энергии. block.solar-panel-large.description = Зелёная энергия. Большой и бесконечный источник энергии.
block.thorium-reactor.description = Производит энергию в большом количестве. Может взорваться. Требуется торий и жидкость для охлаждения (вода или криогенная). block.thorium-reactor.description = Производит энергию в большом количестве. Может взорваться. Требуется торий и жидкость для охлаждения (вода или криогенная).
block.rtg-generator.description = A radioisotope thermoelectric generator which does not require cooling but provides less power than a thorium reactor. block.rtg-generator.description = Радиоизотопный термоэлектрический генератор, который не требует охлаждения, но обеспечивает меньшую мощность, чем ториевый реактор.
block.unloader.description = Выгружает из ядра или хранилища верхний левый предмет. block.unloader.description = Выгружает из ядра или хранилища верхний левый предмет.
block.container.description = Может хранить 500 ед. ресурсов. С помощью разгрузчика можно достать ресурсы из него. block.container.description = Хранит небольшое количество предметов(250). Используйте его для создания буферов, когда существует непостоянная потребность в материалах. [LIGHT_GRAY] Разгрузчик[] можно использовать для извлечения элементов из хранилища.
block.vault.description = Хранит предметы в количестве до 2 000. block.vault.description = Хранит большое количество предметов(1000). Используйте его для создания буферов, когда существует непостоянная потребность в материалах.[LIGHT_GRAY] Разгрузчик[] можно использовать для извлечения элементов из хранилища.
block.mechanical-drill.description = Самый первый доступный бур. Добывает медь, свинец, уголь, песок. Можно подвести к нему [BLUE] воду[] для увеличения скорости сверления. block.mechanical-drill.description = Самый первый доступный бур. \n\nДобывает медь, свинец, уголь, песок. \n\nМожно подвести к нему [BLUE] воду[] для увеличения скорости сверления.
block.pneumatic-drill.description = Улучшенная версия механического бура.\n\nДобывает тоже самое, что и механический бур. Также может добывать титан и камень.\n\nМожно подвести к нему[BLUE] воду[] для увеличения скорости сверления. block.pneumatic-drill.description = Улучшенная версия механического бура.\n\nДобывает тоже самое, что и механический бур. Также может добывать титан и камень.\n\nМожно подвести к нему[BLUE] воду[] для увеличения скорости сверления.
block.laser-drill.description = Улучшенная версия пневматического бура.\n\nДобывает тоже самое, что и пневматический бур. Также может добывать торий.\n\nМожно подвести к нему[BLUE] воду[] для увеличения скорости сверления. block.laser-drill.description = Улучшенная версия пневматического бура.\n\nДобывает тоже самое, что и пневматический бур. Также может добывать торий.\n\nМожно подвести к нему[BLUE] воду[] для увеличения скорости сверления.
block.blast-drill.description = Самый мощный бур.\n\n Добывает тоже самое, что и лазерный бур. Сверлит быстрей всех буров, но требует ещё больше энергии.\n\n Можно подвести к нему [BLUE]воду[] для увеличения скорости сверления. block.blast-drill.description = Самый мощный бур.\n\nДобывает тоже самое, что и лазерный бур. Сверлит быстрей всех буров, но требует ещё больше энергии.\n\nМожно подвести к нему [BLUE]воду[] для увеличения скорости сверления.
block.water-extractor.description = Добывает воду из земли. Требует Энергию. block.water-extractor.description = Извлекает воду из земли. Используйте его, когда поблизости нет озера.
block.cultivator.description = Производит биоматерию из травы и воды. Требует энергии. block.cultivator.description = Культирует почву водой для получения биоматерии.
block.oil-extractor.description = Производит нефть из динозавров(зачёркнуто), воды и песка. Требует энергии. block.oil-extractor.description = Использует большое количество энергии для добычи нефти из песка, динозавров(зачёркнуто). Используйте его, когда поблизости нет прямого источника нефти.
block.dart-ship-pad.description = Превращает вас в дротиковый самолёт. Реконструктор требует энергию.\nПодробности про дротиковых самолётов в "разблокированное". block.dart-ship-pad.description = Оставьте свое текущее судно и перейдите на основной истребитель.\nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех.
block.trident-ship-pad.description = Превращает вас в Трезубeц. Реконструктор требует энергию.\nПодробности про Трезубeц в "разблокированное". block.trident-ship-pad.description = Оставьте свой текущий корабль и перейдите в достаточно хорошо бронированный тяжёлый бомбардировщик.\nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех.
block.javelin-ship-pad.description = Превращает вас в Джавелин. Реконструктор требует энергию.\nПодробности про Джавелин в "разблокированное". block.javelin-ship-pad.description = Оставьте свой текущий корабль и перейдите в сильный и быстрый перехватчик с молниеносным оружием.\nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех.
block.glaive-ship-pad.description = Превращает вас в Копьё. Реконструктор требует энергию.\nПодробности про Копьё в "разблокированное". block.glaive-ship-pad.description = Превращает вас в Копьё. Реконструктор требует энергию.\nПодробности про Копьё в "разблокированное".
block.tau-mech-pad.description = Превращает вас в Тау. Реконструктор требует энергию.\nПодробности про Тау в "разблокированное". block.tau-mech-pad.description = Покиньте свой текущий корабль и превратитесь в мех поддержки, который может исцелять дружественные здания и юниты.\nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех.
block.delta-mech-pad.description = Превращает вас в "Дельта". Реконструктор требует энергию.\nПодробности про "Дельта" в "разблокированное". block.delta-mech-pad.description = Оставьте свой текущий корабль и перейдите в большой, хорошо бронированный боевой корабль.\nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех.
block.omega-mech-pad.description = Превращает вас в Омега. Реконструктор требует энергию.\nПодробности про Омега в "разблокированное". block.omega-mech-pad.description = Оставьте свой текущий корабль и превратите его в громоздкий и хорошо бронированный мех, сделанный для фронтовых нападений. \nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех.
block.spirit-factory.description = Производит дронов типа "призрак" block.spirit-factory.description = Производит легкие дроны, которые добывают руду(медную и свинцовую) и ремонтирует блоки.
block.phantom-factory.description = Производит дронов типа "фантом"\nПодробности в "разблокированное" block.phantom-factory.description = Производит усовершенствованные единицы, которые значительно эффективнее, чем дрон-привидение.
block.wraith-factory.description = Производит призрачных истребителей\nПодробности в "разблокированное" block.wraith-factory.description = Производит быстрые и летающие боевые единицы.
block.ghoul-factory.description = Производит гулевых бомбардировщиков\nПодробности в "разблокированное" block.ghoul-factory.description = Производит тяжёлых ковровых бомбардировщиков.
block.dagger-factory.description = Производит\nПодробности в "разблокированное" block.dagger-factory.description = Производит основных наземных боевых единиц.
block.titan-factory.description = Производит мехов типа "Титан".\nПодробности в "разблокированное" block.titan-factory.description = Производит продвинутые защищённые боевые единицы.
block.fortress-factory.description = Огромный медленный мех обладающий такой-же огромной пушкой. block.fortress-factory.description = Производит тяжелые артиллерийские боевые единицы.
block.revenant-factory.description = Производит бомбардировщиков типа "Потусторонний убийца"\nПодробности в "разблокированное" block.revenant-factory.description = Производит тяжелые наземные боевые единицы.
block.repair-point.description = Может ремонтировать вас и ваши боевые единицы block.repair-point.description = Может ремонтировать вас и ваши боевые единицы
block.command-center.description = Позволяет управлять боевыми единицами.\nСтрелочка - атаковать\nЩит - отступать. block.command-center.description = Позволяет изменять дружественное поведение ИИ. В настоящее время поддерживаются команды атаки, отступления и патрулирования.
block.conduit.description = Конвейер для жидкостей первого поколения. Медленная скорость передачи жидкости. block.conduit.description = Основной блок транспортировки жидкости. Работает как конвейер, но с жидкостями. Лучше всего использовать экстракторы, насосы или т.п..
block.pulse-conduit.description = Конвейер для жидкостей второго поколения. block.pulse-conduit.description = Улучшенный блок транспортировки жидкости. Транспортирует жидкости быстрее и хранит больше, чем стандартные.
block.phase-conduit.description = Лучший трубопровод, требует энергию. Похоже, он из будущего. block.phase-conduit.description = Улучшенный блок транспортировки жидкости. Использует энергию для передачи жидкостей на подключенный фазовый канал на несколько плиток.
block.liquid-router.description = Распределяет жидкость на 4 стороны. block.liquid-router.description = Принимает жидкости с одного направления и равномерно выводит их до трех других направлений. Может также хранить определенное количество жидкости. Полезно для разделения жидкостей из одного источника на несколько целей.
block.liquid-tank.description = Хранит жидкость. block.liquid-tank.description = Хранит большое количество жидкостей. Используйте его для создания буферов, когда существует непостоянная потребность в материалах или в качестве защиты для охлаждения жизненно важных блоков.
block.liquid-junction.description = Название говорит само за себя. С помощью него можно сделать две трубы, которые проходят через друг-друга и не смешиваются. block.liquid-junction.description = Действует как мост для двух пересекающихся каналов. Полезно в ситуациях с двумя различными каналами, перевозящими различные жидкости в разные места.
block.bridge-conduit.description = Позволяет проходить над возвышенностями(блоками). Лучше всего подключать последовательно и в линию. block.bridge-conduit.description = Расширенный блок транспортировки жидкости. Позволяет транспортировать жидкости до 3 блоков любого ландшафта или здания. Лучше всего подключать последовательно и в линию.
block.mechanical-pump.description = Качает только воду. block.mechanical-pump.description = Дешевый насос с медленным выкачиванием, но без потребления энергии. Качает только воду.
block.rotary-pump.description = Качает воду и нефть. Требует энергии. block.rotary-pump.description = Передовой насос, который удваивает скорость, используя энергию.
block.thermal-pump.description = Позволяет качать лаву, воду и нефть. block.thermal-pump.description = Конечный насос. В три раза быстрее, чем механический насос и единственный насос, который способен извлекать лаву.
block.router.description = Принимает предметы из одного направления и равномерно выводит их до трех других направлений. Полезно для разделения материалов из одного источника на несколько целей. block.router.description = Принимает предметы из одного направления и равномерно выводит их до трёх других направлений. Полезно для разделения материалов из одного источника на несколько целей.
block.distributor.description = Продвинутый маршрутизатор, который равномерно разбивает элементы до 7 направлений. block.distributor.description = Передовой маршрутизатор, который равномерно разбивает элементы до 7 других направлений.
block.bridge-conveyor.description = Продвинутый транспортный блок элемента. Позволяет транспортировать предметы до 3-х плиток любого ландшафта или здания. block.bridge-conveyor.description = Улучшенный транспортный блок элементов. Позволяет транспортировать предметы до 3-х блоков над любым ландшафтом или зданием.
block.alpha-mech-pad.description = Превращает вас в "Альфа". Требует энергию.\n Подробности про "Альфа" в "разблокированное". block.alpha-mech-pad.description = Превращает вас в мех [accent] Альфа[]. Требует энергию.
block.itemsource.description = Из этого блока можно получить любой предмет. block.itemsource.description = Бесконечно выводит предметы. Работает только в песочнице.
block.liquidsource.description = Из этого блока можно получить любую жидкость. block.liquidsource.description = Бесконечно выводит жидкости. Работает только в песочнице.
block.itemvoid.description = Предметы просто уходят в пустоту block.itemvoid.description = Уничтожает любые предметы, которые входят в него, без использования энергии. Работает только в песочнице.
block.powerinfinite.description = Бесконечность — не предел. block.powerinfinite.description = Бесконечность — не предел. Бесконечно выводит энергию. Доступен только в песочнице.
block.powervoid.description = Жидкости просто уходят в пустоту block.powervoid.description = Энергия просто уходит в пустоту. Присутствует только в песочнице.
liquid.water.description = Намного лучше чем [BLUE]монооксид дигидрогена[].\n\n Для получения воды используйте помпу(насос) на источнике(блоке) или экстрактор воды.\n\n Эту жидкость можно подвести к бурам для ускорения скорости добычи или к турелям для ускорения стрельбы. liquid.water.description = Намного лучше чем [BLUE]монооксид дигидрогена[].\n\n Для получения воды используйте помпу(насос) на источнике(блоке) или экстрактор воды.\n\n Эту жидкость можно подвести к бурам для ускорения скорости добычи или к турелям для ускорения стрельбы.
liquid.lava.description = [accent]Горячо...\nВещество расплавленное из горно-каменных пород.\nСлужит как топливо для термального генератора. liquid.lava.description = [accent]Горячо...\nВещество расплавленное из горно-каменных пород.\nСлужит как топливо для термального генератора.
liquid.oil.description = Кто-то писал о добавлении золота в игру. Его добавили, правда оно какое-то чёрное...\nСмесь жидких углеводородов, выделяющаяся из природного газа в результате снижения температуры и пластового давления.\nСлужит для пластиенивого компрессора и т.д.. liquid.oil.description = Кто-то писал о добавлении золота в игру. Его добавили, правда оно какое-то чёрное...\nСмесь жидких углеводородов, выделяющаяся из природного газа в результате снижения температуры и пластового давления.\nСлужит для пластиниевого компрессора и т.д..
liquid.cryofluid.description = Жидкость с температурой ниже чем -273 градусов по цельсию. Может быть использована для ускорения стрельбы турелей или для охлаждения чего-то. liquid.cryofluid.description = Жидкость с температурой ниже чем -273 градусов по цельсию. Может быть использована для ускорения стрельбы турелей или для охлаждения чего-то.
+6 -6
View File
@@ -9,8 +9,6 @@ text.link.itch.io.description = Bilgisayar ve Site versiyonunun bulundugu Site
text.link.google-play.description = Google Play magaza sayfasi text.link.google-play.description = Google Play magaza sayfasi
text.link.wiki.description = Orjinal Mindustry Bilgilendirme Sayfasi text.link.wiki.description = Orjinal Mindustry Bilgilendirme Sayfasi
text.linkfail = Link Acilamadi!\nLink sizin icin kopyalandi. text.linkfail = Link Acilamadi!\nLink sizin icin kopyalandi.
text.editor.web = The web version does not support the editor!\nDownload the game to use it.
text.web.unsupported = Site versiyonu bunu desteklemiyor! Bilgisayar versiyonunu indirmeniz gerek.
text.gameover = Cekirdegin yok edildi. text.gameover = Cekirdegin yok edildi.
text.gameover.pvp = The[accent] {0}[] team is victorious! text.gameover.pvp = The[accent] {0}[] team is victorious!
text.sector.gameover = Sektor kaybedildi. Geri gitmek ister misin? text.sector.gameover = Sektor kaybedildi. Geri gitmek ister misin?
@@ -288,6 +286,7 @@ text.no = Hayir
text.info.title = [accent]Bilgi text.info.title = [accent]Bilgi
text.error.title = [crimson]Bir hata olustu text.error.title = [crimson]Bir hata olustu
text.error.crashtitle = Bir hata olustu text.error.crashtitle = Bir hata olustu
text.blocks.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = Yapi bilgisi text.blocks.blockinfo = Yapi bilgisi
text.blocks.powercapacity = Guc kapasitesi text.blocks.powercapacity = Guc kapasitesi
text.blocks.powershot = Guc/Saldiri hizi text.blocks.powershot = Guc/Saldiri hizi
@@ -320,7 +319,8 @@ text.blocks.coolant = Sogutma sivisi
text.blocks.coolantuse = Sogutma sivi kullanimi text.blocks.coolantuse = Sogutma sivi kullanimi
text.blocks.inputliquidfuel = Yakit sivisi text.blocks.inputliquidfuel = Yakit sivisi
text.blocks.liquidfueluse = Sivi yakit kullanimi text.blocks.liquidfueluse = Sivi yakit kullanimi
text.blocks.explosive = Patlayici! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Can text.blocks.health = Can
text.blocks.inaccuracy = sekme text.blocks.inaccuracy = sekme
text.blocks.shots = vuruslar text.blocks.shots = vuruslar
@@ -345,6 +345,7 @@ text.category.liquids = sivilar
text.category.items = esyalar text.category.items = esyalar
text.category.crafting = uretim text.category.crafting = uretim
text.category.shooting = sikma text.category.shooting = sikma
text.category.optional = Optional Enhancements
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
setting.fpscap.name = Max FPS setting.fpscap.name = Max FPS
setting.fpscap.none = Yok setting.fpscap.none = Yok
@@ -361,7 +362,6 @@ setting.sensitivity.name = Kumanda hassasligi
setting.saveinterval.name = Otomatik kaydetme suresi setting.saveinterval.name = Otomatik kaydetme suresi
setting.seconds = {0} Saniye setting.seconds = {0} Saniye
setting.fullscreen.name = Tam ekran setting.fullscreen.name = Tam ekran
setting.multithread.name = Parcaciklar
setting.fps.name = FPS'i goster setting.fps.name = FPS'i goster
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Guc lazerlerini goster setting.lasers.name = Guc lazerlerini goster
@@ -370,6 +370,7 @@ setting.musicvol.name = Ses yuksekligi
setting.mutemusic.name = Sesi kapat setting.mutemusic.name = Sesi kapat
setting.sfxvol.name = Ses seviyesi setting.sfxvol.name = Ses seviyesi
setting.mutesound.name = Sesi kapat setting.mutesound.name = Sesi kapat
setting.crashreport.name = Send Anonymous Crash Reports
text.keybind.title = Tuslari ayarla text.keybind.title = Tuslari ayarla
category.general.name = General category.general.name = General
category.view.name = Goster category.view.name = Goster
@@ -405,8 +406,6 @@ mode.waves.name = Dalgali
mode.waves.description = Klasik mod. Dalgalara karsi cekirdegi koru. mode.waves.description = Klasik mod. Dalgalara karsi cekirdegi koru.
mode.sandbox.name = Serbest mode.sandbox.name = Serbest
mode.sandbox.description = Sonsuz esyalar ve Dalga suresi yok mode.sandbox.description = Sonsuz esyalar ve Dalga suresi yok
mode.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
mode.freebuild.name = Yapi Yapma mode.freebuild.name = Yapi Yapma
mode.freebuild.description = Sinirli esyalar ama dalga suresi yok. mode.freebuild.description = Sinirli esyalar ama dalga suresi yok.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]yetenek gucu: {0}
text.liquid.heatcapacity = [LIGHT_GRAY]isinma kapasitesi: {0} text.liquid.heatcapacity = [LIGHT_GRAY]isinma kapasitesi: {0}
text.liquid.viscosity = [LIGHT_GRAY]Yari sivilik: {0} text.liquid.viscosity = [LIGHT_GRAY]Yari sivilik: {0}
text.liquid.temperature = [LIGHT_GRAY]isi: {0} text.liquid.temperature = [LIGHT_GRAY]isi: {0}
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = Enemy Spawn block.spawn.name = Enemy Spawn
block.core.name = cekirdek block.core.name = cekirdek
block.metalfloor.name = metal zemin block.metalfloor.name = metal zemin
+6 -6
View File
@@ -9,8 +9,6 @@ text.link.itch.io.description = PC yüklemeleri ve web sürümü ile itch.io say
text.link.google-play.description = Google Play mağaza sayfası 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ı açılamadı! URL, yazı tahtanıza kopyalandı. text.linkfail = Bağlantı açılamadı! URL, yazı tahtanıza kopyalandı.
text.editor.web = Web sürümü editörü desteklemiyor! Editörü kullanmak için oyunu indirin.
text.web.unsupported = The web version does not support this feature! Download the game to use it.
text.gameover = Çekirdek yok edildi. text.gameover = Çekirdek yok edildi.
text.gameover.pvp = The[accent] {0}[] team is victorious! text.gameover.pvp = The[accent] {0}[] team is victorious!
text.sector.gameover = This sector has been lost. Re-deploy? text.sector.gameover = This sector has been lost. Re-deploy?
@@ -288,6 +286,7 @@ text.no = No
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
text.error.crashtitle = Bir hata oluştu text.error.crashtitle = Bir hata oluştu
text.blocks.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = Blok Bilgisi text.blocks.blockinfo = Blok Bilgisi
text.blocks.powercapacity = Güç kapasitesi text.blocks.powercapacity = Güç kapasitesi
text.blocks.powershot = Güç / atış text.blocks.powershot = Güç / atış
@@ -320,7 +319,8 @@ text.blocks.coolant = Coolant
text.blocks.coolantuse = Coolant Use text.blocks.coolantuse = Coolant Use
text.blocks.inputliquidfuel = Fuel Liquid text.blocks.inputliquidfuel = Fuel Liquid
text.blocks.liquidfueluse = Liquid Fuel Use text.blocks.liquidfueluse = Liquid Fuel Use
text.blocks.explosive = Çok patlayıcı! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Can text.blocks.health = Can
text.blocks.inaccuracy = yanlışlık text.blocks.inaccuracy = yanlışlık
text.blocks.shots = atışlar text.blocks.shots = atışlar
@@ -345,6 +345,7 @@ 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
text.category.optional = Optional Enhancements
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
setting.fpscap.name = Max FPS setting.fpscap.name = Max FPS
setting.fpscap.none = None setting.fpscap.none = None
@@ -361,7 +362,6 @@ setting.sensitivity.name = Denetleyici hassasiyeti
setting.saveinterval.name = Otomatik Kaydetme Aralığı setting.saveinterval.name = Otomatik Kaydetme Aralığı
setting.seconds = saniye setting.seconds = saniye
setting.fullscreen.name = Tam ekran setting.fullscreen.name = Tam ekran
setting.multithread.name = Çok iş parçacığı
setting.fps.name = Saniyede ... Kare göstermek setting.fps.name = Saniyede ... Kare göstermek
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Güç Lazerleri Göster setting.lasers.name = Güç Lazerleri Göster
@@ -370,6 +370,7 @@ 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
setting.crashreport.name = Send Anonymous Crash Reports
text.keybind.title = Tuşları yeniden ayarla text.keybind.title = Tuşları yeniden ayarla
category.general.name = General category.general.name = General
category.view.name = View category.view.name = View
@@ -405,8 +406,6 @@ mode.waves.name = dalgalar
mode.waves.description = normal mod. sınırlı kaynaklar ve otomatik gelen dalgalar. mode.waves.description = normal mod. sınırlı kaynaklar ve otomatik gelen dalgalar.
mode.sandbox.name = Limitsiz Oynama mode.sandbox.name = Limitsiz Oynama
mode.sandbox.description = sonsuz kaynaklar ve dalgalar için zamanlayıcı yok. mode.sandbox.description = sonsuz kaynaklar ve dalgalar için zamanlayıcı yok.
mode.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
mode.freebuild.name = Özgür Oynama mode.freebuild.name = Özgür Oynama
mode.freebuild.description = sınırlı kaynaklar ve dalgalar için zamanlayıcı yok. mode.freebuild.description = sınırlı kaynaklar ve dalgalar için zamanlayıcı yok.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Ability: {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}
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = Enemy Spawn block.spawn.name = Enemy Spawn
block.core.name = Core block.core.name = Core
block.metalfloor.name = Metal Floor block.metalfloor.name = Metal Floor
+6 -6
View File
@@ -9,8 +9,6 @@ text.link.itch.io.description = Itch.io сторінка з веб-версіє
text.link.google-play.description = Скачати з Google Play для Android text.link.google-play.description = Скачати з Google Play для Android
text.link.wiki.description = Офіційна Mindustry вікі (англ.) text.link.wiki.description = Офіційна Mindustry вікі (англ.)
text.linkfail = Не вдалося відкрити посилання!\nURL-адреса скопійовано у ваш буфер обміну. text.linkfail = Не вдалося відкрити посилання!\nURL-адреса скопійовано у ваш буфер обміну.
text.editor.web = Веб-версія не підтримує редактора! \nЗавантажте гру, щоб використовувати його.
text.web.unsupported = Веб-версія не підтримує цю функцію! Завантажте гру, щоб використовувати її.
text.gameover = Гру закінчено text.gameover = Гру закінчено
text.gameover.pvp = [accent] {0}[] команда перемогла! text.gameover.pvp = [accent] {0}[] команда перемогла!
text.sector.gameover = Цей сектор було втрачено. Повторно висадитися? text.sector.gameover = Цей сектор було втрачено. Повторно висадитися?
@@ -288,6 +286,7 @@ 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.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = Інформація про блок text.blocks.blockinfo = Інформація про блок
text.blocks.powercapacity = Місткість енергії text.blocks.powercapacity = Місткість енергії
text.blocks.powershot = Енергія/постріл text.blocks.powershot = Енергія/постріл
@@ -320,7 +319,8 @@ text.blocks.coolant = Охолоджуюча рідина
text.blocks.coolantuse = Охолодж. рідини використовуеться text.blocks.coolantuse = Охолодж. рідини використовуеться
text.blocks.inputliquidfuel = Рідке паливо text.blocks.inputliquidfuel = Рідке паливо
text.blocks.liquidfueluse = Рідкого палива використовуеться text.blocks.liquidfueluse = Рідкого палива використовуеться
text.blocks.explosive = Вибухонебезпечний! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = Здоров'я text.blocks.health = Здоров'я
text.blocks.inaccuracy = Розкид text.blocks.inaccuracy = Розкид
text.blocks.shots = Постріли text.blocks.shots = Постріли
@@ -345,6 +345,7 @@ text.category.liquids = Рідинне
text.category.items = Елементи text.category.items = Елементи
text.category.crafting = Створення text.category.crafting = Створення
text.category.shooting = Стрільба text.category.shooting = Стрільба
text.category.optional = Optional Enhancements
setting.autotarget.name = Авто-ціль setting.autotarget.name = Авто-ціль
setting.fpscap.name = Макс. FPS setting.fpscap.name = Макс. FPS
setting.fpscap.none = Необмежений setting.fpscap.none = Необмежений
@@ -361,7 +362,6 @@ setting.sensitivity.name = Чутливість контролера
setting.saveinterval.name = Інтервал автозбереження setting.saveinterval.name = Інтервал автозбереження
setting.seconds = {0} сек. setting.seconds = {0} сек.
setting.fullscreen.name = Повноекранний режим setting.fullscreen.name = Повноекранний режим
setting.multithread.name = Багатопотоковість (TPS)
setting.fps.name = Показати FPS setting.fps.name = Показати FPS
setting.vsync.name = Вертикальна синхронізація setting.vsync.name = Вертикальна синхронізація
setting.lasers.name = Показати енергетичні лазери setting.lasers.name = Показати енергетичні лазери
@@ -370,6 +370,7 @@ setting.musicvol.name = Гучність музики
setting.mutemusic.name = Заглушити музику setting.mutemusic.name = Заглушити музику
setting.sfxvol.name = Гучність звукових ефектів setting.sfxvol.name = Гучність звукових ефектів
setting.mutesound.name = Заглушити звук setting.mutesound.name = Заглушити звук
setting.crashreport.name = Send Anonymous Crash Reports
text.keybind.title = Налаштування управління text.keybind.title = Налаштування управління
category.general.name = Основне category.general.name = Основне
category.view.name = Перегляд category.view.name = Перегляд
@@ -405,8 +406,6 @@ mode.waves.name = Хвилі
mode.waves.description = Нормальний режим. Обмежені ресурси та автоматичні хвилі. mode.waves.description = Нормальний режим. Обмежені ресурси та автоматичні хвилі.
mode.sandbox.name = Пісочниця mode.sandbox.name = Пісочниця
mode.sandbox.description = Нескінченні ресурси і нема таймера для хвиль. mode.sandbox.description = Нескінченні ресурси і нема таймера для хвиль.
mode.custom.warning = [scarlet]РОЗБЛОКОВАНЕ В КОРИСТУВАЛЬНИЦЬКИХ ІГРАХ АБО НА СЕРВЕРАХ НЕ ЗБЕРІГАЄТЬСЯ.\n\nГрайте у секторах для розблокування.
mode.custom.warning.read = Уважно прочитайте це!:\n[scarlet]РОЗБЛОКОВАНЕ В КОРИСТУВАЛЬНИЦЬКИХ ІГРАХ АБО В ІНШИХ РЕЖИМАХ ГРИ НЕ ПОШИРЮЄТЬСЯ НА СЕКТОРИ ТА ІНШІ РЕЖИМИ ГРИ!\n\n[LIGHT_GRAY](Я б хотів, щоб це не було необхідно, але, мабуть, це так)
mode.freebuild.name = Вільний режим mode.freebuild.name = Вільний режим
mode.freebuild.description = обмежені ресурси і немає таймера для хвиль. mode.freebuild.description = обмежені ресурси і немає таймера для хвиль.
mode.pvp.name = PvP mode.pvp.name = PvP
@@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Здібність: {0}
text.liquid.heatcapacity = [LIGHT_GRAY]Теплоємність: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Теплоємність: {0}
text.liquid.viscosity = [LIGHT_GRAY]В'язкість: {0} text.liquid.viscosity = [LIGHT_GRAY]В'язкість: {0}
text.liquid.temperature = [LIGHT_GRAY]Температура: {0} text.liquid.temperature = [LIGHT_GRAY]Температура: {0}
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = Спавн ворога block.spawn.name = Спавн ворога
block.core.name = Ядро block.core.name = Ядро
block.metalfloor.name = Металічна підлога block.metalfloor.name = Металічна підлога
+330 -330
View File
@@ -9,10 +9,8 @@ text.link.itch.io.description = PC版下载和网页版(itch.io)
text.link.google-play.description = 从谷歌商店获取安卓版 text.link.google-play.description = 从谷歌商店获取安卓版
text.link.wiki.description = 官方 Mindustry 维基 text.link.wiki.description = 官方 Mindustry 维基
text.linkfail = 打开链接失败!\nURL 已经复制到剪贴板。 text.linkfail = 打开链接失败!\nURL 已经复制到剪贴板。
text.editor.web = 网页版不支持地图编辑器!\n下载以使用编辑器。
text.web.unsupported = 网页版不支持此功能,请下载以使用此功能。
text.gameover = 你的核心被摧毁了! text.gameover = 你的核心被摧毁了!
text.gameover.pvp = The[accent] {0}[] team is victorious! text.gameover.pvp = accent] {0}[] 队获胜!
text.sector.gameover = 这个区域失守了,要重新部署吗? text.sector.gameover = 这个区域失守了,要重新部署吗?
text.sector.retry = 重试 text.sector.retry = 重试
text.highscore = [accent]新纪录! text.highscore = [accent]新纪录!
@@ -39,32 +37,32 @@ text.sectors = 区域
text.sector = 区域: [LIGHT_GRAY]{0} text.sector = 区域: [LIGHT_GRAY]{0}
text.sector.time = 时间: [LIGHT_GRAY]{0} text.sector.time = 时间: [LIGHT_GRAY]{0}
text.sector.deploy = 部署 text.sector.deploy = 部署
text.sector.abandon = Abandon text.sector.abandon = 放弃
text.sector.abandon.confirm = Are you sure you want to abandon all progress at this sector?\nThis cannot be undone! text.sector.abandon.confirm = 你确定要放弃这个区域的所有进展吗?\n此操作不可撤销!
text.sector.resume = 继续 text.sector.resume = 继续
text.sector.locked = [scarlet][[Incomplete] text.sector.locked = [scarlet][[Incomplete]
text.sector.unexplored = [accent][[Unexplored] text.sector.unexplored = [accent][[Unexplored]
text.missions = Missions:[LIGHT_GRAY] {0} text.missions = 任务:[LIGHT_GRAY] {0}
text.mission = 任务[LIGHT_GRAY] {0} text.mission = 任务[LIGHT_GRAY] {0}
text.mission.main = Main Mission:[LIGHT_GRAY] {0} text.mission.main = 主要任务:[LIGHT_GRAY] {0}
text.mission.info = Mission Info text.mission.info = 任务信息
text.mission.complete = 任务完成! text.mission.complete = 任务完成!
text.mission.complete.body = 区域 {0},攻占了 {1} 个 text.mission.complete.body = 区域 {0},攻占了 {1} 个
text.mission.wave = 存活了 [accent]{0}/{1}[] 波。\nWave in {2} text.mission.wave = 存活了 [accent]{0}/{1}[] 波。\n下一波 {2}
text.mission.wave.enemies = Survive[accent] {0}/{1} []waves\n{2} Enemies text.mission.wave.enemies = 存活[accent] {0}/{1} []\n{2} 敌人
text.mission.wave.enemy = Survive[accent] {0}/{1} []waves\n{2} Enemy text.mission.wave.enemy = 存活[accent] {0}/{1} []\n{2} 敌人
text.mission.wave.menu = Survive[accent] {0} []waves text.mission.wave.menu = 存活[accent] {0} []
text.mission.battle = 摧毁敌方基地。 text.mission.battle = 摧毁敌方基地。
text.mission.resource.menu = Obtain {0} x{1} text.mission.resource.menu = 获取{0}x{1}
text.mission.resource = {0}:\n[accent]{1}/{2}[] text.mission.resource = {0}\n[accent]{1}/{2}[]
text.mission.block = Create {0} text.mission.block = 建造{0}
text.mission.unit = Create {0} Unit text.mission.unit = 生产{0}机组
text.mission.command = Send Command {0} To Units text.mission.command = 发送{0}指令至机组
text.mission.linknode = Link Power Node text.mission.linknode = 连接能源节点
text.mission.display = [accent]Mission:\n[LIGHT_GRAY]{0} text.mission.display = [accent]任务︰\n[LIGHT_GRAY]{0}
text.mission.mech = Switch to mech[accent] {0}[] text.mission.mech = 转换至[accent]{0}[]机甲
text.mission.create = Create[accent] {0}[] text.mission.create = 制造[accent] {0}[]
text.none = <none> text.none = <>
text.close = 关闭 text.close = 关闭
text.quit = 退出 text.quit = 退出
text.maps = 地图 text.maps = 地图
@@ -73,30 +71,30 @@ text.nextmission = 下一个任务
text.maps.none = [LIGHT_GRAY]未发现地图! text.maps.none = [LIGHT_GRAY]未发现地图!
text.about.button = 关于 text.about.button = 关于
text.name = 名字: text.name = 名字:
text.filename = File Name: text.filename = 文件名:
text.unlocked = 新方块解锁! text.unlocked = 新方块解锁!
text.unlocked.plural = 新方块解锁! text.unlocked.plural = 新方块解锁!
text.players = {0} 玩家在线 text.players = {0} 玩家在线
text.players.single = {0} 玩家在线 text.players.single = {0} 玩家在线
text.server.closing = [accent]正在关闭服务器... text.server.closing = [accent]正在关闭服务器……
text.server.kicked.kick = 你被踢出服务器了! text.server.kicked.kick = 你被踢出服务器了
text.server.kicked.serverClose = 服务器已关闭 text.server.kicked.serverClose = 服务器已关闭
text.server.kicked.sectorComplete = 区域已完成 text.server.kicked.sectorComplete = 区域已完成
text.server.kicked.sectorComplete.text = 任务已完成。\n服务器将在下一个区域继续。 text.server.kicked.sectorComplete.text = 任务已完成。\n服务器将在下一个区域继续。
text.server.kicked.clientOutdated = 客户端版本过旧!请升级! 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.server.kicked.nameInUse = 服务器中已经\n有相同的名字了。 text.server.kicked.nameInUse = 服务器中已经\n有人有相同的名字了。
text.server.kicked.nameEmpty = 你的名字必须至少包含一个字母或数字。 text.server.kicked.nameEmpty = 你的名字必须至少包含一个字母或数字。
text.server.kicked.idInUse = 你已经在服务器中!不允许用两个账号。 text.server.kicked.idInUse = 你已经在服务器中!不允许用两个账号。
text.server.kicked.customClient = 这个服务器不支持修改版连接,请下载官方版本。 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.host.info = [accent]创建局域网游戏[]按钮会在[scarlet]6567[]端口运行一个服务器[]\n任何在同一个[LIGHT_GRAY]网络或本地网络[]下的人都将在服务器列表中看到你的服务器。\n\n如果你想让别人在任何地方都能通过IP地址连接,你需要设定[accent]端口转发[]。\n\n[LIGHT_GRAY]请注意:如果某人无法连接到你的局域网游戏,请确保你在防火墙设置里允许了Mindustry连接本地网络。
text.join.info = 你可以在这里输入[accent]服务器的IP地址[]以连接,或寻找[accent]本地网络[]中的服务器以连接。\n支持局域网或广域网多人游戏。\n\n[LIGHT_GRAY]请注意:没有全球服务器列表;如果你想通过IP地址连接某个服务器,你需要向房主询问IP地址。 text.join.info = 你可以在这里输入[accent]服务器的IP地址[]以连接,或寻找[accent]本地网络[]中的服务器以连接。\n目前支持局域网或广域网多人游戏。\n\n[LIGHT_GRAY]请注意:没有全球服务器列表;如果你想通过IP地址连接某个服务器,你需要向房主询问IP地址。
text.hostserver = 服务器 text.hostserver = 创建服务器
text.hostserver.mobile = Host\nGame text.hostserver.mobile = 创建\n服务器
text.host = 创建服务器 text.host = 创建
text.hosting = [accent]正在打开服务器... text.hosting = [accent]正在打开服务器……
text.hosts.refresh = 刷新 text.hosts.refresh = 刷新
text.hosts.discovering = 正在搜索局域网服务器 text.hosts.discovering = 正在搜索局域网服务器
text.server.refreshing = 正在刷新服务器 text.server.refreshing = 正在刷新服务器
@@ -105,64 +103,64 @@ text.host.invalid = [scarlet]无法连接服务器。
text.trace = 跟踪玩家 text.trace = 跟踪玩家
text.trace.playername = 玩家名字: [accent]{0} text.trace.playername = 玩家名字: [accent]{0}
text.trace.ip = IP地址: [accent]{0} text.trace.ip = IP地址: [accent]{0}
text.trace.id = ID: [accent]{0} text.trace.id = ID[accent]{0}
text.trace.android = 安卓客户端: [accent]{0} text.trace.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.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}
text.invalidid = 无效的客户端ID!请提交 bug 报告。 text.invalidid = 无效的客户端ID!请提交错误报告。
text.server.bans = 黑名单 text.server.bans = 黑名单
text.server.bans.none = 没有被拉黑的玩家! text.server.bans.none = 没有被拉黑的玩家!
text.server.admins = 管理员 text.server.admins = 管理员
text.server.admins.none = 没有管理员! text.server.admins.none = 没有管理员!
text.server.add = 添加服务器 text.server.add = 添加服务器
text.server.delete = 确定要删除这个服务器吗? text.server.delete = 确定要删除这个服务器吗?
text.server.hostname = 主机: {0} text.server.hostname = 主机{0}
text.server.edit = 编辑服务器 text.server.edit = 编辑服务器
text.server.outdated = [crimson]服务器过旧![] text.server.outdated = [crimson]服务器过旧![]
text.server.outdated.client = [crimson]客户端过旧![] text.server.outdated.client = [crimson]客户端过旧![]
text.server.version = [lightgray]版本: {0} text.server.version = [lightgray]版本: {0}
text.server.custombuild = [yellow]修改版 text.server.custombuild = [yellow]修改版
text.confirmban = 确认拉黑这个玩家? text.confirmban = 确认拉黑这个玩家
text.confirmkick = 您确定要删除此播放器吗? text.confirmkick = 您确定要踢出这个玩家吗?
text.confirmunban = 确认要取消拉黑这个玩家吗? text.confirmunban = 确认要取消拉黑这个玩家吗?
text.confirmadmin = 确认要添加这个玩家为管理员吗? text.confirmadmin = 确认要添加这个玩家为管理员吗?
text.confirmunadmin = 确认要取消这个玩家的管理员身份吗? text.confirmunadmin = 确认要取消这个玩家的管理员身份吗?
text.joingame.title = 加入游戏 text.joingame.title = 加入游戏
text.joingame.ip = IP: text.joingame.ip = IP
text.disconnect = 已断开 text.disconnect = 已断开
text.disconnect.data = 载入世界失败! text.disconnect.data = 载入世界失败!
text.connecting = [accent]连接中... text.connecting = [accent]连接中……
text.connecting.data = [accent]加载世界中... text.connecting.data = [accent]加载世界中……
text.server.port = 端口: text.server.port = 端口
text.server.addressinuse = 地址已经使用! text.server.addressinuse = 地址已经使用!
text.server.invalidport = 无效的端口! text.server.invalidport = 无效的端口!
text.server.error = [crimson]创建服务器错误:[accent]{0} text.server.error = [crimson]创建服务器错误:[accent]{0}
text.save.old = 这个存档属于旧版本游戏,无法继续使用了。\n\n[LIGHT_GRAY]存档向下兼容将在 4.0 版本中实现。 text.save.old = 这个存档属于旧版本游戏,无法继续使用了。\n\n[LIGHT_GRAY]存档向下兼容将在 4.0 版本中实现。
text.save.new = 新存档 text.save.new = 新存档
text.save.overwrite = 确认要\n覆盖这个存档吗? text.save.overwrite = 确认要覆盖这个存档吗?
text.overwrite = 覆盖 text.overwrite = 覆盖
text.save.none = 没有存档! text.save.none = 没有存档!
text.saveload = [accent]保存中... 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 = [accent]存档无效! text.save.import.invalid = [accent]存档无效!
text.save.import.fail = [crimson]导入存档:[accent]{0} 失败 text.save.import.fail = [crimson]导入存档失败[accent]{0}
text.save.export.fail = [crimson]导出存档[accent]{0} 失败 text.save.export.fail = [crimson]导出存档失败:[accent]{0}
text.save.import = 导入存档 text.save.import = 导入存档
text.save.newslot = 保存游戏: text.save.newslot = 保存游戏:
text.save.rename = 重命名 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 = [accent]存档损坏或无效!\n如果你刚刚升级了游戏,那么这可能是因为存档格式改变了而[scarlet]不是[] bug 。 text.save.corrupted = [accent]存档损坏或无效!\n如果你刚刚升级了游戏,那么这可能是因为存档格式改变了而[scarlet]不是[] bug 。
text.sector.corrupted = [accent]发现了一个此区域的保存文件,但是加载失败。\n已经创建了一个新的。 text.sector.corrupted = [accent]发现了一个此区域的保存文件,但是加载失败。\n已经创建了一个新的。
text.empty = <empty> text.empty = <>
text.on = text.on =
text.off = text.off =
text.save.autosave = 自动保存:{0} text.save.autosave = 自动保存:{0}
@@ -187,14 +185,14 @@ text.changelog.error.ios = [accent]iOS还不支持更新日志。
text.changelog.error = [scarlet]获取更新日志失败!\n请检查你的网络。 text.changelog.error = [scarlet]获取更新日志失败!\n请检查你的网络。
text.changelog.current = [yellow][[Current version] text.changelog.current = [yellow][[Current version]
text.changelog.latest = [accent][[Latest version] text.changelog.latest = [accent][[Latest version]
text.loading = [accent]加载中... text.loading = [accent]加载中……
text.saving = [accent]保存中... text.saving = [accent]保存中……
text.wave = [accent]第 {0} 波 text.wave = [accent]第 {0} 波
text.wave.waiting = 下一波将在 {0} 秒后到来 text.wave.waiting = 下一波将在 {0} 秒后到来
text.waiting = 等待中... text.waiting = 等待中……
text.waiting.players = Waiting for players... text.waiting.players = 等待玩家中……
text.wave.enemies = [LIGHT_GRAY]{0} Enemies Remaining text.wave.enemies = 剩下 [LIGHT_GRAY]{0} 敌人
text.wave.enemy = [LIGHT_GRAY]{0} Enemy Remaining text.wave.enemy = 剩下 [LIGHT_GRAY]{0} 敌人
text.loadimage = 加载图片 text.loadimage = 加载图片
text.saveimage = 保存图片 text.saveimage = 保存图片
text.unknown = 未知 text.unknown = 未知
@@ -203,7 +201,7 @@ text.builtin = 内建的
text.map.delete.confirm = 确认要删除地图吗?这个操作无法撤销! text.map.delete.confirm = 确认要删除地图吗?这个操作无法撤销!
text.map.random = [accent]随机地图 text.map.random = [accent]随机地图
text.map.nospawn = 这个地图没有核心!请在编辑器中添加一个[ROYAL]蓝色[]的核心。 text.map.nospawn = 这个地图没有核心!请在编辑器中添加一个[ROYAL]蓝色[]的核心。
text.map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor. text.map.nospawn.pvp = 这个地图没有敌人的核心!请在编辑器中添加一个[ROYAL]红色[]的核心。
text.map.invalid = 地图载入错误:地图文件可能已经损坏。 text.map.invalid = 地图载入错误:地图文件可能已经损坏。
text.editor.brush = 笔刷 text.editor.brush = 笔刷
text.editor.slope = \\ text.editor.slope = \\
@@ -226,14 +224,14 @@ text.editor.saved = 已保存!
text.editor.save.noname = 你的地图还没有名字!在“地图信息”菜单里设置一个名字。 text.editor.save.noname = 你的地图还没有名字!在“地图信息”菜单里设置一个名字。
text.editor.save.overwrite = 你的地图覆盖了一个内建的地图!在“地图信息”菜单里重新设置一个。 text.editor.save.overwrite = 你的地图覆盖了一个内建的地图!在“地图信息”菜单里重新设置一个。
text.editor.import.exists = [scarlet]无法导入:[] 一个叫 '{0}' 的内建地图已经存在。 text.editor.import.exists = [scarlet]无法导入:[] 一个叫 '{0}' 的内建地图已经存在。
text.editor.import = 导入... text.editor.import = 导入……
text.editor.importmap = 导入地图 text.editor.importmap = 导入地图
text.editor.importmap.description = 导入一个已经存在的地图 text.editor.importmap.description = 导入一个已经存在的地图
text.editor.importfile = 导入文件 text.editor.importfile = 导入文件
text.editor.importfile.description = 导入一个外置的地图文件 text.editor.importfile.description = 导入一个外置的地图文件
text.editor.importimage = 导入地形图像 text.editor.importimage = 导入地形图像
text.editor.importimage.description = 导入外置地图图像文件 text.editor.importimage.description = 导入外置地图图像文件
text.editor.export = 导出... text.editor.export = 导出……
text.editor.exportfile = 导出文件 text.editor.exportfile = 导出文件
text.editor.exportfile.description = 导出一个地图文件 text.editor.exportfile.description = 导出一个地图文件
text.editor.exportimage = 导出一个地形文件 text.editor.exportimage = 导出一个地形文件
@@ -262,13 +260,13 @@ text.editor = 编辑器
text.mapeditor = 地图编辑器 text.mapeditor = 地图编辑器
text.donate = 捐赠 text.donate = 捐赠
text.connectfail = [crimson]服务器连接失败: [accent]{0} text.connectfail = [crimson]服务器连接失败: [accent]{0}
text.error.unreachable = Server unreachable. text.error.unreachable = 服务器无法访问。
text.error.invalidaddress = Invalid address. text.error.invalidaddress = 地址无效。
text.error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct! text.error.timedout = 连接超时!\n确保服务器设置了端口转发,并且地址正确!
text.error.mismatch = Packet error:\npossible client/server version mismatch.\nMake sure you and the host have the latest version of Mindustry! text.error.mismatch = 包错误:\n可能是客户端/服务器版本不匹配.\n请确保客户端和服务器都是最新的版本!
text.error.alreadyconnected = Already connected. text.error.alreadyconnected = 已连接。
text.error.mapnotfound = Map file not found! text.error.mapnotfound = 找不到地图文件!
text.error.any = Unkown network error. text.error.any = 未知网络错误.
text.settings.language = 语言 text.settings.language = 语言
text.settings.reset = 恢复默认 text.settings.reset = 恢复默认
text.settings.rebind = 重新绑定 text.settings.rebind = 重新绑定
@@ -276,11 +274,11 @@ text.settings.controls = 控制
text.settings.game = 游戏 text.settings.game = 游戏
text.settings.sound = 声音 text.settings.sound = 声音
text.settings.graphics = 图像 text.settings.graphics = 图像
text.settings.cleardata = 清除游戏数据... text.settings.cleardata = 清除游戏数据……
text.settings.clear.confirm = 您确定要清除数据吗?\n无法撤销这个! text.settings.clear.confirm = 您确定要清除数据吗?\n这个操作无法撤销
text.settings.clearall.confirm = [scarlet]报警![]\n这将清除所有数据,包括已保存,解锁和见帮定.\n按“OK”后,游戏将删除所有并自动推出. text.settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据,包括存档、地图、解锁和键绑定。\n按「是」后,游戏将删除所有数据并自动退出。
text.settings.clearsectors = 楚任务 text.settings.clearsectors = 除区域
text.settings.clearunlocks = 清除未锁定的快 text.settings.clearunlocks = 清除解锁
text.settings.clearall = 清除所有 text.settings.clearall = 清除所有
text.paused = 暂停 text.paused = 暂停
text.yes = text.yes =
@@ -288,6 +286,7 @@ 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.unknown = [LIGHT_GRAY]???
text.blocks.blockinfo = 方块详情 text.blocks.blockinfo = 方块详情
text.blocks.powercapacity = 能量容量 text.blocks.powercapacity = 能量容量
text.blocks.powershot = 能量/发射 text.blocks.powershot = 能量/发射
@@ -303,27 +302,28 @@ text.blocks.powerdamage = 功率/损伤
text.blocks.inputitemcapacity = 最大输入 text.blocks.inputitemcapacity = 最大输入
text.blocks.outputitemcapacity = 最大输出 text.blocks.outputitemcapacity = 最大输出
text.blocks.itemcapacity = 物品容量 text.blocks.itemcapacity = 物品容量
text.blocks.basepowergeneration = Base Power Generation text.blocks.basepowergeneration = 基础能源输出
text.blocks.powertransferspeed = 能量传输 text.blocks.powertransferspeed = 能量传输
text.blocks.craftspeed = 生产速度 text.blocks.craftspeed = 生产速度
text.blocks.inputliquid = 输入液体 text.blocks.inputliquid = 液体输入
text.blocks.inputliquidaux = Aux 液体 text.blocks.inputliquidaux = 辅助液体
text.blocks.inputitem = 输入物品 text.blocks.inputitem = 物品输入
text.blocks.inputitems = 输入物品 text.blocks.inputitems = 物品输入
text.blocks.outputitem = 输出物品 text.blocks.outputitem = 物品输出
text.blocks.drilltier = 可钻探矿物 text.blocks.drilltier = 可钻探矿物
text.blocks.drillspeed = 基础钻探速度 text.blocks.drillspeed = 基础钻探速度
text.blocks.liquidoutput = 液体输出 text.blocks.liquidoutput = 液体输出
text.blocks.liquidoutputspeed = 液体输出速度 text.blocks.liquidoutputspeed = 液体输出速度
text.blocks.liquiduse = 使用液体 text.blocks.liquiduse = 液体使用速度
text.blocks.coolant = 冷却剂 text.blocks.coolant = 冷却剂
text.blocks.coolantuse = 使用冷却剂 text.blocks.coolantuse = 冷却剂使用速度
text.blocks.inputliquidfuel = 使用燃料 text.blocks.inputliquidfuel = 液体燃料输入
text.blocks.liquidfueluse = 使用液体燃料 text.blocks.liquidfueluse = 液体燃料使用速度
text.blocks.explosive = 高度易燃易爆! text.blocks.boostitem = Boost Item
text.blocks.boostliquid = Boost Liquid
text.blocks.health = 生命值 text.blocks.health = 生命值
text.blocks.inaccuracy = 误差 text.blocks.inaccuracy = 误差
text.blocks.shots = 发射 text.blocks.shots = 发射
text.blocks.reload = 重新装弹 text.blocks.reload = 重新装弹
text.blocks.inputfuel = 燃料 text.blocks.inputfuel = 燃料
text.blocks.fuelburntime = 燃料燃烧时间 text.blocks.fuelburntime = 燃料燃烧时间
@@ -343,25 +343,25 @@ text.category.general = 普通
text.category.power = 能量 text.category.power = 能量
text.category.liquids = 液体 text.category.liquids = 液体
text.category.items = 物品 text.category.items = 物品
text.category.crafting = 制造速度 text.category.crafting = 制造
text.category.shooting = text.category.shooting =
setting.autotarget.name = Auto-Target text.category.optional = Optional Enhancements
setting.autotarget.name = 自动发射
setting.fpscap.name = 最高 FPS setting.fpscap.name = 最高 FPS
setting.fpscap.none = None setting.fpscap.none =
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.difficulty.training = training setting.difficulty.training = 训练
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.name = 难度: setting.difficulty.name = 难度
setting.screenshake.name = 屏幕抖动 setting.screenshake.name = 屏幕抖动
setting.effects.name = 显示效果 setting.effects.name = 显示效果
setting.sensitivity.name = 控制器灵敏度 setting.sensitivity.name = 控制器灵敏度
setting.saveinterval.name = 自动保存间隔 setting.saveinterval.name = 自动保存间隔
setting.seconds = {0} 秒 setting.seconds = {0} 秒
setting.fullscreen.name = 全屏 setting.fullscreen.name = 全屏
setting.multithread.name = 多线程
setting.fps.name = 显示 FPS setting.fps.name = 显示 FPS
setting.vsync.name = 帧同步 setting.vsync.name = 帧同步
setting.lasers.name = 显示能量射线 setting.lasers.name = 显示能量射线
@@ -370,17 +370,18 @@ setting.musicvol.name = 音乐音量
setting.mutemusic.name = 静音 setting.mutemusic.name = 静音
setting.sfxvol.name = 音效音量 setting.sfxvol.name = 音效音量
setting.mutesound.name = 静音 setting.mutesound.name = 静音
setting.crashreport.name = 发送匿名崩溃报告
text.keybind.title = 重新绑定按键 text.keybind.title = 重新绑定按键
category.general.name = 普通 category.general.name = 普通
category.view.name = 查看 category.view.name = 查看
category.multiplayer.name = 多人 category.multiplayer.name = 多人
command.attack = Attack command.attack = 攻击
command.retreat = Retreat command.retreat = 撤退
command.patrol = Patrol command.patrol = 巡逻
keybind.press = 按一下键... keybind.press = 按一下键……
keybind.press.axis = 按轴或键... keybind.press.axis = 一下轴或键……
keybind.move_x.name = X轴移动 keybind.move_x.name = 水平移动
keybind.move_y.name = Y轴移动 keybind.move_y.name = 垂直移动
keybind.select.name = 选择 keybind.select.name = 选择
keybind.break.name = 破坏 keybind.break.name = 破坏
keybind.deselect.name = 取消 keybind.deselect.name = 取消
@@ -405,47 +406,45 @@ mode.waves.name = 普通
mode.waves.description = 普通模式,有限的资源和自动生成敌人。 mode.waves.description = 普通模式,有限的资源和自动生成敌人。
mode.sandbox.name = 沙盒 mode.sandbox.name = 沙盒
mode.sandbox.description = 无限的资源,不会自动生成敌人。 mode.sandbox.description = 无限的资源,不会自动生成敌人。
mode.custom.warning = 请注意,在区域内解锁之前,区块不能用于自定义游戏.\n\n[LIGHT_GRAY]如果您没有解锁任何块,则不会出现任何块.
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
mode.freebuild.name = 自由建造 mode.freebuild.name = 自由建造
mode.freebuild.description = 有限的资源,不会自动生成敌人。 mode.freebuild.description = 有限的资源,不会自动生成敌人。
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = fight against other players locally. mode.pvp.description = 和本地玩家对战.
content.item.name = 物品 content.item.name = 物品
content.liquid.name = 液体 content.liquid.name = 液体
content.unit.name = 单位 content.unit.name = 部队
content.recipe.name = 方块 content.recipe.name = 方块
content.mech.name = 机甲 content.mech.name = 机甲
item.stone.name = 石头 item.stone.name = 石头
item.stone.description = 一种常见的原料。用于分离和提炼成其他材料,或熔化成熔岩。 item.stone.description = 一种常见的原料。用于分离和提炼成其他材料,或熔化成熔岩。
item.copper.name = item.copper.name =
item.copper.description = 有用的结构材料。在各种类型的方块中广泛使用。 item.copper.description = 一种有用的结构材料。在各种类型的方块中广泛使用。
item.lead.name = item.lead.name =
item.lead.description = 基本的起始材料。被广泛用于电和液体运输方块。 item.lead.description = 一种基本的起始材料。被广泛用于电子设备和液体运输方块。
item.coal.name = item.coal.name =
item.coal.description = 一种常见并容易获得的燃料。 item.coal.description = 一种常见并容易获得的燃料。
item.dense-alloy.name = 致密合金 item.dense-alloy.name = 致密合金
item.dense-alloy.description = 由铅和铜制成的坚韧合金。 用于高级的运输方块和深层钻头。 item.dense-alloy.description = 一种由铅和铜制成的坚韧合金。用于高级的运输方块和高级钻头。
item.titanium.name = item.titanium.name =
item.titanium.description = 一种罕见的超轻金属,被广泛运用于液体运输,钻机和飞机。 item.titanium.description = 一种罕见的超轻金属,被广泛运用于液体运输、钻头和飞机。
item.thorium.name = item.thorium.name =
item.thorium.description = 一种致密的放射性金属,用作支撑结构和核燃料。 item.thorium.description = 一种致密的放射性金属,用作结构支撑和核燃料。
item.silicon.name = item.silicon.name =
item.silicon.description = 非常有用的半导体,被用于太阳能电池板和很多复杂的电子设备。 item.silicon.description = 一种非常有用的半导体,被用于太阳能电池板和很多复杂的电子设备。
item.plastanium.name = item.plastanium.name =
item.plastanium.description = 一种轻质,可延展的材料,用于高级的飞机和碎片弹药。 item.plastanium.description = 一种轻质,可延展的材料,用于高级的飞机和碎片弹药。
item.phase-fabric.name = Phase Fabric item.phase-fabric.name = 相织物
item.phase-fabric.description = A near-weightless substance used in advanced electronics and self-repairing technology. item.phase-fabric.description = 一种接近0重量的物质,用于先进的电子技术和自我修复技术。
item.surge-alloy.name = 巨浪合金 item.surge-alloy.name = 巨浪合金
item.surge-alloy.description = An advanced alloy with unique electrical properties. item.surge-alloy.description = 一种具有独特电气性能的高级合金。
item.biomatter.name = 生物质 item.biomatter.name = 生物质
item.biomatter.description = 一种有机糊;用于转化为油或作为基本燃料。 item.biomatter.description = 一种有机物;用于转化为油或作为基本燃料。
item.sand.name = item.sand.name =
item.sand.description = 一种常见的材料,广泛用于冶炼,制作合金和助熔剂。 item.sand.description = 一种常见的材料,广泛用于冶炼,包括制作合金和助熔剂。
item.blast-compound.name = 爆炸混合物 item.blast-compound.name = 爆炸混合物
item.blast-compound.description = 一种用于炸弹和炸药的挥发性合物。虽然它可以作为燃料燃烧,但不建议这样做。 item.blast-compound.description = 一种用于炸弹和炸药的挥发性合物。虽然它可以作为燃料燃烧,但不建议这样做。
item.pyratite.name = item.pyratite.name =
item.pyratite.description = 燃烧武器中使用的极易燃物质。 item.pyratite.description = 一种燃烧武器中使用的极易燃物质。
liquid.water.name = liquid.water.name =
liquid.lava.name = 岩浆 liquid.lava.name = 岩浆
liquid.oil.name = 石油 liquid.oil.name = 石油
@@ -469,32 +468,33 @@ mech.omega-mech.description = 一种装甲厚重的机甲,用于在前线攻
mech.dart-ship.name = Dart mech.dart-ship.name = Dart
mech.dart-ship.weapon = 机枪 mech.dart-ship.weapon = 机枪
mech.dart-ship.description = 标准飞船。快速轻便,但攻击能力低,采矿速度快。 mech.dart-ship.description = 标准飞船。快速轻便,但攻击能力低,采矿速度快。
mech.javelin-ship.name = Javelin mech.javelin-ship.name = 标枪
mech.javelin-ship.description = 一艘一击即退的攻击船。虽然最初很慢,但它可以加速到很快的速度,并飞过敌人的前哨,利用其闪电能力和导弹造成大量伤害。 mech.javelin-ship.description = 一艘一击即退的攻击船。虽然最初很慢,但它可以加速到很快的速度,并飞过敌人的前哨,利用其闪电能力和导弹造成大量伤害。
mech.javelin-ship.weapon = 爆裂导弹 mech.javelin-ship.weapon = 爆裂导弹
mech.javelin-ship.ability = 放电助推器 mech.javelin-ship.ability = 放电助推器
mech.trident-ship.name = Trident mech.trident-ship.name = 三叉戟
mech.trident-ship.description = 重型轰炸机。有厚装甲。 mech.trident-ship.description = 重型轰炸机。有厚装甲。
mech.trident-ship.weapon = 炸弹 mech.trident-ship.weapon = 炸弹
mech.glaive-ship.name = Glaive mech.glaive-ship.name = Glaive
mech.glaive-ship.description = 大型,装甲厚重的武装直升机。配备燃烧机枪。有优秀的加速能力和最快的速度。 mech.glaive-ship.description = 大型,装甲厚重的武装直升机。配备燃烧机枪。有优秀的加速能力和最快的速度。
mech.glaive-ship.weapon = 火焰机枪 mech.glaive-ship.weapon = 火焰机枪
text.item.explosiveness = [LIGHT_GRAY]爆炸威力{0} text.item.explosiveness = [LIGHT_GRAY]爆炸{0}
text.item.flammability = [LIGHT_GRAY]易燃性:{0} text.item.flammability = [LIGHT_GRAY]易燃性:{0}
text.item.radioactivity = [LIGHT_GRAY]放射性:{0} text.item.radioactivity = [LIGHT_GRAY]放射性:{0}
text.item.fluxiness = [LIGHT_GRAY]流通力{0} text.item.fluxiness = [LIGHT_GRAY]助熔性{0}
text.unit.health = [LIGHT_GRAY]生命值: {0} text.unit.health = [LIGHT_GRAY]生命值{0}
text.unit.speed = [LIGHT_GRAY]速度: {0} text.unit.speed = [LIGHT_GRAY]速度{0}
text.mech.weapon = [LIGHT_GRAY]武器: {0} text.mech.weapon = [LIGHT_GRAY]武器{0}
text.mech.armor = [LIGHT_GRAY]装甲: {0} text.mech.armor = [LIGHT_GRAY]装甲{0}
text.mech.itemcapacity = [LIGHT_GRAY]物品容量: {0} text.mech.itemcapacity = [LIGHT_GRAY]物品容量{0}
text.mech.minespeed = [LIGHT_GRAY]采矿速度: {0} text.mech.minespeed = [LIGHT_GRAY]采矿速度{0}
text.mech.minepower = [LIGHT_GRAY]采矿能量: {0} text.mech.minepower = [LIGHT_GRAY]采矿力量:{0}
text.mech.ability = [LIGHT_GRAY]能力: {0} text.mech.ability = [LIGHT_GRAY]能力{0}
text.liquid.heatcapacity = [LIGHT_GRAY]热容量:{0} text.liquid.heatcapacity = [LIGHT_GRAY]热容量:{0}
text.liquid.viscosity = [LIGHT_GRAY]粘度:{0} text.liquid.viscosity = [LIGHT_GRAY]粘度:{0}
text.liquid.temperature = [LIGHT_GRAY]温度:{0} text.liquid.temperature = [LIGHT_GRAY]温度:{0}
block.spawn.name = Enemy Spawn block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.spawn.name = 敌人出生点
block.core.name = 核心 block.core.name = 核心
block.metalfloor.name = 金属地板 block.metalfloor.name = 金属地板
block.deepwater.name = 深水 block.deepwater.name = 深水
@@ -514,18 +514,18 @@ block.blackrock.name = 黑岩
block.icerock.name = 冰岩 block.icerock.name = 冰岩
block.copper-wall.name = 铜墙 block.copper-wall.name = 铜墙
block.copper-wall-large.name = 大型铜墙 block.copper-wall-large.name = 大型铜墙
block.dense-alloy-wall.name = Dense Alloy Wall block.dense-alloy-wall.name = 致密合金墙
block.dense-alloy-wall-large.name = Large Dense Alloy Wall block.dense-alloy-wall-large.name = 大型致密合金墙
block.phase-wall.name = block.phase-wall.name = 织布
block.phase-wall-large.name = 大型相 block.phase-wall-large.name = 大型相织布
block.thorium-wall.name = 钍墙 block.thorium-wall.name = 钍墙
block.thorium-wall-large.name = 大型钍墙 block.thorium-wall-large.name = 大型钍墙
block.door.name = block.door.name =
block.door-large.name = 大门 block.door-large.name = 大门
block.duo.name = block.duo.name = 双管
block.scorch.name = 灼烧炮 block.scorch.name = 灼烧炮
block.hail.name = Hail block.hail.name = 冰雹炮
block.lancer.name = 枪骑兵 block.lancer.name = 蓝瑟炮
block.conveyor.name = 传送带 block.conveyor.name = 传送带
block.titanium-conveyor.name = 钛传送带 block.titanium-conveyor.name = 钛传送带
block.junction.name = 连接点 block.junction.name = 连接点
@@ -538,7 +538,7 @@ block.overflow-gate.description = 分离器和路由器的组合,如果前面
block.smelter.name = 冶炼厂 block.smelter.name = 冶炼厂
block.arc-smelter.name = 电弧冶炼厂 block.arc-smelter.name = 电弧冶炼厂
block.silicon-smelter.name = 硅冶炼厂 block.silicon-smelter.name = 硅冶炼厂
block.phase-weaver.name = 编织器 block.phase-weaver.name = 织布编织器
block.pulverizer.name = 粉碎机 block.pulverizer.name = 粉碎机
block.cryofluidmixer.name = 冷冻液混合器 block.cryofluidmixer.name = 冷冻液混合器
block.melter.name = 熔炉 block.melter.name = 熔炉
@@ -557,47 +557,47 @@ block.pneumatic-drill.name = 气动钻头
block.laser-drill.name = 激光钻头 block.laser-drill.name = 激光钻头
block.water-extractor.name = 抽水机 block.water-extractor.name = 抽水机
block.cultivator.name = 耕种机 block.cultivator.name = 耕种机
block.alpha-mech-pad.name = Alpha Mech Pad block.alpha-mech-pad.name = Alpha 机甲平台
block.dart-ship-pad.name = Dart Ship Pad block.dart-ship-pad.name = Dart 机甲平台
block.delta-mech-pad.name = Delta Mech Pad block.delta-mech-pad.name = Delta 机甲平台
block.javelin-ship-pad.name = Javelin Ship Pad block.javelin-ship-pad.name = 标枪 机甲平台
block.trident-ship-pad.name = Trident Ship Pad block.trident-ship-pad.name = 三叉戟 机甲平台
block.glaive-ship-pad.name = Glaive Ship Pad block.glaive-ship-pad.name = Glaive 机甲平台
block.omega-mech-pad.name = Omega Mech Pad block.omega-mech-pad.name = Omega 机甲平台
block.tau-mech-pad.name = Tau Mech Pad block.tau-mech-pad.name = Tau 机甲平台
block.conduit.name = 导管 block.conduit.name = 导管
block.mechanical-pump.name = 机械泵 block.mechanical-pump.name = 机械泵
block.itemsource.name = 物品源 block.itemsource.name = 物品源
block.itemvoid.name = Item Void block.itemvoid.name = 物品黑洞
block.liquidsource.name = 液体源 block.liquidsource.name = 液体源
block.powervoid.name = Power Void block.powervoid.name = 能源黑洞
block.powerinfinite.name = 无限能源 block.powerinfinite.name = 无限能源
block.unloader.name = 装卸器 block.unloader.name = 装卸器
block.vault.name = 仓库 block.vault.name = 仓库
block.wave.name = 波浪 block.wave.name = 波浪
block.swarmer.name = 蜂群 block.swarmer.name = 蜂群
block.salvo.name = 齐射炮 block.salvo.name = 齐射炮
block.ripple.name = 波纹 block.ripple.name = 浪涌
block.phase-conveyor.name = 传送带 block.phase-conveyor.name = 织布传送带
block.bridge-conveyor.name = 传送带桥 block.bridge-conveyor.name = 传送带桥
block.plastanium-compressor.name = 压缩机 block.plastanium-compressor.name = 压缩机
block.pyratite-mixer.name = 硫混合器 block.pyratite-mixer.name = 硫混合器
block.blast-mixer.name = 爆炸混合器 block.blast-mixer.name = 爆炸混合器
block.solidifer.name = 凝固 block.solidifer.name = 凝固
block.solar-panel.name = 太阳能电池 block.solar-panel.name = 太阳能电池
block.solar-panel-large.name = 大型太阳能电池 block.solar-panel-large.name = 大型太阳能电池
block.oil-extractor.name = 石油钻井 block.oil-extractor.name = 石油钻井
block.spirit-factory.name = Spirit Drone Factory block.spirit-factory.name = 轻型无人机工厂
block.phantom-factory.name = Phantom Drone Factory block.phantom-factory.name = 鬼怪无人机工厂
block.wraith-factory.name = Wraith Fighter Factory block.wraith-factory.name = 幻影战机工厂
block.ghoul-factory.name = Ghoul Bomber Factory block.ghoul-factory.name = 食尸鬼轰炸机工厂
block.dagger-factory.name = Dagger Mech Factory block.dagger-factory.name = 尖刀机甲工厂
block.titan-factory.name = Titan Mech Factory block.titan-factory.name = 泰坦机甲工厂
block.fortress-factory.name = Fortress Mech Factory block.fortress-factory.name = 堡垒机甲工厂
block.revenant-factory.name = Revenant Fighter Factory block.revenant-factory.name = 亡魂战机工厂
block.repair-point.name = 维修点 block.repair-point.name = 维修点
block.pulse-conduit.name = 脉冲导管 block.pulse-conduit.name = 脉冲导管
block.phase-conduit.name = 导管 block.phase-conduit.name = 织布导管
block.liquid-router.name = 液体路由器 block.liquid-router.name = 液体路由器
block.liquid-tank.name = 储液罐 block.liquid-tank.name = 储液罐
block.liquid-junction.name = 液体连接点 block.liquid-junction.name = 液体连接点
@@ -610,171 +610,171 @@ block.blast-drill.name = 爆破钻头
block.thermal-pump.name = 热能泵 block.thermal-pump.name = 热能泵
block.thermal-generator.name = 热能发电机 block.thermal-generator.name = 热能发电机
block.alloy-smelter.name = 合金冶炼厂 block.alloy-smelter.name = 合金冶炼厂
block.mend-projector.name = 修理投影 block.mend-projector.name = 修理投影
block.surge-wall.name = 浪涌 block.surge-wall.name = 波动
block.surge-wall-large.name = 浪涌 block.surge-wall-large.name = 型波动
block.cyclone.name = 气旋 block.cyclone.name = 气旋
block.fuse.name = 保险丝 block.fuse.name = 融合炮
block.shock-mine.name = Shock Mine block.shock-mine.name = 休克地雷
block.overdrive-projector.name = 超速投影 block.overdrive-projector.name = 超速投影
block.force-projector.name = Force Projector block.force-projector.name = 力墙投影器
block.arc.name = Arc block.arc.name = 电弧
block.rtg-generator.name = RTG Generator block.rtg-generator.name = RTG 发电机
block.spectre.name = Spectre block.spectre.name = 幽灵
block.meltdown.name = Meltdown block.meltdown.name = 熔毁
block.container.name = Container block.container.name = 容器
block.core.description = The most important building in the game. block.core.description = 游戏中最重要的建筑。
team.blue.name = blue team.blue.name =
team.red.name = red team.red.name =
team.orange.name = orange team.orange.name =
team.none.name = gray team.none.name =
team.green.name = green team.green.name = 绿
team.purple.name = purple team.purple.name =
unit.alpha-drone.name = Alpha 无人机 unit.alpha-drone.name = Alpha 无人机
unit.spirit.name = Spirit Drone unit.spirit.name = 轻型无人机
unit.spirit.description = The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks. unit.spirit.description = 初始无人机。默认情况下在内核中生成。自动开采矿石,收集物品和修理块。
unit.phantom.name = Phantom Drone unit.phantom.name = 鬼怪无人机
unit.phantom.description = An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone. unit.phantom.description = 一种先进的无人机单位。自动开采矿石,收集物品和修理块。比初始无人机有效得多。
unit.dagger.name = 尖刀 unit.dagger.name = 尖刀
unit.dagger.description = 基础的地面单位,在蜂群中很有用。 unit.dagger.description = 基础的地面单位,在蜂群中很有用。
unit.titan.name = 泰坦 unit.titan.name = 泰坦
unit.titan.description = 高级的有武装地面单位,使用电石作为弹药.攻击地面单位和空中单位. unit.titan.description = 高级的有武装地面单位,使用电石作为弹药.攻击地面单位和空中单位.
unit.ghoul.name = Ghoul Bomber unit.ghoul.name = 食尸鬼轰炸机
unit.ghoul.description = A heavy carpet bomber. Uses blast compound or pyratite as ammo. unit.ghoul.description = 重型地毯轰炸机。用爆炸化合物或黄铁矿作为弹药。
unit.wraith.name = Wraith Fighter unit.wraith.name = 幻影战机
unit.wraith.description = A fast, hit-and-run interceptor unit. unit.wraith.description = 一种快速,打了就跑的截击机。
unit.fortress.name = Fortress unit.fortress.name = 堡垒
unit.fortress.description = A heavy artillery ground unit. unit.fortress.description = 一种重炮地面部队。
unit.revenant.name = Revenant unit.revenant.name = 亡魂
unit.revenant.description = A heavy laser platform. unit.revenant.description = 一种重型激光平台。
tutorial.begin = Your mission here is to eradicate the[LIGHT_GRAY] enemy[].\n\nBegin by[accent] mining copper[]. Tap a copper ore vein near your core to do this. tutorial.begin = 你的任务是消灭[LIGHT_GRAY] 敌人 [].\n\n首先开始[accent] 采集铜矿 []。点击核心附近的铜矿开始。
tutorial.drill = Mining manually is inefficient.\n[accent]Drills []can mine automatically.\nPlace one on a copper vein. tutorial.drill = 手动采矿效率低.\n[accent] 钻头 []可以自动采矿.\n放一个在铜矿上吧.
tutorial.conveyor = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core. tutorial.conveyor = [accent]传送带[] 可以把物资传送到核心.\n请造一个传送线,从钻头到核心.
tutorial.morecopper = More copper is required.\n\nEither mine it manually, or place more drills. tutorial.morecopper = 需要更多的铜.\n\n手动采矿或者放更多的钻头吧.
tutorial.turret = Defensive structures must be built to repel the[LIGHT_GRAY] enemy[].\nBuild a duo turret near your base. tutorial.turret = 必须建造防御建筑来击退[LIGHT_GRAY] 敌人[].\n请在你核心附近造一个双人炮塔.
tutorial.drillturret = Duo turrets require[accent] copper ammo []to shoot.\nPlace a drill next to the turret to supply it with mined copper. tutorial.drillturret = 双人炮塔需要[accent] 铜质弹药 []来射击.\n可以放一个钻头在炮塔附近供应铜.
tutorial.waves = The[LIGHT_GRAY] enemy[] approaches.\n\nDefend your core for 2 waves. Build more turrets. tutorial.waves = [LIGHT_GRAY]敌人[] 来了.\n\n保护基地,防御2波攻击. 造更多的炮塔.
tutorial.lead = More ores are available. Explore and mine[accent] lead[].\n\nDrag from your unit to the core to transfer resources. tutorial.lead = 有更多的矿可用. 探索和采集[accent] [].\n\n按住你的采矿单位拖放到核心来传送资源.
tutorial.smelter = Copper and lead are weak metals.\nSuperior[accent] Dense Alloy[] can be created in a smelter.\n\nBuild one. tutorial.smelter = 铜和铅是弱金属.\n超级[accent] 致密合金[] 可以从冶炼厂生产.\n\n造一个吧.
tutorial.densealloy = The smelter will now produce alloy.\nGet some.\nImprove the production if necessary. tutorial.densealloy = 冶炼厂将生产合金.\n生产一些.\n有必要可以改进一下生产.
tutorial.siliconsmelter = The core will now create a[accent] spirit drone[] for mining and repairing blocks.\n\nFactories for other units can be created with [accent] silicon.\nMake a silicon smelter. tutorial.siliconsmelter = 基地现在将制作一个[accent] 无人机[] 来采矿和维修方块.\n\n其他单位的工程可以用[accent] 硅 []来建造.\n造一个硅冶炼厂.
tutorial.silicondrill = Silicon requires[accent] coal[] and[accent] sand[].\nStart by making drills. tutorial.silicondrill = 硅需要[accent] 煤[] 和[accent] [].\n开始制作钻头吧.
tutorial.generator = This technology requires power.\nCreate a[accent] combustion generator[] for it. tutorial.generator = 这项技术需要能源.\n造一个[accent] 燃烧发电机[] 来发电.
tutorial.generatordrill = Combustion generators need fuel.\nFuel it with coal from a drill. tutorial.generatordrill = 燃烧发电机需要燃料.\n用钻头采集煤来供给燃料.
tutorial.node = Power requires transport.\nCreate a[accent] power node[] next to your combustion generator to transfer its power. tutorial.node = 能源需要传输.\n造一个[accent] 能量节点[] 靠近火力发电机来传输它的能源.
tutorial.nodelink = Power can be transferred through contacting power blocks and generators, or by linked power nodes.\n\nLink power by tapping the node and selecting the generator and silicon smelter. tutorial.nodelink = 使耗能方块紧靠发电机或者用能源节点连接来传输电力.\n\n点击能源节点并选择发电机和硅冶炼厂来链接能源.
tutorial.silicon = Silicon is being produced. Get some.\n\nImproving the production system is advised. tutorial.silicon = 正在生产硅. 多生产点.\n\n建议优化一下生产系统.
tutorial.daggerfactory = Construct a[accent] dagger mech factory.[]\n\nThis will be used to create attack mechs. tutorial.daggerfactory = 建造一个[accent] 尖刀机甲工厂.[]\n\n它可以用来生产机甲
tutorial.router = Factories need resources to function.\nCreate a router to split conveyor resources. tutorial.router = 工厂需要资源来运作.\n造一个路由器来分发传送资源.
tutorial.dagger = Link power nodes to the factory.\nOnce requirements are met, a mech will be created.\n\nCreate more drills, generators and conveyors as necessary. tutorial.dagger = 链接能源节点到工厂.\n一旦需求满足, 将会制作一个机甲.\n\n根据需要制作更多的钻头,发电机,传送带.
tutorial.battle = The[LIGHT_GRAY] enemy[] has revealed their core.\nDestroy it with your unit and dagger mechs. tutorial.battle = [LIGHT_GRAY] 敌人[] 的核心已经暴露。\n用你的尖刀机甲摧毁它。
block.copper-wall.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves. block.copper-wall.description = 廉价的防守区块。\n用于保护前几波中的核心和炮塔。
block.copper-wall-large.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves.\nSpans multiple tiles. block.copper-wall-large.description = 廉价的防御块。\n用于保护前几个波浪中的核心和炮塔。\n跨越多个块。
block.dense-alloy-wall.description = A standard defensive block.\nAdequate protection from enemies. block.dense-alloy-wall.description = 标准的防守区块。\n可以较好的防御敌人。
block.dense-alloy-wall-large.description = A standard defensive block.\nAdequate protection from enemies.\nSpans multiple tiles. block.dense-alloy-wall-large.description = 标准的防守区块。\n可以较好的防御敌人。\n跨越多个块。
block.thorium-wall.description = A strong defensive block.\nGood protection from enemies. block.thorium-wall.description = 强大的防守区块。\n很好的防御敌人。
block.thorium-wall-large.description = A strong defensive block.\nGood protection from enemies.\nSpans multiple tiles. block.thorium-wall-large.description = 强大的防守区块。\n很好地防御敌人。\n跨越多个块。
block.phase-wall.description = Not as strong as a thorium wall but will deflect bullets unless they are too powerful. block.phase-wall.description = 没有钍墙那样坚固,但是它可以使不太强的子弹发生偏转。
block.phase-wall-large.description = Not as strong as a thorium wall but will deflect bullets unless they are too powerful.\nSpans multiple tiles. block.phase-wall-large.description = 没有钍墙那样坚固,但是它可以使不太强的子弹发生偏转。\n跨越多个块。
block.surge-wall.description = The strongest defensive block.\nHas a small chance of triggering lightning towards the attacker. block.surge-wall.description = 强大的防守区块。\n有很小的机会向攻击者发射闪电。
block.surge-wall-large.description = The strongest defensive block.\nHas a small chance of triggering lightning towards the attacker.\nSpans multiple tiles. block.surge-wall-large.description = 强大的防御区块。\n有很小的机会向攻击者发射闪电。\n跨越多个区块。
block.door.description = A small door that can be opened and closed by tapping on it.\nIf opened, enemies can shoot and move through. block.door.description = 一扇小门,可以通过点击打开和关闭。\n如果打开,敌人可以射击并穿过。
block.door-large.description = A large door that can be opened and closed by tapping on it.\nIf opened, enemies can shoot and move through.\nSpans multiple tiles. block.door-large.description = 一扇大门,可以通过点击打开和关闭。\n如果打开,敌人可以射击并穿过。\n扫过多个瓷砖。
block.mend-projector.description = Periodically heals buildings in its vicinity. block.mend-projector.description = 定期修复附近的建筑物。
block.overdrive-projector.description = Increases the speed of nearby buildings like drills and conveyors. block.overdrive-projector.description = 提高附近建筑物的速度,如钻机和传送带。
block.force-projector.description = Creates a hexagonal force field around itself, protecting buildings and units inside from damage through bullets. block.force-projector.description = 自身周围创建一个六边形力场,保护建筑物和内部单位免受子弹的伤害。
block.shock-mine.description = Damages enemies stepping on the mine. Nearly invisible to the enemy. block.shock-mine.description = 伤害踩到它的敌人。敌人几乎看不到它。
block.duo.description = A small, cheap turret. block.duo.description = 小而便宜的炮塔。
block.arc.description = A small turret which shoots electricity in a random arc towards the enemy. block.arc.description = 小型炮塔,发射电弧。
block.hail.description = A small artillery turret. block.hail.description = 小型炮兵炮台。
block.lancer.description = A medium-sized turret which shoots charged electricity beams. block.lancer.description = 中型炮塔,发射带电的电子束。
block.wave.description = A medium-sized rapid-fire turret which shoots liquid bubbles. block.wave.description = 中型快速炮塔,射出液体泡泡。
block.salvo.description = A medium-sized turret which fires shots in salvos. block.salvo.description = 中型炮塔,齐射射击。
block.swarmer.description = A medium-sized turret which shoots burst missiles. block.swarmer.description = 发射爆炸导弹的中型炮塔。
block.ripple.description = A large artillery turret which fires several shots simultaneously. block.ripple.description = 大型炮兵炮塔,可同时向多个目标开火。
block.cyclone.description = A large rapid fire turret. block.cyclone.description = 大型快速炮塔。
block.fuse.description = A large turret which shoots powerful short-range beams. block.fuse.description = 发射强大的短程光束的大型炮塔。
block.spectre.description = A large turret which shoots two powerful bullets at once. block.spectre.description = 大型炮塔,一次射出两颗强大的子弹。
block.meltdown.description = A large turret which shoots powerful long-range beams. block.meltdown.description = 发射强大的远程光束的大型炮塔。
block.conveyor.description = Basic item transport block. Moved items forward and automatically deposits them into turrets or crafters. Rotatable. block.conveyor.description = 初级传送带。将物品向前移动并自动将它们放入炮塔或工厂中。可旋转方向。
block.titanium-conveyor.description = Advanced item transport block. Moves items faster than standard conveyors. block.titanium-conveyor.description = 高级传送带。能比初级传送带更快地移动物品。
block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. block.phase-conveyor.description = 高级传送带。使用电力将物品传送到距离几个块的相位传送带上。
block.junction.description = Acts as a bridge for two crossing conveyor belts. Useful in situations with two different conveyors carrying different materials to different locations. block.junction.description = 为两条交叉传送带的桥梁。适用于两种不同传送带将不同材料运送到不同位置的情况。
block.mass-driver.description = Ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. block.mass-driver.description = 终极传送带。收集几件物品,然后将它们射向长距离外的另一个批量传送带。
block.smelter.description = Burns coal for smelting copper and lead into dense alloy. block.smelter.description = 烧煤,用于冶炼铜和铅成致密合金。
block.arc-smelter.description = Smelts copper and lead into dense alloy by using an external power source. block.arc-smelter.description = 用外部电源熔炼铜和铅成致密合金。
block.silicon-smelter.description = Reduces sand with highly pure coke in order to produce silicon. block.silicon-smelter.description = 用高纯度的焦炭来加工沙子以生产硅。
block.plastanium-compressor.description = Produces plastanium from oil and titanium. block.plastanium-compressor.description = 用油和钛生产塑钢。
block.phase-weaver.description = Produces phase fabric from radioactive thorium and high amounts of sand. block.phase-weaver.description = 用放射性钍和大量沙子生产相织物。
block.alloy-smelter.description = Produces surge alloy from titanium, lead, silicon and copper. block.alloy-smelter.description = 用钛,铅,硅和铜生产浪涌合金。
block.pulverizer.description = Crushes stone into sand. Useful when there is a lack of natural sand. block.pulverizer.description = 将石头压成沙子。当缺少天然沙子时很有用。
block.pyratite-mixer.description = Mixes coal, lead and sand into highly flammable pyratite. block.pyratite-mixer.description = 用煤,铅和沙子混合成高度易燃的硫。
block.blast-mixer.description = Uses oil for transforming pyratite into the less flammable but more explosive blast compound. block.blast-mixer.description = 用油将硫转化为不易燃但更具爆炸性的爆炸化合物。
block.cryofluidmixer.description = Combines water and titanium into cryofluid which is much more efficient for cooling. block.cryofluidmixer.description = 水和钛结合到低温流体中,冷却效率更高。
block.solidifer.description = Cools lava to stone at a fast pace. block.solidifer.description = 快速冷却熔岩为石头。
block.melter.description = Heats up stone to very high temperatures to obtain lava. block.melter.description = 石头加热到很高的温度以获得熔岩。
block.incinerator.description = Gets rid of any excess item or liquid. block.incinerator.description = 用于除掉任何多余的物品或液体。
block.biomattercompressor.description = Compresses biomatter in order to retrieve oil. block.biomattercompressor.description = 压缩生物质以获取油。
block.separator.description = Exposes stone to water pressure in order to obtain various minerals contained in the stone. block.separator.description = 将石头暴露在水压下,以获得石头中含有的各种矿物质。
block.centrifuge.description = More efficient than the separator, but also more expensive to build and requires power. block.centrifuge.description = 比分离器更有效,但构建起来也更昂贵并且需要动力。
block.power-node.description = Transmits power to connected nodes. Up to four power sources, sinks or nodes can be connected. The node will receive power from or supply power to any adjacent blocks. block.power-node.description = 连接节点传输电源。最多可连接四个电源,接收器或节点。节点将从任何相邻块接收电力或向其供电。
block.power-node-large.description = Has a larger radius than the power node and connects to up to six power sources, sinks or nodes. block.power-node-large.description = 传输径大于电源节点,最多可连接六个电源,接收器或节点。
block.battery.description = Stores power whenever there is an abundance and provides power whenever there is a shortage, as long as there is capacity left. block.battery.description = 储存电力,当储存有能量时,可在电力短缺时提供电力。
block.battery-large.description = Stores much more power than a regular battery. block.battery-large.description = 比普通电池容量更大。
block.combustion-generator.description = Generates power by burning oil or flammable materials. block.combustion-generator.description = 通过燃烧油或易燃材料产生电力。
block.turbine-generator.description = More efficient than a combustion generator, but requires additional water. block.turbine-generator.description = 比燃烧发电机更有效,但需要额外的水。
block.thermal-generator.description = Generates a large amount of power from lava. block.thermal-generator.description = 从熔岩中产生大量的能量。
block.solar-panel.description = Provides a small amount of power from the sun. block.solar-panel.description = 标准太阳能面板,提供少量电力。
block.solar-panel-large.description = Provides much better power supply than a standard solar panel, but is also much more expensive to build. block.solar-panel-large.description = 比标准太阳能电池板提供更好的电源,但构建起来要贵得多。
block.thorium-reactor.description = Generates huge amounts of power from highly radioactive thorium. Requires constant cooling. Will explode violently if insufficient amounts of coolant are supplied. block.thorium-reactor.description = 高放射性钍产生大量电力。需要持续冷却。如果供应的冷却剂量不足,会剧烈爆炸。
block.rtg-generator.description = A radioisotope thermoelectric generator which does not require cooling but provides less power than a thorium reactor. block.rtg-generator.description = 一种放射性同位素热电发电机,它不需要冷却,但功率低于钍反应堆。
block.unloader.description = Unloads items from a container, vault or core onto a conveyor or directly into an adjacent block. The type of item to be unloaded can be changed by tapping on the unloader. block.unloader.description = 物品从容器,仓库或核心卸载到传送带上或直接卸载到相邻的块中。可以通过点击卸载器来更改要卸载的项目类型。
block.container.description = Stores a small amount of items. Use it for creating buffers when there is a non-constant demand of materials. An[LIGHT_GRAY] unloader[] can be used to retrieve items from the container. block.container.description = 存储少量物品。当存在非恒定的材料需求时,使用它来创建缓冲区。 [LIGHT_GRAY]卸载器[]可用于从容器中获取物品。
block.vault.description = Stores a large amount of items. Use it for creating buffers when there is a non-constant demand of materials. An[LIGHT_GRAY] unloader[] can be used to retrieve items from the vault. block.vault.description = 存储大量物品。当存在非恒定的材料需求时,使用它来创建缓冲区。 [LIGHT_GRAY]卸载器[]可用于从仓库中获取物品。
block.mechanical-drill.description = A cheap drill. When placed on appropriate tiles, outputs items at a slow pace indefinitely. block.mechanical-drill.description = 便宜的钻头。放置在适当的块上时,无限期地以缓慢的速度输出物品。
block.pneumatic-drill.description = An improved drill which is faster and able to process harder materials by making use of air pressure. block.pneumatic-drill.description = 一种改进的钻头,它更快,能够利用气压处理更硬的材料。
block.laser-drill.description = Allows drilling even faster through laser technology, but requires power. Additionally, radioactive thorium can be retrieved with this drill. block.laser-drill.description = 通过激光技术更快地钻孔,但需要电源。此外,这种钻头可以回收放射性钍。
block.blast-drill.description = The ultimate drill. Requires large amounts of power. block.blast-drill.description = 终极钻头,需要大量电力。
block.water-extractor.description = Extracts water from the ground. Use it when there is no lake nearby. block.water-extractor.description = 从地下提取水。当附近没有湖泊时使用它。
block.cultivator.description = Cultivates the soil with water in order to obtain biomatter. block.cultivator.description = 用水培育土壤以获得生物物质。
block.oil-extractor.description = Uses large amounts of power in order to extract oil from sand. Use it when there is no direct source of oil nearby. block.oil-extractor.description = 使用大量的电力从沙子中提取石油。当附近没有直接的石油来源时使用它。
block.dart-ship-pad.description = Leave your current vessel and change into a basic fighter aircraft.\nUse the pad by double tapping while standing on it. block.dart-ship-pad.description = 离开你当前的装置,换成基本的战斗机。\n站在上面时双击切换。
block.trident-ship-pad.description = Leave your current vessel and change into a reasonably well armored heavy bomber.\nUse the pad by double tapping while standing on it. block.trident-ship-pad.description = 离开你当前的装置,换成一个装甲合理的重型轰炸机。\n站在上面时双击切换。
block.javelin-ship-pad.description = Leave your current vessel and change into a strong and fast interceptor with lightning weapons.\nUse the pad by double tapping while standing on it. block.javelin-ship-pad.description = 离开你当前的装置,换上一个强大而快速的截击机,用闪电武器。\n站在上面时双击切换。
block.glaive-ship-pad.description = Leave your current vessel and change into a large, well-armored gunship.\nUse the pad by double tapping while standing on it. block.glaive-ship-pad.description = 离开现有的装置,换成装甲良好的大型武装直升机。\n站在上面时双击切换。
block.tau-mech-pad.description = Leave your current vessel and change into a support mech which can heal friendly buildings and units.\nUse the pad by double tapping while standing on it. block.tau-mech-pad.description = 离开你当前的装置并换成一个可以治愈友方建筑物和单位的支撑机械。\n站在上面时双击切换。
block.delta-mech-pad.description = Leave your current vessel and change into a fast, lightly-armored mech made for hit-and-run attacks.\nUse the pad by double tapping while standing on it. block.delta-mech-pad.description = 离开你当前的装置并换成一个快速,轻装甲的机械装置,用于快速攻击。\n站在上面时双击切换。
block.omega-mech-pad.description = Leave your current vessel and change into a bulky and well-armored mech, made for front-line assaults.\nUse the pad by double tapping while standing on it. block.omega-mech-pad.description = 离开你当前的装置并换成一个笨重且装甲良好的机甲,用于前线攻击。\n站在上面时双击切换。
block.spirit-factory.description = Produces light drones which mine ore and repair blocks. block.spirit-factory.description = 生产轻型无人机,用于开采矿石和修复块。
block.phantom-factory.description = Produces advanced drone units which are significantly more effective than a spirit drone. block.phantom-factory.description = 生产高级无人机单元,它比轻型无人机更有效。
block.wraith-factory.description = Produces fast, hit-and-run interceptor units. block.wraith-factory.description = 生产快速截击机。
block.ghoul-factory.description = Produces heavy carpet bombers. block.ghoul-factory.description = 生产重型地毯轰炸机。
block.dagger-factory.description = Produces basic ground units. block.dagger-factory.description = 生产基本地面单位。
block.titan-factory.description = Produces advanced, armored ground units. block.titan-factory.description = 生产先进的装甲地面单位。
block.fortress-factory.description = Produces heavy artillery ground units. block.fortress-factory.description = 生产重型火炮地面部队。
block.revenant-factory.description = Produces heavy laser ground units. block.revenant-factory.description = 生产重型激光地面单元。
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.repair-point.description = 连续治疗附近最近的受损单位。
block.command-center.description = Allows changing friendly AI behavior. Currently, attack, retreat and patrol commands are supported. block.command-center.description = 允许更改友方AI行为。目前支持攻击,撤退和巡逻命令。
block.conduit.description = Basic liquid transport block. Works like a conveyor, but with liquids. Best used with extractors, pumps or other conduits. block.conduit.description = 基本液体传输块。像输送机一样工作,但用于液体。最适用于提取器,泵或其他导管。
block.pulse-conduit.description = Advanced liquid transport block. Transports liquids faster and stores more than standard conduits. block.pulse-conduit.description = 高级液体传输块。比标准导管更快地输送液体并储存更多液体。
block.phase-conduit.description = Advanced liquid transport block. Uses power to teleport liquids to a connected phase conduit over several tiles. block.phase-conduit.description = 高级液体传输块。使用电力将液体传送到多个块上的连接相管道。
block.liquid-router.description = Accepts liquids from one direction and outputs them to up to 3 other directions equally. Can also store a certain amount of liquid. Useful for splitting the liquids from one source to multiple targets. block.liquid-router.description = 接受来自一个方向的液体并将它们平均输出到最多3个其他方向。也可以储存一定量的液体。用于将液体从一个源分成多个目标。
block.liquid-tank.description = Stores a large amount of liquids. Use it for creating buffers when there is a non-constant demand of materials or as a safeguard for cooling vital blocks. block.liquid-tank.description = 存储大量液体。当存在对材料的非恒定需求或作为冷却重要块的安全措施时,将其用于创建缓冲区。
block.liquid-junction.description = Acts as a bridge for two crossing conduits. Useful in situations with two different conduits carrying different liquids to different locations. block.liquid-junction.description = 作为两个交叉管道的桥梁。适用于两种不同导管将不同液体输送到不同位置的情况。
block.bridge-conduit.description = Advanced liquid transport block. Allows transporting liquids over up to 3 tiles of any terrain or building. block.bridge-conduit.description = 高级液体传输块。允许在任何地形或建筑物的最多3个块上运输液体。
block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. block.mechanical-pump.description = 一种输出速度慢但没有功耗的廉价泵。
block.rotary-pump.description = An advanced pump which doubles up speed by using power. block.rotary-pump.description = 一种先进的泵,通过使用动力使速度加倍。
block.thermal-pump.description = The ultimate pump. Three times as fast as a mechanical pump and the only pump which is able to retrieve lava. block.thermal-pump.description = 终级水泵。速度是机械泵的三倍。是唯一能够回收熔岩的泵。
block.router.description = Accepts items from one direction and outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets. block.router.description = 从一个方向接受物品,并将它们平均输出到最多3个其他方向。用于将材料从一个源分割为多个目标。
block.distributor.description = An advanced router which splits items to up to 7 other directions equally. block.distributor.description = 一个高级路由器,可以将物品分成最多7个方向。
block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. block.bridge-conveyor.description = 高级项目传输块。允许在跨越任何地形或建筑物上运输物品,最多跨越3个块。
block.alpha-mech-pad.description = When given enough power, rebuilds your ship into the[accent] Alpha[] mech. block.alpha-mech-pad.description = 当给予足够的电力时,将你的装置重建为[accent] Alpha []机甲。
block.itemsource.description = Infinitely outputs items. Sandbox only. block.itemsource.description = 无限输出物品。仅限沙箱。
block.liquidsource.description = Infinitely outputs liquids. Sandbox only. block.liquidsource.description = 无限输出液体。仅限沙箱。
block.itemvoid.description = Destroys any items which go into it without using power. Sandbox only. block.itemvoid.description = 在不使用电源的情况下销毁任何进入它的物品。仅限沙箱。
block.powerinfinite.description = Infinitely outputs power. Sandbox only. block.powerinfinite.description = 无限输出功率。仅限沙箱。
block.powervoid.description = Voids all power inputted into it. Sandbox only. block.powervoid.description = 消耗输入的所有功率。仅限沙箱。
liquid.water.description = Commonly used for cooling machines and waste processing. liquid.water.description = 通常用于冷却和废物处理。
liquid.lava.description = Can be transformed into[LIGHT_GRAY] stone[], used for generating power or used as ammo for certain turrets. liquid.lava.description = 可以转换成[LIGHT_GRAY] 石头 [],用于发电或用作某些炮塔的弹药。
liquid.oil.description = Can be burnt, exploded or used as a coolant. liquid.oil.description = 可以燃烧,爆炸或用作冷却液。
liquid.cryofluid.description = The most efficient liquid for cooling things down. liquid.cryofluid.description = 用于降温的最有效液体。
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 98 KiB

+8 -5
View File
@@ -5,8 +5,7 @@ Color: {
gray: {a: 1, b: 0.32, g: 0.32, r: 0.32 }, gray: {a: 1, b: 0.32, g: 0.32, r: 0.32 },
lightgray: {a: 1, b: 0.65, g: 0.65, r: 0.65 } lightgray: {a: 1, b: 0.65, g: 0.65, r: 0.65 }
orange: {hex: "FFA500"}, orange: {hex: "FFA500"},
accent: {hex: "f4ba6e"}, accent: {hex: "ffd37f"}
accentDark: {hex: "f4ba6e"},
}, },
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} },
@@ -15,12 +14,12 @@ TintedDrawable: {
chatfield: {name: white, color: {r: 0, g: 0, b: 0, a: 0.2}}, chatfield: {name: white, color: {r: 0, g: 0, b: 0, a: 0.2}},
clear: {name: white, color: {r: 0.1, g: 0.1, b: 0.1, a: 0.75}}, clear: {name: white, color: {r: 0.1, g: 0.1, b: 0.1, a: 0.75}},
none: {name: white, color: {r: 0, g: 0, b: 0, a: 0}}, none: {name: white, color: {r: 0, g: 0, b: 0, a: 0}},
clear-over: {name: white, color: {r: 1, g: 1, b: 1, a: 0.2} }, clear-over: {name: white, color: { hex: "#ffffff82" }},
clear-down: {name: white, color: {r: 1, g: 1, b: 1, a: 0.4} } clear-alpha: {name: white, color: { hex: "#ffd37fff" }},
clear-down: {name: white, color: { hex: "#ffd37fff" }}
}, },
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},
toggle: {checked: button-down, down: button-down, up: button } toggle: {checked: button-down, down: button-down, up: button }
}, },
TextButtonStyle: { TextButtonStyle: {
@@ -28,6 +27,7 @@ TextButtonStyle: {
discord: {font: default-font, fontColor: white, up: discord-banner}, discord: {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: gray }, clear: {down: clear-down, up: clear, over: clear-over, font: default-font, fontColor: white, disabledFontColor: gray },
clear-partial: {down: white, up: button-select, over: clear-down, 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: gray } toggle: {font: default-font, fontColor: white, checked: button-down, down: button-down, up: button, over: button-over, disabled: button, disabledFontColor: gray }
}, },
@@ -40,6 +40,9 @@ ImageButtonStyle: {
toggle: {checked: button-down, down: button-down, up: button, imageDisabledColor: gray, imageUpColor: white }, toggle: {checked: button-down, down: button-down, up: button, imageDisabledColor: gray, imageUpColor: white },
select: {checked: button-select, up: none }, select: {checked: button-select, up: none },
clear: {down: clear-down, up: clear, over: clear-over}, clear: {down: clear-down, up: clear, over: clear-over},
clear-partial: {down: clear-down, up: none, over: clear-over},
clear-toggle: {down: clear-down, checked: clear-down, up: clear, over: clear-over},
clear-toggle-partial: {down: clear-down, checked: clear-down, up: none, over: clear-over},
}, },
ScrollPaneStyle: { ScrollPaneStyle: {
default: {background: border, vScroll: scroll, vScrollKnob: scroll-knob-vertical-black}, default: {background: border, vScroll: scroll, vScrollKnob: scroll-knob-vertical-black},
+4 -4
View File
@@ -17,12 +17,12 @@ import io.anuke.mindustry.game.Version;
import io.anuke.mindustry.gen.Serialization; import io.anuke.mindustry.gen.Serialization;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.world.blocks.defense.ForceProjector.ShieldEntity; import io.anuke.mindustry.world.blocks.defense.ForceProjector.ShieldEntity;
import io.anuke.ucore.core.Settings;
import io.anuke.ucore.entities.Entities; import io.anuke.ucore.entities.Entities;
import io.anuke.ucore.entities.EntityGroup; import io.anuke.ucore.entities.EntityGroup;
import io.anuke.ucore.entities.impl.EffectEntity; import io.anuke.ucore.entities.impl.EffectEntity;
import io.anuke.ucore.entities.trait.DrawTrait; import io.anuke.ucore.entities.trait.DrawTrait;
import io.anuke.ucore.scene.ui.layout.Unit; import io.anuke.ucore.scene.ui.layout.Unit;
import io.anuke.ucore.util.OS;
import io.anuke.ucore.util.Translator; import io.anuke.ucore.util.Translator;
import java.util.Arrays; import java.util.Arrays;
@@ -33,6 +33,7 @@ public class Vars{
public static final String appName = "Mindustry"; public static final String appName = "Mindustry";
public static final String discordURL = "https://discord.gg/mindustry"; public static final String discordURL = "https://discord.gg/mindustry";
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 String contributorsURL = "https://api.github.com/repos/Anuken/Mindustry/contributors";
public static final String crashReportURL = "http://mindustry.us.to/report"; public static final String crashReportURL = "http://mindustry.us.to/report";
//time between waves in frames (on normal mode) //time between waves in frames (on normal mode)
public static final float wavespace = 60 * 60 * 1.5f; public static final float wavespace = 60 * 60 * 1.5f;
@@ -49,8 +50,7 @@ public class Vars{
public static final int maxNameLength = 40; public static final int maxNameLength = 40;
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 = 250; public static final int sectorSize = 256;
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;
public static final Color[] playerColors = { public static final Color[] playerColors = {
@@ -170,7 +170,7 @@ public class Vars{
ios = Gdx.app.getType() == ApplicationType.iOS; ios = Gdx.app.getType() == ApplicationType.iOS;
android = Gdx.app.getType() == ApplicationType.Android; android = Gdx.app.getType() == ApplicationType.Android;
dataDirectory = OS.getAppDataDirectory(appName); dataDirectory = Settings.getDataDirectory(appName);
customMapDirectory = dataDirectory.child("maps/"); customMapDirectory = dataDirectory.child("maps/");
saveDirectory = dataDirectory.child("saves/"); saveDirectory = dataDirectory.child("saves/");
baseCameraScale = Math.round(Unit.dp.scl(4)); baseCameraScale = Math.round(Unit.dp.scl(4));
@@ -21,7 +21,6 @@ import io.anuke.ucore.util.ThreadArray;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
//TODO consider using quadtrees for finding specific types of blocks within an area //TODO consider using quadtrees for finding specific types of blocks within an area
//TODO maybe use Arrays instead of ObjectSets?
/**Class used for indexing special target blocks for AI.*/ /**Class used for indexing special target blocks for AI.*/
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@@ -182,7 +182,7 @@ public class Pathfinder{
} }
} }
state.spawner.checkAllQuadrants(); world.spawner.checkAllQuadrants();
} }
class PathData{ class PathData{
@@ -43,43 +43,46 @@ public class Recipes implements ContentList{
new Recipe(defense, DefenseBlocks.surgeWallLarge, new ItemStack(Items.surgealloy, 12 * 4)); new Recipe(defense, DefenseBlocks.surgeWallLarge, new ItemStack(Items.surgealloy, 12 * 4));
//projectors //projectors
new Recipe(defense, DefenseBlocks.mendProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 50), new ItemStack(Items.silicon, 180)); new Recipe(effect, DefenseBlocks.mendProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 50), new ItemStack(Items.silicon, 180));
new Recipe(defense, DefenseBlocks.overdriveProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); new Recipe(effect, DefenseBlocks.overdriveProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250));
new Recipe(defense, DefenseBlocks.forceProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); new Recipe(effect, DefenseBlocks.forceProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250));
//extra blocks new Recipe(effect, StorageBlocks.unloader, new ItemStack(Items.densealloy, 50), new ItemStack(Items.silicon, 60));
new Recipe(defense, DefenseBlocks.shockMine, new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 25)) new Recipe(effect, StorageBlocks.container, new ItemStack(Items.densealloy, 200));
new Recipe(effect, StorageBlocks.vault, new ItemStack(Items.densealloy, 500), new ItemStack(Items.thorium, 250));
new Recipe(effect, DefenseBlocks.shockMine, new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 25))
.setDependencies(Items.blastCompound); .setDependencies(Items.blastCompound);
//TURRETS //TURRETS
new Recipe(weapon, TurretBlocks.duo, new ItemStack(Items.copper, 40)).setAlwaysUnlocked(true); new Recipe(turret, TurretBlocks.duo, new ItemStack(Items.copper, 40)).setAlwaysUnlocked(true);
new Recipe(weapon, TurretBlocks.arc, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 30), new ItemStack(Items.silicon, 20)); new Recipe(turret, TurretBlocks.arc, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 30), new ItemStack(Items.silicon, 20));
new Recipe(weapon, TurretBlocks.hail, new ItemStack(Items.copper, 60), new ItemStack(Items.densealloy, 35)); new Recipe(turret, TurretBlocks.hail, new ItemStack(Items.copper, 60), new ItemStack(Items.densealloy, 35));
new Recipe(weapon, TurretBlocks.lancer, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 100), new ItemStack(Items.silicon, 90)); new Recipe(turret, TurretBlocks.lancer, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 100), new ItemStack(Items.silicon, 90));
new Recipe(weapon, TurretBlocks.wave, new ItemStack(Items.densealloy, 60), new ItemStack(Items.titanium, 70), new ItemStack(Items.lead, 150)); new Recipe(turret, TurretBlocks.wave, new ItemStack(Items.densealloy, 60), new ItemStack(Items.titanium, 70), new ItemStack(Items.lead, 150));
new Recipe(weapon, TurretBlocks.salvo, new ItemStack(Items.copper, 210), new ItemStack(Items.densealloy, 190), new ItemStack(Items.thorium, 130)); new Recipe(turret, TurretBlocks.salvo, new ItemStack(Items.copper, 210), new ItemStack(Items.densealloy, 190), new ItemStack(Items.thorium, 130));
new Recipe(weapon, TurretBlocks.swarmer, new ItemStack(Items.densealloy, 70), new ItemStack(Items.titanium, 70), new ItemStack(Items.plastanium, 90), new ItemStack(Items.silicon, 60)); new Recipe(turret, TurretBlocks.swarmer, new ItemStack(Items.densealloy, 70), new ItemStack(Items.titanium, 70), new ItemStack(Items.plastanium, 90), new ItemStack(Items.silicon, 60));
new Recipe(weapon, TurretBlocks.ripple, new ItemStack(Items.copper, 300), new ItemStack(Items.densealloy, 220), new ItemStack(Items.thorium, 120)); new Recipe(turret, TurretBlocks.ripple, new ItemStack(Items.copper, 300), new ItemStack(Items.densealloy, 220), new ItemStack(Items.thorium, 120));
new Recipe(weapon, TurretBlocks.cyclone, new ItemStack(Items.copper, 400), new ItemStack(Items.densealloy, 400), new ItemStack(Items.surgealloy, 200), new ItemStack(Items.plastanium, 150)); new Recipe(turret, TurretBlocks.cyclone, new ItemStack(Items.copper, 400), new ItemStack(Items.densealloy, 400), new ItemStack(Items.surgealloy, 200), new ItemStack(Items.plastanium, 150));
new Recipe(weapon, TurretBlocks.fuse, new ItemStack(Items.copper, 450), new ItemStack(Items.densealloy, 450), new ItemStack(Items.surgealloy, 250)); new Recipe(turret, TurretBlocks.fuse, new ItemStack(Items.copper, 450), new ItemStack(Items.densealloy, 450), new ItemStack(Items.surgealloy, 250));
new Recipe(weapon, TurretBlocks.spectre, new ItemStack(Items.copper, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 500), new ItemStack(Items.plastanium, 350), new ItemStack(Items.thorium, 500)); new Recipe(turret, TurretBlocks.spectre, new ItemStack(Items.copper, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 500), new ItemStack(Items.plastanium, 350), new ItemStack(Items.thorium, 500));
new Recipe(weapon, TurretBlocks.meltdown, new ItemStack(Items.copper, 500), new ItemStack(Items.lead, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 650), new ItemStack(Items.silicon, 650)); new Recipe(turret, TurretBlocks.meltdown, new ItemStack(Items.copper, 500), new ItemStack(Items.lead, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 650), new ItemStack(Items.silicon, 650));
//DISTRIBUTION //DISTRIBUTION
new Recipe(distribution, DistributionBlocks.conveyor, new ItemStack(Items.copper, 1)).setAlwaysUnlocked(true); new Recipe(distribution, DistributionBlocks.conveyor, new ItemStack(Items.copper, 1)).setAlwaysUnlocked(true);
new Recipe(distribution, DistributionBlocks.titaniumconveyor, new ItemStack(Items.copper, 2), new ItemStack(Items.titanium, 1)); new Recipe(distribution, DistributionBlocks.titaniumconveyor, new ItemStack(Items.copper, 2), new ItemStack(Items.titanium, 1));
new Recipe(distribution, DistributionBlocks.phaseConveyor, new ItemStack(Items.phasefabric, 10), new ItemStack(Items.silicon, 15), new ItemStack(Items.lead, 20), new ItemStack(Items.densealloy, 20)); new Recipe(distribution, DistributionBlocks.phaseConveyor, new ItemStack(Items.phasefabric, 10), new ItemStack(Items.silicon, 15), new ItemStack(Items.lead, 20), new ItemStack(Items.densealloy, 20));
//starter lead transportation //starter transport
new Recipe(distribution, DistributionBlocks.junction, new ItemStack(Items.copper, 2)).setAlwaysUnlocked(true); new Recipe(distribution, DistributionBlocks.junction, new ItemStack(Items.copper, 2)).setAlwaysUnlocked(true);
new Recipe(distribution, DistributionBlocks.router, new ItemStack(Items.copper, 6)).setAlwaysUnlocked(true); new Recipe(distribution, DistributionBlocks.router, new ItemStack(Items.copper, 6)).setAlwaysUnlocked(true);
//advanced densealloy transporation //advanced densealloy transporat
new Recipe(distribution, DistributionBlocks.distributor, new ItemStack(Items.densealloy, 8), new ItemStack(Items.copper, 8)); new Recipe(distribution, DistributionBlocks.distributor, new ItemStack(Items.densealloy, 8), new ItemStack(Items.copper, 8));
new Recipe(distribution, DistributionBlocks.sorter, new ItemStack(Items.densealloy, 4), new ItemStack(Items.copper, 4)); new Recipe(distribution, DistributionBlocks.sorter, new ItemStack(Items.densealloy, 4), new ItemStack(Items.copper, 4));
new Recipe(distribution, DistributionBlocks.overflowGate, new ItemStack(Items.densealloy, 4), new ItemStack(Items.copper, 8)); new Recipe(distribution, DistributionBlocks.overflowGate, new ItemStack(Items.densealloy, 4), new ItemStack(Items.copper, 8));
new Recipe(distribution, DistributionBlocks.itemBridge, new ItemStack(Items.densealloy, 8), new ItemStack(Items.copper, 8)); new Recipe(distribution, DistributionBlocks.itemBridge, new ItemStack(Items.densealloy, 8), new ItemStack(Items.copper, 8));
new Recipe(distribution, DistributionBlocks.massDriver, new ItemStack(Items.densealloy, 400), new ItemStack(Items.silicon, 300), new ItemStack(Items.lead, 400), new ItemStack(Items.thorium, 250)); new Recipe(distribution, DistributionBlocks.massDriver, new ItemStack(Items.densealloy, 250), new ItemStack(Items.silicon, 150), new ItemStack(Items.lead, 250), new ItemStack(Items.thorium, 100));
//CRAFTING //CRAFTING
@@ -131,9 +134,6 @@ public class Recipes implements ContentList{
new Recipe(power, PowerBlocks.thoriumReactor, new ItemStack(Items.lead, 600), new ItemStack(Items.silicon, 400), new ItemStack(Items.densealloy, 300), new ItemStack(Items.thorium, 300)); new Recipe(power, PowerBlocks.thoriumReactor, new ItemStack(Items.lead, 600), new ItemStack(Items.silicon, 400), new ItemStack(Items.densealloy, 300), new ItemStack(Items.thorium, 300));
new Recipe(power, PowerBlocks.rtgGenerator, new ItemStack(Items.lead, 200), new ItemStack(Items.silicon, 150), new ItemStack(Items.phasefabric, 50), new ItemStack(Items.plastanium, 150), new ItemStack(Items.thorium, 100)); new Recipe(power, PowerBlocks.rtgGenerator, new ItemStack(Items.lead, 200), new ItemStack(Items.silicon, 150), new ItemStack(Items.phasefabric, 50), new ItemStack(Items.plastanium, 150), new ItemStack(Items.thorium, 100));
new Recipe(distribution, StorageBlocks.unloader, new ItemStack(Items.densealloy, 50), new ItemStack(Items.silicon, 60));
new Recipe(distribution, StorageBlocks.container, new ItemStack(Items.densealloy, 200));
new Recipe(distribution, StorageBlocks.vault, new ItemStack(Items.densealloy, 500), new ItemStack(Items.thorium, 250));
//core disabled due to being broken //core disabled due to being broken
/*new Recipe(distribution, StorageBlocks.core, /*new Recipe(distribution, StorageBlocks.core,
new ItemStack(Items.copper, 2000), new ItemStack(Items.densealloy, 1500), new ItemStack(Items.copper, 2000), new ItemStack(Items.densealloy, 1500),
@@ -153,16 +153,16 @@ public class Recipes implements ContentList{
//UNITS //UNITS
//bodies //upgrades
new Recipe(units, UpgradeBlocks.dartPad, new ItemStack(Items.lead, 150), new ItemStack(Items.copper, 150), new ItemStack(Items.silicon, 200), new ItemStack(Items.titanium, 240)).setVisible(RecipeVisibility.desktopOnly); new Recipe(upgrade, UpgradeBlocks.dartPad, new ItemStack(Items.lead, 150), new ItemStack(Items.copper, 150), new ItemStack(Items.silicon, 200), new ItemStack(Items.titanium, 240)).setVisible(RecipeVisibility.desktopOnly);
new Recipe(units, UpgradeBlocks.tridentPad, new ItemStack(Items.lead, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250), new ItemStack(Items.titanium, 300), new ItemStack(Items.plastanium, 200)); new Recipe(upgrade, UpgradeBlocks.tridentPad, new ItemStack(Items.lead, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250), new ItemStack(Items.titanium, 300), new ItemStack(Items.plastanium, 200));
new Recipe(units, UpgradeBlocks.javelinPad, new ItemStack(Items.lead, 350), new ItemStack(Items.silicon, 450), new ItemStack(Items.titanium, 500), new ItemStack(Items.plastanium, 400), new ItemStack(Items.phasefabric, 200)); new Recipe(upgrade, UpgradeBlocks.javelinPad, new ItemStack(Items.lead, 350), new ItemStack(Items.silicon, 450), new ItemStack(Items.titanium, 500), new ItemStack(Items.plastanium, 400), new ItemStack(Items.phasefabric, 200));
new Recipe(units, UpgradeBlocks.glaivePad, new ItemStack(Items.lead, 450), new ItemStack(Items.silicon, 650), new ItemStack(Items.titanium, 700), new ItemStack(Items.plastanium, 600), new ItemStack(Items.surgealloy, 200)); new Recipe(upgrade, UpgradeBlocks.glaivePad, new ItemStack(Items.lead, 450), new ItemStack(Items.silicon, 650), new ItemStack(Items.titanium, 700), new ItemStack(Items.plastanium, 600), new ItemStack(Items.surgealloy, 200));
new Recipe(units, UpgradeBlocks.alphaPad, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 100), new ItemStack(Items.copper, 150)).setVisible(RecipeVisibility.mobileOnly); new Recipe(upgrade, UpgradeBlocks.alphaPad, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 100), new ItemStack(Items.copper, 150)).setVisible(RecipeVisibility.mobileOnly);
new Recipe(units, UpgradeBlocks.tauPad, new ItemStack(Items.lead, 250), new ItemStack(Items.densealloy, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250)); new Recipe(upgrade, UpgradeBlocks.tauPad, new ItemStack(Items.lead, 250), new ItemStack(Items.densealloy, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250));
new Recipe(units, UpgradeBlocks.deltaPad, new ItemStack(Items.lead, 350), new ItemStack(Items.densealloy, 350), new ItemStack(Items.copper, 400), new ItemStack(Items.silicon, 450), new ItemStack(Items.thorium, 300)); new Recipe(upgrade, UpgradeBlocks.deltaPad, new ItemStack(Items.lead, 350), new ItemStack(Items.densealloy, 350), new ItemStack(Items.copper, 400), new ItemStack(Items.silicon, 450), new ItemStack(Items.thorium, 300));
new Recipe(units, UpgradeBlocks.omegaPad, new ItemStack(Items.lead, 450), new ItemStack(Items.densealloy, 550), new ItemStack(Items.silicon, 650), new ItemStack(Items.thorium, 600), new ItemStack(Items.surgealloy, 240)); new Recipe(upgrade, UpgradeBlocks.omegaPad, new ItemStack(Items.lead, 450), new ItemStack(Items.densealloy, 550), new ItemStack(Items.silicon, 650), new ItemStack(Items.thorium, 600), new ItemStack(Items.surgealloy, 240));
//actual unit related stuff //actual unit related stuff
new Recipe(units, UnitBlocks.spiritFactory, new ItemStack(Items.copper, 70), new ItemStack(Items.lead, 110), new ItemStack(Items.silicon, 130)); new Recipe(units, UnitBlocks.spiritFactory, new ItemStack(Items.copper, 70), new ItemStack(Items.lead, 110), new ItemStack(Items.silicon, 130));
@@ -45,6 +45,8 @@ public class Blocks extends BlockList implements ContentList{
} }
}; };
//Registers build blocks from size 1-6
//no reference is needed here since they can be looked up by name later
for(int i = 1; i <= 6; i++){ for(int i = 1; i <= 6; i++){
new BuildBlock("build" + i); new BuildBlock("build" + i);
} }
@@ -33,9 +33,9 @@ public class DistributionBlocks extends BlockList implements ContentList{
}}; }};
phaseConveyor = new ItemBridge("phase-conveyor"){{ phaseConveyor = new ItemBridge("phase-conveyor"){{
range = 11; range = 12;
hasPower = true; hasPower = true;
consumes.power(0.05f); consumes.power(0.03f);
}}; }};
sorter = new Sorter("sorter"); sorter = new Sorter("sorter");
@@ -50,8 +50,8 @@ public class DistributionBlocks extends BlockList implements ContentList{
massDriver = new MassDriver("mass-driver"){{ massDriver = new MassDriver("mass-driver"){{
size = 3; size = 3;
itemCapacity = 80; itemCapacity = 60;
range = 340f; range = 440f;
}}; }};
} }
} }
@@ -67,9 +67,9 @@ public class LiquidBlocks extends BlockList implements ContentList{
}}; }};
phaseConduit = new LiquidBridge("phase-conduit"){{ phaseConduit = new LiquidBridge("phase-conduit"){{
range = 11; range = 12;
hasPower = true; hasPower = true;
consumes.power(0.05f); consumes.power(0.03f);
}}; }};
} }
} }
@@ -32,24 +32,13 @@ public class TurretBlocks extends BlockList implements ContentList{
hail = new ArtilleryTurret("hail"){{ hail = new ArtilleryTurret("hail"){{
ammoTypes = new AmmoType[]{AmmoTypes.artilleryDense, AmmoTypes.artilleryHoming, AmmoTypes.artilleryIncindiary}; ammoTypes = new AmmoType[]{AmmoTypes.artilleryDense, AmmoTypes.artilleryHoming, AmmoTypes.artilleryIncindiary};
reload = 70f; reload = 60f;
recoil = 2f; recoil = 2f;
range = 230f; range = 230f;
inaccuracy = 1f; inaccuracy = 1f;
shootCone = 10f; shootCone = 10f;
health = 120; health = 120;
}}; }};
/*
scatter = new BurstTurret("scatter"){{
ammoTypes = new AmmoType[]{AmmoTypes.flakCopper};
reload = 70f;
recoil = 2f;
shots = 3;
range = 220f;
inaccuracy = 2f;
shootCone = 40f;
health = 120;
}};*/
scorch = new LiquidTurret("scorch"){ scorch = new LiquidTurret("scorch"){
protected TextureRegion shootRegion; protected TextureRegion shootRegion;
@@ -117,11 +106,11 @@ public class TurretBlocks extends BlockList implements ContentList{
arc = new PowerTurret("arc"){{ arc = new PowerTurret("arc"){{
shootType = AmmoTypes.arc; shootType = AmmoTypes.arc;
reload = 55f; reload = 75f;
shootShake = 1f; shootShake = 1f;
shootCone = 40f; shootCone = 40f;
rotatespeed = 8f; rotatespeed = 8f;
powerUsed = 7f; powerUsed = 9f;
powerCapacity = 30f; powerCapacity = 30f;
range = 150f; range = 150f;
shootEffect = ShootFx.lightningShoot; shootEffect = ShootFx.lightningShoot;
@@ -132,7 +121,7 @@ public class TurretBlocks extends BlockList implements ContentList{
swarmer = new BurstTurret("swarmer"){{ swarmer = new BurstTurret("swarmer"){{
ammoTypes = new AmmoType[]{AmmoTypes.missileExplosive, AmmoTypes.missileIncindiary, AmmoTypes.missileSurge}; ammoTypes = new AmmoType[]{AmmoTypes.missileExplosive, AmmoTypes.missileIncindiary, AmmoTypes.missileSurge};
reload = 60f; reload = 5f;
shots = 4; shots = 4;
burstSpacing = 5; burstSpacing = 5;
inaccuracy = 10f; inaccuracy = 10f;
@@ -156,7 +145,7 @@ public class TurretBlocks extends BlockList implements ContentList{
size = 2; size = 2;
range = 120f; range = 120f;
ammoTypes = new AmmoType[]{AmmoTypes.bulletCopper, AmmoTypes.bulletDense, AmmoTypes.bulletPyratite, AmmoTypes.bulletThorium, AmmoTypes.bulletSilicon}; ammoTypes = new AmmoType[]{AmmoTypes.bulletCopper, AmmoTypes.bulletDense, AmmoTypes.bulletPyratite, AmmoTypes.bulletThorium, AmmoTypes.bulletSilicon};
reload = 40f; reload = 35f;
restitution = 0.03f; restitution = 0.03f;
ammoEjectBack = 3f; ammoEjectBack = 3f;
cooldown = 0.03f; cooldown = 0.03f;
@@ -216,7 +205,6 @@ public class TurretBlocks extends BlockList implements ContentList{
}}; }};
fuse = new ItemTurret("fuse"){{ fuse = new ItemTurret("fuse"){{
//TODO make it use power
ammoTypes = new AmmoType[]{AmmoTypes.fuseShotgun}; ammoTypes = new AmmoType[]{AmmoTypes.fuseShotgun};
reload = 50f; reload = 50f;
shootShake = 4f; shootShake = 4f;
@@ -21,7 +21,7 @@ public class UnitBlocks extends BlockList implements ContentList{
produceTime = 5700; produceTime = 5700;
size = 2; size = 2;
consumes.power(0.08f); consumes.power(0.08f);
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30)}); consumes.items(new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30));
}}; }};
phantomFactory = new UnitFactory("phantom-factory"){{ phantomFactory = new UnitFactory("phantom-factory"){{
@@ -29,7 +29,7 @@ public class UnitBlocks extends BlockList implements ContentList{
produceTime = 7300; produceTime = 7300;
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(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80));
}}; }};
wraithFactory = new UnitFactory("wraith-factory"){{ wraithFactory = new UnitFactory("wraith-factory"){{
@@ -37,7 +37,7 @@ public class UnitBlocks extends BlockList implements ContentList{
produceTime = 1800; produceTime = 1800;
size = 2; size = 2;
consumes.power(0.1f); consumes.power(0.1f);
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 10), new ItemStack(Items.titanium, 10)}); consumes.items(new ItemStack(Items.silicon, 10), new ItemStack(Items.titanium, 10));
}}; }};
ghoulFactory = new UnitFactory("ghoul-factory"){{ ghoulFactory = new UnitFactory("ghoul-factory"){{
@@ -46,7 +46,7 @@ public class UnitBlocks extends BlockList implements ContentList{
size = 3; size = 3;
consumes.power(0.2f); consumes.power(0.2f);
shadow = "shadow-round-3"; shadow = "shadow-round-3";
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.titanium, 30), new ItemStack(Items.plastanium, 20)}); consumes.items(new ItemStack(Items.silicon, 30), new ItemStack(Items.titanium, 30), new ItemStack(Items.plastanium, 20));
}}; }};
revenantFactory = new UnitFactory("revenant-factory"){{ revenantFactory = new UnitFactory("revenant-factory"){{
@@ -55,7 +55,7 @@ public class UnitBlocks extends BlockList implements ContentList{
size = 4; size = 4;
consumes.power(0.3f); consumes.power(0.3f);
shadow = "shadow-round-4"; shadow = "shadow-round-4";
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 80), new ItemStack(Items.titanium, 80), new ItemStack(Items.plastanium, 50)}); consumes.items(new ItemStack(Items.silicon, 80), new ItemStack(Items.titanium, 80), new ItemStack(Items.plastanium, 50));
}}; }};
daggerFactory = new UnitFactory("dagger-factory"){{ daggerFactory = new UnitFactory("dagger-factory"){{
@@ -63,7 +63,7 @@ public class UnitBlocks extends BlockList implements ContentList{
produceTime = 1700; produceTime = 1700;
size = 2; size = 2;
consumes.power(0.05f); consumes.power(0.05f);
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 10)}); consumes.items(new ItemStack(Items.silicon, 10));
}}; }};
titanFactory = new UnitFactory("titan-factory"){{ titanFactory = new UnitFactory("titan-factory"){{
@@ -72,7 +72,7 @@ public class UnitBlocks extends BlockList implements ContentList{
size = 3; size = 3;
consumes.power(0.15f); consumes.power(0.15f);
shadow = "shadow-round-3"; shadow = "shadow-round-3";
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 20), new ItemStack(Items.thorium, 30)}); consumes.items(new ItemStack(Items.silicon, 20), new ItemStack(Items.thorium, 30));
}}; }};
fortressFactory = new UnitFactory("fortress-factory"){{ fortressFactory = new UnitFactory("fortress-factory"){{
@@ -81,7 +81,7 @@ public class UnitBlocks extends BlockList implements ContentList{
size = 3; size = 3;
consumes.power(0.2f); consumes.power(0.2f);
shadow = "shadow-round-3"; shadow = "shadow-round-3";
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 40), new ItemStack(Items.thorium, 50)}); consumes.items(new ItemStack(Items.silicon, 40), new ItemStack(Items.thorium, 50));
}}; }};
repairPoint = new RepairPoint("repair-point"){{ repairPoint = new RepairPoint("repair-point"){{
@@ -304,7 +304,7 @@ public class TurretBullets extends BulletList implements ContentList{
} }
}; };
arc = new BulletType(0.001f, 30){ arc = new BulletType(0.001f, 26){
{ {
lifetime = 1; lifetime = 1;
despawneffect = Fx.none; despawneffect = Fx.none;
+1 -10
View File
@@ -89,7 +89,7 @@ public class Control extends Module{
"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", "",
"lastBuild", 0 "lastBuild", 0
); );
@@ -111,15 +111,6 @@ public class Control extends Module{
} }
state.set(State.playing); state.set(State.playing);
if(world.getSector() == null && !Settings.getBool("custom-warning-for-real-1", false)){
threads.runGraphics(() -> ui.showInfo("$mode.custom.warning", () ->
ui.showInfo("$mode.custom.warning.read", () -> {
Settings.putBool("custom-warning-for-real-1", true);
Settings.save();
})));
}
}); });
Events.on(WorldLoadGraphicsEvent.class, event -> { Events.on(WorldLoadGraphicsEvent.class, event -> {
@@ -1,6 +1,5 @@
package io.anuke.mindustry.core; package io.anuke.mindustry.core;
import io.anuke.mindustry.ai.WaveSpawner;
import io.anuke.mindustry.game.Difficulty; import io.anuke.mindustry.game.Difficulty;
import io.anuke.mindustry.game.EventType.StateChangeEvent; import io.anuke.mindustry.game.EventType.StateChangeEvent;
import io.anuke.mindustry.game.GameMode; import io.anuke.mindustry.game.GameMode;
@@ -8,16 +7,31 @@ import io.anuke.mindustry.game.Teams;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import io.anuke.ucore.core.Events; import io.anuke.ucore.core.Events;
import static io.anuke.mindustry.Vars.unitGroups;
import static io.anuke.mindustry.Vars.waveTeam;
public class GameState{ public class GameState{
/**Current wave number, can be anything in non-wave modes.*/
public int wave = 1; public int wave = 1;
/**Wave countdown in ticks.*/
public float wavetime; public float wavetime;
/**Whether the game is in game over state.*/
public boolean gameOver = false; public boolean gameOver = false;
/**The current game mode.*/
public GameMode mode = GameMode.waves; public GameMode mode = GameMode.waves;
/**The current difficulty for wave modes.*/
public Difficulty difficulty = Difficulty.normal; public Difficulty difficulty = Difficulty.normal;
public WaveSpawner spawner = new WaveSpawner(); /**Team data. Gets reset every new game.*/
public Teams teams = new Teams(); public Teams teams = new Teams();
/**Number of enemies in the game; only used clientside in servers.*/
public int enemies;
/**Current game state.*/
private State state = State.menu; private State state = State.menu;
public int enemies(){
return Net.client() ? enemies : unitGroups[waveTeam.ordinal()].size();
}
public void set(State astate){ public void set(State astate){
Events.fire(new StateChangeEvent(state, astate)); Events.fire(new StateChangeEvent(state, astate));
state = astate; state = astate;
+2 -9
View File
@@ -34,7 +34,6 @@ import static io.anuke.mindustry.Vars.*;
* This class should <i>not</i> call any outside methods to change state of modules, but instead fire events. * This class should <i>not</i> call any outside methods to change state of modules, but instead fire events.
*/ */
public class Logic extends Module{ public class Logic extends Module{
public boolean doUpdate = true;
public Logic(){ public Logic(){
Events.on(TileChangeEvent.class, event -> { Events.on(TileChangeEvent.class, event -> {
@@ -94,7 +93,7 @@ public class Logic extends Module{
} }
public void runWave(){ public void runWave(){
state.spawner.spawnEnemies(); world.spawner.spawnEnemies();
state.wave++; state.wave++;
state.wavetime = wavespace * state.difficulty.timeScaling; state.wavetime = wavespace * state.difficulty.timeScaling;
@@ -125,7 +124,7 @@ public class Logic extends Module{
} }
private void updateSectors(){ private void updateSectors(){
if(world.getSector() == null) return; if(world.getSector() == null || state.gameOver) return;
world.getSector().currentMission().update(); world.getSector().currentMission().update();
@@ -218,12 +217,6 @@ public class Logic extends Module{
if(group.isEmpty()) continue; if(group.isEmpty()) continue;
EntityQuery.collideGroups(bulletGroup, group); EntityQuery.collideGroups(bulletGroup, group);
EntityQuery.collideGroups(group, playerGroup);
for(EntityGroup other : unitGroups){
if(other.isEmpty()) continue;
EntityQuery.collideGroups(group, other);
}
} }
EntityQuery.collideGroups(bulletGroup, playerGroup); EntityQuery.collideGroups(bulletGroup, playerGroup);
@@ -15,6 +15,7 @@ import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest; import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest;
import io.anuke.mindustry.entities.traits.SyncTrait; import io.anuke.mindustry.entities.traits.SyncTrait;
import io.anuke.mindustry.entities.traits.TypeTrait; import io.anuke.mindustry.entities.traits.TypeTrait;
import io.anuke.mindustry.game.Version;
import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.gen.RemoteReadClient; import io.anuke.mindustry.gen.RemoteReadClient;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
@@ -95,6 +96,7 @@ public class NetClient extends Module{
ConnectPacket c = new ConnectPacket(); ConnectPacket c = new ConnectPacket();
c.name = player.name; c.name = player.name;
c.mobile = mobile; c.mobile = mobile;
c.versionType = Version.type;
c.color = Color.rgba8888(player.color); c.color = Color.rgba8888(player.color);
c.usid = getUsid(packet.addressTCP); c.usid = getUsid(packet.addressTCP);
c.uuid = Platform.instance.getUUID(); c.uuid = Platform.instance.getUUID();
@@ -284,6 +286,7 @@ public class NetClient extends Module{
//read wave info //read wave info
state.wavetime = input.readFloat(); state.wavetime = input.readFloat();
state.wave = input.readInt(); state.wave = input.readInt();
state.enemies = input.readInt();
byte cores = input.readByte(); byte cores = input.readByte();
for(int i = 0; i < cores; i++){ for(int i = 0; i < cores; i++){
@@ -120,7 +120,7 @@ public class NetServer extends Module{
return; return;
} }
if(packet.version == -1 && Version.build != -1 && !admins.allowsCustomClients()){ if(packet.versionType == null || ((packet.version == -1 || !packet.versionType.equals("official")) && Version.build != -1 && !admins.allowsCustomClients())){
kick(id, KickReason.customClient); kick(id, KickReason.customClient);
return; return;
} }
@@ -412,7 +412,16 @@ public class NetServer extends Module{
} }
public boolean isWaitingForPlayers(){ public boolean isWaitingForPlayers(){
return state.mode.isPvp && playerGroup.size() < 2; if(state.mode.isPvp){
int used = 0;
for(Team t : Team.all){
if(playerGroup.count(p -> p.getTeam() == t) > 0){
used ++;
}
}
return used < 2;
}
return false;
} }
public void update(){ public void update(){
@@ -468,6 +477,7 @@ public class NetServer extends Module{
//write wave datas //write wave datas
dataStream.writeFloat(state.wavetime); dataStream.writeFloat(state.wavetime);
dataStream.writeInt(state.wave); dataStream.writeInt(state.wave);
dataStream.writeInt(state.enemies());
ObjectSet<Tile> cores = state.teams.get(player.getTeam()).cores; ObjectSet<Tile> cores = state.teams.get(player.getTeam()).cores;
+36 -1
View File
@@ -1,13 +1,21 @@
package io.anuke.mindustry.core; package io.anuke.mindustry.core;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.Base64Coder; import com.badlogic.gdx.utils.Base64Coder;
import io.anuke.ucore.core.Core;
import io.anuke.ucore.core.Settings; import io.anuke.ucore.core.Settings;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.function.Consumer; import io.anuke.ucore.function.Consumer;
import io.anuke.ucore.scene.ui.Dialog;
import io.anuke.ucore.scene.ui.TextField; import io.anuke.ucore.scene.ui.TextField;
import io.anuke.ucore.util.Log;
import java.util.Random; import java.util.Random;
import static io.anuke.mindustry.Vars.mobile;
public abstract class Platform { public abstract class Platform {
/**Each separate game platform should set this instance to their own implementation.*/ /**Each separate game platform should set this instance to their own implementation.*/
public static Platform instance = new Platform() {}; public static Platform instance = new Platform() {};
@@ -17,7 +25,34 @@ public abstract class Platform {
addDialog(field, 16); addDialog(field, 16);
} }
/**See addDialog().*/ /**See addDialog().*/
public void addDialog(TextField field, int maxLength){} public void addDialog(TextField field, int maxLength){
if(!mobile) return; //this is mobile only, desktop doesn't need dialogs
field.tapped(() -> {
Log.info("yappd");
Dialog dialog = new Dialog("", "dialog");
dialog.setFillParent(true);
dialog.content().top();
dialog.content().defaults().height(65f);
TextField to = dialog.content().addField(field.getText(), t-> {}).pad(15).width(250f).get();
to.setMaxLength(maxLength);
to.keyDown(Keys.ENTER, () -> dialog.content().find("okb").fireClick());
dialog.content().addButton("$text.ok", () -> {
field.clearText();
field.appendText(to.getText());
field.change();
dialog.hide();
Gdx.input.setOnscreenKeyboardVisible(false);
}).width(90f).name("okb");
dialog.show();
Timers.runTask(1f, () -> {
to.setCursorPosition(to.getText().length());
Core.scene.setKeyboardFocus(to);
Gdx.input.setOnscreenKeyboardVisible(true);
});
});
}
/**Update discord RPC.*/ /**Update discord RPC.*/
public void updateRPC(){} public void updateRPC(){}
/**Called when the game is exited.*/ /**Called when the game is exited.*/
@@ -11,7 +11,7 @@ public class ThreadHandler{
public ThreadHandler(){ public ThreadHandler(){
Timers.setDeltaProvider(() -> { Timers.setDeltaProvider(() -> {
float result = Gdx.graphics.getDeltaTime() * 60f; float result = Gdx.graphics.getDeltaTime() * 60f;
return Math.min(Float.isNaN(result) || Float.isInfinite(result) ? 1f : result, 15f); return Float.isNaN(result) || Float.isInfinite(result) ? 1f : Math.min(result, 60f / 10f);
}); });
} }
+13
View File
@@ -28,6 +28,7 @@ import io.anuke.ucore.scene.ui.TextField.TextFieldFilter;
import io.anuke.ucore.scene.ui.TooltipManager; import io.anuke.ucore.scene.ui.TooltipManager;
import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.scene.ui.layout.Unit; import io.anuke.ucore.scene.ui.layout.Unit;
import io.anuke.ucore.util.Strings;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
import static io.anuke.ucore.scene.actions.Actions.*; import static io.anuke.ucore.scene.actions.Actions.*;
@@ -293,4 +294,16 @@ public class UI extends SceneModule{
dialog.keyDown(Keys.BACK, dialog::hide); dialog.keyDown(Keys.BACK, dialog::hide);
dialog.show(); dialog.show();
} }
public String formatAmount(int number){
if(number >= 1000000){
return Strings.toFixed(number / 1000000f, 1) + "[gray]mil[]";
}else if(number >= 10000){
return number / 1000 + "[gray]k[]";
}else if(number >= 1000){
return Strings.toFixed(number / 1000f, 1) + "[gray]k[]";
}else{
return number + "";
}
}
} }
@@ -5,6 +5,7 @@ import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.ObjectMap;
import io.anuke.mindustry.ai.BlockIndexer; import io.anuke.mindustry.ai.BlockIndexer;
import io.anuke.mindustry.ai.Pathfinder; import io.anuke.mindustry.ai.Pathfinder;
import io.anuke.mindustry.ai.WaveSpawner;
import io.anuke.mindustry.content.blocks.Blocks; import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.game.EventType.TileChangeEvent; import io.anuke.mindustry.game.EventType.TileChangeEvent;
@@ -30,6 +31,7 @@ public class World extends Module{
public final WorldGenerator generator = new WorldGenerator(); public final WorldGenerator generator = new WorldGenerator();
public final BlockIndexer indexer = new BlockIndexer(); public final BlockIndexer indexer = new BlockIndexer();
public final Pathfinder pathfinder = new Pathfinder(); public final Pathfinder pathfinder = new Pathfinder();
public final WaveSpawner spawner = new WaveSpawner();
private Map currentMap; private Map currentMap;
private Sector currentSector; private Sector currentSector;
@@ -175,7 +175,6 @@ public class MapView extends Element implements GestureListener{
public void clearStack(){ public void clearStack(){
stack.clear(); stack.clear();
//TODO clear und obuffer
} }
public OperationStack getStack(){ public OperationStack getStack(){
@@ -292,7 +291,6 @@ public class MapView extends Element implements GestureListener{
} }
} }
//todo is it really math.max?
float scaling = zoom * Math.min(width, height) / editor.getMap().width(); float scaling = zoom * Math.min(width, height) / editor.getMap().width();
Draw.color(Palette.accent); Draw.color(Palette.accent);
@@ -19,10 +19,7 @@ import io.anuke.mindustry.graphics.Trail;
import io.anuke.mindustry.io.TypeIO; import io.anuke.mindustry.io.TypeIO;
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.ContentType; import io.anuke.mindustry.type.*;
import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.type.Mech;
import io.anuke.mindustry.type.Weapon;
import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.Floor; import io.anuke.mindustry.world.blocks.Floor;
@@ -192,6 +189,11 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
this.mining = tile; this.mining = tile;
} }
@Override
public boolean canMine(Item item){
return item.hardness <= mech.drillPower;
}
@Override @Override
public float getArmor(){ public float getArmor(){
return mech.armor + mech.getExtraArmor(this); return mech.armor + mech.getExtraArmor(this);
@@ -293,7 +295,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
float x = snappedX(), y = snappedY(); float x = snappedX(), y = snappedY();
if(!movement.isZero() && moved && !state.isPaused()){ if(!movement.isZero() && moved && !state.isPaused()){
walktime += Timers.delta() * movement.len() / 0.7f * getFloorOn().speedMultiplier; walktime += movement.len() / 0.7f * getFloorOn().speedMultiplier;
baseRotation = Mathf.slerpDelta(baseRotation, movement.angle(), 0.13f); baseRotation = Mathf.slerpDelta(baseRotation, movement.angle(), 0.13f);
} }
@@ -550,8 +552,8 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
updateBuilding(this); updateBuilding(this);
x = Mathf.clamp(x, 0, world.width() * tilesize); x = Mathf.clamp(x, tilesize, world.width() * tilesize - tilesize);
y = Mathf.clamp(y, 0, world.height() * tilesize); y = Mathf.clamp(y, tilesize, world.height() * tilesize - tilesize);
} }
protected void updateMech(){ protected void updateMech(){
@@ -608,11 +610,11 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
pointerY = vec.y; pointerY = vec.y;
updateShooting(); updateShooting();
movement.limit(speed * Timers.delta()); movement.limit(speed).scl(Timers.delta());
if(getCarrier() == null){ if(getCarrier() == null){
if(!ui.chatfrag.chatOpen()){ if(!ui.chatfrag.chatOpen()){
velocity.add(movement); velocity.add(movement.x, movement.y);
} }
float prex = x, prey = y; float prex = x, prey = y;
updateVelocityStatus(); updateVelocityStatus();
@@ -233,7 +233,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
status.update(this); status.update(this);
velocity.limit(getMaxVelocity()).scl(status.getSpeedMultiplier()); velocity.limit(getMaxVelocity()).scl(1f + (status.getSpeedMultiplier()-1f) * Timers.delta());
if(isFlying()){ if(isFlying()){
x += velocity.x * Timers.delta(); x += velocity.x * Timers.delta();
@@ -58,6 +58,9 @@ public interface BuilderTrait extends Entity{
/**Build power, can be any float. 1 = builds recipes in normal time, 0 = doesn't build at all.*/ /**Build power, can be any float. 1 = builds recipes in normal time, 0 = doesn't build at all.*/
float getBuildPower(Tile tile); float getBuildPower(Tile tile);
/**Returns whether or not this builder can mine a specific item type.*/
boolean canMine(Item item);
/**Whether this type of builder can begin creating new blocks.*/ /**Whether this type of builder can begin creating new blocks.*/
default boolean canCreateBlocks(){ default boolean canCreateBlocks(){
return true; return true;
@@ -236,7 +239,8 @@ public interface BuilderTrait extends Entity{
Tile tile = getMineTile(); Tile tile = getMineTile();
TileEntity core = unit.getClosestCore(); TileEntity core = unit.getClosestCore();
if(core == null || tile.block() != Blocks.air || unit.distanceTo(tile.worldx(), tile.worldy()) > mineDistance || !unit.inventory.canAcceptItem(tile.floor().drops.item)){ if(core == null || tile.block() != Blocks.air || unit.distanceTo(tile.worldx(), tile.worldy()) > mineDistance
|| tile.floor().drops == null || !unit.inventory.canAcceptItem(tile.floor().drops.item) || !canMine(tile.floor().drops.item)){
setMineTile(null); setMineTile(null);
}else{ }else{
Item item = tile.floor().drops.item; Item item = tile.floor().drops.item;
@@ -33,10 +33,11 @@ public interface SyncTrait extends Entity, TypeTrait{
if(isClipped()){ if(isClipped()){
//move off screen when no longer in bounds //move off screen when no longer in bounds
if(!Tmp.r1.setSize( Tmp.r1.setSize(Core.camera.viewportWidth * Core.camera.zoom * NetClient.viewScale,
Core.camera.viewportWidth * Core.camera.zoom * NetClient.viewScale, Core.camera.viewportHeight * Core.camera.zoom * NetClient.viewScale)
Core.camera.viewportHeight * Core.camera.zoom * NetClient.viewScale) .setCenter(Core.camera.position.x, Core.camera.position.y);
.setCenter(Core.camera.position.x, Core.camera.position.y).contains(getX(), getY())){
if(!Tmp.r1.contains(getX(), getY()) && !Tmp.r1.contains(getInterpolator().last.x, getInterpolator().last.y)){
set(-99999f, -99999f); set(-99999f, -99999f);
return; return;
} }
@@ -238,7 +238,7 @@ public abstract class GroundUnit extends BaseUnit{
} }
protected void patrol(){ protected void patrol(){
vec.trns(baseRotation, type.speed); vec.trns(baseRotation, type.speed * Timers.delta());
velocity.add(vec.x, vec.y); velocity.add(vec.x, vec.y);
vec.trns(baseRotation, type.hitsizeTile); vec.trns(baseRotation, type.hitsizeTile);
Tile tile = world.tileWorld(x + vec.x, y + vec.y); Tile tile = world.tileWorld(x + vec.x, y + vec.y);
@@ -19,7 +19,6 @@ import io.anuke.ucore.util.Bundles;
import io.anuke.ucore.util.Log; import io.anuke.ucore.util.Log;
import io.anuke.ucore.util.Strings; import io.anuke.ucore.util.Strings;
//TODO merge unit type with mech
public class UnitType extends UnlockableContent{ public class UnitType extends UnlockableContent{
protected final Supplier<? extends BaseUnit> constructor; protected final Supplier<? extends BaseUnit> constructor;
@@ -279,6 +279,11 @@ public class Drone extends FlyingUnit implements BuilderTrait{
//no //no
} }
@Override
public boolean canMine(Item item){
return type.toMine.contains(item);
}
@Override @Override
public float getBuildPower(Tile tile){ public float getBuildPower(Tile tile){
return type.buildPower; return type.buildPower;
@@ -1,51 +0,0 @@
package io.anuke.mindustry.game;
import com.badlogic.gdx.utils.ObjectMap;
import com.badlogic.gdx.utils.ObjectSet;
import io.anuke.mindustry.game.EventType.UnlockEvent;
import io.anuke.mindustry.type.ContentType;
import io.anuke.ucore.core.Events;
public class ContentUnlockSet {
private ObjectMap<ContentType, ObjectSet<String>> unlocked = new ObjectMap<>();
private boolean dirty;
public boolean isUnlocked(UnlockableContent content){
if(content.alwaysUnlocked()) return true;
if(!unlocked.containsKey(content.getContentType())){
unlocked.put(content.getContentType(), new ObjectSet<>());
}
ObjectSet<String> set = unlocked.get(content.getContentType());
return set.contains(content.getContentName());
}
public boolean unlockContent(UnlockableContent content){
if(!content.canBeUnlocked() || content.alwaysUnlocked()) return false;
if(!unlocked.containsKey(content.getContentType())){
unlocked.put(content.getContentType(), new ObjectSet<>());
}
boolean ret = unlocked.get(content.getContentType()).add(content.getContentName());
//fire unlock event so other classes can use it
if(ret){
content.onUnlock();
Events.fire(new UnlockEvent(content));
dirty = true;
}
return ret;
}
public boolean isDirty() {
return dirty;
}
public ObjectMap<ContentType, ObjectSet<String>> getUnlocked() {
return unlocked;
}
}
+45 -56
View File
@@ -4,16 +4,15 @@ import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.ObjectMap;
import com.badlogic.gdx.utils.ObjectMap.Entry; import com.badlogic.gdx.utils.ObjectMap.Entry;
import com.badlogic.gdx.utils.ObjectSet; import com.badlogic.gdx.utils.ObjectSet;
import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.game.EventType.UnlockEvent;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.type.ContentType; import io.anuke.mindustry.type.ContentType;
import io.anuke.ucore.core.Events;
import io.anuke.ucore.core.Settings; import io.anuke.ucore.core.Settings;
import static io.anuke.mindustry.Vars.*;
/**Stores player unlocks. Clientside only.*/ /**Stores player unlocks. Clientside only.*/
public class Unlocks{ public class Unlocks{
private ObjectMap<String, ContentUnlockSet> sets = new ObjectMap<>(); private ObjectMap<ContentType, ObjectSet<String>> unlocked = new ObjectMap<>();
private boolean dirty;
static{ static{
Settings.setSerializer(ContentType.class, (stream, t) -> stream.writeInt(t.ordinal()), stream -> ContentType.values()[stream.readInt()]); Settings.setSerializer(ContentType.class, (stream, t) -> stream.writeInt(t.ordinal()), stream -> ContentType.values()[stream.readInt()]);
@@ -21,7 +20,15 @@ public class Unlocks{
/** Returns whether or not this piece of content is unlocked yet.*/ /** Returns whether or not this piece of content is unlocked yet.*/
public boolean isUnlocked(UnlockableContent content){ public boolean isUnlocked(UnlockableContent content){
return rootSet().isUnlocked(content) || currentSet().isUnlocked(content); if(content.alwaysUnlocked()) return true;
if(!unlocked.containsKey(content.getContentType())){
unlocked.put(content.getContentType(), new ObjectSet<>());
}
ObjectSet<String> set = unlocked.get(content.getContentType());
return set.contains(content.getContentName());
} }
/** /**
@@ -32,77 +39,59 @@ public class Unlocks{
* @return whether or not this content was newly unlocked. * @return whether or not this content was newly unlocked.
*/ */
public boolean unlockContent(UnlockableContent content){ public boolean unlockContent(UnlockableContent content){
return !rootSet().isUnlocked(content) && currentSet().unlockContent(content); if(!content.canBeUnlocked() || content.alwaysUnlocked()) return false;
}
private ContentUnlockSet currentSet(){ if(!unlocked.containsKey(content.getContentType())){
//client connected to server: always return the IP-specific set unlocked.put(content.getContentType(), new ObjectSet<>());
if(Net.client()){
return getSet(Net.getLastIP());
}else if((world.getSector() != null || state.mode.infiniteResources) || state.is(State.menu)){ //sector-sandbox have shared set
return rootSet();
}else{ //per-mode set
return getSet(state.mode.name());
} }
}
private ContentUnlockSet rootSet(){ boolean ret = unlocked.get(content.getContentType()).add(content.getContentName());
return getSet("root");
}
private ContentUnlockSet getSet(String name){ //fire unlock event so other classes can use it
if(!sets.containsKey(name)){ if(ret){
sets.put(name, new ContentUnlockSet()); content.onUnlock();
Events.fire(new UnlockEvent(content));
dirty = true;
} }
return sets.get(name);
return ret;
} }
/** Returns whether unlockables have changed since the last save.*/ /** Returns whether unlockables have changed since the last save.*/
public boolean isDirty(){ public boolean isDirty(){
for(ContentUnlockSet set : sets.values()){ return dirty;
if(set.isDirty()){
return true;
}
}
return false;
} }
/** Clears all unlocked content. Automatically saves.*/ /** Clears all unlocked content. Automatically saves.*/
public void reset(){ public void reset(){
sets.clear();
save(); save();
} }
public void load(){ /**Loads 'legacy' unlocks. Will be removed in final release.*/
sets.clear(); public void tryLoadLegacy(){
try{
ObjectMap<String, ObjectMap<ContentType, Array<String>>> result = Settings.getObject("content-sets", ObjectMap.class, ObjectMap::new); ObjectMap<String, ObjectMap<ContentType, Array<String>>> sets = Settings.getObject("content-sets", ObjectMap.class, ObjectMap::new);
for(Entry<ContentType, Array<String>> entry : sets.get("root").entries()){
for(Entry<String, ObjectMap<ContentType, Array<String>>> outer : result.entries()){ unlocked.put(entry.key, new ObjectSet<>());
ContentUnlockSet cset = new ContentUnlockSet(); unlocked.get(entry.key).addAll(entry.value);
for (Entry<ContentType, Array<String>> entry : outer.value.entries()){
ObjectSet<String> set = new ObjectSet<>();
set.addAll(entry.value);
cset.getUnlocked().put(entry.key, set);
} }
sets.put(outer.key, cset); }catch(Throwable t){
t.printStackTrace();
}
Settings.prefs().remove("content-sets");
Settings.save();
}
public void load(){
unlocked = Settings.getObject("unlockset", ObjectMap.class, ObjectMap::new);
if(Settings.has("content-sets")){
tryLoadLegacy();
} }
} }
public void save(){ public void save(){
ObjectMap<String, ObjectMap<ContentType, Array<String>>> output = new ObjectMap<>(); Settings.putObject("unlockset", unlocked);
for(Entry<String, ContentUnlockSet> centry : sets.entries()){
ObjectMap<ContentType, Array<String>> write = new ObjectMap<>();
for(Entry<ContentType, ObjectSet<String>> entry : centry.value.getUnlocked().entries()){
write.put(entry.key, entry.value.iterator().toArray());
}
output.put(centry.key, write);
}
Settings.putObject("content-sets", output);
Settings.save(); Settings.save();
} }
@@ -11,10 +11,10 @@ import java.io.IOException;
public class Version{ public class Version{
/**Build type. 'official' for official releases; 'custom' or 'bleeding edge' are also used.*/ /**Build type. 'official' for official releases; 'custom' or 'bleeding edge' are also used.*/
public static String type; public static String type;
/**Number specifying the major version, e.g. '4.0'*/
public static String number;
/**Build modifier, e.g. 'alpha' or 'release'*/ /**Build modifier, e.g. 'alpha' or 'release'*/
public static String modifier; public static String modifier;
/**Number specifying the major version, e.g. '4'*/
public static int number;
/**Build number, e.g. '43'. set to '-1' for custom builds.*/ /**Build number, e.g. '43'. set to '-1' for custom builds.*/
public static int build = 0; public static int build = 0;
@@ -26,7 +26,7 @@ public class Version{
PropertiesUtils.load(map, file.reader()); PropertiesUtils.load(map, file.reader());
type = map.get("type"); type = map.get("type");
number = map.get("number"); number = Integer.parseInt(map.get("number"));
modifier = map.get("modifier"); modifier = map.get("modifier");
build = Strings.canParseInt(map.get("build")) ? Integer.parseInt(map.get("build")) : -1; build = Strings.canParseInt(map.get("build")) ? Integer.parseInt(map.get("build")) : -1;
}catch(IOException e){ }catch(IOException e){
@@ -21,7 +21,7 @@ import static io.anuke.ucore.core.Core.camera;
public class BlockRenderer{ public class BlockRenderer{
private final static int initialRequests = 32 * 32; private final static int initialRequests = 32 * 32;
private final static int expandr = 4; private final static int expandr = 6;
private FloorRenderer floorRenderer; private FloorRenderer floorRenderer;
@@ -80,7 +80,7 @@ public class MinimapRenderer implements Disposable{
for(Unit unit : units){ for(Unit unit : units){
float rx = (unit.x - rect.x) / rect.width * w, ry = (unit.y - rect.y) / rect.width * h; float rx = (unit.x - rect.x) / rect.width * w, ry = (unit.y - rect.y) / rect.width * h;
Draw.color(unit.getTeam().color); Draw.color(unit.getTeam().color);
Draw.rect("white", x + rx, y + ry, w / (sz * 2), h / (sz * 2)); Draw.crect(Draw.getBlankRegion(), x + rx, y + ry, w / (sz * 2), h / (sz * 2));
} }
Draw.color(); Draw.color();
@@ -29,6 +29,7 @@ public class Palette{
lightishGray = Color.valueOf("a2a2a2"), lightishGray = Color.valueOf("a2a2a2"),
darkishGray = new Color(0.3f, 0.3f, 0.3f, 1f), darkishGray = new Color(0.3f, 0.3f, 0.3f, 1f),
darkerGray = new Color(0.2f, 0.2f, 0.2f, 1f),
boostTo = Color.valueOf("ffad4d"), boostTo = Color.valueOf("ffad4d"),
boostFrom = Color.valueOf("ff7f57"), boostFrom = Color.valueOf("ff7f57"),
@@ -25,7 +25,7 @@ import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Graphics;
import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Inputs;
import io.anuke.ucore.core.Timers; import io.anuke.ucore.core.Timers;
import io.anuke.ucore.scene.Group; import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.util.Angles; import io.anuke.ucore.util.Angles;
import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Mathf;
import io.anuke.ucore.util.Translator; import io.anuke.ucore.util.Translator;
@@ -145,7 +145,7 @@ public abstract class InputHandler extends InputAdapter{
return false; return false;
} }
public void buildUI(Group group){ public void buildUI(Table table){
} }
@@ -193,7 +193,7 @@ public abstract class InputHandler extends InputAdapter{
} }
//call tapped event //call tapped event
if(tile.getTeam() == player.getTeam()){ if(!consumed && tile.getTeam() == player.getTeam()){
Call.onTileTapped(player, tile); Call.onTileTapped(player, tile);
} }
@@ -30,8 +30,7 @@ import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.*; import io.anuke.ucore.core.*;
import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Lines; import io.anuke.ucore.graphics.Lines;
import io.anuke.ucore.scene.Group; import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.scene.event.Touchable;
import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Mathf;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
@@ -208,78 +207,53 @@ public class MobileInput extends InputHandler implements GestureListener{
//region UI and drawing //region UI and drawing
@Override @Override
public void buildUI(Group group){ public void buildUI(Table table){
table.addImage("blank").color(Palette.accent).height(3f).colspan(4).growX();
table.row();
table.left().margin(0f).defaults().size(48f);
//Create confirm/cancel table table.addImageButton("icon-break", "clear-toggle-partial", 16 * 2f, () -> {
group.fill(c -> { mode = mode == breaking ? recipe == null ? none : placing : breaking;
c.bottom().left().visible(() -> !state.is(State.menu)); lastRecipe = recipe;
if(mode == breaking){
showGuide("deconstruction");
}
}).update(l -> l.setChecked(mode == breaking));
c.table("pane", act -> { //rotate button
act.margin(5); table.addImageButton("icon-arrow", "clear-partial", 16 * 2f, () -> rotation = Mathf.mod(rotation + 1, 4))
act.defaults().size(60f); .update(i -> i.getImage().setRotationOrigin(rotation * 90, Align.center))
.visible(() -> recipe != null && recipe.result.rotate);
//Add a cancel button //cancel button
act.addImageButton("icon-cancel", 16*2f, () -> { table.addImageButton("icon-cancel", "clear-partial", 16 * 2f, () -> {
mode = none; player.clearBuilding();
recipe = null; mode = none;
}); recipe = null;
}).visible(() -> player.isBuilding() || recipe != null);
act.row(); //confirm button
table.addImageButton("icon-check", "clear-partial", 16 * 2f, () -> {
for(PlaceRequest request : selection){
Tile tile = request.tile();
//Add an accept button, which places everything. //actually place/break all selected blocks
act.addImageButton("icon-check", 16 * 2f, () -> { if(tile != null){
for(PlaceRequest request : selection){ if(!request.remove){
Tile tile = request.tile(); rotation = request.rotation;
recipe = request.recipe;
//actually place/break all selected blocks tryPlaceBlock(tile.x, tile.y);
if(tile != null){ }else{
if(!request.remove){ tryBreakBlock(tile.x, tile.y);
rotation = request.rotation;
recipe = request.recipe;
tryPlaceBlock(tile.x, tile.y);
}else{
tryBreakBlock(tile.x, tile.y);
}
}
} }
}
}
//move all current requests to removal array so they fade out //move all current requests to removal array so they fade out
removals.addAll(selection); removals.addAll(selection);
selection.clear(); selection.clear();
selecting = false; selecting = false;
}).disabled(i -> selection.size == 0); }).visible(() -> !selection.isEmpty());
act.row();
//Add a rotate button
act.addImageButton("icon-arrow", 16 * 2f, () -> rotation = Mathf.mod(rotation + 1, 4))
.update(i -> i.getImage().setRotationOrigin(rotation * 90, Align.center))
.disabled(i -> recipe == null || !recipe.result.rotate);
}).visible(() -> mode != none).touchable(Touchable.enabled);
c.row();
c.table("pane", remove -> {
remove.defaults().size(60f);
//Add a break button.
remove.addImageButton("icon-break", "toggle", 16 * 2f, () -> {
mode = mode == breaking ? recipe == null ? none : placing : breaking;
lastRecipe = recipe;
if(mode == breaking){
showGuide("deconstruction");
}
}).update(l -> l.setChecked(mode == breaking));
}).margin(5).touchable(Touchable.enabled);
c.table("pane", cancel -> {
cancel.defaults().size(60f);
//Add a 'cancel building' button.
cancel.addImageButton("icon-cancel", 16 * 2f, player::clearBuilding);
}).left().colspan(2).margin(5).touchable(Touchable.enabled).visible(() -> player.getPlaceQueue().size > 0);
});
} }
@Override @Override
@@ -554,7 +528,7 @@ public class MobileInput extends InputHandler implements GestureListener{
//ignore off-screen taps //ignore off-screen taps
if(cursor == null || ui.hasMouse(x, y)) return false; if(cursor == null || ui.hasMouse(x, y)) return false;
threads.run(() -> checkTargets(worldx, worldy)); checkTargets(worldx, worldy);
//remove if request present //remove if request present
if(hasRequest(cursor)){ if(hasRequest(cursor)){
@@ -574,14 +548,13 @@ public class MobileInput extends InputHandler implements GestureListener{
consumed = true; consumed = true;
player.dropCarry(); //drop off unit player.dropCarry(); //drop off unit
}else{ }else{
threads.run(() -> { Unit unit = Units.getClosest(player.getTeam(), Graphics.world(x, y).x, Graphics.world(x, y).y, 4f, u -> !u.isFlying() && u.getMass() <= player.mech.carryWeight);
Unit unit = Units.getClosest(player.getTeam(), Graphics.world(x, y).x, Graphics.world(x, y).y, 4f, u -> !u.isFlying() && u.getMass() <= player.mech.carryWeight);
if(unit != null){ if(unit != null){
player.moveTarget = unit; consumed = true;
Effects.effect(Fx.select, unit.getX(), unit.getY()); player.moveTarget = unit;
} Effects.effect(Fx.select, unit.getX(), unit.getY());
}); }
} }
} }
@@ -0,0 +1,43 @@
package io.anuke.mindustry.io;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.JsonReader;
import com.badlogic.gdx.utils.JsonValue;
import io.anuke.mindustry.net.Net;
import io.anuke.ucore.function.Consumer;
import static io.anuke.mindustry.Vars.contributorsURL;
public class Contributors{
public static void getContributors(Consumer<Array<Contributor>> success, Consumer<Throwable> fail){
Net.http(contributorsURL, "GET", result -> {
JsonReader reader = new JsonReader();
JsonValue value = reader.parse(result).child;
Array<Contributor> out = new Array<>();
while(value != null){
String login = value.getString("login");
out.add(new Contributor(login));
value = value.next;
}
success.accept(out);
}, fail);
}
public static class Contributor{
public final String login;
public Contributor(String login){
this.login = login;
}
@Override
public String toString(){
return "Contributor{" +
"login='" + login + '\'' +
'}';
}
}
}
+10 -31
View File
@@ -27,7 +27,6 @@ import java.io.DataInput;
import java.io.DataOutput; import java.io.DataOutput;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
@@ -332,31 +331,21 @@ public class TypeIO{
@WriteClass(String.class) @WriteClass(String.class)
public static void writeString(ByteBuffer buffer, String string){ public static void writeString(ByteBuffer buffer, String string){
if(string != null){ if(string != null){
Charset charset = Charset.defaultCharset(); byte[] bytes = string.getBytes(StandardCharsets.UTF_8);
byte[] nameBytes = charset.name().getBytes(StandardCharsets.UTF_8);
buffer.put((byte)nameBytes.length);
buffer.put(nameBytes);
byte[] bytes = string.getBytes(charset);
buffer.putShort((short) bytes.length); buffer.putShort((short) bytes.length);
buffer.put(bytes); buffer.put(bytes);
}else{ }else{
buffer.put((byte) -1); buffer.putShort((short) -1);
} }
} }
@ReadClass(String.class) @ReadClass(String.class)
public static String readString(ByteBuffer buffer){ public static String readString(ByteBuffer buffer){
byte length = buffer.get(); short slength = buffer.getShort();
if(length != -1){ if(slength != -1){
byte[] cbytes = new byte[length];
buffer.get(cbytes);
Charset charset = Charset.forName(new String(cbytes, StandardCharsets.UTF_8));
short slength = buffer.getShort();
byte[] bytes = new byte[slength]; byte[] bytes = new byte[slength];
buffer.get(bytes); buffer.get(bytes);
return new String(bytes, charset); return new String(bytes, StandardCharsets.UTF_8);
}else{ }else{
return null; return null;
} }
@@ -378,30 +367,20 @@ public class TypeIO{
public static void writeStringData(DataOutput buffer, String string) throws IOException{ public static void writeStringData(DataOutput buffer, String string) throws IOException{
if(string != null){ if(string != null){
Charset charset = Charset.defaultCharset(); byte[] bytes = string.getBytes(StandardCharsets.UTF_8);
byte[] nameBytes = charset.name().getBytes(StandardCharsets.UTF_8);
buffer.writeByte((byte)nameBytes.length);
buffer.write(nameBytes);
byte[] bytes = string.getBytes(charset);
buffer.writeShort((short) bytes.length); buffer.writeShort((short) bytes.length);
buffer.write(bytes); buffer.write(bytes);
}else{ }else{
buffer.writeByte((byte) -1); buffer.writeShort((short) -1);
} }
} }
public static String readStringData(DataInput buffer) throws IOException{ public static String readStringData(DataInput buffer) throws IOException{
byte length = buffer.readByte(); short slength = buffer.readShort();
if(length != -1){ if(slength != -1){
byte[] cbytes = new byte[length];
buffer.readFully(cbytes);
Charset charset = Charset.forName(new String(cbytes, StandardCharsets.UTF_8));
short slength = buffer.readShort();
byte[] bytes = new byte[slength]; byte[] bytes = new byte[slength];
buffer.readFully(bytes); buffer.readFully(bytes);
return new String(bytes, charset); return new String(bytes, StandardCharsets.UTF_8);
}else{ }else{
return null; return null;
} }
@@ -45,7 +45,7 @@ public class Save16 extends SaveFileVersion{
content.setTemporaryMapper(readContentHeader(stream)); content.setTemporaryMapper(readContentHeader(stream));
state.spawner.read(stream); world.spawner.read(stream);
readEntities(stream); readEntities(stream);
@@ -71,7 +71,7 @@ public class Save16 extends SaveFileVersion{
writeContentHeader(stream); writeContentHeader(stream);
state.spawner.write(stream); //spawnes world.spawner.write(stream); //spawnes
//--ENTITIES-- //--ENTITIES--
@@ -32,4 +32,13 @@ public class Map{
public String getDisplayName(){ public String getDisplayName(){
return meta.tags.get("name", name); return meta.tags.get("name", name);
} }
@Override
public String toString(){
return "Map{" +
"name='" + name + '\'' +
", custom=" + custom +
", meta=" + meta +
'}';
}
} }
@@ -37,4 +37,13 @@ public class MapMeta{
public boolean hasOreGen(){ public boolean hasOreGen(){
return !tags.get("oregen", "0").equals("0"); return !tags.get("oregen", "0").equals("0");
} }
@Override
public String toString(){
return "MapMeta{" +
"tags=" + tags +
", width=" + width +
", height=" + height +
'}';
}
} }
@@ -30,7 +30,7 @@ public class TutorialSector{
new ItemMission(Items.copper, 100).setMessage("$tutorial.morecopper"), new ItemMission(Items.copper, 100).setMessage("$tutorial.morecopper"),
new BlockMission(TurretBlocks.duo).setMessage("$tutorial.turret"), new BlockMission(TurretBlocks.duo).setMessage("$tutorial.turret"),
//TODO fill turret with items mission /
//new BlockMission(ProductionBlocks.mechanicalDrill).setMessage("$tutorial.drillturret"), //new BlockMission(ProductionBlocks.mechanicalDrill).setMessage("$tutorial.drillturret"),
// Create a wave mission which spawns the core at 60, 60 rather than in the center of the map // Create a wave mission which spawns the core at 60, 60 rather than in the center of the map
@@ -30,7 +30,6 @@ public class Generation{
return tiles[x][y]; return tiles[x][y];
} }
//TODO implement
Item drillItem(int x, int y, Drill block){ Item drillItem(int x, int y, Drill block){
if(block.isMultiblock()){ if(block.isMultiblock()){
Item result = null; Item result = null;
@@ -1,77 +0,0 @@
package io.anuke.mindustry.maps.generation.pathfinding;
import com.badlogic.gdx.math.GridPoint2;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Queue;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.function.Predicate;
import io.anuke.ucore.util.Geometry;
public class FlowPathFinder extends TilePathfinder{
protected float[][] weights;
public FlowPathFinder(Tile[][] tiles){
super(tiles);
this.weights = new float[tiles.length][tiles[0].length];
}
@Override
public void search(Tile start, Tile end, Array<Tile> out){
}
public void search(Tile start, Predicate<Tile> result, Array<Tile> out){
Queue<Tile> queue = new Queue<>();
for(int i = 0; i < weights.length; i++){
for(int j = 0; j < weights[0].length; j++){
if(result.test(tiles[i][j])){
weights[i][j] = 100000;
queue.addLast(tiles[i][j]);
}else{
weights[i][j] = 0f;
}
}
}
while(queue.size > 0){
Tile tile = queue.first();
for(GridPoint2 point : Geometry.d4){
int nx = tile.x + point.x, ny = tile.y + point.y;
if(inBounds(nx, ny) && weights[nx][ny] < weights[tile.x][tile.y] - 1f && tiles[nx][ny].passable()){
weights[nx][ny] = weights[tile.x][tile.y] - 1;
queue.addLast(tiles[nx][ny]);
if(result.test(tiles[nx][ny])){
break;
}
}
}
}
out.add(start);
while(true){
Tile tile = out.peek();
Tile max = null;
float maxf = weights[tile.x][tile.y];
for(GridPoint2 point : Geometry.d4){
int nx = tile.x + point.x, ny = tile.y + point.y;
if(inBounds(nx, ny) && (weights[nx][ny] > maxf)){
max = tiles[nx][ny];
maxf = weights[nx][ny];
if(MathUtils.isEqual(maxf, 100000)){
out.add(max);
return;
}
}
}
if(max == null){
break;
}
out.add(max);
}
}
}
@@ -1,19 +0,0 @@
package io.anuke.mindustry.maps.generation.pathfinding;
import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.util.Structs;
public abstract class TilePathfinder{
protected Tile[][] tiles;
public TilePathfinder(Tile[][] tiles){
this.tiles = tiles;
}
protected boolean inBounds(int x, int y){
return Structs.inBounds(x, y, tiles);
}
public abstract void search(Tile start, Tile end, Array<Tile> out);
}
@@ -1,14 +1,12 @@
package io.anuke.mindustry.maps.missions; package io.anuke.mindustry.maps.missions;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.game.GameMode; import io.anuke.mindustry.game.GameMode;
import io.anuke.mindustry.game.SpawnGroup; import io.anuke.mindustry.game.SpawnGroup;
import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.game.Waves; import io.anuke.mindustry.game.Waves;
import io.anuke.mindustry.maps.Sector; import io.anuke.mindustry.maps.Sector;
import io.anuke.mindustry.maps.generation.Generation; import io.anuke.mindustry.maps.generation.Generation;
import io.anuke.mindustry.net.Net;
import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Bundles;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
@@ -62,9 +60,9 @@ public class WaveMission extends MissionWithStartingCore{
public String displayString(){ public String displayString(){
return state.wave > target ? return state.wave > target ?
Bundles.format( Bundles.format(
Vars.unitGroups[Vars.waveTeam.ordinal()].size() > 1 && !Net.client() ? state.enemies() > 1 ?
"text.mission.wave.enemies" : "text.mission.wave.enemies" :
"text.mission.wave.enemy", target, target, Vars.unitGroups[Vars.waveTeam.ordinal()].size()) : "text.mission.wave.enemy", target, target, state.enemies()) :
Bundles.format("text.mission.wave", state.wave, target, (int)(state.wavetime/60)); Bundles.format("text.mission.wave", state.wave, target, (int)(state.wavetime/60));
} }
@@ -82,6 +80,6 @@ public class WaveMission extends MissionWithStartingCore{
@Override @Override
public boolean isComplete(){ public boolean isComplete(){
return state.wave > target && Vars.unitGroups[Vars.waveTeam.ordinal()].size() == 0; return state.wave > target && state.enemies() == 0;
} }
} }
+1 -1
View File
@@ -66,7 +66,7 @@ public class Net{
}else if(error.contains("connection refused") || error.contains("route to host") || type.contains("unknownhost")){ }else if(error.contains("connection refused") || error.contains("route to host") || type.contains("unknownhost")){
error = Bundles.get("text.error.unreachable"); error = Bundles.get("text.error.unreachable");
}else if(type.contains("timeout")){ }else if(type.contains("timeout")){
error = Bundles.get("text.error.timeout"); error = Bundles.get("text.error.timedout");
}else if(error.equals("alreadyconnected")){ }else if(error.equals("alreadyconnected")){
error = Bundles.get("text.error.alreadyconnected"); error = Bundles.get("text.error.alreadyconnected");
}else if(!error.isEmpty()){ }else if(!error.isEmpty()){
+8 -5
View File
@@ -2,7 +2,7 @@ package io.anuke.mindustry.net;
import com.badlogic.gdx.utils.Base64Coder; import com.badlogic.gdx.utils.Base64Coder;
import io.anuke.mindustry.game.Version; import io.anuke.mindustry.game.Version;
import io.anuke.ucore.io.IOUtils; import io.anuke.mindustry.io.TypeIO;
import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Bundles;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
@@ -65,6 +65,7 @@ public class Packets{
public static class ConnectPacket implements Packet{ public static class ConnectPacket implements Packet{
public int version; public int version;
public String versionType;
public String name, uuid, usid; public String name, uuid, usid;
public boolean mobile; public boolean mobile;
public int color; public int color;
@@ -72,8 +73,9 @@ public class Packets{
@Override @Override
public void write(ByteBuffer buffer){ public void write(ByteBuffer buffer){
buffer.putInt(Version.build); buffer.putInt(Version.build);
IOUtils.writeString(buffer, name); TypeIO.writeString(buffer, versionType);
IOUtils.writeString(buffer, usid); TypeIO.writeString(buffer, name);
TypeIO.writeString(buffer, usid);
buffer.put(mobile ? (byte) 1 : 0); buffer.put(mobile ? (byte) 1 : 0);
buffer.putInt(color); buffer.putInt(color);
buffer.put(Base64Coder.decode(uuid)); buffer.put(Base64Coder.decode(uuid));
@@ -82,8 +84,9 @@ public class Packets{
@Override @Override
public void read(ByteBuffer buffer){ public void read(ByteBuffer buffer){
version = buffer.getInt(); version = buffer.getInt();
name = IOUtils.readString(buffer); versionType = TypeIO.readString(buffer);
usid = IOUtils.readString(buffer); name = TypeIO.readString(buffer);
usid = TypeIO.readString(buffer);
mobile = buffer.get() == 1; mobile = buffer.get() == 1;
color = buffer.getInt(); color = buffer.getInt();
byte[] idbytes = new byte[8]; byte[] idbytes = new byte[8];
@@ -1,8 +1,6 @@
package io.anuke.mindustry.type; package io.anuke.mindustry.type;
/** /**Used to store ammo amounts in turrets.*/
* Used to store ammo amounts in units and turrets.
*/
public class AmmoEntry{ public class AmmoEntry{
public AmmoType type; public AmmoType type;
public int amount; public int amount;

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