Compare commits

...
102 Commits
Author SHA1 Message Date
Anuken 3bf7031e6a Fixed cryofluid mixer 2019-04-05 20:48:13 -04:00
Anuken 503fc980f4 Bugfixes 2019-04-05 14:10:01 -04:00
Anuken efed11eb97 stuff 2019-04-05 09:26:31 -04:00
Anuken 330820062f Fixed multiblock exploit 2019-04-04 23:53:51 -04:00
Anuken 45d157fe3f Minimap fixes 2019-04-04 23:34:09 -04:00
Anuken 812dea385c more bugfixes 2019-04-04 22:05:12 -04:00
키에르 c582bdea46 Update bundle_ko.properties (#439)
* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* match orignal bundle

* Update bundle_ko.properties

* Update bundle_ko.properties
2019-04-04 19:59:09 -06:00
laohuaji233 e6c6a9381b Update bundle_zh_CN.properties (#440)
* Update bundle_zh_CN.properties

More translations and fixed some wrong words

* Update bundle_zh_CN.properties
2019-04-04 19:58:05 -06:00
VXF 4b4c0755c6 Update bundle_zh_CN.properties (#441) 2019-04-04 19:53:34 -06:00
Prosta4okua aeb0539c91 Russian bundle (#443)
* Go build communism

* Update bundle_ru.properties

Last commit: minimap

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties
2019-04-04 19:53:02 -06:00
Prosta4okua 9feafa45f5 Ukrainian bundle (#444)
* No. Routernism is better.

Last commit: bugfixes

* Update bundle_uk_UA.properties

Last commit: minimap

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties
2019-04-04 19:52:09 -06:00
Math2128 927df391f3 Update bundle_fr.properties (#447)
* Update bundle_fr.properties

Haven't done much. If I have more time, I will work on it. If anyone else wants to contribute, make sure not to do the same as me ! :p

* Update bundle_fr.properties

* Update bundle_fr.properties

* Update bundle_fr.properties

Add a bit more. If anyone knows where to find all the filters in the game, please tell me. It'll help me get the word in context

* Update bundle_fr.properties

* Update bundle_fr.properties

* Update bundle_fr.properties

* Update bundle_fr.properties

* Update bundle_fr.properties
2019-04-04 19:50:59 -06:00
Anuken cbef6adeb1 Crafter bugfixes 2019-04-04 21:49:45 -04:00
Anuken 2dee221861 Crash fix 2019-04-04 20:39:04 -04:00
Anuken 0b175cb25d Fixed release script using wrong folder 2019-04-04 19:36:15 -04:00
Anuken 0820338b55 Moved FPS counter once more / Pulverizer sprite fix 2019-04-04 19:31:17 -04:00
Anuken a2b46eee6f Improved pixel zoom / Possible player duplicate glitch 2019-04-04 18:58:48 -04:00
Anuken 09a435320a Impact reactor display bugfix 2019-04-04 15:14:45 -04:00
Anuken bf56200c06 Power amount message for buffered blocks 2019-04-04 15:06:27 -04:00
Anuken 2d18df2011 Multiplayer bugfixes / Balancing 2019-04-04 14:46:41 -04:00
Anuken bab87c0da8 Default spawn limit bumped to 4 2019-04-04 00:05:59 -04:00
Anuken 148f272500 New rule modifiers 2019-04-04 00:03:19 -04:00
Anuken 6de4af727b JSON read/write generation 2019-04-03 22:24:14 -04:00
Anuken 75946b9d14 Explosion propagation 2019-04-03 09:39:11 -04:00
Anuken 1c63ee6743 Clean pixel zoom 2019-04-02 23:30:40 -04:00
Anuken efdaf0d986 Balancing, tweaks and bugfixes 2019-04-02 22:43:20 -04:00
Anuken 3f6aeac33d Cleanup of new graphical options 2019-04-02 17:18:55 -04:00
Anuken d9692004cc Shield optimization 2019-04-02 17:08:22 -04:00
Anuken 67a12eecad Bugfixes 2019-04-02 15:52:44 -04:00
Anuken 37999e0870 Risky building changes 2019-04-02 14:26:23 -04:00
Anuken 66dc1e94f5 Slight entity optimizations / Turret sprite fixes 2019-04-02 13:58:44 -04:00
Anuken ebcce194a0 Turret coolant use balancing 2019-04-02 11:26:02 -04:00
Anuken 95eab94c80 Fixed liquid blocks not accepting liquids 2019-04-02 10:51:52 -04:00
Anuken 41a6dbe06c Basic minimap 2019-04-01 21:16:22 -04:00
Anuken fa22b0ec12 Removed dead donations code 2019-04-01 18:51:49 -04:00
Anuken be60a367e8 Removed donations library and Android support libraries 2019-04-01 18:46:11 -04:00
Anuken 608de34205 Updated bundles 2019-04-01 13:32:49 -04:00
Anuken 0a8f2edb05 Block update unit tests 2019-04-01 11:57:43 -04:00
Anuken 41b08f38c5 Fixed tests 2019-04-01 11:34:10 -04:00
Anuken a83c0b2e9a "fixes" 2019-03-31 22:27:11 -04:00
Anuken 8f853c8f18 Back button cleanup 2019-03-31 18:26:52 -04:00
Anuken b4071f6dcb Merge 2019-03-31 18:24:25 -04:00
Anuken 6b70418861 Cleanup 2019-03-31 18:20:38 -04:00
Anuken de0235ad94 Sweeping rework 2019-03-31 17:49:15 -04:00
Anuken c278c632b3 Back button quitting 2019-03-31 13:16:43 -04:00
Anuken 6392330e70 Optimizations / Very broken changes 2019-03-31 13:11:12 -04:00
Anuken 160ae4e244 Fixed startup crashing 2019-03-31 10:37:52 -04:00
Anuken a6c9bd3182 Class cleanup 2019-03-30 23:23:57 -04:00
Anuken 801eadd8a8 Bugfixes 2019-03-30 19:10:06 -04:00
Anuken 211dab1297 Compilation cleanup 2019-03-30 18:48:54 -04:00
Anuken 0c3b39ffdc Merge branches 'avoidance-optimization' and 'master' of https://github.com/Anuken/Mindustry 2019-03-30 13:52:46 -04:00
Anuken c31f88a318 Fixes 2019-03-30 13:01:55 -04:00
Anuken e9eb981782 More optimization / Flying avoidance 2019-03-30 12:54:29 -04:00
Anuken 83bde8a781 Improved avoidance 2019-03-30 12:33:01 -04:00
Anuken 52f352bf94 Fixed nondeterministic drill item sorting 2019-03-30 10:16:48 -04:00
Anuken b419a96d69 Mech balance / Re-added map screenshot 2019-03-30 00:17:29 -04:00
Anuken eb3d5b62f5 Tweaks 2019-03-29 22:48:04 -04:00
Anuken 1c5f578d88 Initial implementation 2019-03-29 18:48:03 -04:00
Anuken db3aae1388 Merge remote-tracking branch 'origin/master' 2019-03-29 18:15:31 -04:00
Anuken 0b08eb72a6 Bugfixes 2019-03-29 18:15:22 -04:00
Skybbles // L5474 cbc81376be pulverizer pulverises scrap not stone (#442) 2019-03-29 13:55:45 -06:00
Anuken 27e9901d05 Removed unused shadow methods; minor tweaks 2019-03-29 09:07:46 -04:00
Anuken 532c36677c Map preview block shadows 2019-03-28 22:23:59 -04:00
Anuken 0c20c6ecb7 Removed greek bundle temporarily, as font does not support it 2019-03-28 20:48:34 -04:00
Anuken fbb3240ebb Hid 0-damage stat to prevent confusion 2019-03-28 19:20:09 -04:00
Anuken bffae90022 Crash fixes 2019-03-28 17:41:57 -04:00
Anuken 61f6368591 Bundle update 2019-03-28 17:31:22 -04:00
Valen. H 1027ca2a85 Greek (#394)
Made in 2018, might be a bit out of date but seems functional. (4-alpha-63)
**Not complete**
2019-03-28 15:29:11 -06:00
Prosta4okua 5acc42f739 @router & @xzimur Create a PR for the Russian language (#437)
Останній комміт — Code cleanup (https://github.com/Anuken/Mindustry/commit/97f5bf3cc4898cf3312efca9c05a63f2768515f3#diff-daade3141498d8856d75ec34b88bbb19)
2019-03-28 15:26:14 -06:00
laohuaji233 1edeaeb94e Update bundle_zh_CN.properties (#436)
more translations
2019-03-28 15:26:08 -06:00
키에르 879acc6077 Update bundle_ko.properties (#435)
* Update bundle_ko.properties

* Oops

* Oops 2

* Update bundle_ko.properties

* Update bundle_ko.properties
2019-03-28 15:25:35 -06:00
Anuken 4e5d87104c Unit AI fixes / Other general fixes 2019-03-28 17:12:49 -04:00
Anuken e6a24b8ba1 Balancing / Bugfixes / Decreased build duration slightly 2019-03-28 14:38:00 -04:00
Anuken fd190c7770 UI layout fixes 2019-03-28 12:50:22 -04:00
Anuken d56869aefa Unit shadows 2019-03-28 12:42:04 -04:00
Anuken c8a15bb7e4 Shadow optimization: 30 -> 60 FPS on phone tested 2019-03-28 12:19:54 -04:00
Anuken 07c28c3f6d Minor fixes 2019-03-28 11:00:34 -04:00
Anuken 855957b099 Broke all crafting 2019-03-27 23:24:07 -04:00
Anuken 50959317e9 New launch pad / Tech tree tweaks 2019-03-27 22:13:40 -04:00
Anuken 20a681a71f Zone unlocking tweak 2019-03-27 19:21:15 -04:00
Anuken 4e2d558b36 Merge remote-tracking branch 'origin/master' 2019-03-27 09:31:12 -04:00
Anuken 0430b908f4 New requirements for zone unlock, currently broken 2019-03-27 09:31:07 -04:00
Anuken a84e9f2aaa Updated RoboVM plugin 2019-03-26 20:35:29 -04:00
Anuken 7ce571e59c New tentative edge style / Zone tweaks 2019-03-26 20:10:01 -04:00
Anuken 545a64f7dc Merge remote-tracking branch 'origin/master' 2019-03-26 11:05:55 -04:00
Anuken 10c999a4a2 Bugfixes / Mender block / Extra stats / Balancing 2019-03-26 11:05:47 -04:00
Anuken d0e026d597 Bugfixes 2019-03-25 13:12:55 -04:00
Anuken 0b1e2bf19b Compile fixes 2019-03-24 21:54:01 -04:00
Anuken 71c2c7ad05 More code cleanup 2019-03-24 21:10:59 -04:00
Anuken 97f5bf3cc4 Code cleanup 2019-03-24 19:58:51 -04:00
Anuken bb9573b85a Build cost/speed rules 2019-03-24 18:33:07 -04:00
Anuken e1f53dfc67 Added bundle entries 2019-03-24 17:58:59 -04:00
Anuken 87481e0a4d Ammo stats 2019-03-24 17:55:41 -04:00
Anuken f7aa58e385 Many small tweaks / Custom rules / Server run files / Balance 2019-03-24 16:29:25 -04:00
Anuken ea5c78f814 UI scaling fixes 2019-03-23 22:00:41 -04:00
Anuken c93c016e9c more icons 2019-03-23 19:06:50 -04:00
Anuken 4bb6664c7e Merge remote-tracking branch 'origin/master' 2019-03-23 18:48:00 -04:00
Anuken 9578068a02 another menu attempt 2019-03-23 18:47:57 -04:00
Anuken 30e5f2b17d iOS building fix 2019-03-23 18:33:33 -04:00
Anuken f959760c07 More iOS icon stuff 2019-03-23 15:05:22 -04:00
Anuken e7db2350bc Merge remote-tracking branch 'origin/master' 2019-03-23 14:39:08 -04:00
Anuken 0585dabf7a iOS icons 2019-03-23 14:39:04 -04:00
306 changed files with 9644 additions and 8799 deletions
-1
View File
@@ -3,7 +3,6 @@
package="io.anuke.mindustry">
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
+2 -11
View File
@@ -27,9 +27,6 @@ repositories {
dependencies {
implementation project(":core")
implementation project(":net")
implementation 'com.android.support:support-v4:28.0.0'
implementation 'org.sufficientlysecure:donations:2.5'
implementation 'com.google.android.gms:play-services-auth:16.0.1'
implementation arcModule("backends:backend-android")
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
@@ -47,9 +44,9 @@ dependencies {
task deploy(type: Copy){
dependsOn "assembleRelease"
from "build/outputs/apk/google/release/android-google-release.apk"
from "build/outputs/apk/release/android-release.apk"
into "../deploy/"
rename ("android-google-release.apk", appName + "-android-" + getVersionString() + ".apk")
rename ("android-release.apk", appName + "-android-" + getVersionString() + ".apk")
}
android {
@@ -103,12 +100,6 @@ android {
flavorDimensions "google"
productFlavors {
google {
buildConfigField "boolean", "DONATIONS_GOOGLE", "true"
}
}
signingConfigs {
release {
if(project.hasProperty("RELEASE_STORE_FILE")) {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

-32
View File
@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#000">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top"
android:adjustViewBounds="false"
android:contentDescription="background"
android:cropToPadding="false"
android:scaleType="centerCrop"
android:src="@drawable/background" />
<LinearLayout
android:id="@+id/donations_activity_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
</RelativeLayout>
</LinearLayout>
-15
View File
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Mindustry</string>
<string-array name="donation_google_catalog_values">
<item>1 달러</item>
<item>2 달러</item>
<item>5 달러</item>
<item>10 달러</item>
<item>15 달러</item>
<item>25 달러</item>
<item>50 달러</item>
</string-array>
</resources>
-15
View File
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Mindustry</string>
<string-array name="donation_google_catalog_values">
<item>1 Доллар</item>
<item>2 Доллара</item>
<item>5 Долларов</item>
<item>10 Долларов</item>
<item>15 Долларов</item>
<item>25 Долларов</item>
<item>50 Долларов</item>
</string-array>
</resources>
-15
View File
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Mindustry</string>
<string-array name="donation_google_catalog_values">
<item>1 Доллар</item>
<item>2 Доллара</item>
<item>5 Долларів</item>
<item>10 Долларів</item>
<item>15 Долларів</item>
<item>25 Долларів</item>
<item>50 Долларів</item>
</string-array>
</resources>
+1 -10
View File
@@ -2,14 +2,5 @@
<resources>
<string name="app_name">Mindustry</string>
<string-array name="donation_google_catalog_values">
<item>1 Dollar</item>
<item>2 Dollars</item>
<item>5 Dollars</item>
<item>10 Dollars</item>
<item>15 Dollars</item>
<item>25 Dollars</item>
<item>50 Dollars</item>
</string-array>
</resources>
</resources>
@@ -10,11 +10,6 @@ import android.os.Build;
import android.os.Bundle;
import android.provider.Settings.Secure;
import android.telephony.TelephonyManager;
import android.util.Log;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.common.GooglePlayServicesRepairableException;
import com.google.android.gms.security.ProviderInstaller;
import io.anuke.arc.Core;
import io.anuke.arc.backends.android.surfaceview.AndroidApplication;
import io.anuke.arc.backends.android.surfaceview.AndroidApplicationConfiguration;
@@ -53,8 +48,8 @@ public class AndroidLauncher extends AndroidApplication{
Platform.instance = new Platform(){
@Override
public void openDonations(){
showDonations();
public void hide(){
moveTaskToBack(true);
}
@Override
@@ -94,7 +89,7 @@ public class AndroidLauncher extends AndroidApplication{
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
perms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
}
requestPermissions(perms.toArray(new String[perms.size()]), PERMISSION_REQUEST_CODE);
requestPermissions(perms.toArray(new String[0]), PERMISSION_REQUEST_CODE);
}
}
@@ -114,17 +109,10 @@ public class AndroidLauncher extends AndroidApplication{
}
};
try{
ProviderInstaller.installIfNeeded(this);
}catch(GooglePlayServicesRepairableException e){
GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
apiAvailability.getErrorDialog(this, e.getConnectionStatusCode(), 0).show();
}catch(GooglePlayServicesNotAvailableException e){
Log.e("SecurityException", "Google Play Services not available.");
}
if(doubleScaleTablets && isTablet(this.getContext())){
Unit.dp.addition = 0.5f;
}
config.hideStatusBar = true;
Net.setClientProvider(new KryoClient());
Net.setServerProvider(new KryoServer());
@@ -133,7 +121,7 @@ public class AndroidLauncher extends AndroidApplication{
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults){
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){
if(requestCode == PERMISSION_REQUEST_CODE){
for(int i : grantResults){
if(i != PackageManager.PERMISSION_GRANTED) return;
@@ -195,22 +183,8 @@ public class AndroidLauncher extends AndroidApplication{
}
}
private boolean isPackageInstalled(String packagename){
try{
getPackageManager().getPackageInfo(packagename, 0);
return true;
}catch(Exception e){
return false;
}
}
private boolean isTablet(Context context){
TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE;
}
private void showDonations(){
Intent intent = new Intent(this, DonationsActivity.class);
startActivity(intent);
return manager != null && manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE;
}
}
@@ -1,73 +0,0 @@
package io.anuke.mindustry;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.Button;
import org.sufficientlysecure.donations.DonationsFragment;
public class DonationsActivity extends FragmentActivity{
/**
* Google
*/
private static final String GOOGLE_PUBKEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzG93KhpfBPKTo2jF0yxbWkkmMKwsPNM4SsMj1aDq7vv6n3R+mqJVfprOJxFfJh7JchXTflLIgiaKXFAiU70gJbMTniEWnEaFSxAeF09a7U0RjOwN+7rFwjCG91c2CpYxPanBTQP4zasc1ODPVzq4q6/4ByjhenN71V4WmR08NFIAodcfFPrOkDPil7i8y7cgcd1Ky53U0TS+LLYJttAK3XdTK4s7VE3I5IKoeNa4uwCmIM59R67q2k3cXjLk/nP6MP+y++EzHN/PTiR1sVg4dMP8K31RPw/1QNLPQwJz6Wc872oWwb7xo5gkoXbDc5WPPydsi8F3SyKNaYwzN6CDFQIDAQAB";
private static final String[] GOOGLE_CATALOG = new String[]{
"mindustry.donation.1", "mindustry.donation.2", "mindustry.donation.5",
"mindustry.donation.10", "mindustry.donation.15",
"mindustry.donation.25", "mindustry.donation.50"};
DonationsFragment donationsFragment;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setTheme(R.style.GdxTheme);
setContentView(R.layout.donations_activity);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if(BuildConfig.DONATIONS_GOOGLE){
donationsFragment = DonationsFragment.newInstance(BuildConfig.DEBUG, true, GOOGLE_PUBKEY, GOOGLE_CATALOG,
getResources().getStringArray(R.array.donation_google_catalog_values), false, null, null,
null, false, null, null, false, null);
}
ft.replace(R.id.donations_activity_container, donationsFragment, "donationsFragment");
ft.commit();
}
public void onStart(){
super.onStart();
Button b = findViewById(org.sufficientlysecure.donations.R.id.donations__google_android_market_donate_button);
b.setOnClickListener(view -> {
donationsFragment.donateGoogleOnClick(donationsFragment.getView());
b.setEnabled(false);
});
}
/**
* Needed for Google Play In-app Billing. It uses startIntentSenderForResult(). The result is not propagated to
* the Fragment like in startActivityForResult(). Thus we need to propagate manually to our Fragment.
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
Button b = findViewById(org.sufficientlysecure.donations.R.id.donations__google_android_market_donate_button);
b.setEnabled(true);
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag("donationsFragment");
if(fragment != null){
fragment.onActivityResult(requestCode, resultCode, data);
}
}
}
@@ -7,6 +7,18 @@ import java.lang.annotation.Target;
public class Annotations{
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.SOURCE)
public @interface Nullable{
}
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.SOURCE)
public @interface NonNull{
}
/** Marks a class as serializable.*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
@@ -109,7 +109,7 @@ public class RemoteWriteGenerator{
for(VariableElement var : elem.getParameters()){
//special case: calling local-only methods uses the local player
if(index == 0 && methodEntry.where == Loc.client){
results.append("io.anuke.mindustry.Vars.players[0]");
results.append("io.anuke.mindustry.Vars.player");
}else{
results.append(var.getSimpleName());
}
@@ -50,8 +50,21 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
classBuilder.addJavadoc(RemoteMethodAnnotationProcessor.autogenWarning);
MethodSpec.Builder method = MethodSpec.methodBuilder("init").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
TypeName jsonType = ClassName.bestGuess("io.anuke.arc.util.serialization.Json");
TypeName jsonValueType = ClassName.bestGuess("io.anuke.arc.util.serialization.JsonValue");
TypeName ubJsonWriterType = ClassName.bestGuess("io.anuke.arc.util.serialization.UBJsonWriter");
TypeName ubJsonReaderType = ClassName.bestGuess("io.anuke.arc.util.serialization.UBJsonReader");
classBuilder.addField(jsonType, "bjson", Modifier.STATIC, Modifier.PRIVATE);
classBuilder.addField(ubJsonReaderType, "bjsonReader", Modifier.STATIC, Modifier.PRIVATE);
classBuilder.addStaticBlock(CodeBlock.builder()
.addStatement("bjson = new " + jsonType + "()")
.addStatement("bjsonReader = new " + ubJsonReaderType + "()")
.build());
for(TypeElement elem : elements){
TypeName type = TypeName.get(elem.asType());
String simpleTypeName = type.toString().substring(type.toString().lastIndexOf('.') + 1);
TypeSpec.Builder serializer = TypeSpec.anonymousClassBuilder("")
.addSuperinterface(ParameterizedTypeName.get(
@@ -70,7 +83,19 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
.addException(IOException.class)
.addModifiers(Modifier.PUBLIC);
MethodSpec.Builder jsonWriteMethod = MethodSpec.methodBuilder("write" + simpleTypeName + "Json")
.returns(void.class)
.addParameter(jsonType, "json")
.addParameter(type, "object")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC);
MethodSpec.Builder jsonReadMethod = MethodSpec.methodBuilder("read" + simpleTypeName + "Json")
.returns(type)
.addParameter(jsonValueType, "value")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC);
readMethod.addStatement("$L object = new $L()", type, type);
jsonReadMethod.addStatement("$L object = new $L()", type, type);
List<VariableElement> fields = ElementFilter.fieldsIn(Utils.elementUtils.getAllMembers(elem));
for(VariableElement field : fields){
@@ -83,6 +108,9 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
if(field.asType().getKind().isPrimitive()){
writeMethod.addStatement("stream.write" + capName + "(object." + name + ")");
readMethod.addStatement("object." + name + "= stream.read" + capName + "()");
jsonWriteMethod.addStatement("json.writeValue(\"" + name + "\", object." + name +")");
jsonReadMethod.addStatement("if(value.has(\"" + name + "\")) object." + name + "= value.get" + capName + "(\"" + name + "\")");
}else{
writeMethod.addStatement("io.anuke.arc.Core.settings.getSerializer(" + typeName+ ".class).write(stream, object." + name + ")");
readMethod.addStatement("object." + name + " = (" +typeName+")io.anuke.arc.Core.settings.getSerializer(" + typeName+ ".class).read(stream)");
@@ -90,22 +118,47 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
}
readMethod.addStatement("return object");
jsonReadMethod.addStatement("return object");
serializer.addMethod(writeMethod.build());
serializer.addMethod(readMethod.build());
method.addStatement("io.anuke.arc.Core.settings.setSerializer($N, $L)", Utils.elementUtils.getBinaryName(elem).toString().replace('$', '.') + ".class", serializer.build());
String sname = type.toString().substring(type.toString().lastIndexOf('.') + 1);
name(writeMethod, "write" + sname);
name(readMethod, "read" + sname);
name(writeMethod, "write" + simpleTypeName);
name(readMethod, "read" + simpleTypeName);
writeMethod.addModifiers(Modifier.STATIC);
readMethod.addModifiers(Modifier.STATIC);
classBuilder.addMethod(writeMethod.build());
classBuilder.addMethod(readMethod.build());
classBuilder.addMethod(jsonWriteMethod.build());
classBuilder.addMethod(jsonReadMethod.build());
MethodSpec.Builder binaryJsonWriteMethod = MethodSpec.methodBuilder("write" + simpleTypeName + "StreamJson")
.returns(void.class)
.addParameter(DataOutput.class, "stream")
.addParameter(type, "object")
.addException(IOException.class)
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addStatement("java.io.StringWriter output = new java.io.StringWriter()")
.addStatement("bjson.setWriter(output)")
.addStatement("bjson.writeObjectStart(" + type + ".class, " + type + ".class)")
.addStatement("write" + simpleTypeName + "Json(bjson, object)")
.addStatement("bjson.writeObjectEnd()")
.addStatement("stream.writeUTF(output.toString())");
MethodSpec.Builder binaryJsonReadMethod = MethodSpec.methodBuilder("read" + simpleTypeName + "StreamJson")
.returns(type)
.addParameter(DataInput.class, "stream")
.addException(IOException.class)
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addStatement("return read" + simpleTypeName + "Json(bjson.fromJson(null, stream.readUTF()))");
classBuilder.addMethod(binaryJsonWriteMethod.build());
classBuilder.addMethod(binaryJsonReadMethod.build());
}
classBuilder.addMethod(method.build());
@@ -129,7 +129,7 @@ public class StructAnnotationProcessor extends AbstractProcessor{
//floats: need conversion
setter.addStatement("return ($T)(($L & $L) | (($T)Float.floatToIntBits(value) << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
}else{
cons.append(" | (").append("(").append(structType).append(")").append(varName).append(" << ").append(offset).append("L)");
cons.append(" | (((").append(structType).append(")").append(varName).append(" << ").append(offset).append("L)").append(" & ").append(bitString(offset, size, structTotalSize)).append(")");
//bytes, shorts, chars, ints
setter.addStatement("return ($T)(($L & $L) | (($T)value << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
+6 -4
View File
@@ -8,7 +8,7 @@ buildscript{
}
dependencies{
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.5'
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.6'
classpath "com.badlogicgames.gdx:gdx-tools:1.9.9"
classpath "com.badlogicgames.packr:packr:2.1-SNAPSHOT"
}
@@ -25,7 +25,7 @@ allprojects{
if(!project.hasProperty("versionType")) versionType = 'official'
appName = 'Mindustry'
gdxVersion = '1.9.9'
roboVMVersion = '2.3.0'
roboVMVersion = '2.3.6'
arcHash = null
debugged = {
@@ -43,7 +43,7 @@ allprojects{
arcHash = 'git ls-remote https://github.com/Anuken/Arc.git'.execute().text.split("\t")[0]
}catch(e){
e.printStackTrace()
arcHash = "-SNAPSHOT";
arcHash = "-SNAPSHOT"
}
}
return arcHash
@@ -156,7 +156,8 @@ project(":ios"){
dependencies{
compile project(":core")
compile project(":net")
compileOnly project(":annotations")
compile arcModule("backends:backend-robovm")
compile "com.mobidevelop.robovm:robovm-rt:$roboVMVersion"
@@ -199,6 +200,7 @@ project(":core"){
compile arcModule("arc-core")
compile arcModule("extensions:freetype")
//compile arcModule("extensions:postprocessing")
if(localArc() && debugged()) compile arcModule("extensions:recorder")
compileOnly project(":annotations")
Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

+70 -42
View File
@@ -43,6 +43,7 @@ addplayers = Add/Remove Players
customgame = Custom Game
newgame = New Game
none = <none>
minimap = Minimap
close = Close
quit = Quit
maps = Maps
@@ -184,7 +185,8 @@ builtin = Built-In
map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone!
map.random = [accent]Random Map
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.
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.
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] non-blue[] cores to this map in the editor.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Error loading map: corrupted or invalid map file.
editor.brush = Brush
editor.openin = Open In Editor
@@ -286,7 +288,8 @@ donate = Donate
abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Complete:
complete = [LIGHT_GRAY]Reach:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best Wave: {0}
launch = < LAUNCH >
@@ -298,7 +301,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Wave {0} reached:\nNext zone requirements met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -340,63 +343,62 @@ no = No
info.title = Info
error.title = [crimson]An error has occured
error.crashtitle = An error has occured
blocks.outputspeed = Drill Speed: {0}/
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Block Info
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Power Capacity
blocks.powershot = Power/Shot
blocks.targetsair = Targets Air
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Range
blocks.size = Size
blocks.liquidcapacity = Liquid Capacity
blocks.maxitemssecond = Max Items
blocks.powerrange = Power Range
blocks.poweruse = Power Use
blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Input Item Capacity
blocks.outputitemcapacity = Output Item Capacity
blocks.itemcapacity = Item Capacity
blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Power Transfer
blocks.craftspeed = Production Speed
blocks.inputliquid = Input Liquid
blocks.inputliquidaux = Aux Liquid
blocks.inputitem = Input Item
blocks.inputitems = Input Items
blocks.outputitem = Output Item
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Drillables
blocks.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Liquid Output
blocks.liquidoutputspeed = Liquid Output Speed
blocks.liquiduse = Liquid Use
blocks.coolant = Coolant
blocks.liquid = Liquid
blocks.coolantuse = Coolant Use
blocks.inputliquidfuel = Fuel Liquid
blocks.liquidfueluse = Liquid Fuel Use
blocks.boostitem = Boost Item
blocks.boostliquid = Boost Liquid
blocks.health = Health
blocks.heat = Heat
blocks.power = Power
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
blocks.inaccuracy = Inaccuracy
blocks.shots = Shots
blocks.reload = Shots/Second
blocks.inputfuel = Fuel
blocks.fuelburntime = Fuel Burn Time
blocks.inputcapacity = Input capacity
blocks.outputcapacity = Output capacity
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}/s
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Liquid
bar.heat = Heat
bar.power = Power
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] damage
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x fire rate
unit.blocks = blocks
unit.powersecond = power units/second
unit.liquidsecond = liquid units/second
@@ -405,6 +407,9 @@ unit.liquidunits = liquid units
unit.powerunits = power units
unit.degrees = degrees
unit.seconds = seconds
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = items
category.general = General
category.power = Power
@@ -413,8 +418,10 @@ category.items = Items
category.crafting = Input/Output
category.shooting = Shooting
category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Enemy/Ally Indicators
setting.autotarget.name = Auto-Target
@@ -438,6 +445,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Show FPS
setting.vsync.name = VSync
setting.lasers.name = Show Power Lasers
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance, disables animations)
setting.minimap.name = Show Minimap
setting.musicvol.name = Music Volume
setting.mutemusic.name = Mute Music
@@ -490,6 +498,23 @@ mode.pvp.name = PvP
mode.pvp.description = Fight against other players locally.
mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI (Red Team) Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Items
content.liquid.name = Liquids
content.unit.name = Units
@@ -532,7 +557,7 @@ liquid.oil.name = Oil
liquid.cryofluid.name = Cryofluid
mech.alpha-mech.name = Alpha
mech.alpha-mech.weapon = Heavy Repeater
mech.alpha-mech.ability = None
mech.alpha-mech.ability = Regeneration
mech.alpha-mech.description = The standard mech. Has decent speed and damage output.
mech.delta-mech.name = Delta
mech.delta-mech.weapon = Arc Generator
@@ -567,9 +592,10 @@ unit.speed = [LIGHT_GRAY]Speed: {0}
mech.weapon = [LIGHT_GRAY]Weapon: {0}
mech.health = [LIGHT_GRAY]Health: {0}
mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {0}
mech.minespeed = [LIGHT_GRAY]Mining Speed: {0}
mech.minespeed = [LIGHT_GRAY]Mining Speed: {0}%
mech.minepower = [LIGHT_GRAY]Mining Power: {0}
mech.ability = [LIGHT_GRAY]Ability: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
liquid.temperature = [LIGHT_GRAY]Temperature: {0}
@@ -730,6 +756,7 @@ block.blast-drill.name = Airblast Drill
block.thermal-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
block.mend-projector.name = Mend Projector
block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall
@@ -745,6 +772,7 @@ block.meltdown.name = Meltdown
block.container.name = Container
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = blue
team.red.name = red
team.orange.name = orange
@@ -829,7 +857,7 @@ block.silicon-smelter.description = Reduces sand with highly pure coal in order
block.plastanium-compressor.description = Produces plastanium from oil and titanium.
block.phase-weaver.description = Produces phase fabric from radioactive thorium and high amounts of sand.
block.alloy-smelter.description = Produces surge alloy from titanium, lead, silicon and copper.
block.pulverizer.description = Crushes stone into sand. Useful when there is a lack of natural sand.
block.pulverizer.description = Crushes scrap into sand. Useful when there is a lack of natural sand.
block.pyratite-mixer.description = Mixes coal, lead and sand into highly flammable pyratite.
block.blast-mixer.description = Uses oil for transforming pyratite into the less flammable but more explosive blast compound.
block.cryofluidmixer.description = Combines water and titanium into cryofluid which is much more efficient for cooling.
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = Přidat/Odebrat hráče
customgame = Vlastní hra
newgame = New Game
none = <none>
minimap = Minimap
close = Zavřít
quit = Ukončit
maps = Mapy
@@ -182,6 +183,7 @@ map.delete.confirm = Jsi si jistý žechceš tuto mapu smazat? tato akce je nevr
map.random = [accent]Náhodná mapa
map.nospawn = Tato mapa nemá žádná jádra pro hráče ke spawnutí! přidej[ROYAL] blue[] jádro na tuto mapu v editoru.
map.nospawn.pvp = Tato mapa nemá žádné nepřátelské jádra pro hráče ke spawnutí! přidej[SCARLET] red[] jádro na tuto mapu v editoru.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Chyba v načítání mapy: poškozený nebo neplatný soubor mapy.
editor.brush = Štětec
editor.openin = Otevřít v editoru.
@@ -283,6 +285,7 @@ abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Zone conditions met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -333,63 +336,59 @@ no = Ne
info.title = Informace
error.title = [crimson]Objevila se chyba
error.crashtitle = Objevila se chyba
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Informace o bloku
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Kapacita energie
blocks.powershot = Energie na výstřel
blocks.targetsair = Zaměřuje vzdušné jednotky
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Dostřel
blocks.size = velikost
blocks.liquidcapacity = Kapacita tekutin
blocks.maxitemssecond = Max předmětů
blocks.powerrange = Rozsah energie
blocks.poweruse = Spotřebuje energie
blocks.powerdamage = Energie na poškození
blocks.inputitemcapacity = Kapacita vstupních předmětů
blocks.outputitemcapacity = Kapacita výstupních předmětů
blocks.itemcapacity = kapacita předmětů
blocks.basepowergeneration = Základní generování energie
blocks.powertransferspeed = Přenos energie
blocks.craftspeed = Rychlost produkce
blocks.inputliquid = Vstupní tekutiny
blocks.inputliquidaux = Aux tekutina
blocks.inputitem = Vstupní předmět
blocks.inputitems = Vstupní předměty
blocks.outputitem = Výstupní předmět
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Vrtatelné
blocks.drillspeed = Základní rychlost vrtu
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Výstup tekutin
blocks.liquidoutputspeed = Rychlost výstupu tekutin
blocks.liquiduse = Spotřebuje tekutin
blocks.coolant = Chlazení
blocks.liquid = Liquid
blocks.coolantuse = Spotřeba chlazení
blocks.inputliquidfuel = Palivo-tekutina
blocks.liquidfueluse = Spotřeba Paliva-tekutiny
blocks.boostitem = Předmět pro zrychlení
blocks.boostliquid = Tekutina pro zrychlení
blocks.health = Životy
blocks.heat = Heat
blocks.power = Power
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
blocks.inaccuracy = Nepřesnost/výchylka
blocks.shots = Střely
blocks.reload = Střely za sekundu
blocks.inputfuel = Palivo
blocks.fuelburntime = Čas spalování paliva
blocks.inputcapacity = Vstupní kapacita
blocks.outputcapacity = Výstupní kapacita
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Liquid
bar.heat = Heat
bar.power = Power
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = Bloky
unit.powersecond = jednotek energie/sekunda
unit.liquidsecond = jednotek tekutin/sekundu
@@ -398,6 +397,9 @@ unit.liquidunits = jednotek tekutin
unit.powerunits = jednotek energie
unit.degrees = úhly
unit.seconds = sekundy
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = předměty
category.general = Všeobecné
category.power = Energie
@@ -406,8 +408,10 @@ category.items = Předměty
category.crafting = Vyžaduje
category.shooting = Střílí
category.optional = Volitelné vylepšení
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Indikátor pro spojence
setting.autotarget.name = Automaticky zaměřuje
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Ukázat snímky/sekundu
setting.vsync.name = Vertikální synchronizace
setting.lasers.name = Ukázat laser energie
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Ukázat minimapu
setting.musicvol.name = Hlasitost hudby
setting.mutemusic.name = Ztišit hudbu
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = Bojuj proti ostatním hráčům v lokální síti.
mode.attack.name = Útok
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Předměty
content.liquid.name = Tekutiny
content.unit.name = jednotky
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Kapacita předmětů: {0}
mech.minespeed = [LIGHT_GRAY]Rychlost těžení: {0}
mech.minepower = [LIGHT_GRAY]Síla těžení: {0}
mech.ability = [LIGHT_GRAY]Schopnost: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Kapacita teploty: {0}
liquid.viscosity = [LIGHT_GRAY]Viskozita: {0}
liquid.temperature = [LIGHT_GRAY]Teplota: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Tlakovzdušný vrt
block.thermal-pump.name = Termální pumpa
block.thermal-generator.name = Termální Generátor
block.alloy-smelter.name = Slitinová pec
block.mender.name = Mender
block.mend-projector.name = Opravný projektor
block.surge-wall.name = Impulzní stěna
block.surge-wall-large.name = Velká Impulzní stěna
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Kontejnér
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = modrá
team.red.name = červená
team.orange.name = oranžová
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = Hinzufügen/Entfernen von Spielern
customgame = Benutzerdefiniertes Spiel
newgame = New Game
none = <nichts>
minimap = Minimap
close = Schließen
quit = Verlassen
maps = Karten
@@ -182,6 +183,7 @@ map.delete.confirm = Bist du sicher, dass du diese Karte löschen willst? Die Ak
map.random = [accent]Zufällige Karte
map.nospawn = Diese Karte hat keine Kerne in denen die Spieler beginnen können! Füge einen [ROYAL]blue[] Kern zu dieser Karte im Editor hinzu.
map.nospawn.pvp = Diese Karte hat keine gegnerischen Kerne wo Gegner starten könnten! Füge über den Editor [SCARLET] rote[] Kerne zu dieser Karte hinzu.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Fehler beim Laden der Karte: Beschädigtes oder invalide Karten Datei.
editor.brush = Pinsel
editor.openin = Öffne im Editor
@@ -283,6 +285,7 @@ abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Zone conditions met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -333,63 +336,59 @@ no = Nein
info.title = [accent]Info
error.title = [crimson] Ein Fehler ist aufgetreten
error.crashtitle = Ein Fehler ist aufgetreten!
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Blockinfo:
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Kapazität
blocks.powershot = Stromverbrauch/Schuss
blocks.targetsair = Visiert Luft Einheiten an
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Reichweite
blocks.size = Größe
blocks.liquidcapacity = Flüssigkeitskapazität
blocks.maxitemssecond = Max Materialien
blocks.powerrange = Stromreichweite
blocks.poweruse = Stromverbrauch
blocks.powerdamage = Stromverbrauch/Schadenspunkt
blocks.inputitemcapacity = Annahmekapazität
blocks.outputitemcapacity = Ausgabekapazität
blocks.itemcapacity = Materialkapazität
blocks.basepowergeneration = Basis-Stromerzeugung
blocks.powertransferspeed = Stromübertragung
blocks.craftspeed = Produktionsgeschwindigkeit
blocks.inputliquid = Benötigte Flüssigkeit
blocks.inputliquidaux = Optionale Flüssigkeit
blocks.inputitem = Akzeptiertes Material
blocks.inputitems = Akzeptierte Materialien
blocks.outputitem = Erzeugtes Material
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Abbaubare Erze
blocks.drillspeed = Bohrgeschwindigkeit
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Erzeugte Flüssigkeit
blocks.liquidoutputspeed = Ausgabegeschwindigkeit
blocks.liquiduse = Flüssigkeitsverbrauch
blocks.coolant = Kühlmittel
blocks.liquid = Liquid
blocks.coolantuse = Kühlmittelverbrauch
blocks.inputliquidfuel = Kraftstoff
blocks.liquidfueluse = Kraftstoffverbrauch
blocks.boostitem = Boost Item
blocks.boostliquid = Boost Liquid
blocks.health = Lebenspunkte
blocks.heat = Heat
blocks.power = Power
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
blocks.inaccuracy = Ungenauigkeit
blocks.shots = Schüsse
blocks.reload = Schüsse/Sekunde
blocks.inputfuel = Kraftstoff
blocks.fuelburntime = Kraftstoff Verbrennungs-Zeit
blocks.inputcapacity = Annahmekapazität
blocks.outputcapacity = Ausgabekapazität
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Liquid
bar.heat = Heat
bar.power = Power
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = Blöcke
unit.powersecond = Stromeinheiten/Sekunde
unit.liquidsecond = Flüssigkeitseinheiten/Sekunde
@@ -398,6 +397,9 @@ unit.liquidunits = Flüssigkeitseinheiten
unit.powerunits = Stromeinheiten
unit.degrees = Grad
unit.seconds = Sekunden
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = Materialeinheiten
category.general = Generell
category.power = Strom
@@ -406,8 +408,10 @@ category.items = Materialien
category.crafting = Erzeugung
category.shooting = Schießen
category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Zielauswahl
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Zeige FPS
setting.vsync.name = VSync
setting.lasers.name = Zeige Stromlaser
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Zeige die Minimap
setting.musicvol.name = Musiklautstärke
setting.mutemusic.name = Musik stummschalten
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = Kämpfe gegen andere Spieler local.
mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Materialien
content.liquid.name = Flüssigkeiten
content.unit.name = Einheiten
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Materialkapazität: {0}
mech.minespeed = [LIGHT_GRAY]Erzabbaugeschwindigkeit: {0}
mech.minepower = [LIGHT_GRAY]Erzabbaukraft: {0}
mech.ability = [LIGHT_GRAY]Fähigkeit: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Wärmekapazität: {0}
liquid.viscosity = [LIGHT_GRAY]Viskosität: {0}
liquid.temperature = [LIGHT_GRAY]Temperatur: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Sprengbohrer
block.thermal-pump.name = Thermische Pumpe
block.thermal-generator.name = Thermischer Generator
block.alloy-smelter.name = Legierungsschmeltzer
block.mender.name = Mender
block.mend-projector.name = Reparaturprojektor
block.surge-wall.name = Spannungsstoß-Mauer
block.surge-wall-large.name = Große Spannungsstoß-Mauer
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = Blau
team.red.name = Rot
team.orange.name = Orange
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = Agregar/Quitar Jugadores
customgame = Partida personalizada
newgame = New Game
none = <no hay>
minimap = Minimap
close = Cerrar
quit = Salir
maps = Mapas
@@ -182,6 +183,7 @@ map.delete.confirm = ¿Estás seguro de querer borrar este mapa? ¡Recuerda que
map.random = [accent]Mapa Aleatorio
map.nospawn = ¡Este mapa no tiene ningún núcleo en el cual pueda aparecer el jugador! Agrega un núcleo[ROYAL] blue[] al mapa con el editor.
map.nospawn.pvp = ¡Este mapa no tiene ningún núcleo enemigo para que aparezca el jugador! Añade un núcleo[SCARLET] red[] a este mapa en el editor.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Error cargando el mapa: archivo corrupto o inválido.
editor.brush = Pincel
editor.openin = Abrir en el Editor
@@ -283,6 +285,7 @@ abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Zone conditions met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -333,63 +336,59 @@ no = No
info.title = [accent]Información
error.title = [crimson]Un error ha ocurrido.
error.crashtitle = Un error ha ocurrido.
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Información del Bloque
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Capacidad de Energía
blocks.powershot = Energía/Disparo
blocks.targetsair = Apunta al Aire
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Rango
blocks.size = Tamaño
blocks.liquidcapacity = Capacidad de Líquidos
blocks.maxitemssecond = Máximo de Objetos
blocks.powerrange = Rango de Energía
blocks.poweruse = Consumo de Energía
blocks.powerdamage = Energía/Daño
blocks.inputitemcapacity = Capacidad de Entrada de los Objetos
blocks.outputitemcapacity = Capacidad de Salida de los Objetos
blocks.itemcapacity = Capacidad de Objetos
blocks.basepowergeneration = Generación de energía base
blocks.powertransferspeed = Transferencia de Energía
blocks.craftspeed = Velocidad de Producción
blocks.inputliquid = Líquidos de Entrada
blocks.inputliquidaux = Líquido Auxiliar
blocks.inputitem = Objeto de Entrada
blocks.inputitems = Objetos de Entrada
blocks.outputitem = Objeto de Salida
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Taladrables
blocks.drillspeed = Velocidad Base del Taladro
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Líquido de Salida
blocks.liquidoutputspeed = Velocidad de Salida del Líquido
blocks.liquiduse = Uso de Líquido
blocks.coolant = Refrigerante
blocks.liquid = Liquid
blocks.coolantuse = Uso del Refrigerante
blocks.inputliquidfuel = Combustible Líquido
blocks.liquidfueluse = Uso del Combustible Líquido
blocks.boostitem = Boost Item
blocks.boostliquid = Boost Liquid
blocks.health = Vida
blocks.heat = Heat
blocks.power = Power
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
blocks.inaccuracy = Imprecisión
blocks.shots = Disparos
blocks.reload = Recarga
blocks.inputfuel = Combustible
blocks.fuelburntime = Tiempo de Quemado del Combustible
blocks.inputcapacity = Capacidad de entrada
blocks.outputcapacity = Capacidad de salida
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Liquid
bar.heat = Heat
bar.power = Power
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = bloques
unit.powersecond = unidades de energía/segundo
unit.liquidsecond = unidades de líquido/segundo
@@ -398,6 +397,9 @@ unit.liquidunits = unidades de líquido
unit.powerunits = unidades de energía
unit.degrees = grados
unit.seconds = segundos
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = objetos
category.general = General
category.power = Energía
@@ -406,8 +408,10 @@ category.items = Objetos
category.crafting = Fabricación
category.shooting = Disparo
category.optional = Mejoras Opcionales
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto apuntado
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Mostrar FPS
setting.vsync.name = VSync
setting.lasers.name = Mostrar Energía de los Láseres
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Mostrar Minimapa
setting.musicvol.name = Volumen de la Música
setting.mutemusic.name = Silenciar Musica
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = Pelea contra otros jugadores localmente.
mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Objetos
content.liquid.name = Líquidos
content.unit.name = Unidades
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Capacidad de objetos: {0}
mech.minespeed = [LIGHT_GRAY]Velocidad de minado: {0}
mech.minepower = [LIGHT_GRAY]Potencia de minado: {0}
mech.ability = [LIGHT_GRAY]Hablidad: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacidad Térmica: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosidad: {0}
liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Taladro de explosión
block.thermal-pump.name = Bomba Térmica
block.thermal-generator.name = Generador Térmico
block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
block.mend-projector.name = Proyector de reparación
block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Contenedor
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = Azul
team.red.name = Rojo
team.orange.name = Naranja
+177 -141
View File
@@ -1,45 +1,46 @@
credits.text = Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
credits = Crédits
contributors = Translators and Contributors
contributors = Traducteurs et contributeurs
discord = Rejoignez le discord de Mindustry
link.discord.description = Le discord officiel de mindustry
link.github.description = Code source du jeu
link.dev-builds.description = Versions instables du jeu
link.discord.description = Le discord officiel de Mindustry!
link.github.description = Code source du jeu.
link.dev-builds.description = Versions instables du jeu.
link.trello.description = Trello officiel pour les futurs ajouts .
link.itch.io.description = Page itch.io avec le lien du téléchargement pour PC et la version web .
link.google-play.description = Listing par le Google Play Store
link.google-play.description = Accès à la version android du Google Play Store.
link.wiki.description = Wiki officiel de mindustry .
linkfail = Erreur lors de l'ouverture du lien !\nL'URL a été copié avec succès.
screenshot = Screenshot saved to {0}
screenshot = Capture d'écran sauvegardée à {0}
gameover = Partie terminée.
gameover.pvp = L'équipe [accent] {0}[] a gagnée !
highscore = [YELLOW]Nouveau meilleur score!
stat.wave = Waves Defeated:[accent] {0}
stat.enemiesDestroyed = Enemies Destroyed:[accent] {0}
stat.built = Buildings Built:[accent] {0}
stat.destroyed = Buildings Destroyed:[accent] {0}
stat.deconstructed = Buildings Deconstructed:[accent] {0}
stat.delivered = Resources Launched:
stat.rank = Final Rank: [accent]{0}
placeline = You have selected a block.\nYou can[accent] place in a line[] by[accent] holding down your finger for a few seconds[] and dragging in a direction.\nTry it.
removearea = You have selected removal mode.\nYou can[accent] remove blocks in a rectangle[] by[accent] holding down your finger for a few seconds[] and dragging.\nTry it.
launcheditems = [accent]Launched Items
stat.wave = Vagues vaincues:[accent] {0}
stat.enemiesDestroyed = Ennemies détruits:[accent] {0}
stat.built = Bâtiments construits:[accent] {0}
stat.destroyed = Bâtiments détruits:[accent] {0}
stat.deconstructed = Bâtiments déconstruits:[accent] {0}
stat.delivered = Ressources transférées:
stat.rank = Rang Final: [accent]{0}
placeline = Tu as sélectionné un bloc.\nTu peux les[accent] placer en rangée[] en[accent] maintenant ton doigt sur l'écran pendant quelques secondes[] et en le glissant vers n'importe qu'elle direction.\nEssaye!
removearea = Tu as sélectionné le mode de suppression.\nTu peux[accent] supprimer les blocs en rectangle[] en[accent] maintenant ton doigt sur l'écran pendant quelques secondes[] et en le glissant.\nEssaye!
launcheditems = [accent]ressources transférées
map.delete = Êtes-vous sûr de supprimer cette carte"[accent]{0}[]"?
level.highscore = Meilleur score: [accent]{0}
level.select = Sélection de niveau
level.mode = Mode de jeu :
showagain = Ne pas montrer la prochaine fois
coreattack = [scarlet]<La base est sous les feux ennemis>
nearpoint = [[ [scarlet]LEAVE DROP POINT IMMEDIATELY[] ]\nannihilation imminent
outofbounds = [[ OUT OF BOUNDS ]\n[]self-destruct in {0}
database = Core Database
nearpoint = [[ [scarlet]QUITTEZ LE POINT D'APPARITION ENNEMI IMMÉDIATEMENT[] ]\nannihilation imminente
outofbounds = [[ HORS LIMITES ]\n[]auto-destruction dans {0}
database = Base de données
savegame = Sauvegarder la partie
loadgame = Charger la partie
joingame = Rejoindre une partie
addplayers = Ajouter/Enlever des joueurs
customgame = Partie personnalisée
newgame = New Game
customgame = Partie customisée
newgame = Nouvelle partie
none = <vide>
minimap = Minimap
close = Fermer
quit = Quitter
maps = Cartes
@@ -47,16 +48,16 @@ continue = Continuer
maps.none = [LIGHT_GRAY]Aucune carte trouvée!
about.button = À propos
name = Nom:
noname = Pick a[accent] player name[] first.
noname = Commencer par choisir un[accent] nom de joueur[].
filename = Nom du fichier:
unlocked = Nouveau bloc débloqué!
completed = [accent]Completed
techtree = Tech Tree
research.list = [LIGHT_GRAY]Research:
research = Research
researched = [LIGHT_GRAY]{0} researched.
completed = [accent]Complété
techtree = Arbre technologique
research.list = [LIGHT_GRAY]Recherche:
research = Rechercher
researched = [LIGHT_GRAY]{0} recherché(e).
players = {0} joueurs en ligne
players.single = {0} joueur en ligne
players.single = {0} joueurs en ligne
server.closing = [accent]Fermeture du serveur...
server.kicked.kick = Vous avez été expulsé du serveur!
server.kicked.serverClose = Serveur fermé.
@@ -148,7 +149,7 @@ save.wave = Vague {0}
save.difficulty = Difficulté: {0}
save.date = Dernière sauvegarde: {0}
save.playtime = Temps de jeu: {0}
warning = Warning.
warning = Avertissement.
confirm = Confirmer
delete = Supprimer
ok = OK
@@ -182,6 +183,7 @@ map.delete.confirm = Êtes-vous sûr de supprimer cette carte? Cette action ne p
map.random = [accent]Carte aléatoire
map.nospawn = Cette carte n'a pas de base pour que le joueur y apparaisse! Ajouter une [ROYAL]base bleue[] sur cette carte dans l'éditeur.
map.nospawn.pvp = Cette carte n'a pas de base ennemies pour qu'un joueur ennemi y apparaisse! Ajouter au moins une [SCARLET]Base rouge[] sur cette carte dans l'éditeur.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide.
editor.brush = Pinceau
editor.openin = Ouvrir dans l'éditeur
@@ -190,32 +192,32 @@ editor.oregen.info = Génération de minerais:
editor.mapinfo = Infos sur la carte
editor.author = Auteur:
editor.description = Description:
editor.waves = Waves:
waves.title = Waves
editor.waves = Vagues:
waves.title = Vagues
waves.remove = Remove
waves.never = <never>
waves.every = every
waves.waves = wave(s)
waves.perspawn = per spawn
waves.to = to
waves.never = jamais
waves.every = tous les
waves.waves = vague(s)
waves.perspawn = par apparition
waves.to = à
waves.boss = Boss
waves.preview = Preview
waves.edit = Edit...
waves.copy = Copy to Clipboard
waves.load = Load from Clipboard
waves.invalid = Invalid waves in clipboard.
waves.copied = Waves copied.
editor.default = [LIGHT_GRAY]<Default>
edit = Edit...
waves.preview = Prévisualiser
waves.edit = Modifier...
waves.copy = Copier dans le Presse-papiers
waves.load = Coller depuis le Presse-papiers
waves.invalid = Vagues invalides dans le Presse-papiers.
waves.copied = Vagues copiées
editor.default = [LIGHT_GRAY]<par défaut>
edit = Modifier...
editor.name = Nom:
editor.teams = Équipe
editor.elevation = Élevation
editor.errorload = Error loading file:\n[accent]{0}
editor.errorsave = Error saving file:\n[accent]{0}
editor.errorname = Map has no name defined.
editor.update = Update
editor.randomize = Randomize
editor.apply = Apply
editor.errorload = Erreur lors du chargement du fichier:\n[accent]{0}
editor.errorsave = Erreur lors de la sauvegarde du fichier:\n[accent]{0}
editor.errorname = La carte n'a pas de nom!
editor.update = Mettre à jour
editor.randomize = Randomiser
editor.apply = Appliquer
editor.generate = Générer
editor.resize = Redimensionner
editor.loadmap = Charger une carte
@@ -244,26 +246,26 @@ editor.mapname = Nom de la carte²:
editor.overwrite = [accent]Attention !\nCeci réécrit une carte existante .
editor.overwrite.confirm = [scarlet]Attention ![] Une carte avec ce nom existe déjà. Êtes-vous sûr de vouloir la réécrire?
editor.selectmap = Séléctionnez une carte:
filters.empty = [LIGHT_GRAY]No filters! Add one with the button below.
filter.distort = Distort
filter.noise = Noise
filter.ore = Ore
filter.rivernoise = River Noise
filter.scatter = Scatter
filters.empty = [LIGHT_GRAY]Aucun filtre! Ajoutez-en un avec les boutons ci-dessous.
filter.distort = Déformation
filter.noise = Bruit
filter.ore = Minerai
filter.rivernoise = Bruit des rivières
filter.scatter = Dispersement
filter.terrain = Terrain
filter.option.scale = Scale
filter.option.scale = Gamme
filter.option.chance = Chance
filter.option.mag = Magnitude
filter.option.threshold = Threshold
filter.option.circle-scale = Circle Scale
filter.option.threshold = Seuil
filter.option.circle-scale = Gamme du cercle
filter.option.octaves = Octaves
filter.option.falloff = Falloff
filter.option.block = Block
filter.option.floor = Floor
filter.option.wall = Wall
filter.option.ore = Ore
filter.option.floor2 = Secondary Floor
filter.option.threshold2 = Secondary Threshold
filter.option.falloff = Diminution
filter.option.block = Bloc
filter.option.floor = Sol
filter.option.wall = Mur
filter.option.ore = Minerai
filter.option.floor2 = Sol secondaire
filter.option.threshold2 = Seuil secondaire
width = Largeur:
height = Hauteur:
menu = Menu
@@ -280,48 +282,49 @@ editor = Éditeur
mapeditor = Éditeur de carte
donate = Faire un\ndon
abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Complete:
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch
launch.title = Launch Successful
launch.next = [LIGHT_GRAY]next opportunity at wave {0}
launch.unable = [scarlet]Unable to LAUNCH.[] Enemies.
launch.confirm = This will launch all resources in your core.\nYou will not be able to return to this base.
uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Zone conditions met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
boss.health = Boss Health
abandon.text = Cette zone et tous ses ressources vont être perdues.
locked = Verrouillé
complete = [LIGHT_GRAY]Compléter:
zone.requirement = Vague {0} dans la zone {1}
resume = Reprendre la partie en cours:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Meilleur: {0}
launch = Lancement
launch.title = Lancement réussi
launch.next = [LIGHT_GRAY] Prochaine opportunité à la vague {0}
launch.unable = [scarlet]Impossible d'effectuer le lancement.[] Ennemis.
launch.confirm = Cela va transférer tous tes ressources dans votre coeur.\nTu ne vas pas pouvoir retourner à cette base.
uncover = Découvrir
configure = Configurer le transfert des ressources.
configure.locked = [LIGHT_GRAY]Atteigner la vague {0}\npour configurer le transfert des ressources
zone.unlocked = [LIGHT_GRAY]{0} Débloquée.
zone.requirement.complete = Vague {0} atteinte:\n{1} Exigences de la zone complétées
zone.config.complete = Vague {0} atteinte:\nConfiguration du transfert débloquée.
zone.resources = Ressources détectées:
add = Ajouter...
boss.health = Vie du BOSS
connectfail = [crimson]Échec de la connexion au serveur : [accent]{0}
error.unreachable = Server injoignable.
error.unreachable = Serveur injoignable.
error.invalidaddress = Adresse invalide.
error.timedout = Délai de connexion dépassé!\nAssurez-vous que l'hôte a autorisé l'accès au port, et que l'adresse soit correcte!
error.mismatch = Erreur de paquet:\nPossible différence de verison entre le client et le serveur .\nVérifiez que vous et l'hôte avez la plus récente version de Mindustry !
error.alreadyconnected = Déjà connecté.
error.mapnotfound = Fichier de la carte introuvable!
error.io = Network I/O error.
error.io = Erreur de Réseau (I/O)
error.any = Erreur réseau inconnue.
zone.groundZero.name = Ground Zero
zone.craters.name = The Craters
zone.frozenForest.name = Frozen Forest
zone.ruinousShores.name = Ruinous Shores
zone.stainedMountains.name = Stained Mountains
zone.desolateRift.name = Desolate Rift
zone.nuclearComplex.name = Nuclear Production Complex
zone.groundZero.name = Première Bataille
zone.craters.name = Les Cratères
zone.frozenForest.name = Forêt Glaciale
zone.ruinousShores.name = Rives en Ruine
zone.stainedMountains.name = Montagnes Tâchetées
zone.desolateRift.name = Fissure abandonnée
zone.nuclearComplex.name = Complexe nucléaire
settings.language = Langage
settings.reset = Valeur par défaut.
settings.rebind = Réatttribuer
settings.controls = Contrôles
settings.game = Jeu
settings.sound = Son
settings.graphics = Graphiques
settings.graphics = Graphismes
settings.cleardata = Effacer les données du jeu...
settings.clear.confirm = Êtes-vous sûr d'effacer ces données ?\nCe qui est fait ne peut être défait !
settings.clearall.confirm = [scarlet]ATTENTION![]\nCet action effacera toutes les données , incluant les sauvegarges, les cartes, les déblocages et la configuration des touches.\nUne fois que vous aurez pressé 'ok' le jeu effacera toutes les données et se fermera.
@@ -333,31 +336,31 @@ no = Non
info.title = Info
error.title = [crimson]Une erreur s'est produite
error.crashtitle = Une erreur s'est produite
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
bar.drillspeed = Vitesse de forage: {0}/s
bar.efficiency = Efficacité: {0}%
block.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Info sur le bloc
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = capacité d'énergie
bar.powerbalance = Énergie: {0}
bar.poweroutput = Énergie en sortie: {0}
blocks.powercapacity = Capacité d'énergie
blocks.powershot = Énergie/Tir
blocks.targetsair = Cible les unités aériennes
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.targetsground = Cible les unités terrestres
bar.items = Objets: {0}
blocks.itemsmoved = Vitesse de Déplacement
blocks.launchtime = Temps entre chaque lancement
blocks.shootrange = Portée
blocks.size = Taille
blocks.liquidcapacity = Capacité en liquide
blocks.maxitemssecond = Production maximale
blocks.powerrange = Distance de transmission
blocks.poweruse = Énergie utilisée
blocks.powerdamage = Énergie/Dégâts
blocks.inputitemcapacity = Capacité d'entrée
blocks.outputitemcapacity = Capacité de sortie
blocks.itemcapacity = Stockage
blocks.basepowergeneration = Generation d'énergie minimale
blocks.basepowergeneration = Génération d'énergie minimale
blocks.powertransferspeed = Vitesse de transfert d'énergie
blocks.craftspeed = Vitesse de production
blocks.repairtime = Temps pour la Réparation Totale du Bloc
blocks.range = Portée
blocks.inputliquid = Liquide requis
blocks.inputliquidaux = Liquide optionnel
blocks.inputitem = Objets en entrée
@@ -365,23 +368,23 @@ blocks.inputitems = Objets utilisés
blocks.outputitem = Objet produit
blocks.drilltier = Forable
blocks.drillspeed = Vitesse de forage de base
blocks.maxunits = Max Active Units
blocks.maxunits = Nombre d'unité actives maximal
blocks.liquidoutput = Liquide en sortie
blocks.liquidoutputspeed = Vitesse de production de liquide
blocks.liquiduse = Quantité de liquide utilisée
blocks.coolant = Liquide de refroidissement
blocks.liquid = Liquid
bar.liquid = Liquide
blocks.coolantuse = Quantité de liquide de refroidissement utilisée
blocks.inputliquidfuel = Carburant liquide
blocks.liquidfueluse = Quantité de carburant liquide utilisé
blocks.boostitem = Boost Item
blocks.boostliquid = Boost Liquid
blocks.boostitem = Objets boosters
blocks.boostliquid = Liquides boosters
blocks.health = Santé
blocks.heat = Heat
blocks.power = Power
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
bar.heat = Chaleur
bar.power = Énergie
bar.progress = Progression de la construction
bar.spawned = Unités: {0}/{1}
blocks.power.satisfaction = Énergie minimum nécessaire
blocks.inaccuracy = Précision
blocks.shots = Tir
blocks.reload = Tirs/Seconde
@@ -389,7 +392,18 @@ blocks.inputfuel = Carburant
blocks.fuelburntime = Durée du carburant
blocks.inputcapacity = Capacité d'entrée
blocks.outputcapacity = Capacité de production
blocks.ammo = Ammo
blocks.ammo = Munitions
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] dmg de zone ~[stat] {1}[lightgray] tuiles
bullet.incendiary = [stat]incendiaire
bullet.homing = [stat]autoguidage
bullet.shock = [stat]choc
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] recul
bullet.freezing = [stat]gel
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x multiplicateur de munitions
bullet.reload = [stat]{0}[lightgray]x rechargement
unit.blocks = blocs
unit.powersecond = Énergie/seconde
unit.liquidsecond = Liquides/seconde
@@ -398,6 +412,9 @@ unit.liquidunits = Unité de liquide
unit.powerunits = Unité d'énergie
unit.degrees = degrés
unit.seconds = secondes
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = Objets
category.general = Général
category.power = Énergie
@@ -405,21 +422,22 @@ category.liquids = Liquides
category.items = Objets
category.crafting = Fabrication
category.shooting = Défense
category.optional = Optional Enhancements
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators
category.optional = Améliorations optionnelles
setting.landscape.name = Verrouiller la rotation en mode paysage
setting.shadows.name = Ombres
setting.animatedwater.name = Eau animée
setting.antialias.name = Antialias[LIGHT_GRAY] (demande le redémarrage de l'appareil)[]
setting.indicators.name = Indicateurs pour les alliés
setting.autotarget.name = Visée automatique
setting.fpscap.name = Max FPS
setting.fpscap.none = None
setting.fpscap.text = {0} FPS
setting.swapdiagonal.name = Always Diagonal Placement
setting.swapdiagonal.name = Autoriser le placement des blocs en diagonal
setting.difficulty.training = entraînement
setting.difficulty.easy = facile
setting.difficulty.normal = normal
setting.difficulty.hard = difficile
setting.difficulty.insane = Extreme
setting.difficulty.easy = Facile
setting.difficulty.normal = Normal
setting.difficulty.hard = Difficile
setting.difficulty.insane = Extrème
setting.difficulty.name = Difficulté:
setting.screenshake.name = Tremblement de l'écran
setting.effects.name = Montrer les effets
@@ -427,37 +445,37 @@ setting.sensitivity.name = Sensibilité de la manette
setting.saveinterval.name = Intervalle des sauvegardes auto
setting.seconds = {0} secondes
setting.fullscreen.name = Plein écran
setting.borderless.name = Borderless Window
setting.borderless.name = Fenêtre sans contour
setting.fps.name = Afficher FPS
setting.vsync.name = VSync
setting.lasers.name = Afficher les rayons des lasers
setting.minimap.name = montrer la minimap
setting.musicvol.name = volume de la musique
setting.minimap.name = Montrer la minimap
setting.musicvol.name = Volume de la musique
setting.mutemusic.name = Couper la musique
setting.sfxvol.name = Volume des SFX
setting.mutesound.name = Couper les SFX
setting.crashreport.name = Send Anonymous Crash Reports
setting.crashreport.name = Envoyer un rapport de crash anonyme
keybind.title = Paramétrer les touches
category.general.name = General
category.general.name = Général
category.view.name = Voir
category.multiplayer.name = Multijoueur
command.attack = Attaque
command.retreat = Retraite
command.patrol = Patrouille
keybind.gridMode.name = Block Select
keybind.gridModeShift.name = Category Select
keybind.gridMode.name = Sélection des blocs
keybind.gridModeShift.name = Sélection des catégories
keybind.press = Appuyer sur une touche...
keybind.press.axis = Appuyer sur un axe ou une touche...
keybind.screenshot.name = Map Screenshot
keybind.screenshot.name = Capture d'écran
keybind.move_x.name = mouvement x
keybind.move_y.name = mouvement y
keybind.select.name = sélectionner
keybind.diagonal_placement.name = Diagonal Placement
keybind.pick.name = Pick Block
keybind.break_block.name = Break Block
keybind.deselect.name = Déselectionner
keybind.diagonal_placement.name = Placement en diagonal
keybind.pick.name = Choisir un bloc
keybind.break_block.name = Suppprimer un bloc
keybind.deselect.name = Désélectionner
keybind.shoot.name = tirer
keybind.zoom_hold.name = tenir le zoom
keybind.zoom_hold.name = maintenir le zoom
keybind.zoom.name = zoom
keybind.menu.name = menu
keybind.pause.name = Pause
@@ -483,6 +501,21 @@ mode.pvp.name = JcJ
mode.pvp.description = Battez-vous contre d'autres joueurs en local.
mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Objets
content.liquid.name = Liquides
content.unit.name = Unités
@@ -563,6 +596,7 @@ mech.itemcapacity = [LIGHT_GRAY]Capacité de stockage: {0}
mech.minespeed = [LIGHT_GRAY]Vitesse de minage: {0}
mech.minepower = [LIGHT_GRAY]Puissance du minage: {0}
mech.ability = [LIGHT_GRAY]Compétence: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosité: {0}
liquid.temperature = [LIGHT_GRAY]Température: {0}
@@ -722,6 +756,7 @@ block.blast-drill.name = Foreuse à explosion
block.thermal-pump.name = Pompe thermique
block.thermal-generator.name = Générateur thermique
block.alloy-smelter.name = Fonderie d'alliage superchargé
block.mender.name = Mender
block.mend-projector.name = Projecteur soignant
block.surge-wall.name = mur superchargé
block.surge-wall-large.name = Grand mur superchargé
@@ -737,6 +772,7 @@ block.meltdown.name = Meltdown
block.container.name = Conteneur
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = Bleu
team.red.name = Rouge
team.orange.name = Orange
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = Ajouter/Enlever des joueurs
customgame = Partie personnalisée
newgame = New Game
none = <Vide>
minimap = Minimap
close = Fermer
quit = Quitter
maps = Cartes
@@ -182,6 +183,7 @@ map.delete.confirm = Êtes-vous sûr de vouloir effacer cette carte ? Cette acti
map.random = [accent]Carte aléatoire
map.nospawn = Cette carte ne possède pas de base pour que le joueur puisse apparaître !Ajouter un [ROYAL]base bleue[] sur cette carte dans l'éditeur.
map.nospawn.pvp = Cette carte ne contient aucune base ennemi dans lequel le joueur apparaît!\nAjoutez des bases[SCARLET] rouge[] à cette carte dans l'éditeur.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide.
editor.brush = Pinceau
editor.openin = Ouvrir dans l'éditeur
@@ -283,6 +285,7 @@ abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Zone conditions met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -333,63 +336,59 @@ no = Non
info.title = Info
error.title = [crimson]Une erreur s'est produite
error.crashtitle = Une erreur s'est produite
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Info sur le bloc
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Capacité d'énergie
blocks.powershot = Énergie/Tir
blocks.targetsair = Cible les unités aériennes
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Portée
blocks.size = Taille
blocks.liquidcapacity = Capacité en liquide
blocks.maxitemssecond = Production maximale
blocks.powerrange = Distance de transmission
blocks.poweruse = Énergie utilisée
blocks.powerdamage = Énergie/Dégâts
blocks.inputitemcapacity = Capacité d'entrée
blocks.outputitemcapacity = Capacité de sortie
blocks.itemcapacity = Stockage
blocks.basepowergeneration = Production d'énergie de base
blocks.powertransferspeed = Vitesse de transfert d'énergie
blocks.craftspeed = Vitesse de production
blocks.inputliquid = Liquide requis
blocks.inputliquidaux = Liquide optionnel
blocks.inputitem = Objet utilisé
blocks.inputitems = Objets utilisés
blocks.outputitem = Objet produit
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Forable
blocks.drillspeed = Vitesse de forage de base
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Liquide en sortie
blocks.liquidoutputspeed = Vitesse de sortie du liquide
blocks.liquiduse = Quantité de liquide utilisé
blocks.coolant = Liquide de refroidissement
blocks.liquid = Liquid
blocks.coolantuse = Quantité de liquide de refroidissement utilisé
blocks.inputliquidfuel = Carburant liquide
blocks.liquidfueluse = Quantité de carburant liquide utilisé
blocks.boostitem = Objet boostant la production
blocks.boostliquid = Liquide boostant la production
blocks.health = Santé
blocks.heat = Heat
blocks.power = Power
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
blocks.inaccuracy = Précision
blocks.shots = Tirs
blocks.reload = Tirs/Seconde
blocks.inputfuel = Carburant
blocks.fuelburntime = Durée du carburant
blocks.inputcapacity = Capacité d'entrée
blocks.outputcapacity = Capacité de sortie
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Liquid
bar.heat = Heat
bar.power = Power
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = Blocs
unit.powersecond = Énergie/seconde
unit.liquidsecond = Liquides/seconde
@@ -398,6 +397,9 @@ unit.liquidunits = Unité de liquide
unit.powerunits = Unité d'énergie
unit.degrees = degrés
unit.seconds = secondes
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = Objets
category.general = Général
category.power = Énergie
@@ -406,8 +408,10 @@ category.items = Objets
category.crafting = Fabrication
category.shooting = Défense
category.optional = Améliorations facultatives
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Indicateurs d'alliés
setting.autotarget.name = Visée automatique
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Afficher FPS
setting.vsync.name = VSync
setting.lasers.name = Afficher les rayons des lasers
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Montrer la minimap
setting.musicvol.name = Volume de la musique
setting.mutemusic.name = Couper la musique
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = Lutter contre d'autres joueurs pour gagner !
mode.attack.name = Attaque
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Objets
content.liquid.name = Liquides
content.unit.name = Unités
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Capacité de stockage: {0}
mech.minespeed = [LIGHT_GRAY]Vitesse de minage: {0}
mech.minepower = [LIGHT_GRAY]Puissance du minage: {0}
mech.ability = [LIGHT_GRAY]Compétence: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique {0}
liquid.viscosity = [LIGHT_GRAY]Viscosité: {0}
liquid.temperature = [LIGHT_GRAY]Température: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Foreuse à explosion
block.thermal-pump.name = Pompe thermique
block.thermal-generator.name = Générateur thermique
block.alloy-smelter.name = Fonderie d'alliage superchargé
block.mender.name = Mender
block.mend-projector.name = Projecteur soignant
block.surge-wall.name = Mur superchargé
block.surge-wall-large.name = Grand mur superchargé
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Conteneur
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = Bleu
team.red.name = Rouge
team.orange.name = Orange
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = Tambah/Hapus Pemain
customgame = Game Bebas
newgame = New Game
none = <kosong>
minimap = Minimap
close = Tutup
quit = Keluar
maps = Peta
@@ -182,6 +183,7 @@ map.delete.confirm = Are you sure you want to delete this map? This action canno
map.random = [accent]Random Map
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.
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.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Error loading map: corrupted or invalid map file.
editor.brush = Brush
editor.openin = Open In Editor
@@ -283,6 +285,7 @@ abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Zone conditions met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -333,63 +336,59 @@ no = No
info.title = [accent]Info
error.title = [crimson]Telah terjadi kesalahan
error.crashtitle = Telah terjadi kesalahan
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Info Blok
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Kapasitas Tenaga
blocks.powershot = Tenaga/tembakan
blocks.targetsair = Targets Air
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Range
blocks.size = Ukuran
blocks.liquidcapacity = Kapasitas cairan
blocks.maxitemssecond = Batas barang/detik
blocks.powerrange = Jangkauan tenaga
blocks.poweruse = Power Use
blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Input Item Capacity
blocks.outputitemcapacity = Input Item Capacity
blocks.itemcapacity = Kapasitas Barang
blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Power Transfer
blocks.craftspeed = Production Speed
blocks.inputliquid = Cairan yang Masuk
blocks.inputliquidaux = Aux Liquid
blocks.inputitem = Barang yang Masuk
blocks.inputitems = Input Items
blocks.outputitem = Output Item
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Drillables
blocks.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Liquid Output
blocks.liquidoutputspeed = Liquid Output Speed
blocks.liquiduse = Liquid Use
blocks.coolant = Coolant
blocks.liquid = Liquid
blocks.coolantuse = Coolant Use
blocks.inputliquidfuel = Fuel Liquid
blocks.liquidfueluse = Liquid Fuel Use
blocks.boostitem = Boost Item
blocks.boostliquid = Boost Liquid
blocks.health = Darah
blocks.heat = Heat
blocks.power = Power
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
blocks.inaccuracy = Ketidaktelitian
blocks.shots = Tembakan
blocks.reload = Reload
blocks.inputfuel = Fuel
blocks.fuelburntime = Fuel Burn Time
blocks.inputcapacity = Kapasitas masuk
blocks.outputcapacity = Kapasitas keluar
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Liquid
bar.heat = Heat
bar.power = Power
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = blocks
unit.powersecond = power units/second
unit.liquidsecond = liquid units/second
@@ -398,6 +397,9 @@ unit.liquidunits = liquid units
unit.powerunits = power units
unit.degrees = degrees
unit.seconds = seconds
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = items
category.general = General
category.power = Power
@@ -406,8 +408,10 @@ category.items = Items
category.crafting = Crafting
category.shooting = Shooting
category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Target
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Tunjukkan FPS
setting.vsync.name = VSync
setting.lasers.name = Tampilkan Laser Tenaga
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Show Minimap
setting.musicvol.name = Volume Musik
setting.mutemusic.name = Bisukan Musik
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = fight against other players locally.
mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Items
content.liquid.name = Liquids
content.unit.name = Units
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {0}
mech.minespeed = [LIGHT_GRAY]Mining Speed: {0}
mech.minepower = [LIGHT_GRAY]Mining Power: {0}
mech.ability = [LIGHT_GRAY]Ability: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
liquid.temperature = [LIGHT_GRAY]Temperature: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Blast Drill
block.thermal-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smtler
block.mender.name = Mender
block.mend-projector.name = Mend Projector
block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = blue
team.red.name = red
team.orange.name = orange
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = Aggiungi/rimuovi giocatori
customgame = Gioco personalizzato
newgame = New Game
none = <Niente . . . >
minimap = Minimap
close = Chiuso
quit = Esci
maps = Mappe
@@ -182,6 +183,7 @@ map.delete.confirm = Sei sicuro di voler eliminare questa mappa? Non potrai torn
map.random = [accent]Mappa casuale
map.nospawn = Questa mappa non possiede un nucleo dove spawnare! Aggiungine uno nell'editor.
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.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Errore nel caricamento della mappa: file mappa corrotto o non valido.
editor.brush = Pennello
editor.openin = Apri nell'editor
@@ -283,6 +285,7 @@ abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Zone conditions met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -333,63 +336,59 @@ no = No
info.title = [accent] Info
error.title = [crimson]Si è verificato un errore
error.crashtitle = Si è verificato un errore
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = info sul blocco
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Capacità Energetica
blocks.powershot = Danno/Colpo
blocks.targetsair = Attacca nemici aerei
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Raggio
blocks.size = Grandezza
blocks.liquidcapacity = Capacità del liquido
blocks.maxitemssecond = Oggetti massimi/secondo
blocks.powerrange = Raggio Energia
blocks.poweruse = Utilizzo energia
blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Capacità oggetti in entrata
blocks.outputitemcapacity = Capacità oggetti in uscità
blocks.itemcapacity = Capacità
blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Velocità trasferimento energia
blocks.craftspeed = Velocità produzione
blocks.inputliquid = Input del liquido
blocks.inputliquidaux = Liquidi extra
blocks.inputitem = Input Oggetto
blocks.inputitems = Oggetti in entrata
blocks.outputitem = Oggetti in uscita
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Scavabili
blocks.drillspeed = Velocità scavo stbile
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Uscita liquidi
blocks.liquidoutputspeed = Liquid Output Speed
blocks.liquiduse = Uso liquidi
blocks.coolant = Refrigerante
blocks.liquid = Liquid
blocks.coolantuse = uso refrigerante
blocks.inputliquidfuel = carburante liquido
blocks.liquidfueluse = Utilizzo carburante liquido
blocks.boostitem = Boost Item
blocks.boostliquid = Boost Liquid
blocks.health = Salute
blocks.heat = Heat
blocks.power = Power
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
blocks.inaccuracy = Inaccuratezza
blocks.shots = Colpi
blocks.reload = Ricarica
blocks.inputfuel = Carburante
blocks.fuelburntime = Tempo combustione carburante
blocks.inputcapacity = Capacità di ingresso
blocks.outputcapacity = Capacità di uscita
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Liquid
bar.heat = Heat
bar.power = Power
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = blocchi
unit.powersecond = unità energia/secondo
unit.liquidsecond = unità liquide/secondo
@@ -398,6 +397,9 @@ unit.liquidunits = unità liquidi
unit.powerunits = unità energia
unit.degrees = gradi
unit.seconds = secondi
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = oggetti
category.general = Generali
category.power = Energia
@@ -406,8 +408,10 @@ category.items = Oggetti
category.crafting = Produzione
category.shooting = Potenza di fuoco
category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Target
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Mostra FPS
setting.vsync.name = VSync
setting.lasers.name = Mostra Laser Energetici
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Mostra minimappa
setting.musicvol.name = Volume Musica
setting.mutemusic.name = Silenzia musica
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = fight against other players locally.
mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Oggetti
content.liquid.name = Liquidi
content.unit.name = Units
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Capacità oggetti: {0}
mech.minespeed = [LIGHT_GRAY]Velocità di scavo: {0}
mech.minepower = [LIGHT_GRAY]Potenza di scavo: {0}
mech.ability = [LIGHT_GRAY]Abilità: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacità calorifica: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosità: {0}
liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Blast Drill
block.thermal-pump.name = Pompa termica
block.thermal-generator.name = Generatore termico
block.alloy-smelter.name = Altoforno
block.mender.name = Mender
block.mend-projector.name = Riparatore
block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = blue
team.red.name = red
team.orange.name = orange
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = プレイヤーを追加/削除
customgame = カスタムゲーム
newgame = 新しいゲーム
none = <なし>
minimap = Minimap
close = 閉じる
quit = 終了
maps = マップ
@@ -182,6 +183,7 @@ map.delete.confirm = マップを削除してもよろしいですか? これは
map.random = [accent]ランダムマップ
map.nospawn = このマップにはスポーンするためのプレイヤーのコアがありません! [ROYAL]青い[]コアをエディターでマップに追加してください。
map.nospawn.pvp = このマップには敵がスポーンするためのプレイヤーのコアがありません! [SCARLET]赤い[]コアをエディターでマップに追加してください。
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = マップの読み込みエラー: ファイルが無効、または破損しています。
editor.brush = ブラシ
editor.openin = エディターで開く
@@ -283,6 +285,7 @@ abandon = 撤退
abandon.text = このゾーンとすべての資源が敵に奪われます。
locked = ロック
complete = [LIGHT_GRAY]完了:
zone.requirement = Wave {0} in zone {1}
resume = 再開ゾーン:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]最高ウェーブ: {0}
launch = 出撃
@@ -294,7 +297,7 @@ uncover = 開拓
configure = 積荷の設定
configure.locked = [LIGHT_GRAY]ウェーブ {0} を達成すると積荷を設定できるようになります。
zone.unlocked = [LIGHT_GRAY]{0} がアンロックされました.
zone.complete = ゾーンの条件が達成されました。
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = ウェーブ {0} を達成:\n積荷の設定が解除されました。
zone.resources = 発見した資源:
add = 追加...
@@ -333,63 +336,59 @@ no = いいえ
info.title = 情報
error.title = [crimson]エラーが発生しました
error.crashtitle = エラーが発生しました
blocks.outputspeed = 採掘速度: {0}/秒
blocks.efficiency = 効率: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = ブロック情報
blocks.powerbalance = 電力: {0}
blocks.poweroutput = 電力発電量: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = 電力容量
blocks.powershot = 電力/ショット
blocks.targetsair = 対空攻撃
blocks.targetsground = 対地攻撃
blocks.items = アイテム: {0}
blocks.itemsmoved = 輸送速度
blocks.launchtime = Time Between Launches
blocks.shootrange = 範囲
blocks.size = 大きさ
blocks.liquidcapacity = 液体容量
blocks.maxitemssecond = 最大アイテム量
blocks.powerrange = 電力範囲
blocks.poweruse = 電力使用量
blocks.powerdamage = 電力/ダメージ
blocks.inputitemcapacity = 搬入アイテム容量
blocks.outputitemcapacity = 搬出アイテム容量
blocks.itemcapacity = アイテム容量
blocks.basepowergeneration = 基本発電量
blocks.powertransferspeed = 電力伝送量
blocks.craftspeed = 生産速度
blocks.inputliquid = 必要な液体
blocks.inputliquidaux = 補助液
blocks.inputitem = 必要なアイテム
blocks.inputitems = 必要なアイテム
blocks.outputitem = 搬出アイテム
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = ドリル
blocks.drillspeed = 基本採掘速度
blocks.boosteffect = Boost Effect
blocks.maxunits = 最大ユニット数
blocks.liquidoutput = 搬出液体
blocks.liquidoutputspeed = 液体搬出速度
blocks.liquiduse = 液体使用量
blocks.coolant = 冷却
blocks.liquid = 液体
blocks.coolantuse = 冷却使用量
blocks.inputliquidfuel = 液体燃料
blocks.liquidfueluse = 液体燃料使用量
blocks.boostitem = 加速アイテム
blocks.boostliquid = 加速液体
blocks.health = 耐久値
blocks.heat = 熱
blocks.power = 電力
blocks.progress = 建設状況
blocks.spawned = ユニット数: {0}/{1}
blocks.power.satisfaction = 電力需要
blocks.inaccuracy = 精度のずれ
blocks.shots = ショット
blocks.reload = ショット/秒
blocks.inputfuel = 燃料
blocks.fuelburntime = 燃焼時間
blocks.inputcapacity = 搬入容量
blocks.outputcapacity = 搬出容量
blocks.ammo = 弾薬
bar.drillspeed = 採掘速度: {0}/秒
bar.efficiency = 効率: {0}%
bar.powerbalance = 電力: {0}
bar.poweramount = Power: {0}
bar.poweroutput = 電力発電量: {0}
bar.items = アイテム: {0}
bar.liquid = 液体
bar.heat = 熱
bar.power = 電力
bar.progress = 建設状況
bar.spawned = ユニット数: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = ブロック
unit.powersecond = 電力/秒
unit.liquidsecond = 液体/秒
@@ -398,6 +397,9 @@ unit.liquidunits = 液体
unit.powerunits = 電力
unit.degrees = 度
unit.seconds = 秒
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = アイテム
category.general = 一般
category.power = 電力
@@ -406,8 +408,10 @@ category.items = アイテム
category.crafting = 製作速度
category.shooting = 攻撃速度
category.optional = 機能強化オプション
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = 水のアニメーション
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = 味方の方角表示
setting.autotarget.name = 自動ターゲット
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = FPSを表示
setting.vsync.name = VSync
setting.lasers.name = 電力レーザーを表示
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = ミニマップを表示
setting.musicvol.name = 音楽 音量
setting.mutemusic.name = 音楽をミュート
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = ローカル内で他のプレイヤーと戦います。
mode.attack.name = アタック
mode.attack.description = ウェーブがなく、敵の基地を破壊することを目指します。
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = アイテム
content.liquid.name = 液体
content.unit.name = ユニット
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]アイテム容量: {0}
mech.minespeed = [LIGHT_GRAY]採掘速度: {0}
mech.minepower = [LIGHT_GRAY]採掘性能: {0}
mech.ability = [LIGHT_GRAY]能力: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]熱容量: {0}
liquid.viscosity = [LIGHT_GRAY]粘度: {0}
liquid.temperature = [LIGHT_GRAY]温度: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = エアブラストドリル
block.thermal-pump.name = サーマルポンプ
block.thermal-generator.name = サーマル発電機
block.alloy-smelter.name = 合金溶鉱炉
block.mender.name = Mender
block.mend-projector.name = 修復プロジェクター
block.surge-wall.name = サージの壁
block.surge-wall-large.name = 大きなサージの壁
@@ -737,6 +759,7 @@ block.meltdown.name = メルトダウン
block.container.name = コンテナー
block.launch-pad.name = 出撃パッド
block.launch-pad.description = コアの出撃不要で多くのアイテムを脱出します。これは未完成です。
block.launch-pad-large.name = Large Launch Pad
team.blue.name = ブルー
team.red.name = レッド
team.orange.name = オレンジ
+109 -74
View File
@@ -14,24 +14,27 @@ screenshot = 화면 캡쳐가 {0} 경로에 저장되었습니다.
gameover = 게임 오버
gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
highscore = [accent]최고점수 달성!
stat.wave = 웨이브 성공:[accent]{0}
stat.enemiesDestroyed = 파괴한 적 수:[accent]{0}
stat.built = 건설한 건물 수:[accent]{0}
stat.destroyed = 파괴된 건물 수:[accent]{0}
stat.deconstructed = 해체한 건물 수:[accent]{0}
stat.deconstructed = 파괴한 건물 수:[accent]{0}
stat.delivered = 획득한 자원:
stat.rank = 최종 기록: [accent]{0}
placeline = You have selected a block.\nYou can[accent] place in a line[] by[accent] holding down your finger for a few seconds[] and dragging in a direction.\nTry it.
removearea = You have selected removal mode.\nYou can[accent] remove blocks in a rectangle[] by[accent] holding down your finger for a few seconds[] and dragging.\nTry it.
launcheditems = [accent]Launched Items
placeline = 블록을 선택하셨습니다.\n][accent]몇초간 설치 시작지점을 누르고[] 원하는 방향을 향해 드래그 하면 [accent]일렬로[] 설치할 수 있습니다.\n한번 해 보세요.
removearea = 블록 제거모드를 선택하셨습니다.\n[accent]몇초간 제거 시작지점을 누르고[] 원하는 구역 끝을 향해 드래그 하면 [accent]직사각형[] 안에 있는 모든 건물을 제거할 수 있습니다.\n한번 해 보세요.
launcheditems = [accent]출격 아이템
map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까?\n
level.highscore = 최고 점수: [accent]{0}
level.select = 맵 선택
level.mode = 게임 모드 :
showagain = 다음 세션에서 이 메세지를 표시하지 않습니다
coreattack = < 코어가 공격받고 있습니다! >
nearpoint = [[ [scarlet]드롭 지점에서 나가세요[] ]\n모든 유닛 및 건물 파괴 임박
outofbounds = [[ 출입 금지 구역 ]\n[]{0}초후 건물이 해체됩니다.
nearpoint = [[ [scarlet]드롭 지점에서 나가세요[] ]\n적 스폰시 건물 및 유닛 파괴
outofbounds = [[ 출입 금지 구역 ]\n[]{0}초후 유닛이 파괴됩니다.
database = 코어 데이터베이스
savegame = 게임 저장
loadgame = 게임 불러오기
@@ -40,6 +43,7 @@ addplayers = 플레이어 추가/제거
customgame = 커스텀 게임
newgame = 새 게임
none = <없음>
minimap = 미니맵
close = 닫기
quit = 나가기
maps = 맵
@@ -181,7 +185,8 @@ builtin = 기본맵
map.delete.confirm = 이 맵을 삭제하시겠습니까? 이 명령은 취소할 수 없습니다!
map.random = [accent]랜덤 맵
map.nospawn = 이 맵에 플레이어가 스폰 할 코어가 없습니다! 맵 편집기에서 [ROYAL]파란색[]코어를 맵에 추가하세요.
map.nospawn.pvp = 이 맵에는 적팀 코어가 없습니다! 에디터에서 [SCARLET]빨간팀[] 코어를 추가하세요.
map.nospawn.pvp = 이 맵에는 적팀 코어가 없습니다! 에디터에서 [SCARLET]파란색 팀이 아닌[] 코어를 추가하세요.
map.nospawn.attack = 이 맵에는 플레이어가 공격할 수 있는 적의 코어가 없습니다! 에디터에서 [SCARLET] 빨간팀[] 코어를 맵에 추가하세요.
map.invalid = 파일이 잘못되었거나 손상되어 맵을 열 수 없습니다.
editor.brush = 브러쉬
editor.openin = 편집기 열기
@@ -199,12 +204,12 @@ waves.waves = 웨이브마다
waves.perspawn = 스폰.
waves.to = 부터
waves.boss = 이 몹은 보스임.
waves.preview = Preview
waves.edit = Edit...
waves.copy = Copy to Clipboard
waves.load = Load from Clipboard
waves.invalid = Invalid waves in clipboard.
waves.copied = Waves copied.
waves.preview = 미리보기
waves.edit = 편집...
waves.copy = 클립보드로 복사
waves.load = 클립보드에서 불러오기
waves.invalid = 클립보드의 잘못된 웨이브 데이터
waves.copied = 웨이브 복사됨
editor.default = [LIGHT_GRAY]<기본값>
edit = 편집...
editor.name = 이름:
@@ -214,7 +219,7 @@ editor.errorload = [accent]{0} 파일을 불러오는데 실패했습니다.
editor.errorsave = [accent]{0} 파일을 저장하는데 실패했습니다.
editor.errorname = 맵에 이름이 지정되어 있지 않습니다.
editor.update = 업데이트
editor.randomize = Randomize
editor.randomize = 랜덤
editor.apply = 적용
editor.generate = 생성
editor.resize = 맵 크기조정
@@ -279,10 +284,12 @@ tutorial = 게임 방법
editor = 편집기
mapeditor = 맵 편집기
donate = 기부
abandon = 버리기
abandon = 포기
abandon.text = 이 구역과 모든 자원이 적에게 빼앗길 것입니다.
locked = 잠김
complete = [LIGHT_GRAY]완료:
zone.requirement = 지역 {1} 에서 웨이브 {0} 달성
resume = 지역 계속 플레이:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]최고 점수: {0}
launch = < 출격 >
@@ -294,11 +301,12 @@ uncover = 털어넣기
configure = 로드아웃 설정
configure.locked = {0} 단계에서 로드아웃을 설정할 수 있음.
zone.unlocked = [LIGHT_GRAY] 잠금 해제됨.
zone.complete = 지역 조건이 충족됨.
zone.requirement.complete = 웨이브 {0} 달성:\n{1} 지역 요구사항이 충족됨.
zone.config.complete = 웨이브 {0} 달성:\n로드아웃 설정 잠금 해제됨.
zone.resources = 자원 감지됨:
add = 추가...
boss.health = 보스 체력
connectfail = [crimson]{0}[accent] 서버에 연결하지 못했습니다.[]
error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요?
error.invalidaddress = 잘못된 주소입니다.
@@ -308,6 +316,7 @@ error.alreadyconnected = 이미 접속중입니다.
error.mapnotfound = 맵 파일을 찾을 수 없습니다!
error.io = 네트워크 I/O 오류.
error.any = 알 수 없는 네트워크 오류.
zone.groundZero.name = 그라운드 제로
zone.craters.name = 분화구
zone.frozenForest.name = 얼어붙은 숲
@@ -315,6 +324,7 @@ zone.ruinousShores.name = 파멸의 기슭
zone.stainedMountains.name = 얼룩진 산맥
zone.desolateRift.name = 황량한 강
zone.nuclearComplex.name = 핵 생산 단지
settings.language = 언어
settings.reset = 설정 초기화
settings.rebind = 키 재설정
@@ -333,63 +343,60 @@ no = 아니오
info.title = [accent]정보
error.title = [crimson]오류가 발생했습니다.
error.crashtitle = 오류가 발생했습니다.
blocks.outputspeed = 채광 속도: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = 블록 정보
blocks.powerbalance = 전력: {0}
blocks.poweroutput = 전력 출력: {0}
blocks.input = 입력
blocks.output = 출력
blocks.booster = 가속
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = 전력 용량
blocks.powershot = 1발당 전력 소모량
blocks.targetsair = 공중공격 가능
blocks.targetsground = 지상공격 가능
blocks.items = Items: {0}
blocks.itemsmoved = 이동 속도
blocks.launchtime = 출격 시간
blocks.shootrange = 사거리
blocks.size = 크기
blocks.liquidcapacity = 액체 용량
blocks.maxitemssecond = 아이템 보관량
blocks.powerrange = 전력 범위
blocks.poweruse = 전력 사용
blocks.powerdamage = 전력/데미지
blocks.inputitemcapacity = 입력 아이템 용량
blocks.outputitemcapacity = 출력 아이템 용량
blocks.itemcapacity = 저장 용량
blocks.basepowergeneration = 기지 전력 생성기
blocks.powertransferspeed = 전력 전송량
blocks.craftspeed = 생산 속도
blocks.inputliquid = 사용되는 액체
blocks.inputliquidaux = 보조 액체
blocks.inputitem = 사용되는 아이템
blocks.inputitems = 사용되는 아이템들
blocks.outputitem = 출력 아이템
blocks.basepowergeneration = 기본 전력 생성량
blocks.productiontime = 제작 시간
blocks.repairtime = 전체 블록 수리시간
blocks.speedincrease = 속도 증가
blocks.range = 사거리
blocks.drilltier = 드릴
blocks.drillspeed = 기본 드릴 속도
blocks.boosteffect = 가속 효과
blocks.maxunits = 최대 활성유닛
blocks.liquidoutput = 액체 출력
blocks.liquidoutputspeed = 액체 출력속도
blocks.liquiduse = 액체 사용량
blocks.coolant = 냉각제
blocks.liquid = 액체
blocks.coolantuse = 냉각제 사용
blocks.inputliquidfuel = 연료 액
blocks.liquidfueluse = 액체 연료 사용
blocks.boostitem = 가속 아이템
blocks.boostliquid = 가속 액체
blocks.health = 체력
blocks.heat = 발열
blocks.power = 전력
blocks.progress = 건설 진행
blocks.spawned = 유닛: {0}/{1}
blocks.power.satisfaction = 전력 만족도
blocks.inaccuracy = 오차각
blocks.shots = 발포 횟수
blocks.reload = 재장전
blocks.inputfuel = 연료
blocks.fuelburntime = 연료 연소 시간
blocks.inputcapacity = 입력 용량
blocks.outputcapacity = 출력 용량
blocks.ammo = 탄약
bar.outputspeed = 채광 속도: {0}/s
bar.efficiency = 효율성: {0}%
bar.powerbalance = 전력: {0}/s
bar.poweroutput = 전력 출력: {0}
bar.items = 아이템: {0}
bar.liquid = 액체
bar.heat = 발열
bar.power = 전력
bar.progress = 건설 진행
bar.spawned = 유닛: {0}/{1}
bullet.damage = [stat]{0}[lightgray] 데미지
bullet.splashdamage = [stat]{0}[lightgray] area 데미지 ~[stat] {1}[lightgray] 타일
bullet.incendiary = [stat]방화
bullet.homing = [stat]유도탄
bullet.shock = [stat]충격탄
bullet.frag = [stat]파편
bullet.knockback = [stat]{0}[lightgray] 넉백
bullet.freezing = [stat]동결
bullet.tarred = [stat]타르
bullet.multiplier = [stat]{0}[lightgray]x 탄약 배율
bullet.reload = [stat]{0}[lightgray]x 사격 속도
unit.blocks = 블록
unit.powersecond = 전력/초
unit.liquidsecond = 액체/초
@@ -398,6 +405,9 @@ unit.liquidunits = 액체
unit.powerunits = 전력
unit.degrees = 도
unit.seconds = 초
unit.persecond = /초
unit.timesspeed = x 배
unit.percent = %
unit.items = 아이템
category.general = 일반
category.power = 전력
@@ -406,15 +416,17 @@ category.items = 아이템
category.crafting = 제작
category.shooting = 사격
category.optional = 보조 아이템
setting.shadows.name = Shadows
setting.landscape.name = 가로화면으로 고정
setting.shadows.name = 그림자
setting.animatedwater.name = 움직이는 물
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.animatedshields.name = 움직이는 보호막
setting.antialias.name = 안티 에일리어싱[LIGHT_GRAY] (재시작 필요)[]
setting.indicators.name = 아군/적 인디게이터 표시
setting.autotarget.name = 자동 조준
setting.fpscap.name = 최대 FPS
setting.fpscap.none = 없음
setting.fpscap.text = FPS
setting.swapdiagonal.name = Always Diagonal Placement
setting.fpscap.text = {0}FPS
setting.swapdiagonal.name = 항상 대각선 설치
setting.difficulty.training = 훈련
setting.difficulty.easy = 쉬움
setting.difficulty.normal = 보통
@@ -427,10 +439,11 @@ setting.sensitivity.name = 컨트롤러 감도
setting.saveinterval.name = 자동저장 간격
setting.seconds = 초
setting.fullscreen.name = 전체 화면
setting.borderless.name = Borderless Window
setting.borderless.name = 테두리 없는 창모드
setting.fps.name = FPS 표시
setting.vsync.name = VSync 활성화
setting.lasers.name = 전력 노드 레이저 표시
setting.pixelate.name = 픽셀화 [LIGHT_GRAY](게임 성능이 감소할 수 있습니다)
setting.minimap.name = 미니맵 보기
setting.musicvol.name = 음악 크기
setting.mutemusic.name = 음소거
@@ -452,7 +465,7 @@ keybind.screenshot.name = 맵 스크린샷
keybind.move_x.name = 오른쪽/왼쪽 이동
keybind.move_y.name = 위 / 아래 중간
keybind.select.name = 선택
keybind.diagonal_placement.name = Diagonal Placement
keybind.diagonal_placement.name = 대각선 설치
keybind.pick.name = 블록 선택
keybind.break_block.name = 블록 파괴
keybind.deselect.name = 선택해제
@@ -483,6 +496,23 @@ mode.pvp.name = PvP
mode.pvp.description = 실제 플레이어와 PvP를 합니다.
mode.attack.name = 공격
mode.attack.description = 일정 시간마다 적이 오는 단계가 없으며, 적의 기지를 파괴하는 것을 목표로 합니다.
mode.custom = 커스텀 규칙
rules.infiniteresources = 무한 자원
rules.wavetimer = 웨이브 타이머
rules.waves = 웨이브
rules.enemyCheat = 무한 AI 자원
rules.pvp = PvP
rules.unitdrops = 유닛 드롭
rules.unitbuildspeedmultiplier = 유닛 생산속도 배수
rules.unithealthmultiplier = 유닛 체력 배수
rules.playerdamagemultiplier = 플레이어 공격력 배수
rules.enemycorebuildradius = 적 코어 건설 금지구역:[LIGHT_GRAY] (타일)
rules.respawntime = 리스폰 시간:[LIGHT_GRAY] (초)
rules.wavespacing = 웨이브 간격:[LIGHT_GRAY] (초)
rules.buildcostmultiplier = 건설 소모 배율
rules.buildspeedmultiplier = 건설 속도 배율
content.item.name = 아이템
content.liquid.name = 액체
content.unit.name = 유닛
@@ -525,7 +555,7 @@ liquid.oil.name = 석유
liquid.cryofluid.name = 냉각유체
mech.alpha-mech.name = 알파
mech.alpha-mech.weapon = 중무장 소총
mech.alpha-mech.ability = 없음
mech.alpha-mech.ability = 회복
mech.alpha-mech.description = 표준 기체.\n적절한 속도와 공격력을 갖추고 있습니다.
mech.delta-mech.name = 델타
mech.delta-mech.weapon = 전격 생산기
@@ -560,19 +590,21 @@ unit.speed = [LIGHT_GRAY]속도: {0}
mech.weapon = [LIGHT_GRAY]무기: {0}
mech.health = [LIGHT_GRAY]체력: {0}
mech.itemcapacity = [LIGHT_GRAY]아이템 수용 용량: {0}
mech.minespeed = [LIGHT_GRAY]채광 속도: {0}
mech.minespeed = [LIGHT_GRAY]채광 속도: {0}%
mech.minepower = [LIGHT_GRAY]채광 레벨: {0}
mech.ability = [LIGHT_GRAY]능력: {0}
mech.buildspeed = [LIGHT_GRAY]건설 속도: {0}%
liquid.heatcapacity = [LIGHT_GRAY]발열 용량: {0}
liquid.viscosity = [LIGHT_GRAY]점도: {0}
liquid.temperature = [LIGHT_GRAY]온도: {0}
block.grass.name = 잔디
block.salt.name = 소금
block.sandrocks.name = 모래 바위
block.spore-pine.name = 포자 소나무
block.sporerocks.name = 포자 바위
block.rock.name = 바위
block.snowrock.name = Snow Rock
block.snowrock.name = 눈바위
block.shale.name = 이판암
block.shale-boulder.name = 둥근 이판암
block.moss.name = 이끼
@@ -589,22 +621,22 @@ block.graphite-press.name = 흑연 압축기
block.multi-press.name = 다중 압축기
block.constructing = {0} [LIGHT_GRAY](만드는중)
block.spawn.name = 적 스폰지점
block.core-shard.name = 코어: 공유
block.core-foundation.name = 코어: 기초
block.core-nucleus.name = 코어: 핵
block.core-shard.name = 코어-공유
block.core-foundation.name = 코어-기초
block.core-nucleus.name = 코어-핵
block.deepwater.name = 깊은물
block.water.name = 물
block.tainted-water.name = Tainted Water
block.darksand-tainted-water.name = Dark Sand Tainted Water
block.tainted-water.name = 도색된 물
block.darksand-tainted-water.name = 검은 모래로 도색된 물
block.tar.name = 타르
block.stone.name = 돌
block.sand.name = 모래
block.darksand.name = Dark Sand
block.darksand.name = 검은 모래
block.ice.name = 얼음
block.snow.name = 눈
block.craters.name = 크레이터
block.sand-water.name = 젖은모래
block.darksand-water.name = Dark Sand Water
block.darksand-water.name = 검은모래물
block.char.name = 숯
block.holostone.name = 홀로스톤
block.ice-snow.name = 얼음눈
@@ -636,8 +668,8 @@ block.thorium-wall-large.name = 대형 토륨벽
block.door.name = 문
block.door-large.name = 대형문
block.duo.name = 듀오
block.scorch.name = Scorch
block.scatter.name = Scatter
block.scorch.name = 스코어치
block.scatter.name = 스캐터
block.hail.name = 헤일
block.lancer.name = 랜서
block.conveyor.name = 컨베이어
@@ -665,7 +697,7 @@ block.battery-large.name = 대형 배터리
block.combustion-generator.name = 화력 발전기
block.turbine-generator.name = 터빈 발전기
block.differential-generator.name = 차동 발전기
block.impact-reactor.name = 충격 반응기
block.impact-reactor.name = 핵융합로
block.mechanical-drill.name = 기계 드릴
block.pneumatic-drill.name = 강철 드릴
block.laser-drill.name = 레이저 드릴
@@ -722,6 +754,7 @@ block.blast-drill.name = 압축 공기분사 드릴
block.thermal-pump.name = 화력 펌프
block.thermal-generator.name = 열발전기
block.alloy-smelter.name = 서지 합금 제련소
block.mender.name = 멘더
block.mend-projector.name = 수리 프로젝터
block.surge-wall.name = 서지 합금벽
block.surge-wall-large.name = 큰 서지 합금벽
@@ -737,6 +770,7 @@ block.meltdown.name = 멜트다운
block.container.name = 컨테이너
block.launch-pad.name = 발사대
block.launch-pad.description = 출격할 필요 없이 아이템을 수송시킵시다. 미완성.
block.launch-pad-large.name = 큰 출격 패드
team.blue.name = 블루팀
team.red.name = 레드팀
team.orange.name = 오렌지팀
@@ -821,7 +855,7 @@ block.silicon-smelter.description = 고순도 석탄으로 모래를 줄여 실
block.plastanium-compressor.description = 석유와 티타늄으로 플라스타늄을 생산합니다.
block.phase-weaver.description = 방사능 토륨과 많은 량의 모래에서 상직물을 생산합니다.
block.alloy-smelter.description = 티타늄, 납, 실리콘, 구리로부터 서지 합금을 생산합니다.
block.pulverizer.description = 모래로 돌을 부숩니다. 천연 모래가 부족할 때 유용합니다.
block.pulverizer.description = 모래로 을 부숩니다. 천연 모래가 부족할 때 유용합니다.
block.pyratite-mixer.description = 석탄, 납, 모래를 가연성이 높은 피라타이트로 만듭니다.
block.blast-mixer.description = 기름을 사용하여 피라타이트를 인화성은 떨어지지만 폭발성은 높은 폭발성 화합물로 변환시킵니다.
block.cryofluidmixer.description = 물과 티타늄을 냉각에 훨씬 더 효과적인 냉동액으로 결합시킵니다.
@@ -841,7 +875,7 @@ block.solar-panel-large.description = 일반 태양 전지판보다 훨씬 나
block.thorium-reactor.description = 고방사능 토륨으로부터 막대한 양의 전력을 발생시킵니다. 지속적인 냉각이 필요하며 냉각제의 양이 부족하면 크게 폭발합니다. 전력 출력은 최대 용량에서 기본 전력을 발생시키는 완전성에 따라 결정됩니다.
block.rtg-generator.description = 냉각은 필요 없지만 토륨 원자로에 비해 전력을 적게 공급하는 방사성 동위원소 열전 발생기.
block.unloader.description = 컨테이너, 금고 또는 코어에서 인접한 블록으로 아이템을 출하합니다. 출하시킬 아이템의 종류는 언로더를 눌러 지정할 수 있습니다.
block.container.description = 각종 소량의 자원을 저장할 수 있습니다.[LIGHT_GRAY언로더[]를 사용하여 컨테이너에서 물건을 회수할 수 있습니다.
block.container.description = 각종 소량의 자원을 저장할 수 있습니다.[LIGHT_GRAY]언로더[]를 사용하여 컨테이너에서 물건을 회수할 수 있습니다.
block.vault.description = 각종 대량의 자원을 저장할 수 있습니다.[LIGHT_GRAY]언로더[]를 사용하여 금고에서 물건을 회수할 수 있습니다.
block.mechanical-drill.description = 싸구려 드릴. 적절한 타일 위에 놓였을때 매우 느린 속도로 계속 출력합니다.
block.pneumatic-drill.description = 기압을 이용하여 보다 빠르고 단단한 물질을 채광할 수 있는 향상된 드릴.
@@ -862,6 +896,7 @@ block.wraith-factory.description = 빠른 뺑소니 요격기 유닛을 생산
block.ghoul-factory.description = 중탄두 폭격기를 생산합니다.
block.dagger-factory.description = 기본 지상 유닛을 생산합니다.
block.titan-factory.description = 첨단 장갑 지상부대를 생산합니다.
block.fortress-factory.description = 중대포 지상부대를 생산합니다.
block.revenant-factory.description = 중량의 레이저 포대를 가진 공중부대를 생산합니다.
block.repair-point.description = 주변에서 가장 가까운 손상된 유닛을 지속적으로 치료합니다.
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = Add/Remove Players
customgame = Custom Game
newgame = New Game
none = <none>
minimap = Minimap
close = Close
quit = Quit
maps = Maps
@@ -182,6 +183,7 @@ map.delete.confirm = Are you sure you want to delete this map? This action canno
map.random = [accent]Random Map
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.
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.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Error loading map: corrupted or invalid map file.
editor.brush = Brush
editor.openin = Open In Editor
@@ -283,6 +285,7 @@ abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best Wave: {0}
launch = < LAUNCH >
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Wave {0} reached:\nNew zone requirements met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -333,63 +336,59 @@ no = No
info.title = Info
error.title = [crimson]An error has occured
error.crashtitle = An error has occured
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Block Info
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Power Capacity
blocks.powershot = Power/Shot
blocks.targetsair = Targets Air
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Range
blocks.size = Size
blocks.liquidcapacity = Liquid Capacity
blocks.maxitemssecond = Max Items
blocks.powerrange = Power Range
blocks.poweruse = Power Use
blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Input Item Capacity
blocks.outputitemcapacity = Output Item Capacity
blocks.itemcapacity = Item Capacity
blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Power Transfer
blocks.craftspeed = Production Speed
blocks.inputliquid = Input Liquid
blocks.inputliquidaux = Aux Liquid
blocks.inputitem = Input Item
blocks.inputitems = Input Items
blocks.outputitem = Output Item
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Drillables
blocks.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Liquid Output
blocks.liquidoutputspeed = Liquid Output Speed
blocks.liquiduse = Liquid Use
blocks.coolant = Coolant
blocks.liquid = Liquid
blocks.coolantuse = Coolant Use
blocks.inputliquidfuel = Fuel Liquid
blocks.liquidfueluse = Liquid Fuel Use
blocks.boostitem = Boost Item
blocks.boostliquid = Boost Liquid
blocks.health = Health
blocks.heat = Heat
blocks.power = Power
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
blocks.inaccuracy = Inaccuracy
blocks.shots = Shots
blocks.reload = Shots/Second
blocks.inputfuel = Fuel
blocks.fuelburntime = Fuel Burn Time
blocks.inputcapacity = Input capacity
blocks.outputcapacity = Output capacity
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Liquid
bar.heat = Heat
bar.power = Power
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = blocks
unit.powersecond = power units/second
unit.liquidsecond = liquid units/second
@@ -398,6 +397,9 @@ unit.liquidunits = liquid units
unit.powerunits = power units
unit.degrees = degrees
unit.seconds = seconds
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = items
category.general = General
category.power = Power
@@ -406,8 +408,10 @@ category.items = Items
category.crafting = Crafting
category.shooting = Shooting
category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Target
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Show FPS
setting.vsync.name = VSync
setting.lasers.name = Show Power Lasers
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Show Minimap
setting.musicvol.name = Music Volume
setting.mutemusic.name = Mute Music
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = Fight against other players locally.
mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Items
content.liquid.name = Liquids
content.unit.name = Units
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {0}
mech.minespeed = [LIGHT_GRAY]Mining Speed: {0}
mech.minepower = [LIGHT_GRAY]Mining Power: {0}
mech.ability = [LIGHT_GRAY]Ability: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
liquid.temperature = [LIGHT_GRAY]Temperature: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Airblast Drill
block.thermal-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
block.mend-projector.name = Mend Projector
block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = blue
team.red.name = red
team.orange.name = orange
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = Dodaj/Usuń graczy
customgame = Własna Gra
newgame = Nowa Gra
none = <żadne>
minimap = Minimap
close = Zamknij
quit = Wyjdź
maps = Mapy
@@ -182,6 +183,7 @@ map.delete.confirm = Jesteś pewny, że chcesz usunąć tę mapę? Nie będzie m
map.random = [accent]Losowa mapa
map.nospawn = Ta mapa nie zawiera żadnego rdzenia! Musisz dodać [ROYAL]niebieski[] rdzeń do tej mapy.
map.nospawn.pvp = Ta mapa nie ma żadnego rdzenia przeciwnika, aby mogli się zrespić przeciwnicy! Dodaj[SCARLET] czerwony[] rdzeń do mapy w edytorze.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Error podczas ładowania mapy: uszkodzony lub niepoprawny plik mapy.
editor.brush = Pędzel
editor.openin = Otwórz w edytorze
@@ -283,6 +285,7 @@ abandon = Opuść
abandon.text = Ta strefa i wszystkie jej surowce będą przejęte przez przeciwników.
locked = Zablokowane
complete = [LIGHT_GRAY]Ukończone:
zone.requirement = Wave {0} in zone {1}
resume = Kontynuuj Strefę:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Najwyższa fala: {0}
launch = Wystrzel
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY] Strefa {0} odblokowana!
zone.complete = Zone conditions met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -333,63 +336,59 @@ no = Nie ma mowy!
info.title = [accent]Informacje
error.title = [crimson]Wystąpił błąd
error.crashtitle = Wystąpił błąd
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Informacje o bloku
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Pojemność mocy
blocks.powershot = moc/strzał
blocks.targetsair = Może namierzać wrogów powietrznych
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Zasięg
blocks.size = Rozmiar
blocks.liquidcapacity = Pojemność cieczy
blocks.maxitemssecond = Maksymalna liczba przedmiotów/sekundę
blocks.powerrange = Zakres mocy
blocks.poweruse = Zużycie prądu
blocks.powerdamage = Moc/Zniszczenia
blocks.inputitemcapacity = Pojemność materiałów
blocks.outputitemcapacity = Pojemność produktów
blocks.itemcapacity = Pojemność przedmiotów
blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Szybość przesyłu prądu
blocks.craftspeed = Szybkość produkcji
blocks.inputliquid = Potrzebna ciecz
blocks.inputliquidaux = Płyny do produkcji
blocks.inputitem = Potrzebne przedmioty
blocks.inputitems = Materiały do produkcji
blocks.outputitem = Produkty
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Co może wykopać
blocks.drillspeed = Postawowa szybkość kopania
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Wyprodukowany płyn
blocks.liquidoutputspeed = Prędkość odpływu cieczy
blocks.liquiduse = Zużycie płynów
blocks.coolant = Płyn chłodzący
blocks.liquid = Płyn
blocks.coolantuse = Zużycie płynu chłodzącego
blocks.inputliquidfuel = Paliwo
blocks.liquidfueluse = Zużycie paliwa
blocks.boostitem = Boost Item
blocks.boostliquid = Boost Liquid
blocks.health = Zdrowie
blocks.heat = Heat
blocks.power = Prąd
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Zapotrzebowanie Prądu
blocks.inaccuracy = Niedokładność
blocks.shots = Strzały
blocks.reload = Przeładowanie
blocks.inputfuel = Paliwo
blocks.fuelburntime = Płonięcie paliwa
blocks.inputcapacity = Pojemność wejściowa
blocks.outputcapacity = Wydajność wyjściowa
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Płyn
bar.heat = Heat
bar.power = Prąd
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = Klocki
unit.powersecond = jednostek prądu na sekundę
unit.liquidsecond = jednostek płynów na sekundę
@@ -398,6 +397,9 @@ unit.liquidunits = jednostek płynów
unit.powerunits = jednostek prądu
unit.degrees = stopnie
unit.seconds = sekundy
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = Przedmioty
category.general = Główne
category.power = Prąd
@@ -406,8 +408,10 @@ category.items = Przedmioty
category.crafting = Przetwórstwo
category.shooting = Strzelanie
category.optional = Ulepszenia Nieobowiąskowe
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Wskaźniki Przyjaciół
setting.autotarget.name = Automatyczne Celowanie
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Widoczny licznik FPS
setting.vsync.name = Synchronizacja pionowa
setting.lasers.name = Pokaż lasery zasilające
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Pokaż Minimapę
setting.musicvol.name = Głośność muzyki
setting.mutemusic.name = Wycisz muzykę
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = Walcz przeciwko innym graczom.
mode.attack.name = Atak
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Przedmioty
content.liquid.name = Płyny
content.unit.name = Jednostki
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Pojemność przedmiotów: {0}
mech.minespeed = [LIGHT_GRAY]Prędkość kopania: {0}
mech.minepower = [LIGHT_GRAY]Moc kopania: {0}
mech.ability = [LIGHT_GRAY]Umiejętność: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Wytrzymałość na przegrzewanie: {0}
liquid.viscosity = [LIGHT_GRAY]Lepkość: {0}
liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Wiertło Wybuchowe
block.thermal-pump.name = Pompa Termalna
block.thermal-generator.name = Generator Termalny
block.alloy-smelter.name = Piec Mieszający
block.mender.name = Mender
block.mend-projector.name = Projektor Napraw
block.surge-wall.name = Ściana Stopu Energetycznego
block.surge-wall-large.name = Duża Ściana Stopu Energetycznego
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Kontener
block.launch-pad.name = Skocznia
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = niebieski
team.red.name = czerwony
team.orange.name = pomarańczowy
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = Adicionar/Remover Jogador
customgame = Jogo Customizado
newgame = Novo Jogo
none = <none>
minimap = Minimap
close = Fechar
quit = Sair
maps = Mapas
@@ -182,6 +183,7 @@ map.delete.confirm = Certeza que quer deletar este mapa? Isto não pode ser desf
map.random = [accent]Mapa aleatório
map.nospawn = Esse mapa não contém um [yellow]núcleo[] para o jogador Nascer! [ROYAL]blue[] Coloque um [yellow]núcleo[] no editor de mapa.
map.nospawn.pvp = Esse mapa não tem núcleos inimigos para os jogadores nascerem! Adicione[SCARLET] Núcleos vermelhos[] no mapa no editor.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Erro ao carregar o mapa: Arquivo de mapa invalido ou corrupto.
editor.brush = Pincel
editor.openin = Abrir no Editor
@@ -283,6 +285,7 @@ abandon = Abandonar
abandon.text = Esta zona e todos os seus recursos serão perdidos para o enimigo.
locked = Trancado
complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resumir Zona:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Melhor: {0}
launch = Lançar
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Zone conditions met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -333,63 +336,59 @@ no = Não
info.title = [accent]Informação
error.title = [crimson]Ocorreu um Erro.
error.crashtitle = Ocorreu um Erro
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Informação do Bloco
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Capacidade de Energia
blocks.powershot = Energia/tiro
blocks.targetsair = Mirar no ar
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Alcance
blocks.size = Tamanho
blocks.liquidcapacity = Capacidade de Líquido
blocks.maxitemssecond = Máximo de itens/segundo
blocks.powerrange = Alcance da Energia
blocks.poweruse = Uso de energia
blocks.powerdamage = Dano/Poder
blocks.inputitemcapacity = Configurar capacidade de itens
blocks.outputitemcapacity = Configurar capacidade de itens
blocks.itemcapacity = Capacidade de Itens
blocks.basepowergeneration = Geração de poder base
blocks.powertransferspeed = Transferência de energia
blocks.craftspeed = Velocidade de produção
blocks.inputliquid = Líquido de entrada
blocks.inputliquidaux = Líquido auxiliar
blocks.inputitem = Item de entrada
blocks.inputitems = Itens de entrada
blocks.outputitem = Itens de saida
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Furaveis
blocks.drillspeed = Velocidade da furadeira base
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Saida de liquido
blocks.liquidoutputspeed = Velocidade da saida de líquido
blocks.liquiduse = Uso de liquido
blocks.coolant = Esfriador
blocks.liquid = Liquid
blocks.coolantuse = Uso do esfriador
blocks.inputliquidfuel = Liquido de combustivel
blocks.liquidfueluse = Uso do liquido de combustivel
blocks.boostitem = Acelerar item
blocks.boostliquid = Acelerar líquido
blocks.health = Saúde
blocks.heat = Heat
blocks.power = Poder
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
blocks.inaccuracy = Imprecisão
blocks.shots = Tiros
blocks.reload = Recarregar
blocks.inputfuel = Combustivel
blocks.fuelburntime = Tempo de queima de combustivel
blocks.inputcapacity = Capacidade de entrada
blocks.outputcapacity = Capacidade de saída
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Liquid
bar.heat = Heat
bar.power = Poder
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = blocos
unit.powersecond = Unidades de energia/segundo
unit.liquidsecond = Unidades de líquido/segundo
@@ -398,6 +397,9 @@ unit.liquidunits = Unidades de liquido
unit.powerunits = Unidades de energia
unit.degrees = Graus
unit.seconds = segundos
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = itens
category.general = Geral
category.power = Poder
@@ -406,8 +408,10 @@ category.items = Itens
category.crafting = Construindo
category.shooting = Atirando
category.optional = Melhoras opcionais
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators
setting.autotarget.name = Alvo automatico
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Mostrar FPS
setting.vsync.name = VSync
setting.lasers.name = Mostrar lasers
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Mostrar minimapa
setting.musicvol.name = Volume da Música
setting.mutemusic.name = Desligar Música
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = Lutar contra outros jogadores locais.
mode.attack.name = Ataque
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Itens
content.liquid.name = Liquidos
content.unit.name = Units
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Capacidade de itens: {0}
mech.minespeed = [LIGHT_GRAY]Velocidade de mineração: {0}
mech.minepower = [LIGHT_GRAY]Poder de mineração: {0}
mech.ability = [LIGHT_GRAY]Habilidade: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacidade de aquecimento: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosidade: {0}
liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Mineradora de Explosão
block.thermal-pump.name = Cano termico
block.thermal-generator.name = Gerador Térmico
block.alloy-smelter.name = Fundidora de Liga
block.mender.name = Mender
block.mend-projector.name = Projetor Mend
block.surge-wall.name = Parede de Surge
block.surge-wall-large.name = Parede de Surge grande
@@ -737,6 +759,7 @@ block.meltdown.name = Derreter
block.container.name = Container
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = Azul
team.red.name = Vermelho
team.orange.name = Laranja
+69 -44
View File
@@ -40,6 +40,7 @@ addplayers = Доб/удалить игроков
customgame = Пользовательская игра
newgame = Новая игра
none = <нет>
minimap = Minimap
close = Закрыть
quit = Выход
maps = Карты
@@ -182,6 +183,7 @@ map.delete.confirm = Вы действительно хотите удалить
map.random = [accent]Случайная карта
map.nospawn = Эта карта не имеет ядер, в которых игрок может появиться! Добавьте[ROYAL] синее[] ядро на эту карту в редакторе карт.
map.nospawn.pvp = У этой карты нет вражеских ядер, в которых игрок может появиться! Добавьте[SCARLET] красные[] ядра к этой карте в редакторе.
map.nospawn.attack = У этой карты нету вражеских ядер! Добавьте [scarlet] красные[] ядра в эту карте в редакторе.
map.invalid = Ошибка загрузки карты: повреждённый или недопустимый файл карты.
editor.brush = Кисть
editor.openin = Открыть в редакторе
@@ -283,6 +285,7 @@ abandon = Покинуть
abandon.text = Эта зона и все ресурсы будут потеряны.
locked = Заблокировано
complete = [LIGHT_GRAY]Завершено:
zone.requirement = Wave {0} in zone {1}
resume = Возобновить зону:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Наилучшая волна: {0}
launch = < ЗАПУСК >
@@ -294,7 +297,7 @@ uncover = Раскрыть
configure = Выгрузить конфигурацию
configure.locked = [LIGHT_GRAY]Разблокировать настройки выгрузки:\nВолна {0}.
zone.unlocked = [LIGHT_GRAY]{0} разблокировано.
zone.complete = {0} волн достигнуто:\nТребования для следующей зоны выполнены.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = {0} волн достигнуто:\nВыгружаемая конфигурация разблокирована
zone.resources = Обнаруженные ресурсы:
add = Добавить...
@@ -333,63 +336,61 @@ no = Нет
info.title = Информация
error.title = [crimson]Произошла ошибка
error.crashtitle = Произошла ошибка
blocks.outputspeed = Скорость сверления: {0}/с
blocks.efficiency = Эффективность: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Информация о блоке
blocks.powerbalance = Энергия: {0}
blocks.poweroutput = Выходная энергия: {0}
blocks.input = Вход
blocks.output = Выход
blocks.booster = Ускоритель
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Вместимость энергии
blocks.powershot = Энергия/выстрел
blocks.targetsair = Воздушные цели
blocks.targetsground = Наземные цели
blocks.items = Предметы: {0}
blocks.itemsmoved = Скорость перемещения
blocks.launchtime = Интервал запусков
blocks.shootrange = Радиус действия
blocks.size = Размер
blocks.liquidcapacity = Вместимость жидкости
blocks.maxitemssecond = Макс. количество предметов/секунду
blocks.powerrange = Диапазон передачи энергии
blocks.poweruse = Потребляет энергии
blocks.powerdamage = Энергия/урон
blocks.inputitemcapacity = Вместимость входящих предметов
blocks.outputitemcapacity = Вместимость выходящих предметов
blocks.itemcapacity = Вместимость предметов
blocks.basepowergeneration = Базовая генерация энергии
blocks.powertransferspeed = Скорость передачи энергии
blocks.productiontime = Время производства
blocks.craftspeed = Скорость производства
blocks.repairtime = Время полной регенерации
blocks.speedincrease = Увеличение скорости
blocks.range = Радиус действия
blocks.inputliquid = Прием жидкости
blocks.inputliquidaux = Вспом. жидкость
blocks.inputitem = Входящий предмет
blocks.inputitems = Входящие предметы
blocks.outputitem = Выходящий предмет
blocks.drilltier = Добывает
blocks.drillspeed = Базовая скорость сверления
blocks.boosteffect = Ускоряющий эффект
blocks.maxunits = Максимальное количество активных единиц
blocks.liquidoutput = Выходящая жидкость
blocks.liquidoutputspeed = Выходная скорость жидкости
blocks.liquiduse = Используется жидкости
blocks.coolant = Охлаждающая жидкость
blocks.liquid = Жидкость
blocks.coolantuse = Охлажд. жидкости используется
blocks.inputliquidfuel = Жидкое топливо
blocks.liquidfueluse = Жидкого топлива используется
blocks.boostitem = Ускоряющий предмет
blocks.boostliquid = Ускоряющая жидкость
blocks.health = Здоровье
blocks.heat = Температура
blocks.power = Энергия
blocks.progress = Строительство продолжается
blocks.spawned = Бой. ед.: {0}/{1}
blocks.power.satisfaction = Энергия
blocks.inaccuracy = Разброс
blocks.shots = Выстрелы
blocks.reload = Выстрелы/секунду
blocks.inputfuel = Входящее топливо
blocks.fuelburntime = Время горения топлива
blocks.inputcapacity = Макс. вместимость входящих предметов
blocks.outputcapacity = Макс. вместимость выходящих предметов
blocks.ammo = Боеприпасы
bar.drillspeed = Скорость свердления: {0}/s
bar.efficiency = Эффективность: {0}%
bar.powerbalance = Энергия: {0}/с
bar.poweramount = Энергия: {0}
bar.poweroutput = Выходная энергия: {0}
bar.items = Предметы: {0}
bar.liquid = Жидкости
bar.heat = Нагревание
bar.power = Энергия
bar.progress = Прогресс Строительство
bar.spawned = Боев. ед. : {0}/{1}
bullet.damage = [stat]{0}[lightgray] урона
bullet.splashdamage = [stat]{0}[lightgray] урона в радиусе ~[stat] {1}[lightgray] БЛОКОВ
bullet.incendiary = [stat]поджигающий
bullet.homing = [stat]самонаводящийся
bullet.shock = [stat]ЭМИ
bullet.frag = [stat]взрывоопасный
bullet.knockback = [stat]{0}[lightgray] отдачи
bullet.freezing = [stat]замораживающий
bullet.tarred = [stat]горючий
bullet.multiplier = [stat]{0}[lightgray]x снарядов
bullet.reload = [stat]{0}[lightgray]x скорость перезарядки
unit.blocks = блоки
unit.powersecond = единиц энергии/секунду
unit.liquidsecond = жидкостных единиц/секунду
@@ -398,6 +399,9 @@ unit.liquidunits = жидкостных единиц
unit.powerunits = энерг. единиц
unit.degrees = град.
unit.seconds = сек.
unit.persecond = /сек
unit.timesspeed = x скорость
unit.percent = %
unit.items = единиц
category.general = Основные
category.power = Энергия
@@ -406,13 +410,16 @@ category.items = Предметы
category.crafting = Ввод/вывод
category.shooting = Cтрельба
category.optional = Дополнительные улучшения
setting.shadows.name = Shadows
setting.landscape.name = Сохранить ландшафт
setting.shadows.name = Тени
setting.animatedwater.name = Анимированная вода
setting.animatedshields.name = Анимированные щиты
setting.antialias.name = Сглаживание[LIGHT_GRAY] (требует перезапуска)[]
setting.indicators.name = Показывать в сторону союзников и врагов
setting.autotarget.name = Авто-стрельба
setting.fpscap.name = Макс. FPS
setting.fpscap.none = Неограниченный
minimap = Мини-карта
setting.fpscap.text = {0} FPS
setting.swapdiagonal.name = Всегда Диагональное Размещение
setting.difficulty.training = обучение
@@ -479,10 +486,25 @@ mode.sandbox.name = Песочница
mode.sandbox.description = Бесконечные ресурсы и нет таймера для волн, но можно самим вызвать волну.
mode.freebuild.name = Cвободная\nстройка
mode.freebuild.description = Ограниченные ресурсы и нет таймера для волн.
mode.pvp.name = Противо-\nстояние
mode.pvp.name = PvP
mode.pvp.description = боритесь против других игроков.
mode.attack.name = Атака
mode.attack.description = Нет волн, цель - уничтожить базу противника.
mode.custom = Настройки правил
rules.infiniteresources = Бескон. Ресурсы (Игрок)
rules.wavetimer = Интервал волн
rules.waves = Волны
rules.enemyCheat = Бескон. Ресурсы (ИИ)
rules.pvp = PvP
rules.unitdrops = Ресурсы Боев. Ед.
rules.unitbuildspeedmultiplier = Множитель Скорости Создания Боев. Ед.
rules.unithealthmultiplier = Множитель Здоровья Боев. Ед.
rules.playerdamagemultiplier = Множитель Урона Игрока
rules.enemycorebuildradius = Радиус защиты враж. ядер: [LIGHT_GRAY] {0} (блоков)
rules.respawntime = Интервал возрождения: [LIGHT_GRAY] (сек)
rules.wavespacing = Интервал волн: [LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Множитель затрат на строительство
rules.buildspeedmultiplier = Множитель скорости строительства
content.item.name = Предметы
content.liquid.name = Жидкости
content.unit.name = Боевые единицы
@@ -511,7 +533,7 @@ item.spore-pod.name = Споровой стручок
item.spore-pod.description = Используется для превращения в нефть, взрывчатые вещества и топливо.
item.sand.name = Песок
item.sand.description = Обычный материал, который широко используется при плавке как в сплаве, так и в виде шлака.
item.blast-compound.name = Взрывоопасное соединение
item.blast-compound.name = Взрывная смесь
item.blast-compound.description = Летучее соединение, используемое в бомбах и взрывчатых веществах. Также может гореть в качестве топлива, но не рекомендуется этого делать.
item.pyratite.name = Пиротит
item.pyratite.description = Очень огнеопасное вещество, используемое в зажигательном оружии.
@@ -525,7 +547,7 @@ liquid.oil.name = Нефть
liquid.cryofluid.name = Криогенная жидкость
mech.alpha-mech.name = Альфа
mech.alpha-mech.weapon = Тяжёлый пулемёт
mech.alpha-mech.ability = Нет
mech.alpha-mech.ability = Регенерация
mech.alpha-mech.description = Стандартный мех для настольных устройств. Имеет приличную скорость и урон.
mech.delta-mech.name = Дельта
mech.delta-mech.weapon = Дуговой генератор
@@ -560,9 +582,10 @@ unit.speed = [LIGHT_GRAY]Скорость: {0}
mech.weapon = [LIGHT_GRAY]Оружие: {0}
mech.health = [LIGHT_GRAY]Здоровье: {0}
mech.itemcapacity = [LIGHT_GRAY]Вместимость предметов: {0}
mech.minespeed = [LIGHT_GRAY]Скорость добычи: {0}
mech.minespeed = [LIGHT_GRAY]Скорость добычи: {0}%
mech.minepower = [LIGHT_GRAY]Мощность добычи: {0}
mech.ability = [LIGHT_GRAY]Способность: {0}
mech.buildspeed = [LIGHT_GRAY]Скорость строительства: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Теплоёмкость: {0}
liquid.viscosity = [LIGHT_GRAY]Вязкость: {0}
liquid.temperature = [LIGHT_GRAY]Температура: {0}
@@ -669,7 +692,7 @@ block.impact-reactor.name = Импульсный реактор
block.mechanical-drill.name = Механический бур
block.pneumatic-drill.name = Пневматический бур
block.laser-drill.name = Лазерный бур
block.water-extractor.name = Экстрактор воды
block.water-extractor.name = Гидроконденсатор
block.cultivator.name = Культиватор
block.alpha-dart-mech-pad.name = Реконструктор мехов "Альфа-Дротик"
block.delta-mech-pad.name = Реконструктор "Дельта"
@@ -698,7 +721,7 @@ block.pyratite-mixer.name = Мешалка пиротита
block.blast-mixer.name = Мешалка взрывоопасного соединения
block.solar-panel.name = Солнечная панель
block.solar-panel-large.name = Большая солнечная панель
block.oil-extractor.name = Нефтяной экстрактор
block.oil-extractor.name = Нефтяная вышка
block.spirit-factory.name = Завод дронов "Призрак"
block.phantom-factory.name = Завод дронов "Фантом"
block.wraith-factory.name = Завод призрачных истребителей
@@ -722,6 +745,7 @@ block.blast-drill.name = Воздушная буровая установка
block.thermal-pump.name = Термальный насос
block.thermal-generator.name = Термальный генератор
block.alloy-smelter.name = Плавильня кинетического сплава
block.mender.name = Mender
block.mend-projector.name = Ремонтирующий гранатомёт
block.surge-wall.name = Стена из кинетического сплава
block.surge-wall-large.name = Большая стена из кинетического сплава
@@ -737,6 +761,7 @@ block.meltdown.name = Катастрофа
block.container.name = Склад
block.launch-pad.name = Стартовая площадка
block.launch-pad.description = Запускает партии предметов без необходимости запуска ядра. Незавершённое.
block.launch-pad-large.name = Большая Стартовая площадка
team.blue.name = Синяя
team.red.name = Красная
team.orange.name = Оранжевая
@@ -821,7 +846,7 @@ block.silicon-smelter.description = С помощью песка, угля и э
block.plastanium-compressor.description = Создаёт пластиний из титана и нефти. Требует энергии. Для ускорения производства можно добавить в компрессор песок.
block.phase-weaver.description = Производит фазовую материю из тория и песка. Требует большего количества энергии.
block.alloy-smelter.description = Создаёт кинетический сплав из титана, кремния, меди и свинца. Требует энергию.
block.pulverizer.description = Измельчает камень в песок. Требует энергию.
block.pulverizer.description = Измельчает металлолом в песок. Требует энергию.
block.pyratite-mixer.description = Создаёт пиротит из угля, свинца и песка. Требует энергии.
block.blast-mixer.description = Создаёт взрывоопасное соединение из нефти и пиротита. Для ускорения производства можно добавить в мешалку песок.
block.cryofluidmixer.description = Производит криогенную жидкость из воды и титана. Требует энергии.
@@ -865,7 +890,7 @@ block.titan-factory.description = Производит продвинутые з
block.fortress-factory.description = Производит тяжёлые артиллерийские боевые единицы.
block.revenant-factory.description = Производит тяжёлые летающие боевые единицы.
block.repair-point.description = Может ремонтировать вас и ваши боевые единицы
block.conduit.description = Основной блок транспортировки жидкости. Работает как конвейер, но с жидкостями. Лучше всего использовать экстракторы, насосы или т.п..
block.conduit.description = Основной блок транспортировки жидкости. Работает как конвейер, но с жидкостями.
block.pulse-conduit.description = Улучшенный блок транспортировки жидкости. Транспортирует жидкости быстрее и хранит больше, чем стандартные.
block.phase-conduit.description = Улучшенный блок транспортировки жидкости. Использует энергию для передачи жидкостей на подключенный фазовый канал на несколько плиток.
block.liquid-router.description = Принимает жидкости с одного направления и равномерно выводит их до трех других направлений. Может также хранить определенное количество жидкости. Полезно для разделения жидкостей из одного источника на несколько целей.
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = Oyuncu ekle/cikar
customgame = Ozel oyun
newgame = New Game
none = <none>
minimap = Minimap
close = Kapat
quit = Cik
maps = Haritalar
@@ -182,6 +183,7 @@ map.delete.confirm = Haritayi silmek istedigine emin misin? Bu geri alinamaz!
map.random = [accent]Rasgele harita
map.nospawn = Haritada Oyncularin cikmasi icin cekirdek yok! Haritaya[ROYAL]Mavi[] cekirdek ekle.
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.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Harita yuklenemedi. Gecersiz yada bozuk dosya.
editor.brush = Firca
editor.openin = Editorde ac
@@ -283,6 +285,7 @@ abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Zone conditions met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -333,63 +336,59 @@ no = Hayir
info.title = [accent]Bilgi
error.title = [crimson]Bir hata olustu
error.crashtitle = Bir hata olustu
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Yapi bilgisi
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Guc kapasitesi
blocks.powershot = Guc/Saldiri hizi
blocks.targetsair = Havayi hedef alir mi?
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Menzil
blocks.size = Buyukluk
blocks.liquidcapacity = Sivi kapasitesi
blocks.maxitemssecond = Esya limiti
blocks.powerrange = Menzil
blocks.poweruse = Guc kullanimi
blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Giris esya kapasitesi
blocks.outputitemcapacity = Cikis esya kapasitesi
blocks.itemcapacity = Esya kapasitesi
blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Guc transfer hizi
blocks.craftspeed = Yapilma hizi
blocks.inputliquid = Giris sivi
blocks.inputliquidaux = Yardimci sivi
blocks.inputitem = Giris esyasi
blocks.inputitems = Giris esyalari
blocks.outputitem = Sonuc
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Kazilabilirler
blocks.drillspeed = Ana kazma hizi
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Sivi cikisi
blocks.liquidoutputspeed = Liquid Output Speed
blocks.liquiduse = Sivi kullanimi
blocks.coolant = Sogutma sivisi
blocks.liquid = Liquid
blocks.coolantuse = Sogutma sivi kullanimi
blocks.inputliquidfuel = Yakit sivisi
blocks.liquidfueluse = Sivi yakit kullanimi
blocks.boostitem = Boost Item
blocks.boostliquid = Boost Liquid
blocks.health = Can
blocks.heat = Heat
blocks.power = Power
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
blocks.inaccuracy = sekme
blocks.shots = vuruslar
blocks.reload = Yeniden doldurma
blocks.inputfuel = Yakit
blocks.fuelburntime = Yakit yakilma suresi
blocks.inputcapacity = Giris kapasitesi
blocks.outputcapacity = Cikis kapasitesi
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Liquid
bar.heat = Heat
bar.power = Power
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = Yapilar
unit.powersecond = saniyede bir
unit.liquidsecond = Saniyede bir
@@ -398,6 +397,9 @@ unit.liquidunits = Litre
unit.powerunits = Volt
unit.degrees = derece
unit.seconds = saniye
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = esya
category.general = General
category.power = Guc
@@ -406,8 +408,10 @@ category.items = esyalar
category.crafting = uretim
category.shooting = sikma
category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Target
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = FPS'i goster
setting.vsync.name = VSync
setting.lasers.name = Guc lazerlerini goster
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Haritayi goster
setting.musicvol.name = Ses yuksekligi
setting.mutemusic.name = Sesi kapat
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = fight against other players locally.
mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Esyalar
content.liquid.name = Sivilar
content.unit.name = Units
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]esya kapasitesi: {0}
mech.minespeed = [LIGHT_GRAY]kazma hizi: {0}
mech.minepower = [LIGHT_GRAY]kazma gucu: {0}
mech.ability = [LIGHT_GRAY]yetenek gucu: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]isinma kapasitesi: {0}
liquid.viscosity = [LIGHT_GRAY]Yari sivilik: {0}
liquid.temperature = [LIGHT_GRAY]isi: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Patlatici kazici
block.thermal-pump.name = Termal pompa
block.thermal-generator.name = Magma jeneratoru
block.alloy-smelter.name = Alloy eritici
block.mender.name = Mender
block.mend-projector.name = Mend koruyucu
block.surge-wall.name = kabarma duvari
block.surge-wall-large.name = genis kabarma duvari
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = blue
team.red.name = red
team.orange.name = orange
+60 -37
View File
@@ -40,6 +40,7 @@ addplayers = Oyuncu ekle/cikar
customgame = Ozel oyun
newgame = New Game
none = <none>
minimap = Minimap
close = Kapat
quit = Çık
maps = Haritalar
@@ -182,6 +183,7 @@ map.delete.confirm = Are you sure you want to delete this map? This action canno
map.random = [accent]Random Map
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.
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.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Error loading map: corrupted or invalid map file.
editor.brush = Brush
editor.openin = Open In Editor
@@ -283,6 +285,7 @@ abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.complete = Zone conditions met.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Add...
@@ -333,63 +336,59 @@ no = No
info.title = [Vurgu] Bilgi
error.title = [crimson] Bir hata oluştu
error.crashtitle = Bir hata oluştu
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Blok Bilgisi
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Güç kapasitesi
blocks.powershot = Güç / atış
blocks.targetsair = Targets Air
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Range
blocks.size = Boyut
blocks.liquidcapacity = Sıvı kapasitesi
blocks.maxitemssecond = Maksimum öğe / saniye
blocks.powerrange = Güç aralığı
blocks.poweruse = Power Use
blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Input Item Capacity
blocks.outputitemcapacity = Input Item Capacity
blocks.itemcapacity = Ürün kapasitesi
blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Power Transfer
blocks.craftspeed = Production Speed
blocks.inputliquid = Giriş sıvı
blocks.inputliquidaux = Aux Liquid
blocks.inputitem = Giriş öğesi
blocks.inputitems = Input Items
blocks.outputitem = Output Item
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = Drillables
blocks.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.liquidoutput = Liquid Output
blocks.liquidoutputspeed = Liquid Output Speed
blocks.liquiduse = Liquid Use
blocks.coolant = Coolant
blocks.liquid = Liquid
blocks.coolantuse = Coolant Use
blocks.inputliquidfuel = Fuel Liquid
blocks.liquidfueluse = Liquid Fuel Use
blocks.boostitem = Boost Item
blocks.boostliquid = Boost Liquid
blocks.health = Can
blocks.heat = Heat
blocks.power = Power
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = Power Satisfaction
blocks.inaccuracy = yanlışlık
blocks.shots = atışlar
blocks.reload = Reload
blocks.inputfuel = Fuel
blocks.fuelburntime = Fuel Burn Time
blocks.inputcapacity = Giriş kapasitesi
blocks.outputcapacity = Çıkış kapasitesi
blocks.ammo = Ammo
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Liquid
bar.heat = Heat
bar.power = Power
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = blocks
unit.powersecond = power units/second
unit.liquidsecond = liquid units/second
@@ -398,6 +397,9 @@ unit.liquidunits = liquid units
unit.powerunits = power units
unit.degrees = degrees
unit.seconds = seconds
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = items
category.general = General
category.power = Power
@@ -406,8 +408,10 @@ category.items = Items
category.crafting = Crafting
category.shooting = Shooting
category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Target
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Saniyede ... Kare göstermek
setting.vsync.name = VSync
setting.lasers.name = Güç Lazerleri Göster
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Show Minimap
setting.musicvol.name = Müzik sesi
setting.mutemusic.name = Müziği Kapat
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = fight against other players locally.
mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base.
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = Items
content.liquid.name = Liquids
content.unit.name = Units
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {0}
mech.minespeed = [LIGHT_GRAY]Mining Speed: {0}
mech.minepower = [LIGHT_GRAY]Mining Power: {0}
mech.ability = [LIGHT_GRAY]Ability: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
liquid.temperature = [LIGHT_GRAY]Temperature: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Blast Drill
block.thermal-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smtler
block.mender.name = Mender
block.mend-projector.name = Mend Projector
block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = blue
team.red.name = red
team.orange.name = orange
+76 -50
View File
@@ -21,7 +21,7 @@ stat.destroyed = Будівель знищено:[accent] {0}
stat.deconstructed = Будівель декоструйовано[accent] {0}
stat.delivered = Ресурсів здобуто:
stat.rank = Фінальний рахунок: [accent]{0}
placeline =Ви вибрали блок.\nВи можете[accent] будувати в лінію[] [accent] утримуючи палець протягом декількох секунд[] і потім перетягуючи його.\n\n[scarlet]ЗРОБИ ЦЕ.
placeline = Ви вибрали блок.\nВи можете[accent] будувати в лінію[] [accent] утримуючи палець протягом декількох секунд[] і потім перетягуючи його.\n\n[scarlet]ЗРОБИ ЦЕ.
removearea = Ви вибрали режим видалення.\nВи можете[accent] видаляти блоки в обраній області[],[accent] утримуючи палець кілька секунд [] і потім перетягуючи його.\n\n[scarlet]ЗРОБИ ЦЕ.
launcheditems = [accent]Запущені предмети
map.delete = Ви впевнені, що хочете видалити мапу "[accent]{0}[]"?
@@ -40,6 +40,7 @@ addplayers = Дод/Видалити гравців
customgame = Користувальницька гра
newgame = Нова гра
none = <нічого>
minimap = Minimap
close = Закрити
quit = Вийти
maps = Мапи
@@ -181,7 +182,8 @@ builtin = Bбудована
map.delete.confirm = Ви впевнені, що хочете видалити цю мапу? Цю дію не можна скасувати!
map.random = [accent]Випадкова мапа
map.nospawn = Ця мапа не має жодного ядра для спавну гравця! Додайте[ROYAL] сине[] ядро в цю мапу редакторі.
map.nospawn.pvp = У цієї мапи немає ворожих ядер, в яких гравець може з'явитися! Додайте[SCARLET] червоне[] ядро до цієї мапи в редакторі.
map.nospawn.pvp = У цієї мапи немає ворожих ядер, в яких гравець може з'явитися! Додайте[SCARLET] не сине[] ядро до цієї мапи в редакторі.
map.nospawn.attack = У цієї мапи немає ворожих ядер,які гравець може атакувати! Додайте[SCARLET] червоне[] ядро до цієї мапи в редакторі.
map.invalid = Помилка завантаження мапи: пошкоджений або невірний файл мапи.
editor.brush = Пензлик
editor.openin = Відкрити в редакторі
@@ -283,6 +285,7 @@ abandon = Покинути
abandon.text = Ця зона і всі її ресурси будуть втрачені для ворога.
locked = Заблоковано
complete = [LIGHT_GRAY]Завершено:
zone.requirement = Wave {0} in zone {1}
resume = Відновити зону:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Найкраща хвиля: {0}
launch = < ЗАПУСК >
@@ -294,7 +297,7 @@ uncover = Розкрити
configure = Вивантаження
configure.locked = [LIGHT_GRAY]Розблокувати можливість вивантаження ресурсів:\nWave {0}.
zone.unlocked = [LIGHT_GRAY]{0} розблоковано
zone.complete = {0} хвиль досягнено:\nВимоги для нової зони виконані.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = {0} хвиль досягнено. reached:\nРозблоковано можливість вивантаження.
zone.resources = Виявлені ресурси:
add = Додати...
@@ -333,63 +336,61 @@ no = Ні
info.title = Інформація
error.title = [crimson]Виникла помилка
error.crashtitle = Виникла помилка
blocks.outputspeed = Швидкість свердління: {0}/с
blocks.efficiency = Ефективність: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Інформація про блок
blocks.powerbalance = Енергія: {0}
blocks.poweroutput = Вихідна енергія: {0}
blocks.input = Вхід
blocks.output = Вихід
blocks.booster = Прискорювач
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Місткість енергії
blocks.powershot = Енергія/постріл
blocks.targetsair = Повітряні мішені
blocks.targetsground = Наземні мішені
blocks.items = Предмети: {0}
blocks.itemsmoved = Швидкість переміщення
blocks.launchtime = Час між запусками
blocks.shootrange = Діапазон дії
blocks.size = Розмір
blocks.liquidcapacity = Місткість рідини
blocks.maxitemssecond = Макс. кількість предметів/секунду
blocks.powerrange = Діапазон передачі енергії
blocks.poweruse = Енергії використовує
blocks.powerdamage = Енергія/урон
blocks.inputitemcapacity = Ємність вхідних елементів
blocks.outputitemcapacity = Ємність вихідних елементів
blocks.itemcapacity = Місткість предметів
blocks.basepowergeneration = Базова генерація енергії
blocks.powertransferspeed = Швидкість передачі енергії
blocks.craftspeed = Швидкість виробництва
blocks.productiontime = Час виробництва
blocks.repairtime = Час повного відновлення блоку
blocks.speedincrease = Збільшення швидкості
blocks.range = Радіус дії
blocks.inputliquid = Прийом рідини
blocks.inputliquidaux = Допоміжна рідина
blocks.inputitem = Вхідний предмет
blocks.inputitems = Вхідні предмети
blocks.outputitem = Вихідний предмет
blocks.drilltier = Видобуває
blocks.drillspeed = Базова швидкість свердління
blocks.boosteffect = Прискорювальний ефект
blocks.maxunits = Максимальна кількість активних одиниць
blocks.liquidoutput = Вихідна рідина
blocks.liquidoutputspeed = Швидкість вихідної рідини
blocks.liquiduse = Використовуеться рідин
blocks.coolant = Охолоджуюча рідина
blocks.liquid = Рідина
blocks.coolantuse = Охолодж. рідини використовуеться
blocks.inputliquidfuel = Рідке паливо
blocks.liquidfueluse = Рідкого палива використовуеться
blocks.boostitem = Прискорюючий предмет
blocks.boostliquid = Прискорююча рідина
blocks.health = Здоров'я
blocks.heat = Температура
blocks.power = Енергія
blocks.progress = Будівництво триває
blocks.spawned = Бой. од.: {0}/{1}
blocks.power.satisfaction = Енергія
blocks.inaccuracy = Розкид
blocks.shots = Постріли
blocks.reload = Постріли/секунду
blocks.inputfuel = Паливо
blocks.fuelburntime = Час горіння топлива
blocks.inputcapacity = Макс. місткість вхідних предметів
blocks.outputcapacity = Макс. місткість вихідних предметів
blocks.ammo = Боєприпаси
bar.drillspeed = Швидкість сверрдління: {0}/s
bar.efficiency = Ефективність: {0}%
bar.powerbalance = Енергія: {0}/с
bar.poweramount = Енергія: {0}
bar.poweroutput = Вихідна енергія: {0}
bar.items = Предмети: {0}
bar.liquid = Рідина
bar.heat = Нагрівання
bar.power = Енергія
bar.progress = Хід Будівництва
bar.spawned = Бойов. од. : {0}/{1}
bullet.damage = [stat]{0}[lightgray] шкода
bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat] {1}[lightgray] плитк.
bullet.incendiary = [stat]запальний
bullet.homing = [stat]самонаведення
bullet.shock = [stat]шок
bullet.frag = [stat]осколкова граната
bullet.knockback = [stat]{0}[lightgray] відкидання
bullet.freezing = [stat]заморожування
bullet.tarred = [stat]дьогтьовий
bullet.multiplier = [stat]{0}[lightgray]x патронів
bullet.reload = [stat]{0}[lightgray]x швидкість перезаряджання
unit.blocks = блоки
unit.powersecond = одиниць енергії/секунду
unit.liquidsecond = рідких одиниць/секунду
@@ -398,6 +399,9 @@ unit.liquidunits = рідинних одиниць
unit.powerunits = енергетичних одиниць
unit.degrees = град.
unit.seconds = сек.
unit.persecond = /сек
unit.timesspeed = x швидкість
unit.percent = %
unit.items = предм.
category.general = Загальні
category.power = Енергетичні
@@ -406,13 +410,16 @@ category.items = Предмети
category.crafting = Введення/виведення
category.shooting = Стрільба
category.optional = Додаткові поліпшення
setting.shadows.name = Shadows
setting.landscape.name = Зберегти пейхаж
setting.shadows.name = Тіні
setting.animatedwater.name = Анімована вода
setting.animatedshields.name = Анімовані щити
setting.antialias.name = Згладжування[LIGHT_GRAY] (потребує перезапуску)[]
setting.indicators.name = Показувати у сторону ворогів та союзників
setting.autotarget.name = Авто-стрільба
setting.fpscap.name = Макс. FPS
setting.fpscap.none = Необмежений
minimap = Міні-мапа
setting.fpscap.text = {0} FPS
setting.swapdiagonal.name = Завжди Діагональне Розміщення
setting.difficulty.training = навчання
@@ -431,7 +438,8 @@ setting.borderless.name = Вікно без полів
setting.fps.name = Показувати FPS
setting.vsync.name = Вертикальна синхронізація
setting.lasers.name = Показувати енергію лазерів
setting.minimap.name = Показати мінімапу
setting.pixelate.name = Пікселізація [LIGHT_GRAY](може знизити продуктивність)
setting.minimap.name = Показати міні-мапу
setting.musicvol.name = Гучність музики
setting.mutemusic.name = Заглушити музику
setting.sfxvol.name = Гучність звукових ефектів
@@ -476,13 +484,28 @@ mode.help.title = Опис режимів
mode.survival.name = Хвилі
mode.survival.description = Звичайний режим. В цьому режимі треба самим добувати ресурси та хвилі йдуть беззупинно.
mode.sandbox.name = Пісочниця
mode.sandbox.description = В режимі "Пісочниця" бескінечні ресурси(але їх все одно можно добувати) та хвилі йдуть за вашим бажанням.
mode.sandbox.description = В режимі "Пісочниця" незкінченні ресурси(але їх все одно можно добувати) та хвилі йдуть за вашим бажанням.
mode.freebuild.name = Вільне\nбудівництво
mode.freebuild.description = В режимі "Пісочниця" треба самим добувати ресурси та хвилі йдуть за вашим бажанням.
mode.pvp.name = PVP
mode.pvp.description = боріться проти інших гравців.
mode.attack.name = Атака
mode.attack.description = Немає хвиль, мета - знищити базу противника.
mode.custom = Користувальницькі правила
rules.infiniteresources = Нескінченні ресурси
rules.wavetimer = Таймер Хвиль
rules.waves = Хвилі
rules.enemyCheat = Нескінченні ресурси для ШІ
rules.pvp = PvP
rules.unitdrops = Ресурс бойових одиниць
rules.unitbuildspeedmultiplier = Множник Швидкості Створювання Бойов. Од.
rules.unithealthmultiplier = Множник Здоров'я Створювання Бойов. Од.
rules.playerdamagemultiplier = Множник Шкоди Гравця
rules.enemycorebuildradius = Радіус заборони будування для Ворожого Ядра:[LIGHT_GRAY] (плитки)
rules.respawntime = Час відродження:[LIGHT_GRAY] (sec)
rules.wavespacing = Інтервал хвиль:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Множник затрат на будівництво
rules.buildspeedmultiplier = Множник швидкості будування
content.item.name = Предмети
content.liquid.name = Рідини
content.unit.name = Бойові одиниці
@@ -511,7 +534,7 @@ item.spore-pod.name = Споровий стручок
item.spore-pod.description = Використовується для перетворення на нафту, вибухові речовини та паливо.
item.sand.name = Пісок
item.sand.description = Загальний матеріал, який широко використовується при плавленні, як у процесі плавки, так і у вигляді шлака.
item.blast-compound.name = Вибухонебезпечне з'єднання
item.blast-compound.name = Вибухова суміш
item.blast-compound.description = Нестійке з'єднання, що використовується в бомбах та вибухових речовинах. Хоча воно може спалюватися як паливо, та це не рекомендується.
item.pyratite.name = Піротит
item.pyratite.description = Вкрай легкозаймиста речовина, що використовується у запальній зброї.
@@ -525,7 +548,7 @@ liquid.oil.name = Нафта
liquid.cryofluid.name = Кріогенна рідина
mech.alpha-mech.name = Альфа
mech.alpha-mech.weapon = Тяжкий кулемет
mech.alpha-mech.ability = Нема
mech.alpha-mech.ability = Регенерація
mech.alpha-mech.description = Стандартний мех для настільних пристроїв. Має пристойну швидкість і урон.
mech.delta-mech.name = Дельта
mech.delta-mech.weapon = Генератор дуг
@@ -560,9 +583,10 @@ unit.speed = [LIGHT_GRAY]Швидкість: {0}
mech.weapon = [LIGHT_GRAY]Зброя: {0}
mech.health = [LIGHT_GRAY]Здоров'я: {0}
mech.itemcapacity = [LIGHT_GRAY] Ємність елементів: {0}
mech.minespeed = [LIGHT_GRAY]Швидкість видобутку: {0}
mech.minespeed = [LIGHT_GRAY]Швидкість видобутку: {0}%
mech.minepower = [LIGHT_GRAY]Потужність видобутку: {0}
mech.ability = [LIGHT_GRAY]Здібність: {0}
mech.buildspeed = [LIGHT_GRAY]Швидкість будування: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Теплоємність: {0}
liquid.viscosity = [LIGHT_GRAY]В'язкість: {0}
liquid.temperature = [LIGHT_GRAY]Температура: {0}
@@ -594,8 +618,8 @@ block.core-foundation.name = Ядро: Штаб
block.core-nucleus.name = Ядро: Атом
block.deepwater.name = Глибоководдя
block.water.name = Вода
block.tainted-water.name = Tainted Water
block.darksand-tainted-water.name = Dark Sand Tainted Water
block.tainted-water.name = Забруднена вода
block.darksand-tainted-water.name = Темний пісок з забрудненою водою
block.tar.name = Tar
block.stone.name = Камінь
block.sand.name = Пісок
@@ -616,10 +640,10 @@ block.pine.name = Сосна
block.white-tree-dead.name = Мертве Біле Дерево
block.white-tree.name = Біле Дерево
block.spore-cluster.name = Скупчення спор
block.metal-floor.name = Металевий Пол
block.metal-floor.name = Металевий Пол 1
block.metal-floor-2.name = Металевий Пол 2
block.metal-floor-3.name = Металевий Пол 3
block.metal-floor-5.name = Металевий Пол 5
block.metal-floor-5.name = Металевий Пол 4
block.metal-floor-damaged.name = Пошкоджений Металевий Пол
block.ignarock.name = Магматичні Гірські Породи
block.hotrock.name = Гарячий Камінь
@@ -669,7 +693,7 @@ block.impact-reactor.name = Імпульсний реактор
block.mechanical-drill.name = Механічний дриль
block.pneumatic-drill.name = Пневматичний дриль
block.laser-drill.name = Лазерний дриль
block.water-extractor.name = Екстрактор води
block.water-extractor.name = Гідроконденсатор
block.cultivator.name = Культиватор
block.alpha-dart-mech-pad.name = Реконструктор "Альфа-Дротик"
block.delta-mech-pad.name = Реконструктор "Дельта"
@@ -698,7 +722,7 @@ block.pyratite-mixer.name = Змішувач піротиту
block.blast-mixer.name = Доменний змішувач
block.solar-panel.name = Сонячна панель
block.solar-panel-large.name = Велика сонячна панель
block.oil-extractor.name = Екстрактор нафти
block.oil-extractor.name = Нафтова вежа
block.spirit-factory.name = Завод дронов "Призрак"
block.phantom-factory.name = Завод дронов "Фантом"
block.wraith-factory.name = Завод винищувачів "Примара"
@@ -722,6 +746,7 @@ block.blast-drill.name = Бурова установка
block.thermal-pump.name = Тепловий насос
block.thermal-generator.name = Тепловий генератор
block.alloy-smelter.name = Сплавовий завод
block.mender.name = Mender
block.mend-projector.name = Ремонту гранатомет
block.surge-wall.name = Хвиляста стіна
block.surge-wall-large.name = Велика хвиляста стіна
@@ -737,6 +762,7 @@ block.meltdown.name = Розтоплення
block.container.name = Склад
block.launch-pad.name = Стартовий майданчик
block.launch-pad.description = Запускає партії елементів без необхідності запуску ядра. Незакінчено.
block.launch-pad-large.name = Великий Стартовий майданчик
team.blue.name = Синя
team.red.name = Червона
team.orange.name = Помаренчева
@@ -821,7 +847,7 @@ block.silicon-smelter.description = За допомогою піску, вугі
block.plastanium-compressor.description = Створює пластинійи з титану і нафти. Вимагає енергії. Для прискорення виробництва можна додати в компресор пісок.
block.phase-weaver.description = Виробляє фазову тканину торію і піску. Вимагає багато енергії.
block.alloy-smelter.description = Створює кінетичний сплав з титану, кременя, міді і свинця. Вимагає енергію.
block.pulverizer.description = Подрібнює камінь в пісок. Вимагає енергії.
block.pulverizer.description = Подрібнює металобрухт в пісок. Вимагає енергії.
block.pyratite-mixer.description = Створює піротит з вугілля, свинцю і піску. Вимагає енергії.
block.blast-mixer.description = Створює вибухонебезпечне з'єднання з нафти і піротіта. Для прискорення виробництва можна додати в мішалку пісок.
block.cryofluidmixer.description = Виробляє криогенну рідину з води і титану. Вимагає енергії.
+275 -244
View File
@@ -1,4 +1,4 @@
credits.text = Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
credits.text = 由[ROYAL]Anuken[]开发 - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
credits = 致谢
contributors = 译者和贡献者
discord = 加入 Mindustry 的 Discord!
@@ -12,65 +12,66 @@ link.wiki.description = 官方 Mindustry 维基
linkfail = 打开链接失败!\nURL 已经复制到剪贴板。
screenshot = 荧幕截图已放在 {0}
gameover = 你的核心被摧毁了!
gameover.pvp = accent] {0}[] 队获胜!
gameover.pvp = [accent] {0}[] 队获胜!
highscore = [accent]新纪录!
stat.wave = 战胜的波数:[accent] {0}
stat.enemiesDestroyed = Enemies Destroyed:[accent] {0}
stat.built = Buildings Built:[accent] {0}
stat.destroyed = Buildings Destroyed:[accent] {0}
stat.deconstructed = Buildings Deconstructed:[accent] {0}
stat.delivered = Resources Launched:
stat.rank = Final Rank: [accent]{0}
placeline = You have selected a block.\nYou can[accent] place in a line[] by[accent] holding down your finger for a few seconds[] and dragging in a direction.\nTry it.
removearea = You have selected removal mode.\nYou can[accent] remove blocks in a rectangle[] by[accent] holding down your finger for a few seconds[] and dragging.\nTry it.
launcheditems = [accent]Launched Items
stat.wave = 战胜的波数:[accent]{0}
stat.enemiesDestroyed = 消灭的敌人:[accent]{0}
stat.built = 建造的建筑:[accent]{0}
stat.destroyed = 摧毁的建筑:[accent]{0}
stat.deconstructed = 拆除的建筑:[accent]{0}
stat.delivered = 发射的资源:
stat.rank = 最终排名:[accent]{0}
placeline = 你选择了一个方块。\n你能通过[accent]长按几秒钟[]并向一个方向拖动来[accent]直线放置方块[]。\n试试看吧。
removearea = 你选择了拆除模式。\n你能通过[accent]长按几秒钟[]并拖动来[accent]删除矩形内的方块[]。\n试试看吧。
launcheditems = [accent]发射的资源
map.delete = 确定要删除 "[accent]{0}[]" 地图吗?
level.highscore = 最高分: [accent]{0}
level.select = 选择关卡
level.highscore = 最高分:[accent]{0}
level.select = 选择关卡(?Level Select)
level.mode = 游戏模式:
showagain = 不再显示
showagain = 下次不再显示
coreattack = < 核心正在受到攻击! >
nearpoint = [[ [scarlet]LEAVE DROP POINT IMMEDIATELY[] ]\nannihilation imminent
outofbounds = [[ OUT OF BOUNDS ]\n[]self-destruct in {0}
database = Core Database
nearpoint = [[ [scarlet]立即离开敌人出生点[] ]\n将被清理
outofbounds = [[ 超出边界 ]\n[]{0}秒后自毁
database = 核心数据库
savegame = 保存游戏
loadgame = 载入游戏
joingame = 加入游戏
addplayers = 增加/删除玩家
addplayers = 添加/删除玩家
customgame = 自定义游戏
newgame = 新游戏
none = <无>
minimap = Minimap
close = 关闭
quit = 退出
maps = 地图
continue = 继续
maps.none = [LIGHT_GRAY]未发现地图!
maps.none = [LIGHT_GRAY]没有找到地图!
about.button = 关于
name = 名字:
noname = Pick a[accent] player name[] first.
noname = 先取一个[accent] 玩家名[]。
filename = 文件名:
unlocked = 新方块已解锁!
completed = [accent]Completed
techtree = Tech Tree
research.list = [LIGHT_GRAY]Research:
research = Research
researched = [LIGHT_GRAY]{0} researched.
completed = [accent]完成的
techtree = 科技树
research.list = [LIGHT_GRAY]研究:
research = 研究
researched = [LIGHT_GRAY]{0} 己研究。
players = {0} 玩家在线
players.single = {0} 玩家在线
server.closing = [accent]正在关闭服务器……
server.kicked.kick = 你被踢出服务器了!
server.kicked.serverClose = 服务器已关闭。
server.kicked.clientOutdated = 客户端版本过旧!请升级!
server.kicked.serverOutdated = 服务器版本过旧!请联系房主升级!
server.kicked.banned = 你被这个服务器拉黑了。
server.kicked.clientOutdated = 过旧的客户端!更新你的游戏!
server.kicked.serverOutdated = 过旧的服务器!联系房主升级!
server.kicked.banned = 你在这个服务器上被禁了。
server.kicked.recentKick = 你刚刚被踢出服务器。\n请稍后重新连接!
server.kicked.nameInUse = 服务器中已经\n有人有相同的名字了。
server.kicked.nameEmpty = 你的名字必须至少包含一个字母或数字。
server.kicked.idInUse = 你已经在服务器中!不允许用两个账号。
server.kicked.customClient = 这个服务器不支持修改版客户端,请下载官方版本。
server.kicked.gameover = !
host.info = [accent]创建局域网游戏[]按钮会在[scarlet]6567[]端口运行一个服务器。[]\n任何在同一个[LIGHT_GRAY]网络或本地网络[]下的人都将在服务器列表中看到你的服务器。\n\n如果你想让别人在任何地方都能通过IP地址连接,你需要设定[accent]端口转发[]。\n\n[LIGHT_GRAY]请注意:如果某人无法连接到你的局域网游戏,请确保你在防火墙设置里允许了Mindustry连接本地网络。
join.info = 你可以在这里输入[accent]服务器的IP地址[]以连接,或寻找[accent]本地网络[]中的服务器以连接。\n目前支持局域网或广域网多人游戏。\n\n[LIGHT_GRAY]请注意:没有全球服务器列表;如果你想通过IP地址连接某个服务器,你需要向房主询问IP地址。
server.kicked.nameEmpty = 你选择的名字是无效的。
server.kicked.idInUse = 你已在这个服务器上!不允许用两个账号连接。
server.kicked.customClient = 这个服务器不支持定制版本。下载官方版本。
server.kicked.gameover = 游戏结束!
host.info = [accent]创建局域网游戏[]按钮会在[scarlet]6567[]端口运行一个服务器。[]\n任何在同一个[LIGHT_GRAY]wifi或本地网络[]下的人都应该可以在服务器列表中看到你的服务器。\n\n如果你想让别人在任何地方都能通过IP地址连接,你需要设定[accent]端口转发[]。\n\n[LIGHT_GRAY]注意:如果某人无法连接到你的局域网游戏,请确保你在防火墙设置里允许了Mindustry访问本地网络。
join.info = 此时,可以输入[accent]服务器的IP地址[]来连接,或寻找[accent]本地网络[]中的服务器来连接。\n局域网或广域网多人游戏都被支持。\n\n[LIGHT_GRAY]注意:没有全球服务器列表;如果你想通过IP地址连接某个服务器,你需要向房主询问IP地址。
hostserver = 创建服务器
hostserver.mobile = 创建\n服务器
host = 创建
@@ -81,189 +82,190 @@ server.refreshing = 正在刷新服务器
hosts.none = [lightgray]未发现局域网游戏!
host.invalid = [scarlet]无法连接服务器。
trace = 跟踪玩家
trace.playername = 玩家名字: [accent]{0}
trace.ip = IP地址: [accent]{0}
trace.id = ID︰[accent]{0}
trace.android = 安卓客户端: [accent]{0}
trace.modclient = 修改版客户端: [accent]{0}
trace.playername = 玩家名称:[accent]{0}
trace.ip = IP地址:[accent]{0}
trace.id = 唯一的ID:[accent]{0}
trace.android = 安卓客户端:[accent]{0}
trace.modclient = 定制版客户端:[accent]{0}
trace.totalblocksbroken = 总共破坏了 [accent]{0} 个方块。
trace.structureblocksbroken = 总共破坏了[accent]{0}个方块。
trace.lastblockbroken = 最后破坏的方块: [accent]{0}
trace.structureblocksbroken = 总共破坏了 [accent]{0} 个建筑物方块。
trace.lastblockbroken = 最后破坏的方块:[accent]{0}
trace.totalblocksplaced = 总共放置了 [accent]{0} 个方块。
trace.lastblockplaced = 最后放置的方块: [accent]{0}
invalidid = 无效的客户端ID!请提交错误报告。
trace.lastblockplaced = 最后放置的方块:[accent]{0}
invalidid = 无效的客户端ID!提交一个错误报告。
server.bans = 黑名单
server.bans.none = 没有被拉黑的玩家!
server.bans.none = 没有找到被拉黑的玩家!
server.admins = 管理员
server.admins.none = 没有管理员!
server.admins.none = 没有找到管理员!
server.add = 添加服务器
server.delete = 确定要删除这个服务器吗?
server.hostname = 主机︰{0}
server.delete = 你确定要删除这个服务器吗?
server.hostname = 主机:{0}
server.edit = 编辑服务器
server.outdated = [crimson]服务器过旧![]
server.outdated.client = [crimson]客户端过旧![]
server.version = [lightgray]版本: {0}
server.custombuild = [yellow]修改版
confirmban = 确认拉黑这个玩家吗?
confirmkick = 您确定要踢出这个玩家吗?
confirmunban = 确认要取消拉黑这个玩家吗?
confirmadmin = 确认要添加这个玩家为管理员吗?
confirmunadmin = 确认要取消这个玩家的管理员身份吗?
server.outdated = [crimson]过旧的服务器![]
server.outdated.client = [crimson]过旧的客户端![]
server.version = [lightgray]版本:{0} {1}
server.custombuild = [yellow]定制版
confirmban = 你确认你想拉黑这名玩家吗?
confirmkick = 你确定你想要踢走这名玩家吗?
confirmunban = 你确定你想要取消拉黑这名玩家吗?
confirmadmin = 你确定你想要使这名玩家成为一个管理员吗?
confirmunadmin = 你确定你想要删除这名玩家的管理员地位吗?
joingame.title = 加入游戏
joingame.ip = IP:
joingame.ip = 地址:
disconnect = 已断开
disconnect.data = 载入世界失败!
connecting = [accent]连接中……
connecting.data = [accent]加载世界中……
server.port = 端口︰
server.addressinuse = 地址已经使用!
server.invalidport = 无效的端口!
disconnect.data = 读取世界数据失败!
connecting = [accent]正在连接...
connecting.data = [accent]正在加载世界数据...
server.port = 端口:
server.addressinuse = 地址已经在使用中!
server.invalidport = 无效的端口号!
server.error = [crimson]创建服务器错误:[accent]{0}
save.old = 这个存档属于旧版本游戏,无法继续使用了。\n\n[LIGHT_GRAY]存档向下兼容将在 4.0 版本中实现。
save.old = 这个存档属于旧版本游戏,不再被使用。\n\n[LIGHT_GRAY]存档向下兼容将在完整的 4.0 版本中被实现。
save.new = 新存档
save.overwrite = 确认要覆盖这个存档吗?
save.overwrite = 你确定你要覆盖这个存档位吗?
overwrite = 覆盖
save.none = 没有存档!
saveload = [accent]保存中……
save.none = 没有存档被找到!
saveload = [accent]正在保存...
savefail = 保存失败!
save.delete.confirm = 确认要删除这个存档吗?
save.delete.confirm = 你确定你要删除这个存档吗?
save.delete = 删除
save.export = 导出存档
save.import.invalid = [accent]存档无效!
save.import.invalid = [accent]这个存档是无效的!
save.import.fail = [crimson]导入存档失败:[accent]{0}
save.export.fail = [crimson]导出存档失败:[accent]{0}
save.import = 导入存档
save.newslot = 保存游戏:
save.newslot = 保存的名称:
save.rename = 重命名
save.rename.text = 新名字:
save.rename.text = 新名称:
selectslot = 选择一个存档。
slot = [accent]存档 {0}
save.corrupted = [accent]存档损坏或无效!\n如果你刚刚升级了游戏,那么这可能是因为存档格式改变了,而[scarlet]不是[] bug 。
slot = [accent]存档位 {0}
save.corrupted = [accent]存档损坏或无效!\n如果你刚刚升级了游戏,那么这可能是因为存档格式改变了,而[scarlet]不是[]bug 。
empty = <空>
on = 开
off = 关
save.autosave = 自动保存:{0}
save.map = 地图:{0}
save.wave = 第 {0} 波
save.difficulty = 难度: {0}
save.date = 最后保存日期:{0}
save.wave = 波次 {0}
save.difficulty = 难度:{0}
save.date = 最后保存过:{0}
save.playtime = 游戏时间:{0}
warning = Warning.
warning = 警告。
confirm = 确认
delete = 删除
ok = 好的
open = 打开
cancel = 取消
openlink = 打开链接
copylink = 删除链接
copylink = 复制链接
back = 返回
quit.confirm = 确认要退出?
quit.confirm = 你确定你想要退出?
changelog.title = 更新日志
changelog.loading = 正在获取更新日志...
changelog.error.android = [accent]请注意更新日志有时在安卓 4.4 以下不工作。\n这是因为安卓系统的一个 bug 。
changelog.error.ios = [accent]iOS还不支持更新日志。
changelog.error.android = [accent]注意更新日志有时在安卓 4.4 以下不工作。\n这是安卓系统内部的一个bug。
changelog.error.ios = [accent]更新日志当前在iOS中不被支持。
changelog.error = [scarlet]获取更新日志失败!\n请检查你的网络。
changelog.current = [yellow][[Current version]
changelog.latest = [accent][[Latest version]
loading = [accent]加载中……
saving = [accent]保存中……
wave = [accent]第 {0} 波
wave.waiting = 下一波将在 {0} 秒后到来
waiting = 等待中……
changelog.current = [yellow][[当前版本]
changelog.latest = [accent][[最新版本]
loading = [accent]正在加载...
saving = [accent]正在保存...
wave = [accent]波次 {0}
wave.waiting = [LIGHT_GRAY]下一波将在{0}秒后到来
waiting.players = 等待玩家中……
wave.enemies = 剩下 [LIGHT_GRAY]{0} 敌人
wave.enemy = 剩下 [LIGHT_GRAY]{0} 敌人
waiting = [LIGHT_GRAY]正在等待...
wave.enemies = [LIGHT_GRAY]剩余 {0} 个敌人
wave.enemy = [LIGHT_GRAY]剩余 {0} 个敌人
loadimage = 加载图片
saveimage = 保存图片
unknown = 未知
custom = 自定义
builtin = 内建的
map.delete.confirm = 确认要删除地图吗?这个操作无法撤销!
map.delete.confirm = 你确定你想要删除这张地图吗?这个操作无法取消!
map.random = [accent]随机地图
map.nospawn = 这个地图没有核心!请在编辑器中添加一个[ROYAL]蓝色[]的核心。
map.nospawn.pvp = 这个地图没有敌人的核心!请在编辑器中添加一个[ROYAL]红色[]的核心。
map.nospawn.attack = 这个地图没有敌人的核心!请在编辑中向地图添加一个[SCARLET]红色[]的核心。
map.invalid = 地图载入错误:地图文件可能已经损坏。
editor.brush = 笔刷
editor.openin = 在编辑器中打开
editor.oregen = 生成矿石
editor.oregen.info = 生成矿石:
editor.mapinfo = 地图详情
editor.oregen = 矿石的生成
editor.oregen.info = 矿石的生成:
editor.mapinfo = 地图信息
editor.author = 作者:
editor.description = 描述:
editor.waves = Waves:
waves.title = Waves
waves.remove = Remove
editor.waves = 波数:
waves.title = 波数
waves.remove = 去除
waves.never = <never>
waves.every = every
waves.waves = wave(s)
waves.perspawn = per spawn
waves.to = to
waves.boss = Boss
waves.preview = Preview
waves.edit = Edit...
waves.copy = Copy to Clipboard
waves.load = Load from Clipboard
waves.invalid = Invalid waves in clipboard.
waves.copied = Waves copied.
editor.default = [LIGHT_GRAY]<Default>
edit = Edit...
editor.name = 名字:
editor.teams = 团队
waves.every = 每
waves.waves = 波
waves.perspawn = 每次生成
waves.to = 至
waves.boss = 首领(Boos)
waves.preview = 预览
waves.edit = 编辑...
waves.copy = 复制到剪贴板
waves.load = 从剪贴板读取
waves.invalid = 剪贴板中无效的波次信息。
waves.copied = 波次信息已复制。
editor.default = [LIGHT_GRAY]<默认>
edit = 编辑...
editor.name = 名称:
editor.teams = 队伍
editor.elevation = 高度
editor.errorload = Error loading file:\n[accent]{0}
editor.errorsave = Error saving file:\n[accent]{0}
editor.errorname = Map has no name defined.
editor.update = Update
editor.randomize = Randomize
editor.apply = Apply
editor.errorload = 读取文件时出现错误:\n[accent]{0}
editor.errorsave = 保存文件时出现错误:\n[accent]{0}
editor.errorname = 地图没有被定义的名称。
editor.update = 更新(Update)
editor.randomize = 随机化
editor.apply = 应用
editor.generate = 生成
editor.resize = 调整
editor.resize = 调整大小
editor.loadmap = 载入地图
editor.savemap = 保存地图
editor.saved = 已保存!
editor.save.noname = 你的地图还没有名字!在“地图信息”菜单里设置一个名字。
editor.save.overwrite = 你的地图覆盖了一个内建的地图!在“地图信息”菜单里重新设置一个新的名字。
editor.import.exists = [scarlet]无法导入:[] 已经有一个叫 '{0}' 的内建地图存在。
editor.import = 导入……
editor.save.noname = 你的地图没有名字!在“地图信息”菜单里设置一个。
editor.save.overwrite = 你的地图覆盖了一个内建的地图!在“地图信息”菜单里重新设置一个不同的名称。
editor.import.exists = [scarlet]无法导入:[]名为‘{0}’的内建地图已存在!
editor.import = 导入...
editor.importmap = 导入地图
editor.importmap.description = 导入一个已经存在的地图
editor.importfile = 导入文件
editor.importfile.description = 导入一个外置的地图文件
editor.importimage = 导入地形图像
editor.importimage.description = 导入外置地图图像文件
editor.export = 导出……
editor.importimage.description = 导入一个外置的地图图像文件
editor.export = 导出...
editor.exportfile = 导出文件
editor.exportfile.description = 导出一个地图文件
editor.exportimage = 导出一个地形文件
editor.exportimage.description = 导出一个地图图像文件
editor.loadimage = 导入地形
editor.saveimage = 导出地形
editor.unsaved = [scarlet]你有未保存的更改![]\n确定要退出?
editor.resizemap = 调整地图
editor.mapname = 地图名字:
editor.unsaved = [scarlet]你有未保存的更改![]\n你确定你想要要退出?
editor.resizemap = 调整地图大小
editor.mapname = 地图名称:
editor.overwrite = [accent]警告!\n这将会覆盖一个已经存在的地图。
editor.overwrite.confirm = [scarlet]警告![] 存在同名地图,确定要覆盖?
editor.overwrite.confirm = [scarlet]警告![]存在同名地图。你确定你想要覆盖?
editor.selectmap = 选择一个地图加载:
filters.empty = [LIGHT_GRAY]No filters! Add one with the button below.
filter.distort = Distort
filter.noise = Noise
filter.ore = Ore
filter.rivernoise = River Noise
filter.scatter = Scatter
filter.terrain = Terrain
filter.option.scale = Scale
filter.option.chance = Chance
filter.option.mag = Magnitude
filter.option.threshold = Threshold
filter.option.circle-scale = Circle Scale
filter.option.octaves = Octaves
filter.option.falloff = Falloff
filter.option.block = Block
filter.option.floor = Floor
filter.option.wall = Wall
filter.option.ore = Ore
filter.option.floor2 = Secondary Floor
filter.option.threshold2 = Secondary Threshold
filters.empty = [LIGHT_GRAY]没有过滤器(filters)!用下方的按钮添加一个。
filter.distort = 扭曲?(Distort)
filter.noise = 噪音(Noise)
filter.ore = 矿石(Ore)
filter.rivernoise = 河流噪音(River Noise)
filter.scatter = 散播(Scatter)
filter.terrain = 地形(Terrain)
filter.option.scale = 规模?(Scale)
filter.option.chance = 机会(Chance)
filter.option.mag = 大小?(Magnitude)
filter.option.threshold = 门槛?(Threshold)
filter.option.circle-scale = 圈规模?(Circle Scale)
filter.option.octaves = 八度?(Octaves)
filter.option.falloff = 减少?(Falloff)
filter.option.block = 方块
filter.option.floor = 地面
filter.option.wall = 墙
filter.option.ore = 矿石
filter.option.floor2 = 第二地面?(Secondary Floor)
filter.option.threshold2 = 第二门槛?(Secondary Threshold)
width = 宽度:
height = 高度:
menu = 菜单
@@ -279,10 +281,11 @@ tutorial = 教程
editor = 编辑器
mapeditor = 地图编辑器
donate = 捐赠
abandon = Abandon
abandon = 放弃
abandon.text = 这个区域和它的所有资源会被敌人没收.
locked = 已被锁定
complete = [LIGHT_GRAY]完成:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]最好: {0}
launch = < 发射 >
@@ -294,11 +297,11 @@ uncover = Uncover
configure = 设定 Loadout
configure.locked = [LIGHT_GRAY]到达第 {0} 波\n才设定 loadout.
zone.unlocked = [LIGHT_GRAY]{0} 已解锁。
zone.complete = 区域条件达成。
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = 已被发现的资源:
add = Add...
boss.health = Boss Health
boss.health = Boss 生命值
connectfail = [crimson]服务器连接失败: [accent]{0}
error.unreachable = 服务器无法访问。
error.invalidaddress = 地址无效。
@@ -308,13 +311,13 @@ error.alreadyconnected = 已连接。
error.mapnotfound = 找不到地图文件!
error.io = 网络 I/O 错误。
error.any = 未知网络错误。
zone.groundZero.name = Ground Zero
zone.craters.name = The Craters
zone.frozenForest.name = Frozen Forest
zone.ruinousShores.name = Ruinous Shores
zone.stainedMountains.name = Stained Mountains
zone.desolateRift.name = Desolate Rift
zone.nuclearComplex.name = Nuclear Production Complex
zone.groundZero.name = 零号地区
zone.craters.name = 陨石地带
zone.frozenForest.name = 冰冻森林
zone.ruinousShores.name = 毁灭海岸
zone.stainedMountains.name = 绵延群山
zone.desolateRift.name = 荒芜裂谷
zone.nuclearComplex.name = 核能生产
settings.language = 语言
settings.reset = 恢复默认
settings.rebind = 重新绑定
@@ -333,31 +336,30 @@ no = 不
info.title = [accent]详情
error.title = [crimson]发生了一个错误
error.crashtitle = 发生了一个错误
blocks.outputspeed = Drill Speed: {0}/s
blocks.efficiency = Efficiency: {0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = 方块详情
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = 能量容量
blocks.powershot = 能量/发射
blocks.targetsair = 攻击空中单位
blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.targetsground = 攻击地面单位
blocks.itemsmoved = 移动速度
blocks.launchtime = 发射间隔时间
blocks.shootrange = 范围
blocks.size = 尺寸
blocks.liquidcapacity = 液体容量
blocks.maxitemssecond = 最大物品数量
blocks.powerrange = 能量范围
blocks.poweruse = 能量使用
blocks.powerdamage = 功率/损伤
blocks.inputitemcapacity = 最大输入
blocks.outputitemcapacity = 最大输出
blocks.itemcapacity = 物品容量
blocks.basepowergeneration = 基础能源输出
blocks.powertransferspeed = 能量传输
blocks.craftspeed = 生产速度
blocks.productiontime = 生产时间
blocks.repairtime = 方块完全修复时间
blocks.speedincrease = 提速
blocks.range = 范围
blocks.inputliquid = 液体输入
blocks.inputliquidaux = 辅助液体
blocks.inputitem = 物品输入
@@ -365,31 +367,40 @@ blocks.inputitems = 物品输入
blocks.outputitem = 物品输出
blocks.drilltier = 可钻探矿物
blocks.drillspeed = 基础钻探速度
blocks.maxunits = Max Active Units
blocks.liquidoutput = 液体输出
blocks.liquidoutputspeed = 液体输出速度
blocks.liquiduse = 液体使用速度
blocks.coolant = 冷却剂
blocks.liquid = Liquid
blocks.coolantuse = 冷却剂使用速度
blocks.inputliquidfuel = 液体燃料输入
blocks.liquidfueluse = 液体燃料使用速度
blocks.boostitem = 强化物件
blocks.boostliquid = 强化液体
blocks.boosteffect = 加成影响
blocks.maxunits = 最大单位数量
blocks.health = 生命值
blocks.heat = Heat
blocks.heat = 热量
blocks.power = 电力
blocks.progress = Build Progress
blocks.spawned = Units: {0}/{1}
blocks.power.satisfaction = 电力见面
blocks.progress = 制造进度
blocks.spawned = 单位数量: {0}/{1}
blocks.power.satisfaction = 电力输入
blocks.inaccuracy = 误差
blocks.shots = 发射数
blocks.reload = 重新装弹
blocks.inputfuel = 燃料
blocks.fuelburntime = 燃料燃烧时间
blocks.inputcapacity = 输入容量
blocks.outputcapacity = 输出容量
blocks.ammo = 子弹
bar.drillspeed = 挖掘速度: {0}/s
bar.efficiency = 效率: {0}%
bar.powerbalance = 能量: {0}
bar.poweramount = Power: {0}
bar.poweroutput = 能量输出: {0}
bar.items = 物体: {0}
bar.liquid = 液体
bar.heat = Heat
bar.power = 电力
bar.progress = 制造进度
bar.spawned = 单位数量: {0}/{1}
bullet.damage = [stat]{0}[lightgray] 伤害
bullet.splashdamage = [stat]{0}[lightgray] 范围伤害 ~[stat] {1}[lightgray] 格
bullet.incendiary = [stat] 燃烧
bullet.homing = [stat] 追踪
bullet.shock = [stat] 击晕
bullet.frag = [stat] 分裂
bullet.knockback = [stat]{0}[lightgray] 击退
bullet.freezing = [stat] 冰冻
bullet.tarred = [stat] 减速
bullet.multiplier = [stat]{0}[lightgray]x 子弹数量
bullet.reload = [stat]{0}[lightgray]x 装弹
unit.blocks = 方块
unit.powersecond = 能量单位/秒
unit.liquidsecond = 液体单位/秒
@@ -398,6 +409,9 @@ unit.liquidunits = 液体单位
unit.powerunits = 能量单位
unit.degrees = 度
unit.seconds = 秒
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = 物品
category.general = 普通
category.power = 能量
@@ -406,15 +420,16 @@ category.items = 物品
category.crafting = 制造
category.shooting = 发射
category.optional = 可选的增强物品
setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.landscape.name = 锁定横屏
setting.shadows.name = 影子
setting.animatedwater.name = 流动的水
setting.antialias.name = 抗锯齿[LIGHT_GRAY] (需要重新启动)[]
setting.indicators.name = 队友指示器
setting.autotarget.name = 自动发射
setting.fpscap.name = 最高 FPS
setting.fpscap.none = 无
setting.fpscap.text = {0} FPS
setting.swapdiagonal.name = Always Diagonal Placement
setting.swapdiagonal.name = 总是自动铺设
setting.difficulty.training = 训练
setting.difficulty.easy = 简单
setting.difficulty.normal = 普通
@@ -427,10 +442,11 @@ setting.sensitivity.name = 控制器灵敏度
setting.saveinterval.name = 自动保存间隔
setting.seconds = {0} 秒
setting.fullscreen.name = 全屏
setting.borderless.name = Borderless Window
setting.borderless.name = 无边界
setting.fps.name = 显示 FPS
setting.vsync.name = 帧同步
setting.lasers.name = 显示能量射线
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = 显示小地图
setting.musicvol.name = 音乐音量
setting.mutemusic.name = 静音
@@ -452,7 +468,7 @@ keybind.screenshot.name = 地图截图
keybind.move_x.name = 水平移动
keybind.move_y.name = 垂直移动
keybind.select.name = 选择
keybind.diagonal_placement.name = Diagonal Placement
keybind.diagonal_placement.name = 自动铺设
keybind.pick.name = 选择方块
keybind.break_block.name = 破坏方块
keybind.deselect.name = 取消
@@ -474,7 +490,7 @@ keybind.drop_unit.name = 掉落单位
keybind.zoom_minimap.name = 小地图缩放
mode.help.title = 模式说明
mode.survival.name = 生存
mode.survival.description = 正常的游戏模式,有限的资源和自动入射波。
mode.survival.description = 正常的游戏模式,有限的资源和自动波次。
mode.sandbox.name = 沙盒
mode.sandbox.description = 无限的资源,不会自动生成敌人。
mode.freebuild.name = 自由建造
@@ -482,7 +498,19 @@ mode.freebuild.description = 有限的资源,不会自动生成敌人。
mode.pvp.name = PvP
mode.pvp.description = 和本地玩家对战.
mode.attack.name = 攻击
mode.attack.description = 没有波数,但是有吹毁敌人基地的任务.
mode.attack.description = 没有波数,但是有摧毁敌人基地的任务.
mode.custom = 自定义模式
rules.infiniteresources = 无限资源
rules.wavetimer = 波次计时器
rules.waves = 波次
rules.enemyCheat = AI无限资源
rules.pvp = PvP
rules.unitdrops = 敌人出生点
rules.enemycorebuildradius = 敌对核心非建设区半径:[LIGHT_GRAY](格)
rules.respawntime = 重生时间:[LIGHT_GRAY](秒)
rules.wavespacing = 波次间隔时间:[LIGHT_GRAY](秒)
rules.buildcostmultiplier = 建设花费倍数
rules.buildspeedmultiplier = 建设时间倍数
content.item.name = 物品
content.liquid.name = 液体
content.unit.name = 部队
@@ -494,7 +522,7 @@ item.lead.name = 铅
item.lead.description = 一种基本的起始材料。被广泛用于电子设备和液体运输方块。
item.coal.name = 煤
item.coal.description = 一种常见并容易获得的燃料。
item.graphite.name = Graphite
item.graphite.name = 石墨
item.titanium.name = 钛
item.titanium.description = 一种罕见的超轻金属,被广泛运用于液体运输、钻头和飞机。
item.thorium.name = 钍
@@ -507,39 +535,39 @@ item.phase-fabric.name = 相织物
item.phase-fabric.description = 一种接近0重量的物质,用于先进的电子技术和自我修复技术。
item.surge-alloy.name = 巨浪合金
item.surge-alloy.description = 一种具有独特电气性能的高级合金。
item.spore-pod.name = Spore Pod
item.spore-pod.description = Used for conversion into oil, explosives and fuel.
item.spore-pod.name = 孢子荚
item.spore-pod.description = 一种用于制造石油,炸药及燃料的生物质。
item.sand.name = 沙
item.sand.description = 一种常见的材料,广泛用于冶炼,包括制作合金和助熔剂。
item.blast-compound.name = 爆炸混合物
item.blast-compound.description = 一种用于炸弹和炸药的挥发性混合物。虽然它可以作为燃料燃烧,但不建议这样做。
item.pyratite.name = 硫
item.pyratite.description = 一种燃烧武器中使用的极易燃物质。
item.metaglass.name = Metaglass
item.metaglass.name = 钢化玻璃
item.metaglass.description = 一种超级强硬的复合玻璃。通常用来传送和收藏液体
item.scrap.name = Scrap
item.scrap.description = Leftover remnants of old structures and units. Contains trace amounts of many different metals.
item.scrap.name = 废料
item.scrap.description = 一种废弃的建筑物及废弃单位的残骸,富含多种金属元素。
liquid.water.name = 水
liquid.slag.name = Slag
liquid.slag.name = 岩浆
liquid.oil.name = 石油
liquid.cryofluid.name = 冷冻液
mech.alpha-mech.name = Alpha
mech.alpha-mech.name = 阿尔法
mech.alpha-mech.weapon = 重型机枪
mech.alpha-mech.ability = 无人机群
mech.alpha-mech.description = 标准的机甲。具有不错的速度和伤害输出;,可以制造多达 3 架无人机以提高进攻能力。
mech.delta-mech.name = Delta
mech.delta-mech.name = 德尔塔
mech.delta-mech.weapon = 电弧发电机
mech.delta-mech.ability = 放电
mech.delta-mech.description = 一种快速,轻便的机甲,一击即退。对结构造成的伤害很小,但可以用弧形闪电武器很快杀死大量敌方单位。
mech.tau-mech.name = Tau
mech.tau-mech.name = 医疗机
mech.tau-mech.weapon = 重构激光
mech.tau-mech.ability = 修复
mech.tau-mech.description = 后勤机甲。治疗友军。可以熄灭火焰并治疗一定范围内的友军。
mech.omega-mech.name = Omega
mech.omega-mech.name = 欧米茄
mech.omega-mech.weapon = 导弹群
mech.omega-mech.ability = 配置装甲
mech.omega-mech.description = 一种装甲厚重的机甲,用于在前线攻击。它的护甲可以阻挡高达 90% 的伤害。
mech.dart-ship.name = Dart
mech.dart-ship.name = 飞镖
mech.dart-ship.weapon = 机枪
mech.dart-ship.description = 标准飞船。快速轻便,但攻击能力低,采矿速度快。
mech.javelin-ship.name = 标枪
@@ -549,7 +577,7 @@ mech.javelin-ship.ability = 放电助推器
mech.trident-ship.name = 三叉戟
mech.trident-ship.description = 一种重型轰炸机。有厚装甲。
mech.trident-ship.weapon = 炸弹
mech.glaive-ship.name = Glaive
mech.glaive-ship.name = 阔剑
mech.glaive-ship.description = 一种大型,装甲厚重的武装直升机。配备燃烧机枪。有优秀的加速能力和最快的速度。
mech.glaive-ship.weapon = 火焰机枪
item.explosiveness = [LIGHT_GRAY]爆炸性:{0}
@@ -558,11 +586,12 @@ item.radioactivity = [LIGHT_GRAY]放射性:{0}
unit.health = [LIGHT_GRAY]生命值:{0}
unit.speed = [LIGHT_GRAY]速度:{0}
mech.weapon = [LIGHT_GRAY]武器:{0}
mech.health = [LIGHT_GRAY]Health: {0}
mech.health = [LIGHT_GRAY]生命值: {0}
mech.itemcapacity = [LIGHT_GRAY]物品容量:{0}
mech.minespeed = [LIGHT_GRAY]采矿速度:{0}
mech.minepower = [LIGHT_GRAY]采矿力量:{0}
mech.ability = [LIGHT_GRAY]能力:{0}
mech.buildspeed = [LIGHT_GRAY]建造速度:{0}%
liquid.heatcapacity = [LIGHT_GRAY]热容量:{0}
liquid.viscosity = [LIGHT_GRAY]粘度:{0}
liquid.temperature = [LIGHT_GRAY]温度:{0}
@@ -583,15 +612,15 @@ block.scrap-wall-large.name = Large Scrap Wall
block.scrap-wall-huge.name = Huge Scrap Wall
block.scrap-wall-gigantic.name = Gigantic Scrap Wall
block.thruster.name = Thruster
block.kiln.name = Kiln
block.kiln.description = Smelts sand and lead into metaglass. Requires small amounts of power.
block.graphite-press.name = Graphite Press
block.multi-press.name = Multi-Press
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
block.kiln.name = 熔炉
block.kiln.description = 将铅和沙子熔炼成钢化玻璃,需要少量电力。
block.graphite-press.name = 石墨压缩机
block.multi-press.name = 大型石墨压缩机
block.constructing = {0}\n[LIGHT_GRAY](建造中)
block.spawn.name = 敌人出生点
block.core-shard.name = Core: Shard
block.core-foundation.name = Core: Foundation
block.core-nucleus.name = Core: Nucleus
block.core-shard.name = 小型核心
block.core-foundation.name = 中型核心
block.core-nucleus.name = 大型核心
block.deepwater.name = 深水
block.water.name = 水
block.tainted-water.name = Tainted Water
@@ -627,8 +656,8 @@ block.magmarock.name = Magma Rock
block.cliffs.name = Cliffs
block.copper-wall.name = 铜墙
block.copper-wall-large.name = 大型铜墙
block.titanium-wall.name = Titanium Wall
block.titanium-wall-large.name = Large Titanium Wall
block.titanium-wall.name = 钛墙
block.titanium-wall-large.name = 大型钛墙
block.phase-wall.name = 相织布墙
block.phase-wall-large.name = 大型相织布墙
block.thorium-wall.name = 钍墙
@@ -636,8 +665,8 @@ block.thorium-wall-large.name = 大型钍墙
block.door.name = 门
block.door-large.name = 大门
block.duo.name = 双管炮
block.scorch.name = Scorch
block.scatter.name = Scatter
block.scorch.name = 火焰炮
block.scatter.name = 分裂炮
block.hail.name = 冰雹炮
block.lancer.name = 蓝瑟炮
block.conveyor.name = 传送带
@@ -655,29 +684,29 @@ block.pulverizer.name = 粉碎机
block.cryofluidmixer.name = 冷冻液混合器
block.melter.name = 熔炉
block.incinerator.name = 焚化炉
block.spore-press.name = Spore Press
block.spore-press.name = 孢子压缩机
block.separator.name = 分离机
block.power-node.name = 能量节点
block.power-node-large.name = 大型能量节点
block.surge-tower.name = Surge Tower
block.surge-tower.name = 远程输电塔
block.battery.name = 电池
block.battery-large.name = 大型电池
block.combustion-generator.name = 燃烧发电机
block.turbine-generator.name = 涡轮发电机
block.differential-generator.name = Differential Generator
block.impact-reactor.name = Impact Reactor
block.differential-generator.name = 差动发电机
block.impact-reactor.name = 冲击反应堆
block.mechanical-drill.name = 机械钻头
block.pneumatic-drill.name = 气动钻头
block.laser-drill.name = 激光钻头
block.water-extractor.name = 抽水机
block.cultivator.name = 耕种机
block.alpha-dart-mech-pad.name = Alpha-Dart Mech Pad
block.delta-mech-pad.name = Delta 机甲平台
block.alpha-dart-mech-pad.name = 阿尔法-飞镖 机甲平台
block.delta-mech-pad.name = 德尔塔 机甲平台
block.javelin-ship-pad.name = 标枪 机甲平台
block.trident-ship-pad.name = 三叉戟 机甲平台
block.glaive-ship-pad.name = Glaive 机甲平台
block.omega-mech-pad.name = Omega 机甲平台
block.tau-mech-pad.name = Tau 机甲平台
block.glaive-ship-pad.name = 阔剑 机甲平台
block.omega-mech-pad.name = 欧米茄 机甲平台
block.tau-mech-pad.name = 医疗机 机甲平台
block.conduit.name = 导管
block.mechanical-pump.name = 机械泵
block.item-source.name = 物品源
@@ -704,7 +733,7 @@ block.phantom-factory.name = 鬼怪无人机工厂
block.wraith-factory.name = 幻影战机工厂
block.ghoul-factory.name = 食尸鬼轰炸机工厂
block.dagger-factory.name = 尖刀机甲工厂
block.crawler-factory.name = Crawler Mech Factory
block.crawler-factory.name = 爬行者机甲工厂
block.titan-factory.name = 泰坦机甲工厂
block.fortress-factory.name = 堡垒机甲工厂
block.revenant-factory.name = 亡魂战机工厂
@@ -722,6 +751,7 @@ block.blast-drill.name = 爆破钻头
block.thermal-pump.name = 热能泵
block.thermal-generator.name = 热能发电机
block.alloy-smelter.name = 合金冶炼厂
block.mender.name = Mender
block.mend-projector.name = 修理投影器
block.surge-wall.name = 波动墙
block.surge-wall-large.name = 大型波动墙
@@ -735,8 +765,9 @@ block.rtg-generator.name = RTG 发电机
block.spectre.name = 幽灵
block.meltdown.name = 熔毁
block.container.name = 容器
block.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad.name = 发射台
block.launch-pad.description = 不通过核心发射物体。尚未完成。
block.launch-pad-large.name = 大型发射台
team.blue.name = 蓝
team.red.name = 红
team.orange.name = 橙
@@ -749,7 +780,7 @@ unit.phantom.name = 鬼怪无人机
unit.phantom.description = 一种先进的无人机单位。自动开采矿石,收集物品和修理块。比初始无人机有效得多。
unit.dagger.name = 尖刀
unit.dagger.description = 基础的地面单位,在蜂群中很有用。
unit.crawler.name = Crawler
unit.crawler.name = 爬行者
unit.titan.name = 泰坦
unit.titan.description = 高级的有武装地面单位,使用电石作为弹药.攻击地面单位和空中单位.
unit.ghoul.name = 食尸鬼轰炸机
@@ -759,11 +790,11 @@ unit.wraith.description = 一种快速,打了就跑的截击机。
unit.fortress.name = 堡垒
unit.fortress.description = 一种重炮地面部队。
unit.revenant.name = 亡魂
unit.eruptor.name = Eruptor
unit.chaos-array.name = Chaos Array
unit.eradicator.name = Eradicator
unit.lich.name = Lich
unit.reaper.name = Reaper
unit.eruptor.name = 暴君
unit.chaos-array.name = 混沌者
unit.eradicator.name = 根除者
unit.lich.name = 尸鬼
unit.reaper.name = 死神
tutorial.begin = 你的任务是消灭[LIGHT_GRAY] 敌人 [].\n\n首先开始[accent] 采集铜矿 []。点击核心附近的铜矿开始。
tutorial.drill = 手动采矿效率低.\n[accent] 钻头 []可以自动采矿.\n放一个在铜矿上吧.
tutorial.conveyor = [accent]传送带[] 可以把物资传送到核心.\n请造一个传送线,从钻头到核心.
@@ -800,7 +831,7 @@ block.overdrive-projector.description = 提高附近建筑物的速度,如钻
block.force-projector.description = 自身周围创建一个六边形力场,保护建筑物和内部单位免受子弹的伤害。
block.shock-mine.description = 伤害踩到它的敌人。敌人几乎看不到它。
block.duo.description = 小而便宜的炮塔。
block.scatter.description = A medium-sized anti-air turret. Sprays clumps of lead or scrap flak at enemy units.
block.scatter.description = 中型防空炮塔,向空中单位发射铅或废料。
block.arc.description = 小型炮塔,发射电弧。
block.hail.description = 小型炮兵炮台。
block.lancer.description = 中型炮塔,发射带电的电子束。
@@ -827,7 +858,7 @@ block.blast-mixer.description = 用油将硫转化为不易燃但更具爆炸性
block.cryofluidmixer.description = 水和钛结合到低温流体中,冷却效率更高。
block.melter.description = 石头加热到很高的温度以获得熔岩。
block.incinerator.description = 用于除掉任何多余的物品或液体。
block.spore-press.description = Compresses spore pods into oil.
block.spore-press.description = 压缩孢子荚得到石油。
block.separator.description = 将石头暴露在水压下,以获得石头中含有的各种矿物质。
block.power-node.description = 连接节点传输电源。最多可连接四个电源,接收器或节点。节点将从任何相邻块接收电力或向其供电。
block.power-node-large.description = 传输径大于电源节点,最多可连接六个电源,接收器或节点。
+62 -48
View File
@@ -14,7 +14,6 @@ screenshot = 截圖保存到{0}
gameover = 遊戲結束
gameover.pvp = [accent]{0}[]隊獲勝!
highscore = [accent]新的高分紀錄!
stat.wave = 打敗的波次:[accent]{0}
stat.enemiesDestroyed = 摧毀的敵人:[accent]{0}
stat.built = 建設的建築:[accent]{0}
@@ -22,10 +21,8 @@ stat.destroyed = 摧毀的建築:[accent]{0}
stat.deconstructed = 移除的建築:[accent]{0}
stat.delivered = 發射的資源:
stat.rank = 最終排名:[accent]{0}
placeline = 你選擇了一個方塊。\n[accent]按住你的手指幾秒鐘[]並拖動以[accent]直線放置方塊[]。\n試試吧。
removearea = 你選擇了移除模式。\n[accent]按住你的手指幾秒鐘[]並拖動以[accent]移除矩形中的方塊[]。\n試試吧。
launcheditems = [accent]發射了的物品
map.delete = 確認要刪除「[accent]{0}[]」地圖嗎?
level.highscore = 最高分:[accent]{0}
@@ -43,6 +40,7 @@ addplayers = 增加/移除玩家
customgame = 自訂遊戲
newgame = 新遊戲
none = 〈沒有〉
minimap = Minimap
close = 關閉
quit = 退出
maps = 地圖
@@ -185,6 +183,7 @@ map.delete.confirm = 確認要刪除地圖嗎?此操作無法撤回!
map.random = [accent]隨機地圖
map.nospawn = 這個地圖沒有核心!請在編輯器中添加一個[ROYAL]藍色[]的核心。
map.nospawn.pvp = 這個地圖沒有核心讓敵人重生!請在編輯器中添加一個[SCARLET]紅色[]的核心。
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = 地圖載入錯誤:地圖可能已經損壞。
editor.brush = 粉刷
editor.openin = 在編輯器中開啟
@@ -282,11 +281,11 @@ tutorial = 教學
editor = 地圖編輯器
mapeditor = 地圖編輯器
donate = 贊助
abandon = 放棄
abandon.text = 此區域及其所有資源將會丟失給敵人。
locked = 鎖定
complete = [LIGHT_GRAY]完成:
zone.requirement = Wave {0} in zone {1}
resume = 繼續區域:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]高分:{0}
launch = 發射
@@ -298,12 +297,11 @@ uncover = 揭露
configure = 配置裝載
configure.locked = [LIGHT_GRAY]到達波次{0}\n以配置裝載。
zone.unlocked = [LIGHT_GRAY]{0}已解鎖。
zone.complete = 符合區域條件。
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = 到達波次{0}:\n裝載配置已解鎖。
zone.resources = 檢測到的資源:
add = 新增……
boss.health = 頭目血量
connectfail = [crimson]無法連線到伺服器:[accent]{0}
error.unreachable = 無法到達伺服器。
error.invalidaddress = 無效地址。
@@ -313,7 +311,6 @@ error.alreadyconnected = 已連接。
error.mapnotfound = 找不到地圖!
error.io = 網絡輸入輸出錯誤。
error.any = 未知網絡錯誤。
zone.groundZero.name = 歸零地
zone.craters.name = 隕石坑
zone.frozenForest.name = 冰凍森林
@@ -321,7 +318,6 @@ zone.ruinousShores.name = 毀滅性的海岸
zone.stainedMountains.name = 染山
zone.desolateRift.name = 荒涼的裂痕
zone.nuclearComplex.name = 核生產綜合體
settings.language = 語言
settings.reset = 重設為預設設定
settings.rebind = 重新綁定
@@ -340,63 +336,59 @@ no = 否
info.title = [accent]資訊
error.title = [crimson]發生錯誤
error.crashtitle = 發生錯誤
blocks.outputspeed = 鑽頭速度:{0}/秒
blocks.efficiency = 效率:{0}%
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = 方塊資訊
blocks.powerbalance = 能量變化:{0}
blocks.poweroutput = 能量輸出:{0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = 蓄電量
blocks.powershot = 能量/射擊
blocks.targetsair = 攻擊空中目標
blocks.targetsground = 攻擊地面
blocks.items = 物品:{0}
blocks.itemsmoved = 移動速度
blocks.launchtime = Time Between Launches
blocks.shootrange = 範圍
blocks.size = 尺寸
blocks.liquidcapacity = 液體容量
blocks.maxitemssecond = 最高產量
blocks.powerrange = 輸出範圍
blocks.poweruse = 能量使用
blocks.powerdamage = 能量/傷害
blocks.inputitemcapacity = 最大輸入
blocks.outputitemcapacity = 最大輸出
blocks.itemcapacity = 物品容量
blocks.basepowergeneration = 基本能量生产
blocks.powertransferspeed = 能量傳輸
blocks.craftspeed = 產生速度
blocks.inputliquid = 輸入液體
blocks.inputliquidaux = 輔助液體
blocks.inputitem = 輸入物品
blocks.inputitems = 輸入物品
blocks.outputitem = 輸出物品
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Range
blocks.drilltier = 可鑽取礦物
blocks.drillspeed = 基本鑽取速度
blocks.boosteffect = Boost Effect
blocks.maxunits = 最大活躍單位
blocks.liquidoutput = 輸出液體
blocks.liquidoutputspeed = 輸出液體速度
blocks.liquiduse = 使用液體速度
blocks.coolant = 冷卻劑
blocks.liquid = 液體
blocks.coolantuse = 使用冷卻劑
blocks.inputliquidfuel = 輸入液體燃料
blocks.liquidfueluse = 使用液體燃料速度
blocks.boostitem = 強化物品
blocks.boostliquid = 強化液體
blocks.health = 耐久度
blocks.heat = 熱
blocks.power = 能量
blocks.progress = 建造進度
blocks.spawned = 單位:{0}/{1}
blocks.power.satisfaction = 能量滿意度
blocks.inaccuracy = 誤差
blocks.shots = 射擊數
blocks.reload = 重裝彈藥
blocks.inputfuel = 燃料
blocks.fuelburntime = 燃燒燃料時間
blocks.inputcapacity = 輸入容量
blocks.outputcapacity = 輸出容量
blocks.ammo = 彈藥
bar.drillspeed = 鑽頭速度:{0}/秒
bar.efficiency = 效率:{0}%
bar.powerbalance = 能量變化:{0}
bar.poweramount = Power: {0}
bar.poweroutput = 能量輸出:{0}
bar.items = 物品:{0}
bar.liquid = 液體
bar.heat = 熱
bar.power = 能量
bar.progress = 建造進度
bar.spawned = 單位:{0}/{1}
bullet.damage = [stat]{0}[lightgray] dmg
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x reload
unit.blocks = 方塊
unit.powersecond = 能量單位/秒
unit.liquidsecond = 液體單位/秒
@@ -405,6 +397,9 @@ unit.liquidunits = 液體單位
unit.powerunits = 能量單位
unit.degrees = 度
unit.seconds = 秒
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = 物品
category.general = 一般
category.power = 能量
@@ -413,9 +408,11 @@ category.items = 物品
category.crafting = 合成
category.shooting = 射擊
category.optional = 可選的強化
setting.animatedwater.name = 動畫水
setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟)[]
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows
setting.animatedwater.name = 動畫水
setting.animatedshields.name = Animated Shields
setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟)[]
setting.indicators.name = 盟友指標
setting.autotarget.name = 自動射擊
setting.fpscap.name = 最大FPS
@@ -438,6 +435,7 @@ setting.borderless.name = 無邊框窗口
setting.fps.name = 顯示FPS
setting.vsync.name = 垂直同步
setting.lasers.name = 顯示雷射光束
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = 顯示小地圖
setting.musicvol.name = 音樂音量
setting.mutemusic.name = 靜音
@@ -490,6 +488,21 @@ mode.pvp.name = 對戰
mode.pvp.description = 和其他玩家鬥爭。
mode.attack.name = 攻擊
mode.attack.description = 沒有波次,目標是摧毀敵人的基地。
mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Waves
rules.enemyCheat = Infinite AI Resources
rules.pvp = PvP
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
content.item.name = 物品
content.liquid.name = 液體
content.unit.name = 機組
@@ -570,10 +583,10 @@ mech.itemcapacity = [LIGHT_GRAY]物品容量:{0}
mech.minespeed = [LIGHT_GRAY]採礦速度:{0}
mech.minepower = [LIGHT_GRAY]採礦力度:{0}
mech.ability = [LIGHT_GRAY]能力:{0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]熱容量:{0}
liquid.viscosity = [LIGHT_GRAY]粘性:{0}
liquid.temperature = [LIGHT_GRAY]温度:{0}
block.grass.name = 草
block.salt.name = 鹽
block.sandrocks.name = 沙岩
@@ -730,6 +743,7 @@ block.blast-drill.name = 爆破鑽頭
block.thermal-pump.name = 熱能泵
block.thermal-generator.name = 熱能發電機
block.alloy-smelter.name = 合金冶煉廠
block.mender.name = Mender
block.mend-projector.name = 修理投影器
block.surge-wall.name = 波動牆
block.surge-wall-large.name = 大型波動牆
@@ -745,6 +759,7 @@ block.meltdown.name = 熔毀炮
block.container.name = 容器
block.launch-pad.name = 發射台
block.launch-pad.description = 無需從核心發射即可發射物品。未完成。
block.launch-pad-large.name = Large Launch Pad
team.blue.name = 藍
team.red.name = 紅
team.orange.name = 橙
@@ -870,7 +885,6 @@ block.wraith-factory.description = 生產快速、打了就跑的攔截機單位
block.ghoul-factory.description = 生產重型鋪蓋轟炸機。
block.dagger-factory.description = 產生基本地面單位。
block.titan-factory.description = 生產具有裝甲的高級地面單位。
block.fortress-factory.description = 生產重型火砲地面單位。
block.revenant-factory.description = 生產重型激光地面單位。
block.repair-point.description = 持續治療附近最近的受損單位。
+2 -3
View File
@@ -8,8 +8,7 @@ uniform sampler2D u_texture;
varying vec4 v_color;
varying vec2 v_texCoord;
void main() {
void main(){
vec4 color = texture2D(u_texture, v_texCoord.xy);
color = vec4(0.0, 0.0, 0.0, 1.0 - color.r);
gl_FragColor = color;
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0 - color.r);
}
-2
View File
@@ -56,7 +56,6 @@ void main() {
if(color.r > 0.01){
color = texture2D(u_texture, c + vec2(sin(stime/3.0 + coords.y/0.75) * v.x, 0.0)) * vec4(0.9, 0.9, 1, 1.0);
color.a = 1.0;
float n1 = snoise(coords / 22.0 + vec2(-time) / 540.0);
float n2 = snoise((coords + vec2(632.0)) / 8.0 + vec2(0.0, time) / 510.0);
@@ -65,7 +64,6 @@ void main() {
if(r < -0.3 && r > -0.6){
color *= 1.4;
color.a = 1.0;
}
}
+7 -7
View File
@@ -61,14 +61,14 @@ void main() {
float n2 = snoise((coords + vec2(632.0)) / 25.0 + vec2(0.0, -time) / 190.0);
float r = (n1 + n2) * 3.0;
float tester = mod(float(int(coords.x + coords.y*1.1 + sin(stime / 8.0 + coords.x/5.0 - coords.y/100.0)*2.0)) +
sin(stime / 20.0 + coords.y/3.0) * 1.0 +
sin(stime / 10.0 + coords.y/2.0) * 2.0 +
sin(stime / 7.0 + coords.y/1.0) * 0.5 +
sin(coords.x + coords.y) +
sin(stime / 20.0 + coords.x/4.0) * 1.0, mscl) + r;
if(mod(float(int(coords.x + coords.y*1.1 + sin(stime / 8.0 + coords.x/5.0 - coords.y/100.0)*2.0)) +
sin(stime / 20.0 + coords.y/3.0) * 1.0 +
sin(stime / 10.0 + coords.y/2.0) * 2.0 +
sin(stime / 7.0 + coords.y/1.0) * 0.5 +
sin(coords.x + coords.y) +
sin(stime / 20.0 + coords.x/4.0) * 1.0, mscl) + r < mth){
if(tester < mth){
color *= 1.2;
color.a = 1.0;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 B

After

Width:  |  Height:  |  Size: 505 B

File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 727 KiB

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 981 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 KiB

After

Width:  |  Height:  |  Size: 535 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 748 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 107 KiB

+1
View File
@@ -283,6 +283,7 @@
disabledFontColor: gray,
selection: selection,
background: underline,
invalidBackground: underline-red,
cursor: cursor,
messageFont: default-font,
messageFontColor: gray
+3 -1
View File
@@ -36,6 +36,8 @@ public class Vars{
public static final Charset charset = Charset.forName("UTF-8");
/**main application name, capitalized*/
public static final String appName = "Mindustry";
/**URL for itch.io donations.*/
public static final String donationURL = "https://anuke.itch.io/mindustry/purchase";
/**URL for discord invite.*/
public static final String discordURL = "https://discord.gg/mindustry";
/**URL for Github API for releases*/
@@ -142,7 +144,7 @@ public class Vars{
public static EntityGroup<BaseUnit>[] unitGroups;
/**all local players, currently only has one player. may be used for local co-op in the future*/
public static Player[] players = {};
public static Player player;
public static void init(){
Serialization.init();
@@ -65,7 +65,7 @@ public class Pathfinder{
Tile other = world.tile(dx, dy);
if(other == null) continue;
if(values[dx][dy] < value && (target == null || values[dx][dy] < tl) &&
if(values[dx][dy] < value && (target == null || values[dx][dy]< tl) &&
!other.solid() &&
!(point.x != 0 && point.y != 0 && (world.solid(tile.x + point.x, tile.y) || world.solid(tile.x, tile.y + point.y)))){ //diagonal corner trap
target = other;
@@ -14,6 +14,7 @@ import io.anuke.mindustry.entities.Effects;
import io.anuke.mindustry.entities.type.BaseUnit;
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
import io.anuke.mindustry.game.SpawnGroup;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.world.Pos;
import java.io.DataInput;
@@ -54,7 +55,7 @@ public class WaveSpawner{
/**@return true if the player is near a ground spawn point.*/
public boolean playerNear(){
return groundSpawns.count(g -> Mathf.dst(g.x * tilesize, g.y * tilesize, players[0].x, players[0].y) < maxShockwaveDst) > 0;
return groundSpawns.count(g -> Mathf.dst(g.x * tilesize, g.y * tilesize, player.x, player.y) < maxShockwaveDst) > 0;
}
public void spawnEnemies(){
@@ -96,7 +97,7 @@ public class WaveSpawner{
}
Time.run(20f, () -> Effects.effect(Fx.spawnShockwave, spawn.x * tilesize, spawn.y * tilesize));
//would be interesting to see player structures survive this without hacks
Time.run(40f, () -> Damage.damage(waveTeam, spawn.x * tilesize, spawn.y * tilesize, shockwaveBase + Mathf.random(shockwaveRand), 99999999f));
Time.run(40f, () -> Damage.damage(waveTeam, spawn.x * tilesize, spawn.y * tilesize, shockwaveBase + Mathf.random(shockwaveRand), 99999999f, true));
}
}
}
@@ -105,7 +106,7 @@ public class WaveSpawner{
}
public boolean isSpawning(){
return spawning;
return spawning && !Net.client();
}
private void reset(){
+241 -90
View File
@@ -3,11 +3,17 @@ package io.anuke.mindustry.content;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.Lines;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.math.Mathf;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.game.ContentList;
import io.anuke.mindustry.graphics.CacheLayer;
import io.anuke.mindustry.graphics.Pal;
import io.anuke.mindustry.graphics.Shaders;
import io.anuke.mindustry.type.Category;
import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.type.LiquidStack;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.*;
@@ -24,9 +30,9 @@ import io.anuke.mindustry.world.blocks.storage.Vault;
import io.anuke.mindustry.world.blocks.units.MechPad;
import io.anuke.mindustry.world.blocks.units.RepairPoint;
import io.anuke.mindustry.world.blocks.units.UnitFactory;
import io.anuke.mindustry.world.consumers.ConsumeItemFilter;
import io.anuke.mindustry.world.consumers.ConsumeLiquidFilter;
import io.anuke.mindustry.world.meta.Attribute;
import io.anuke.mindustry.world.modules.LiquidModule;
import static io.anuke.mindustry.Vars.state;
import static io.anuke.mindustry.Vars.world;
@@ -53,7 +59,7 @@ public class Blocks implements ContentList{
//defense
scrapWall, scrapWallLarge, scrapWallHuge, scrapWallGigantic, thruster, //ok, these names are getting ridiculous, but at least I don't have humongous walls yet
copperWall, copperWallLarge, titaniumWall, titaniumWallLarge, thoriumWall, thoriumWallLarge, door, doorLarge,
phaseWall, phaseWallLarge, surgeWall, surgeWallLarge, mendProjector, overdriveProjector, forceProjector, shockMine,
phaseWall, phaseWallLarge, surgeWall, surgeWallLarge, mender, mendProjector, overdriveProjector, forceProjector, shockMine,
//transport
conveyor, titaniumConveyor, distributor, junction, itemBridge, phaseConveyor, sorter, router, overflowGate, massDriver,
@@ -69,7 +75,7 @@ public class Blocks implements ContentList{
mechanicalDrill, pneumaticDrill, laserDrill, blastDrill, waterExtractor, oilExtractor, cultivator,
//storage
coreShard, coreFoundation, coreNucleus, vault, container, unloader, launchPad,
coreShard, coreFoundation, coreNucleus, vault, container, unloader, launchPad, launchPadLarge,
//turrets
duo, scatter, scorch, hail, arc, wave, lancer, swarmer, salvo, fuse, ripple, cyclone, spectre, meltdown,
@@ -87,6 +93,7 @@ public class Blocks implements ContentList{
air = new Floor("air"){{
alwaysReplace = true;
hasShadow = false;
}
public void draw(Tile tile){}
@@ -199,6 +206,21 @@ public class Blocks implements ContentList{
blendGroup = stone;
}};
ignarock = new Floor("ignarock"){{
}};
hotrock = new Floor("hotrock"){{
attributes.set(Attribute.heat, 0.5f);
blendGroup = ignarock;
}};
magmarock = new Floor("magmarock"){{
attributes.set(Attribute.heat, 0.75f);
updateEffect = Fx.magmasmoke;
blendGroup = ignarock;
}};
sand = new Floor("sand"){{
itemDrop = Items.sand;
playerUnmineable = true;
@@ -230,6 +252,7 @@ public class Blocks implements ContentList{
dragMultiplier = 1f;
speedMultiplier = 1f;
attributes.set(Attribute.water, 0.4f);
edgeStyle = "blocky";
}};
iceSnow = new Floor("ice-snow"){{
@@ -337,21 +360,6 @@ public class Blocks implements ContentList{
variants = 0;
}};
ignarock = new Floor("ignarock"){{
blendGroup = darksand;
}};
hotrock = new Floor("hotrock"){{
attributes.set(Attribute.heat, 0.5f);
blendGroup = ignarock;
}};
magmarock = new Floor("magmarock"){{
attributes.set(Attribute.heat, 0.75f);
updateEffect = Fx.magmasmoke;
blendGroup = ignarock;
}};
//endregion
//region ore
@@ -369,7 +377,7 @@ public class Blocks implements ContentList{
requirements(Category.crafting, ItemStack.with(Items.copper, 150, Items.lead, 60));
craftEffect = Fx.pulverizeMedium;
output = Items.graphite;
outputItem = new ItemStack(Items.graphite, 1);
craftTime = 90f;
size = 2;
hasItems = true;
@@ -381,7 +389,7 @@ public class Blocks implements ContentList{
requirements(Category.crafting, ItemStack.with(Items.titanium, 200, Items.silicon, 50, Items.lead, 200, Items.graphite, 100));
craftEffect = Fx.pulverizeMedium;
output = Items.graphite;
outputItem = new ItemStack(Items.graphite, 2);
craftTime = 30f;
size = 3;
hasItems = true;
@@ -389,16 +397,17 @@ public class Blocks implements ContentList{
hasPower = true;
consumes.power(2f);
consumes.item(Items.coal, 2);
consumes.item(Items.coal, 4);
consumes.liquid(Liquids.water, 0.1f);
}};
siliconSmelter = new PowerSmelter("silicon-smelter"){{
siliconSmelter = new GenericSmelter("silicon-smelter"){{
requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 50));
craftEffect = Fx.smeltsmoke;
output = Items.silicon;
outputItem = new ItemStack(Items.silicon, 1);
craftTime = 40f;
size = 2;
hasPower = true;
hasLiquids = false;
flameColor = Color.valueOf("ffef99");
@@ -406,10 +415,10 @@ public class Blocks implements ContentList{
consumes.power(0.50f);
}};
kiln = new PowerSmelter("kiln"){{
kiln = new GenericSmelter("kiln"){{
requirements(Category.crafting, ItemStack.with(Items.copper, 120, Items.graphite, 60, Items.lead, 60));
craftEffect = Fx.smeltsmoke;
output = Items.metaglass;
outputItem = new ItemStack(Items.metaglass, 1);
craftTime = 30f;
size = 2;
hasPower = hasItems = true;
@@ -419,12 +428,12 @@ public class Blocks implements ContentList{
consumes.power(0.60f);
}};
plastaniumCompressor = new PlastaniumCompressor("plastanium-compressor"){{
plastaniumCompressor = new GenericCrafter("plastanium-compressor"){{
requirements(Category.crafting, ItemStack.with(Items.silicon, 160, Items.lead, 230, Items.graphite, 120, Items.titanium, 160));
hasItems = true;
liquidCapacity = 60f;
craftTime = 60f;
output = Items.plastanium;
outputItem = new ItemStack(Items.plastanium, 1);
size = 2;
health = 320;
hasPower = hasLiquids = true;
@@ -434,59 +443,135 @@ public class Blocks implements ContentList{
consumes.liquid(Liquids.oil, 0.25f);
consumes.power(3f);
consumes.item(Items.titanium, 2);
int topRegion = reg("-top");
drawer = tile -> {
Draw.rect(region, tile.drawx(), tile.drawy());
GenericCrafterEntity entity = tile.entity();
Draw.alpha(Mathf.absin(entity.totalProgress, 3f, 0.9f) * entity.warmup);
Draw.rect(reg(topRegion), tile.drawx(), tile.drawy());
Draw.reset();
};
}};
phaseWeaver = new PhaseWeaver("phase-weaver"){{
phaseWeaver = new GenericCrafter("phase-weaver"){{
requirements(Category.crafting, ItemStack.with(Items.silicon, 260, Items.lead, 240, Items.thorium, 150));
craftEffect = Fx.smeltsmoke;
output = Items.phasefabric;
outputItem = new ItemStack(Items.phasefabric, 1);
craftTime = 120f;
size = 2;
hasPower = true;
consumes.items(new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10));
consumes.power(5f);
int bottomRegion = reg("-bottom"), weaveRegion = reg("-weave");
drawIcons = () -> new TextureRegion[]{Core.atlas.find(name + "-bottom"), Core.atlas.find(name)};
drawer = tile -> {
GenericCrafterEntity entity = tile.entity();
Draw.rect(reg(bottomRegion), tile.drawx(), tile.drawy());
float progress = 0.5f;
Shaders.build.region = reg(weaveRegion);
Shaders.build.progress = progress;
Shaders.build.color.set(Pal.accent);
Shaders.build.color.a = entity.warmup;
Shaders.build.time = -entity.totalProgress / 10f;
Draw.shader(Shaders.build, false);
Shaders.build.apply();
Draw.rect(reg(weaveRegion), tile.drawx(), tile.drawy(), entity.totalProgress);
Draw.shader();
Draw.color(Pal.accent);
Draw.alpha(entity.warmup);
Lines.lineAngleCenter(
tile.drawx() + Mathf.sin(entity.totalProgress, 6f, Vars.tilesize / 3f * size),
tile.drawy(),
90,
size * Vars.tilesize / 2f);
Draw.reset();
Draw.rect(region, tile.drawx(), tile.drawy());
};
}};
surgeSmelter = new PowerSmelter("alloy-smelter"){{
surgeSmelter = new GenericSmelter("alloy-smelter"){{
requirements(Category.crafting, ItemStack.with(Items.silicon, 160, Items.lead, 160, Items.thorium, 140));
craftEffect = Fx.smeltsmoke;
output = Items.surgealloy;
outputItem = new ItemStack(Items.surgealloy, 1);
craftTime = 75f;
size = 3;
hasPower = true;
consumes.power(4f);
consumes.items(new ItemStack(Items.titanium, 2), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.copper, 3));
}};
cryofluidMixer = new LiquidMixer("cryofluidmixer"){{
cryofluidMixer = new LiquidConverter("cryofluidmixer"){{
requirements(Category.crafting, ItemStack.with(Items.lead, 130, Items.silicon, 80, Items.thorium, 90));
outputLiquid = Liquids.cryofluid;
liquidPerItem = 50f;
outputLiquid = new LiquidStack(Liquids.cryofluid, 0.1f);
craftTime = 60f;
size = 2;
hasPower = true;
hasItems = true;
hasLiquids = true;
rotate = false;
solid = true;
outputsLiquid = true;
consumes.power(1f);
consumes.item(Items.titanium);
consumes.liquid(Liquids.water, 0.3f);
consumes.liquid(Liquids.water, 0.1f);
int liquidRegion = reg("-liquid"), topRegion = reg("-top"), bottomRegion = reg("-bottom");
drawIcons = () -> new TextureRegion[]{Core.atlas.find(name + "-bottom"), Core.atlas.find(name + "-top")};
drawer = tile -> {
LiquidModule mod = tile.entity.liquids;
int rotation = rotate ? tile.getRotation() * 90 : 0;
Draw.rect(reg(bottomRegion), tile.drawx(), tile.drawy(), rotation);
if(mod.total() > 0.001f){
Draw.color(outputLiquid.liquid.color);
Draw.alpha(mod.get(outputLiquid.liquid) / liquidCapacity);
Draw.rect(reg(liquidRegion), tile.drawx(), tile.drawy(), rotation);
Draw.color();
}
Draw.rect(reg(topRegion), tile.drawx(), tile.drawy(), rotation);
};
}};
blastMixer = new GenericCrafter("blast-mixer"){{
requirements(Category.crafting, ItemStack.with(Items.lead, 60, Items.titanium, 40));
hasItems = true;
hasPower = true;
output = Items.blastCompound;
outputItem = new ItemStack(Items.blastCompound, 1);
size = 2;
consumes.items(new ItemStack(Items.pyratite, 1), new ItemStack(Items.sporePod, 1));
consumes.power(0.40f);
}};
pyratiteMixer = new PowerSmelter("pyratite-mixer"){{
pyratiteMixer = new GenericSmelter("pyratite-mixer"){{
requirements(Category.crafting, ItemStack.with(Items.copper, 100, Items.lead, 50));
flameColor = Color.CLEAR;
hasItems = true;
hasPower = true;
output = Items.pyratite;
outputItem = new ItemStack(Items.pyratite, 1);
size = 2;
@@ -494,11 +579,10 @@ public class Blocks implements ContentList{
consumes.items(new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2));
}};
melter = new PowerCrafter("melter"){{
melter = new GenericCrafter("melter"){{
requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 70, Items.graphite, 90));
health = 200;
outputLiquid = Liquids.slag;
outputLiquidAmount = 2f;
outputLiquid = new LiquidStack(Liquids.slag, 2f);
craftTime = 10f;
hasLiquids = hasPower = true;
@@ -515,7 +599,7 @@ public class Blocks implements ContentList{
Items.titanium, 2
);
hasPower = true;
filterTime = 35f;
craftTime = 35f;
spinnerLength = 1.5f;
spinnerRadius = 3.5f;
spinnerThickness = 1.5f;
@@ -528,8 +612,8 @@ public class Blocks implements ContentList{
cultivator = new Cultivator("cultivator"){{
requirements(Category.crafting, ItemStack.with(Items.copper, 20, Items.lead, 50, Items.silicon, 20));
output = Items.sporePod;
craftTime = 200;
outputItem = new ItemStack(Items.sporePod, 1);
craftTime = 160;
size = 2;
hasLiquids = true;
hasPower = true;
@@ -539,23 +623,45 @@ public class Blocks implements ContentList{
consumes.liquid(Liquids.water, 0.15f);
}};
sporePress = new Compressor("spore-press"){{
sporePress = new GenericCrafter("spore-press"){{
requirements(Category.crafting, ItemStack.with(Items.lead, 70, Items.silicon, 60));
liquidCapacity = 60f;
craftTime = 20f;
outputLiquid = Liquids.oil;
outputLiquidAmount = 2.5f;
outputLiquid = new LiquidStack(Liquids.oil, 6f);
size = 2;
health = 320;
hasLiquids = true;
hasPower = true;
craftEffect = Fx.none;
consumes.item(Items.sporePod, 1);
consumes.power(0.60f);
int[] frameRegions = new int[3];
for(int i = 0; i < 3; i++){
frameRegions[i] = reg("-frame" + i);
}
int liquidRegion = reg("-liquid");
int topRegion =reg("-top");
drawIcons = () -> new TextureRegion[]{Core.atlas.find(name), Core.atlas.find(name + "-top")};
drawer = tile -> {
GenericCrafterEntity entity = tile.entity();
Draw.rect(region, tile.drawx(), tile.drawy());
Draw.rect(reg(frameRegions[(int) Mathf.absin(entity.totalProgress, 5f, 2.999f)]), tile.drawx(), tile.drawy());
Draw.color(Color.CLEAR, tile.entity.liquids.current().color, tile.entity.liquids.total() / liquidCapacity);
Draw.rect(reg(liquidRegion), tile.drawx(), tile.drawy());
Draw.color();
Draw.rect(reg(topRegion), tile.drawx(), tile.drawy());
};
}};
pulverizer = new Pulverizer("pulverizer"){{
pulverizer = new GenericCrafter("pulverizer"){{
requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 50));
output = Items.sand;
outputItem = new ItemStack(Items.sand, 1);
craftEffect = Fx.pulverize;
craftTime = 40f;
updateEffect = Fx.pulverizeSmall;
@@ -563,6 +669,17 @@ public class Blocks implements ContentList{
consumes.item(Items.scrap, 1);
consumes.power(0.50f);
int rotatorRegion = reg("-rotator");
drawIcons = () -> new TextureRegion[]{Core.atlas.find(name), Core.atlas.find(name + "-rotator")};
drawer = tile -> {
GenericCrafterEntity entity = tile.entity();
Draw.rect(region, tile.drawx(), tile.drawy());
Draw.rect(reg(rotatorRegion), tile.drawx(), tile.drawy(), entity.totalProgress * 2f);
};
}};
incinerator = new Incinerator("incinerator"){{
@@ -598,7 +715,7 @@ public class Blocks implements ContentList{
//endregion
//region defense
int wallHealthMultiplier = 3;
int wallHealthMultiplier = 4;
scrapWall = new Wall("scrap-wall"){{
health = 60 * wallHealthMultiplier;
@@ -695,10 +812,27 @@ public class Blocks implements ContentList{
size = 2;
}};
mender = new MendProjector("mender"){{
requirements(Category.effect, ItemStack.with(Items.lead, 60, Items.copper, 50));
consumes.power(0.3f);
size = 1;
reload = 200f;
range = 40f;
healPercent = 5f;
phaseBoost = 4f;
phaseRangeBoost = 20f;
health = 80;
consumes.item(Items.silicon).optional(true);
}};
mendProjector = new MendProjector("mend-projector"){{
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 50, Items.silicon, 180));
consumes.power(2f);
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 50, Items.silicon, 80));
consumes.power(1.5f);
size = 2;
reload = 250f;
range = 85f;
healPercent = 14f;
health = 80 * size * size;
consumes.item(Items.phasefabric).optional(true);
}};
@@ -706,17 +840,18 @@ public class Blocks implements ContentList{
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 150, Items.silicon, 150, Items.plastanium, 60));
consumes.power(3.50f);
size = 2;
consumes.item(Items.phasefabric).optional(true).boost(true);
consumes.item(Items.phasefabric).optional(true);
}};
forceProjector = new ForceProjector("force-projector"){{
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 150, Items.silicon, 250));
size = 3;
consumes.item(Items.phasefabric).optional(true).boost(true);
consumes.item(Items.phasefabric).optional(true);
}};
shockMine = new ShockMine("shock-mine"){{
requirements(Category.effect, ItemStack.with(Items.lead, 50, Items.silicon, 25));
hasShadow = false;
health = 40;
damage = 11;
tileDamage = 7f;
@@ -736,7 +871,7 @@ public class Blocks implements ContentList{
titaniumConveyor = new Conveyor("titanium-conveyor"){{
requirements(Category.distribution, ItemStack.with(Items.copper, 2, Items.lead, 1, Items.titanium, 1));
health = 65;
speed = 0.07f;
speed = 0.08f;
}};
junction = new Junction("junction"){{
@@ -878,20 +1013,20 @@ public class Blocks implements ContentList{
}};
battery = new Battery("battery"){{
requirements(Category.power, ItemStack.with(Items.copper, 8, Items.lead, 30, Items.silicon, 4));
consumes.powerBuffered(3200f, 1f);
requirements(Category.power, ItemStack.with(Items.copper, 8, Items.lead, 40));
consumes.powerBuffered(4000f, 1f);
}};
batteryLarge = new Battery("battery-large"){{
requirements(Category.power, ItemStack.with(Items.titanium, 40, Items.lead, 80, Items.silicon, 30));
requirements(Category.power, ItemStack.with(Items.titanium, 40, Items.lead, 80, Items.silicon, 40));
size = 3;
consumes.powerBuffered(37440f, 1f);
consumes.powerBuffered(50000f, 1f);
}};
combustionGenerator = new BurnerGenerator("combustion-generator"){{
requirements(Category.power, ItemStack.with(Items.copper, 50, Items.lead, 30));
powerProduction = 1f;
itemDuration = 40f;
itemDuration = 60f;
}};
thermalGenerator = new ThermalGenerator("thermal-generator"){{
@@ -901,24 +1036,24 @@ public class Blocks implements ContentList{
size = 2;
}};
turbineGenerator = new TurbineGenerator("turbine-generator"){{
turbineGenerator = new BurnerGenerator("turbine-generator"){{
requirements(Category.power, ItemStack.with(Items.copper, 70, Items.graphite, 50, Items.lead, 80, Items.silicon, 60));
powerProduction = 6f;
itemDuration = 30f;
itemDuration = 40f;
consumes.liquid(Liquids.water, 0.05f);
hasLiquids = true;
size = 2;
}};
differentialGenerator = new DifferentialGenerator("differential-generator"){{
differentialGenerator = new ItemLiquidGenerator(true, true, "differential-generator"){{
requirements(Category.power, ItemStack.with(Items.copper, 140, Items.titanium, 100, Items.lead, 200, Items.silicon, 130, Items.metaglass, 100));
powerProduction = 13f;
powerProduction = 16f;
itemDuration = 50f;
consumes.remove(ConsumeItemFilter.class);
consumes.remove(ConsumeLiquidFilter.class);
hasLiquids = true;
size = 3;
consumes.item(Items.pyratite);
consumes.liquid(Liquids.cryofluid, 0.2f);
size = 3;
}};
rtgGenerator = new DecayGenerator("rtg-generator"){{
@@ -945,16 +1080,17 @@ public class Blocks implements ContentList{
health = 700;
powerProduction = 14f;
consumes.item(Items.thorium);
consumes.liquid(Liquids.cryofluid, 0.1f);
heating = 0.02f;
consumes.liquid(Liquids.cryofluid, 0.1f).update(false);
}};
impactReactor = new ImpactReactor("impact-reactor"){{
requirements(Category.power, ItemStack.with(Items.lead, 1000, Items.silicon, 600, Items.graphite, 800, Items.thorium, 200, Items.surgealloy, 500, Items.metaglass, 500));
size = 4;
health = 900;
powerProduction = 80f;
useTime = 40f;
consumes.power(23f);
powerProduction = 100f;
itemDuration = 40f;
consumes.power(25f);
consumes.item(Items.blastCompound);
consumes.liquid(Liquids.cryofluid, 0.8f);
}};
@@ -968,6 +1104,7 @@ public class Blocks implements ContentList{
drillTime = 600;
size = 2;
drawMineItem = true;
consumes.liquid(Liquids.water, 0.05f).optional(true);
}};
pneumaticDrill = new Drill("pneumatic-drill"){{
@@ -1078,12 +1215,12 @@ public class Blocks implements ContentList{
}};
unloader = new Unloader("unloader"){{
requirements(Category.distribution, ItemStack.with(Items.titanium, 50, Items.silicon, 60));
requirements(Category.effect, ItemStack.with(Items.titanium, 50, Items.silicon, 60));
speed = 7f;
}};
launchPad = new LaunchPad("launch-pad"){{
requirements(Category.effect, () -> world.isZone(), ItemStack.with(Items.copper, 500, Items.titanium, 200, Items.silicon, 200, Items.lead, 200));
requirements(Category.effect, () -> world.isZone(), ItemStack.with(Items.copper, 500, Items.silicon, 150, Items.lead, 200));
size = 3;
itemCapacity = 100;
launchTime = 60f * 8;
@@ -1091,6 +1228,16 @@ public class Blocks implements ContentList{
consumes.power(1f);
}};
launchPadLarge = new LaunchPad("launch-pad-large"){{
requirements(Category.effect, () -> world.isZone(), ItemStack.with(Items.titanium, 400, Items.silicon, 300, Items.lead, 500, Items.plastanium, 150));
size = 4;
itemCapacity = 250;
launchTime = 60f * 7;
hasPower = true;
consumes.power(2f);
}};
//endregion
//region turrets
@@ -1118,15 +1265,15 @@ public class Blocks implements ContentList{
Items.scrap, Bullets.flakScrap,
Items.lead, Bullets.flakLead
);
reload = 43f;
range = 160f;
reload = 15f;
range = 180f;
size = 2;
burstSpacing = 5f;
shots = 2;
targetGround = false;
recoil = 2f;
rotatespeed = 10f;
rotatespeed = 15f;
inaccuracy = 17f;
shootCone = 35f;
@@ -1141,7 +1288,7 @@ public class Blocks implements ContentList{
);
recoil = 0f;
reload = 4f;
range = 53f;
range = 60f;
shootCone = 50f;
targetAir = false;
ammoUseEffect = Fx.none;
@@ -1173,11 +1320,11 @@ public class Blocks implements ContentList{
);
size = 2;
recoil = 0f;
reload = 3f;
reload = 2f;
inaccuracy = 5f;
shootCone = 50f;
shootEffect = Fx.shootLiquid;
range = 100f;
range = 110f;
health = 250*size*size;
drawer = (tile, entity) -> {
@@ -1216,13 +1363,13 @@ public class Blocks implements ContentList{
arc = new PowerTurret("arc"){{
requirements(Category.turret, ItemStack.with(Items.copper, 70, Items.lead, 70));
shootType = Bullets.arc;
reload = 25f;
reload = 24f;
shootCone = 40f;
rotatespeed = 8f;
powerUsed = 1f / 2f;
targetAir = false;
consumes.powerBuffered(80f);
range = 80f;
consumes.powerBuffered(60f, 60f);
range = 95f;
shootEffect = Fx.lightningShoot;
heatColor = Color.RED;
recoil = 1f;
@@ -1304,12 +1451,12 @@ public class Blocks implements ContentList{
Items.surgealloy, Bullets.flakSurge
);
xRand = 4f;
reload = 8f;
range = 160f;
reload = 6f;
range = 200f;
size = 3;
recoil = 3f;
rotatespeed = 10f;
inaccuracy = 13f;
inaccuracy = 10f;
shootCone = 30f;
health = 145 * size * size;
@@ -1337,7 +1484,6 @@ public class Blocks implements ContentList{
);
reload = 6f;
coolantMultiplier = 0.5f;
maxCoolantUsed = 1.5f;
restitution = 0.1f;
ammoUseEffect = Fx.shellEjectBig;
range = 200f;
@@ -1351,6 +1497,7 @@ public class Blocks implements ContentList{
shootCone = 24f;
health = 155 * size * size;
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 2f)).update(false).optional(true);
}};
meltdown = new LaserTurret("meltdown"){{
@@ -1363,12 +1510,13 @@ public class Blocks implements ContentList{
shootShake = 2f;
powerUsed = 0.5f;
consumes.powerBuffered(1200f);
range = 160f;
reload = 170f;
firingMoveFract = 0.1f;
range = 190f;
reload = 50f;
firingMoveFract = 0.5f;
shootDuration = 220f;
health = 165 * size * size;
health = 200 * size * size;
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.5f)).update(false);
}};
//endregion
@@ -1379,6 +1527,7 @@ public class Blocks implements ContentList{
type = UnitTypes.spirit;
produceTime = 5700;
size = 2;
maxSpawn = 2;
consumes.power(0.80f);
consumes.items(new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30));
}};
@@ -1388,6 +1537,7 @@ public class Blocks implements ContentList{
type = UnitTypes.phantom;
produceTime = 7300;
size = 2;
maxSpawn = 2;
consumes.power(2f);
consumes.items(new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80));
}};
@@ -1451,6 +1601,7 @@ public class Blocks implements ContentList{
type = UnitTypes.fortress;
produceTime = 5000;
size = 3;
maxSpawn = 3;
consumes.power(2f);
consumes.items(new ItemStack(Items.silicon, 40), new ItemStack(Items.thorium, 50));
}};
@@ -134,28 +134,32 @@ public class Bullets implements ContentList{
bulletWidth = bulletHeight = 14f;
collides = true;
collidesTiles = true;
splashDamageRadius = 45f;
splashDamage = 50f;
splashDamageRadius = 20f;
splashDamage = 38f;
backColor = Pal.bulletYellowBack;
frontColor = Pal.bulletYellow;
}};
flakLead = new FlakBulletType(3.9f, 3){{
flakLead = new FlakBulletType(4.2f, 3){{
lifetime = 60f;
ammoMultiplier = 3f;
shootEffect = Fx.shootSmall;
bulletWidth = 6f;
bulletHeight = 8f;
hitEffect = Fx.flakExplosion;
splashDamage = 25f;
splashDamage = 35f;
splashDamageRadius = 15f;
}};
flakScrap = new FlakBulletType(3.5f, 3){{
flakScrap = new FlakBulletType(4f, 3){{
lifetime = 60f;
ammoMultiplier = 3f;
shootEffect = Fx.shootSmall;
reloadMultiplier = 0.5f;
bulletWidth = 6f;
bulletHeight = 8f;
hitEffect = Fx.flakExplosion;
splashDamage = 16f;
splashDamage = 26f;
splashDamageRadius = 24f;
}};
@@ -269,7 +273,7 @@ public class Bullets implements ContentList{
keepVelocity = false;
splashDamageRadius = 25f;
splashDamage = 10f;
lifetime = 80f;
lifetime = 50f;
trailColor = Pal.unitBack;
backColor = Pal.unitBack;
frontColor = Pal.unitFront;
@@ -290,7 +294,6 @@ public class Bullets implements ContentList{
standardDense = new BasicBulletType(3.5f, 18, "bullet"){{
bulletWidth = 9f;
bulletHeight = 12f;
armorPierce = 0.2f;
reloadMultiplier = 0.6f;
ammoMultiplier = 2;
}};
@@ -298,7 +301,6 @@ public class Bullets implements ContentList{
standardThorium = new BasicBulletType(4f, 29, "bullet"){{
bulletWidth = 10f;
bulletHeight = 13f;
armorPierce = 0.5f;
shootEffect = Fx.shootBig;
smokeEffect = Fx.shootBigSmoke;
ammoMultiplier = 2;
@@ -344,14 +346,12 @@ public class Bullets implements ContentList{
standardDenseBig = new BasicBulletType(7f, 42, "bullet"){{
bulletWidth = 15f;
bulletHeight = 21f;
armorPierce = 0.2f;
shootEffect = Fx.shootBig;
}};
standardThoriumBig = new BasicBulletType(8f, 65, "bullet"){{
bulletWidth = 16f;
bulletHeight = 23f;
armorPierce = 0.5f;
shootEffect = Fx.shootBig;
}};
@@ -454,11 +454,11 @@ public class Bullets implements ContentList{
}
};
basicFlame = new BulletType(2.5f, 5){
basicFlame = new BulletType(3f, 6f){
{
ammoMultiplier = 3f;
hitSize = 7f;
lifetime = 40f;
lifetime = 42f;
pierce = true;
drag = 0.05f;
statusDuration = 60f * 4;
@@ -473,11 +473,11 @@ public class Bullets implements ContentList{
}
};
pyraFlame = new BulletType(2.7f, 8){
pyraFlame = new BulletType(3.3f, 9f){
{
ammoMultiplier = 4f;
hitSize = 7f;
lifetime = 40f;
lifetime = 42f;
pierce = true;
drag = 0.05f;
statusDuration = 60f * 6;
@@ -533,13 +533,13 @@ public class Bullets implements ContentList{
}
};
meltdownLaser = new BulletType(0.001f, 35){
meltdownLaser = new BulletType(0.001f, 70){
Color tmpColor = new Color();
Color[] colors = {Color.valueOf("ec745855"), Color.valueOf("ec7458aa"), Color.valueOf("ff9c5a"), Color.WHITE};
float[] tscales = {1f, 0.7f, 0.5f, 0.2f};
float[] strokes = {2f, 1.5f, 1f, 0.3f};
float[] lenscales = {1f, 1.12f, 1.15f, 1.17f};
float length = 200f;
float length = 220f;
{
hitEffect = Fx.hitMeltdown;
@@ -626,7 +626,6 @@ public class Bullets implements ContentList{
slagShot = new LiquidBulletType(Liquids.slag){{
damage = 4;
speed = 1.9f;
drag = 0.03f;
}};
@@ -644,6 +643,8 @@ public class Bullets implements ContentList{
lightning = new BulletType(0.001f, 12f){
{
lifetime = 1f;
shootEffect = Fx.hitLancer;
smokeEffect = Fx.none;
despawnEffect = Fx.none;
hitEffect = Fx.hitLancer;
keepVelocity = false;
@@ -664,7 +665,7 @@ public class Bullets implements ContentList{
}
};
arc = new BulletType(0.001f, 21){{
arc = new BulletType(0.001f, 25){{
lifetime = 1;
despawnEffect = Fx.none;
hitEffect = Fx.hitLancer;
@@ -675,7 +676,7 @@ public class Bullets implements ContentList{
@Override
public void init(Bullet b){
Lightning.create(b.getTeam(), Pal.lancerLaser, damage, b.x, b.y, b.rot(), 15);
Lightning.create(b.getTeam(), Pal.lancerLaser, damage, b.x, b.y, b.rot(), 25);
}
};
@@ -730,7 +731,7 @@ public class Bullets implements ContentList{
lifetime = 23f;
speed = 1f;
splashDamageRadius = 50f;
splashDamage = 20f;
splashDamage = 28f;
}
@Override
+8 -1
View File
@@ -34,7 +34,7 @@ public class Fx implements ContentList{
bigShockwave, nuclearShockwave, explosion, blockExplosion, blockExplosionSmoke, shootSmall, shootHeal, shootSmallSmoke, shootBig, shootBig2, shootBigSmoke,
shootBigSmoke2, shootSmallFlame, shootPyraFlame, shootLiquid, shellEjectSmall, shellEjectMedium,
shellEjectBig, lancerLaserShoot, lancerLaserShootSmoke, lancerLaserCharge, lancerLaserChargeBegin, lightningCharge, lightningShoot,
unitSpawn, spawnShockwave, magmasmoke, impactShockwave, impactcloud, impactsmoke, dynamicExplosion;
unitSpawn, spawnShockwave, magmasmoke, impactShockwave, impactcloud, impactsmoke, dynamicExplosion, padlaunch;
@Override
public void load(){
@@ -106,6 +106,13 @@ public class Fx implements ContentList{
Lines.poly(e.x, e.y, 4, 5f + e.fin() * 12f);
Draw.reset();
});
padlaunch = new Effect(10, e -> {
Lines.stroke(4f * e.fout());
Draw.color(Pal.accent);
Lines.poly(e.x, e.y, 4, 5f + e.fin() * 60f);
Draw.reset();
});
vtolHover = new Effect(40f, e -> {
float len = e.finpow() * 10f;
+14 -14
View File
@@ -14,24 +14,28 @@ public class Items implements ContentList{
copper = new Item("copper", Color.valueOf("d99d73")){{
type = ItemType.material;
hardness = 1;
cost = 0.6f;
cost = 0.5f;
alwaysUnlocked = true;
}};
lead = new Item("lead", Color.valueOf("8c7fa9")){{
type = ItemType.material;
hardness = 1;
cost = 0.9f;
cost = 0.7f;
}};
metaglass = new Item("metaglass", Color.valueOf("ebeef5")){{
type = ItemType.material;
cost = 2f;
cost = 1.5f;
}};
graphite = new Item("graphite", Color.valueOf("b2c6d2")){{
type = ItemType.material;
cost = 1.3f;
cost = 1f;
}};
sand = new Item("sand", Color.valueOf("f7cba4")){{
}};
coal = new Item("coal", Color.valueOf("272727")){{
@@ -43,7 +47,7 @@ public class Items implements ContentList{
titanium = new Item("titanium", Color.valueOf("8da1e3")){{
type = ItemType.material;
hardness = 3;
cost = 1.1f;
cost = 1f;
}};
thorium = new Item("thorium", Color.valueOf("f9a3c7")){{
@@ -51,7 +55,7 @@ public class Items implements ContentList{
explosiveness = 0.2f;
hardness = 4;
radioactivity = 1f;
cost = 1.4f;
cost = 1.1f;
}};
scrap = new Item("scrap", Color.valueOf("777777")){{
@@ -60,19 +64,19 @@ public class Items implements ContentList{
silicon = new Item("silicon", Color.valueOf("53565c")){{
type = ItemType.material;
cost = 0.9f;
cost = 0.8f;
}};
plastanium = new Item("plastanium", Color.valueOf("cbd97f")){{
type = ItemType.material;
flammability = 0.2f;
flammability = 0.1f;
explosiveness = 0.2f;
cost = 1.6f;
cost = 1.3f;
}};
phasefabric = new Item("phase-fabric", Color.valueOf("f4ba6e")){{
type = ItemType.material;
cost = 1.5f;
cost = 1.3f;
radioactivity = 0.6f;
}};
@@ -84,10 +88,6 @@ public class Items implements ContentList{
flammability = 1.05f;
}};
sand = new Item("sand", Color.valueOf("f7cba4")){{
}};
blastCompound = new Item("blast-compound", Color.valueOf("ff795e")){{
flammability = 0.4f;
explosiveness = 1.2f;
+15 -1
View File
@@ -35,6 +35,7 @@ public class Mechs implements ContentList{
mass = 1.2f;
speed = 0.5f;
boostSpeed = 0.85f;
buildPower = 1.2f;
engineColor = Color.valueOf("ffd37f");
health = 300f;
@@ -47,6 +48,11 @@ public class Mechs implements ContentList{
}};
}
@Override
public void updateAlt(Player player){
player.healBy(Time.delta() * 0.4f);
}
@Override
public boolean alwaysUnlocked(){
return true;
@@ -63,15 +69,18 @@ public class Mechs implements ContentList{
itemCapacity = 15;
mass = 0.9f;
health = 250f;
buildPower = 0.9f;
weaponOffsetX = -1;
weaponOffsetY = -1;
engineColor = Color.valueOf("d3ddff");
weapon = new Weapon("shockgun"){{
shake = 2f;
length = 1f;
reload = 40f;
shotDelay = 3f;
roundrobin = true;
shots = 1;
shots = 3;
inaccuracy = 0f;
velocityRnd = 0.2f;
ejectEffect = Fx.none;
@@ -110,6 +119,7 @@ public class Mechs implements ContentList{
boostSpeed = 0.8f;
canHeal = true;
health = 200f;
buildPower = 1.6f;
engineColor = Pal.heal;
weapon = new Weapon("heal-blaster"){{
@@ -161,6 +171,7 @@ public class Mechs implements ContentList{
weaponOffsetY = 0;
engineColor = Color.valueOf("feb380");
health = 300f;
buildPower = 1.5f;
weapon = new Weapon("swarmer"){{
length = 1.5f;
recoil = 4f;
@@ -227,6 +238,7 @@ public class Mechs implements ContentList{
weaponOffsetY = -1;
engineColor = Pal.lightTrail;
cellTrnsY = 1f;
buildPower = 1.1f;
weapon = new Weapon("blaster"){{
length = 1.5f;
reload = 20f;
@@ -315,6 +327,7 @@ public class Mechs implements ContentList{
itemCapacity = 30;
engineColor = Color.valueOf("84f491");
cellTrnsY = 1f;
buildPower = 2f;
weapon = new Weapon("bomber"){{
length = 0f;
width = 2f;
@@ -346,6 +359,7 @@ public class Mechs implements ContentList{
itemCapacity = 60;
engineColor = Color.valueOf("feb380");
cellTrnsY = 1f;
buildPower = 1.2f;
weapon = new Weapon("bomber"){{
length = 1.5f;
@@ -19,15 +19,20 @@ public class TechTree implements ContentList{
node(junction, () -> {
node(itemBridge);
node(router, () -> {
node(launchPad, () -> {
node(launchPadLarge, () -> {
});
});
node(distributor);
node(overflowGate);
node(sorter);
node(sorter, () -> {
node(overflowGate);
});
node(container, () -> {
node(unloader);
node(vault, () -> {
node(launchPad, () -> {
});
});
});
@@ -194,14 +199,18 @@ public class TechTree implements ContentList{
node(combustionGenerator, () -> {
node(powerNode, () -> {
node(powerNodeLarge, () -> {
node(battery, () -> {
node(batteryLarge, () -> {
node(surgeTower, () -> {
node(surgeTower, () -> {
});
});
});
});
node(battery, () -> {
node(batteryLarge, () -> {
});
});
node(mender, () -> {
node(mendProjector, () -> {
node(forceProjector, () -> {
node(overdriveProjector, () -> {
@@ -236,11 +245,12 @@ public class TechTree implements ContentList{
});
});
node(spiritFactory, () -> {
node(phantomFactory);
});
node(alphaDartPad, () -> {
node(deltaPad, () -> {
node(spiritFactory, () -> {
node(phantomFactory);
});
node(javelinPad, () -> {
node(tridentPad, () -> {
@@ -263,7 +273,7 @@ public class TechTree implements ContentList{
private TechNode node(Block block, Runnable children){
ItemStack[] requirements = new ItemStack[block.buildRequirements.length];
for(int i = 0; i < requirements.length; i++){
requirements[i] = new ItemStack(block.buildRequirements[i].item, block.buildRequirements[i].amount * 6);
requirements[i] = new ItemStack(block.buildRequirements[i].item, block.buildRequirements[i].amount * 5);
}
return new TechNode(block, requirements, children);
@@ -91,7 +91,7 @@ public class UnitTypes implements ContentList{
hitsize = 10f;
rotatespeed = 0.06f;
targetAir = false;
health = 800;
health = 750;
weapon = new Weapon("artillery"){{
length = 1f;
reload = 60f;
@@ -178,8 +178,9 @@ public class UnitTypes implements ContentList{
drag = 0.01f;
mass = 1.5f;
isFlying = true;
health = 70;
health = 75;
engineOffset = 5.5f;
range = 140f;
weapon = new Weapon("chain-blaster"){{
length = 1.5f;
reload = 28f;
@@ -190,7 +191,7 @@ public class UnitTypes implements ContentList{
}};
ghoul = new UnitType("ghoul", Ghoul.class, Ghoul::new){{
health = 250;
health = 220;
speed = 0.2f;
maxVelocity = 1.4f;
mass = 3f;
@@ -198,6 +199,7 @@ public class UnitTypes implements ContentList{
isFlying = true;
targetAir = false;
engineOffset = 7.8f;
range = 140f;
weapon = new Weapon("bomber"){{
length = 0f;
width = 2f;
+8 -14
View File
@@ -33,14 +33,13 @@ public class Zones implements ContentList{
craters = new Zone("craters", new MapGenerator("craters", 1).dist(0).decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.01))){{
startingItems = ItemStack.list(Items.copper, 200);
conditionWave = 10;
itemRequirements = ItemStack.with(Items.copper, 2000);
zoneRequirements = new Zone[]{groundZero};
zoneRequirements = ZoneRequirement.with(groundZero, 10);
blockRequirements = new Block[]{Blocks.router};
resources = new Item[]{Items.copper, Items.lead};
rules = () -> new Rules(){{
waves = true;
waveTimer = true;
waveSpacing = 60 * 60 * 1f;
waveSpacing = 60 * 60 * 1.5f;
}};
}};
@@ -50,8 +49,7 @@ public class Zones implements ContentList{
baseLaunchCost = ItemStack.with();
startingItems = ItemStack.list(Items.copper, 400);
conditionWave = 10;
zoneRequirements = new Zone[]{craters};
itemRequirements = ItemStack.with(Items.copper, 4000, Items.lead, 2000);
zoneRequirements = ZoneRequirement.with(craters, 10);
resources = new Item[]{Items.copper, Items.lead, Items.coal};
rules = () -> new Rules(){{
waves = true;
@@ -66,8 +64,7 @@ public class Zones implements ContentList{
startingItems = ItemStack.list(Items.copper, 400);
conditionWave = 20;
launchPeriod = 20;
zoneRequirements = new Zone[]{frozenForest};
itemRequirements = ItemStack.with(Items.lead, 6000, Items.graphite, 2000);
zoneRequirements = ZoneRequirement.with(frozenForest, 10, craters, 15);
blockRequirements = new Block[]{Blocks.graphitePress, Blocks.combustionGenerator};
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand};
rules = () -> new Rules(){{
@@ -99,9 +96,8 @@ public class Zones implements ContentList{
startingItems = ItemStack.list(Items.copper, 400, Items.lead, 100);
conditionWave = 10;
launchPeriod = 10;
zoneRequirements = new Zone[]{frozenForest};
zoneRequirements = ZoneRequirement.with(frozenForest, 15);
blockRequirements = new Block[]{Blocks.pneumaticDrill};
itemRequirements = ItemStack.with(Items.copper, 8000, Items.silicon, 2000);
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium};
rules = () -> new Rules(){{
waves = true;
@@ -114,10 +110,9 @@ public class Zones implements ContentList{
loadout = Loadouts.basicNucleus;
baseLaunchCost = ItemStack.with();
startingItems = ItemStack.list(Items.copper, 1500);
itemRequirements = ItemStack.with(Items.copper, 8000, Items.metaglass, 2000, Items.graphite, 3000);
conditionWave = 10;
launchPeriod = 20;
zoneRequirements = new Zone[]{ruinousShores};
zoneRequirements = ZoneRequirement.with(stainedMountains, 20);
blockRequirements = new Block[]{Blocks.thermalGenerator};
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.sand};
rules = () -> new Rules(){{
@@ -133,11 +128,10 @@ public class Zones implements ContentList{
loadout = Loadouts.basicNucleus;
baseLaunchCost = ItemStack.with();
startingItems = ItemStack.list(Items.copper, 2500, Items.lead, 3000, Items.silicon, 800, Items.metaglass, 400);
itemRequirements = ItemStack.with(Items.copper, 10000, Items.titanium, 8000, Items.metaglass, 6000, Items.plastanium, 2000);
conditionWave = 30;
launchPeriod = 15;
zoneRequirements = new Zone[]{desolateRift};
blockRequirements = new Block[]{Blocks.blastDrill, Blocks.thermalGenerator};
zoneRequirements = ZoneRequirement.with(desolateRift, 20);
blockRequirements = new Block[]{Blocks.thermalGenerator};
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.thorium, Items.sand};
rules = () -> new Rules(){{
waves = true;
+33 -69
View File
@@ -8,6 +8,8 @@ import io.anuke.arc.graphics.GL20;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.TextureAtlas;
import io.anuke.arc.input.KeyCode;
import io.anuke.arc.scene.ui.Dialog;
import io.anuke.arc.scene.ui.TextField;
import io.anuke.arc.util.*;
import io.anuke.mindustry.content.Mechs;
import io.anuke.mindustry.core.GameState.State;
@@ -48,7 +50,7 @@ public class Control implements ApplicationListener{
private Interval timer = new Interval(2);
private boolean hiscore = false;
private boolean wasPaused = false;
private InputHandler[] inputs = {};
private InputHandler input;
public Control(){
IntBuffer buf = BufferUtils.newIntBuffer(1);
@@ -80,7 +82,7 @@ public class Control implements ApplicationListener{
"lastBuild", 0
);
addPlayer(0);
createPlayer();
saves.load();
@@ -91,21 +93,17 @@ public class Control implements ApplicationListener{
});
Events.on(PlayEvent.class, event -> {
for(Player player : players){
player.add();
}
player.add();
state.set(State.playing);
});
Events.on(WorldLoadEvent.class, event -> {
Core.app.post(() -> Core.camera.position.set(players[0]));
Core.app.post(() -> Core.app.post(() -> Core.camera.position.set(player)));
});
Events.on(ResetEvent.class, event -> {
for(Player player : players){
player.reset();
}
player.reset();
hiscore = false;
@@ -139,7 +137,7 @@ public class Control implements ApplicationListener{
if(state.rules.pvp && !Net.active()){
try{
Net.host(port);
players[0].isAdmin = true;
player.isAdmin = true;
}catch(IOException e){
ui.showError(Core.bundle.format("server.error", Strings.parseException(e, false)));
Core.app.post(() -> state.set(State.menu));
@@ -150,7 +148,7 @@ public class Control implements ApplicationListener{
Events.on(UnlockEvent.class, e -> ui.hudfrag.showUnlock(e.content));
Events.on(BlockBuildEndEvent.class, e -> {
if(e.team == players[0].getTeam()){
if(e.team == player.getTeam()){
if(e.breaking){
state.stats.buildingsDeconstructed++;
}else{
@@ -160,19 +158,19 @@ public class Control implements ApplicationListener{
});
Events.on(BlockDestroyEvent.class, e -> {
if(e.tile.getTeam() == players[0].getTeam()){
if(e.tile.getTeam() == player.getTeam()){
state.stats.buildingsDestroyed ++;
}
});
Events.on(UnitDestroyEvent.class, e -> {
if(e.unit.getTeam() != players[0].getTeam()){
if(e.unit.getTeam() != player.getTeam()){
state.stats.enemyUnitsDestroyed ++;
}
});
Events.on(ZoneCompleteEvent.class, e -> {
ui.hudfrag.showToast(Core.bundle.format("zone.complete", e.zone.conditionWave));
Events.on(ZoneRequireCompleteEvent.class, e -> {
ui.hudfrag.showToast(Core.bundle.format("zone.requirement.complete", state.wave, e.zone.localizedName));
});
Events.on(ZoneConfigureCompleteEvent.class, e -> {
@@ -180,65 +178,29 @@ public class Control implements ApplicationListener{
});
}
public void addPlayer(int index){
if(players.length != index + 1){
Player[] old = players;
players = new Player[index + 1];
System.arraycopy(old, 0, players, 0, old.length);
}
if(inputs.length != index + 1){
InputHandler[] oldi = inputs;
inputs = new InputHandler[index + 1];
System.arraycopy(oldi, 0, inputs, 0, oldi.length);
}
Player setTo = (index == 0 ? null : players[0]);
Player player = new Player();
void createPlayer(){
player = new Player();
player.name = Core.settings.getString("name");
player.mech = mobile ? Mechs.starterMobile : Mechs.starterDesktop;
player.color.set(Core.settings.getInt("color-" + index));
player.color.set(Core.settings.getInt("color-0"));
player.isLocal = true;
player.playerIndex = index;
player.isMobile = mobile;
players[index] = player;
if(setTo != null){
player.set(setTo.x, setTo.y);
if(mobile){
input = new MobileInput();
}else{
input = new DesktopInput();
}
if(!state.is(State.menu)){
player.add();
}
InputHandler input;
if(mobile){
input = new MobileInput(player);
}else{
input = new DesktopInput(player);
}
inputs[index] = input;
Core.input.addProcessor(input);
}
public void removePlayer(){
players[players.length - 1].remove();
inputs[inputs.length - 1].remove();
Player[] old = players;
players = new Player[players.length - 1];
System.arraycopy(old, 0, players, 0, players.length);
InputHandler[] oldi = inputs;
inputs = new InputHandler[inputs.length - 1];
System.arraycopy(oldi, 0, inputs, 0, inputs.length);
}
public InputHandler input(int index){
return inputs[index];
public InputHandler input(){
return input;
}
public void playMap(Map map, Rules rules){
@@ -259,8 +221,6 @@ public class Control implements ApplicationListener{
content.dispose();
Net.dispose();
ui.editor.dispose();
inputs = new InputHandler[]{};
players = new Player[]{};
}
@Override
@@ -304,20 +264,16 @@ public class Control implements ApplicationListener{
public void update(){
saves.update();
for(InputHandler inputHandler : inputs){
inputHandler.updateController();
}
input.updateController();
//autosave global data if it's modified
data.checkSave();
if(!state.is(State.menu)){
for(InputHandler input : inputs){
input.update();
}
input.update();
if(world.isZone()){
for(Tile tile : state.teams.get(players[0].getTeam()).cores){
for(Tile tile : state.teams.get(player.getTeam()).cores){
for(Item item : content.items()){
if(tile.entity.items.has(item)){
data.unlockContent(item);
@@ -344,10 +300,18 @@ public class Control implements ApplicationListener{
}
}
if(!mobile && Core.input.keyTap(Binding.screenshot) && !(scene.getKeyboardFocus() instanceof TextField) && !ui.chatfrag.chatOpen()){
renderer.takeMapScreenshot();
}
}else{
if(!state.isPaused()){
Time.update();
}
if(!scene.hasDialog() && !(scene.root.getChildren().peek() instanceof Dialog) &&Core.input.keyTap(KeyCode.BACK)){
Platform.instance.hide();
}
}
}
}
@@ -63,7 +63,7 @@ public class NetClient implements ApplicationListener{
public NetClient(){
Net.handleClient(Connect.class, packet -> {
Player player = players[0];
Log.info("Connecting to server: {0}", packet.addressTCP);
player.isAdmin = false;
@@ -188,8 +188,8 @@ public class NetClient implements ApplicationListener{
@Remote(variants = Variant.one)
public static void onPositionSet(float x, float y){
players[0].x = x;
players[0].y = y;
player.x = x;
player.y = y;
}
@Remote
@@ -213,6 +213,11 @@ public class NetClient implements ApplicationListener{
SyncTrait entity = (SyncTrait) group.getByID(id);
boolean add = false;
if(entity == null && id == player.id){
entity = player;
add = true;
}
//entity must not be added yet, so create it
if(entity == null){
entity = (SyncTrait) TypeTrait.getTypeByID(typeID).get(); //create entity from supplier
@@ -249,6 +254,7 @@ public class NetClient implements ApplicationListener{
for(int i = 0; i < cores; i++){
int pos = input.readInt();
Tile tile = world.tile(pos);
if(tile != null && tile.entity != null){
tile.entity.items.read(input);
}else{
@@ -333,8 +339,6 @@ public class NetClient implements ApplicationListener{
void sync(){
if(timer.get(0, playerSyncTime)){
Player player = players[0];
BuildRequest[] requests;
//limit to 10 to prevent buffer overflows
int usedRequests = Math.min(player.getPlaceQueue().size, 10);
+23 -18
View File
@@ -190,20 +190,7 @@ public class NetServer implements ApplicationListener{
//playing in pvp mode automatically assigns players to teams
if(state.rules.pvp){
//find team with minimum amount of players and auto-assign player to that.
Team min = Structs.findMin(Team.all, team -> {
if(state.teams.isActive(team)){
int count = 0;
for(Player other : playerGroup.all()){
if(other.getTeam() == team){
count ++;
}
}
return count;
}
return Integer.MAX_VALUE;
});
player.setTeam(min);
player.setTeam(assignTeam(playerGroup.all()));
Log.info("Auto-assigned player {0} to team {1}.", player.name, player.getTeam());
}
@@ -221,6 +208,22 @@ public class NetServer implements ApplicationListener{
});
}
public Team assignTeam(Iterable<Player> players){
//find team with minimum amount of players and auto-assign player to that.
return Structs.findMin(Team.all, team -> {
if(state.teams.isActive(team)){
int count = 0;
for(Player other : players){
if(other.getTeam() == team){
count ++;
}
}
return count;
}
return Integer.MAX_VALUE;
});
}
public void sendWorldData(Player player, int clientID){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DeflaterOutputStream def = new DeflaterOutputStream(stream);
@@ -294,10 +297,12 @@ public class NetServer implements ApplicationListener{
player.isShooting = shooting;
player.getPlaceQueue().clear();
for(BuildRequest req : requests){
Tile tile = world.tile(req.x, req.y);
if(tile == null) continue;
//auto-skip done requests
if(req.breaking && world.tile(req.x, req.y).block() == Blocks.air){
if(req.breaking && tile.block() == Blocks.air){
continue;
}else if(!req.breaking && world.tile(req.x, req.y).block() == req.block && (!req.block.rotate || world.tile(req.x, req.y).getRotation() == req.rotation)){
}else if(!req.breaking && tile.block() == req.block && (!req.block.rotate || tile.getRotation() == req.rotation)){
continue;
}
player.getPlaceQueue().addLast(req);
@@ -425,7 +430,7 @@ public class NetServer implements ApplicationListener{
Log.err("Cannot kick unknown player!");
return;
}else{
Log.info("Kicking connection #{0} / IP: {1}. Reason: {2}", connection, con.address, reason);
Log.info("Kicking connection #{0} / IP: {1}. Reason: {2}", connection, con.address, reason.name());
}
Player player = connections.get(con.id);
@@ -458,7 +463,7 @@ public class NetServer implements ApplicationListener{
byte[] stateBytes = syncStream.toByteArray();
//write basic state data.
Call.onStateSnapshot(player.con.id, state.wavetime, state.wave, state.enemies, (short)stateBytes.length, Net.compressSnapshot(stateBytes));
Call.onStateSnapshot(player.con.id, state.wavetime, state.wave, state.enemies(), (short)stateBytes.length, Net.compressSnapshot(stateBytes));
viewport.setSize(player.con.viewWidth, player.con.viewHeight).setCenter(player.con.viewX, player.con.viewY);
@@ -37,8 +37,6 @@ public abstract class Platform {
}
/**Update discord RPC.*/
public void updateRPC(){}
/**Open donation dialog. Currently android only.*/
public void openDonations(){}
/**Whether donating is supported.*/
public boolean canDonate(){
return false;
@@ -69,6 +67,9 @@ public abstract class Platform {
*/
public void showFileChooser(String text, String content, Consumer<FileHandle> cons, boolean open, String filetype){}
/**Hide the app. Android only.*/
public void hide(){}
/**Forces the app into landscape mode. Currently Android only.*/
public void beginForceLandscape(){}
+116 -29
View File
@@ -2,10 +2,13 @@ package io.anuke.mindustry.core;
import io.anuke.arc.ApplicationListener;
import io.anuke.arc.Core;
import io.anuke.arc.files.FileHandle;
import io.anuke.arc.function.Consumer;
import io.anuke.arc.function.Predicate;
import io.anuke.arc.graphics.Camera;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.Pixmap;
import io.anuke.arc.graphics.PixmapIO;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.Lines;
import io.anuke.arc.graphics.g2d.SpriteBatch;
@@ -13,6 +16,8 @@ import io.anuke.arc.graphics.glutils.FrameBuffer;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Rectangle;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.util.BufferUtils;
import io.anuke.arc.util.ScreenUtils;
import io.anuke.arc.util.Time;
import io.anuke.arc.util.Tmp;
import io.anuke.arc.util.pooling.Pools;
@@ -42,6 +47,7 @@ public class Renderer implements ApplicationListener{
public final BlockRenderer blocks = new BlockRenderer();
public final MinimapRenderer minimap = new MinimapRenderer();
public final OverlayRenderer overlays = new OverlayRenderer();
public final Pixelator pixelator = new Pixelator();
public FrameBuffer shieldBuffer = new FrameBuffer(2, 2);
private Color clearColor;
@@ -53,7 +59,7 @@ public class Renderer implements ApplicationListener{
public Renderer(){
batch = new SpriteBatch(4096);
camera = new Camera();
Lines.setCircleVertices(14);
Lines.setCircleVertices(20);
Shaders.init();
Effects.setScreenShakeProvider((intensity, duration) -> {
@@ -113,11 +119,11 @@ public class Renderer implements ApplicationListener{
if(state.is(State.menu)){
graphics.clear(Color.BLACK);
}else{
Vector2 position = Tmp.v3.set(players[0]);
Vector2 position = Tmp.v3.set(player);
if(players[0].isDead()){
TileEntity core = players[0].getClosestCore();
if(core != null && players[0].spawner == null){
if(player.isDead()){
TileEntity core = player.getClosestCore();
if(core != null && player.spawner == null){
camera.position.lerpDelta(core.x, core.y, 0.08f);
}else{
camera.position.lerpDelta(position, 0.08f);
@@ -127,8 +133,11 @@ public class Renderer implements ApplicationListener{
}
updateShake(0.75f);
draw();
if(pixelator.enabled()){
pixelator.drawPixelate();
}else{
draw();
}
}
}
@@ -148,13 +157,13 @@ public class Renderer implements ApplicationListener{
camera.update();
if(Float.isNaN(camera.position.x) || Float.isNaN(camera.position.y)){
camera.position.x = players[0].x;
camera.position.y = players[0].y;
camera.position.x = player.x;
camera.position.y = player.y;
}
graphics.clear(clearColor);
if(graphics.getWidth() >= 2 && graphics.getHeight() >= 2 && (shieldBuffer.getWidth() != graphics.getWidth() || shieldBuffer.getHeight() != graphics.getHeight())){
if(!graphics.isHidden() && (Core.settings.getBool("animatedwater") || Core.settings.getBool("animatedshields")) && (shieldBuffer.getWidth() != graphics.getWidth() || shieldBuffer.getHeight() != graphics.getHeight())){
shieldBuffer.resize(graphics.getWidth(), graphics.getHeight());
}
@@ -169,6 +178,7 @@ public class Renderer implements ApplicationListener{
blocks.processBlocks();
blocks.drawShadows();
Draw.color();
blocks.floor.beginDraw();
blocks.floor.drawLayer(CacheLayer.walls);
@@ -183,6 +193,8 @@ public class Renderer implements ApplicationListener{
blocks.drawBlocks(Layer.overlay);
drawGroundShadows();
drawAllTeams(false);
blocks.skipLayer(Layer.turret);
@@ -199,30 +211,54 @@ public class Renderer implements ApplicationListener{
drawAndInterpolate(playerGroup, p -> true, Player::drawBuildRequests);
if(EntityDraw.countInBounds(shieldGroup) > 0){
Draw.flush();
shieldBuffer.begin();
graphics.clear(Color.CLEAR);
EntityDraw.draw(shieldGroup);
EntityDraw.drawWith(shieldGroup, shield -> true, shield -> ((ShieldEntity)shield).drawOver());
Draw.flush();
shieldBuffer.end();
Draw.shader(Shaders.shield);
Draw.color(Pal.accent);
Draw.rect(Draw.wrap(shieldBuffer.getTexture()), camera.position.x, camera.position.y, camera.width, -camera.height);
Draw.color();
Draw.shader();
if(settings.getBool("animatedshields")){
Draw.flush();
shieldBuffer.begin();
graphics.clear(Color.CLEAR);
EntityDraw.draw(shieldGroup);
EntityDraw.drawWith(shieldGroup, shield -> true, shield -> ((ShieldEntity)shield).drawOver());
Draw.flush();
shieldBuffer.end();
Draw.shader(Shaders.shield);
Draw.color(Pal.accent);
Draw.rect(Draw.wrap(shieldBuffer.getTexture()), camera.position.x, camera.position.y, camera.width, -camera.height);
Draw.color();
Draw.shader();
}else{
EntityDraw.drawWith(shieldGroup, shield -> true, shield -> ((ShieldEntity)shield).drawSimple());
}
}
overlays.drawTop();
EntityDraw.setClip(false);
drawAndInterpolate(playerGroup, p -> !p.isDead() && !p.isLocal, Player::drawName);
EntityDraw.setClip(true);
Draw.color();
Draw.flush();
}
private void drawGroundShadows(){
Draw.color(0, 0, 0, 0.4f);
float rad = 1.6f;
Consumer<Unit> draw = u -> {
float size = Math.max(u.getIconRegion().getWidth(), u.getIconRegion().getHeight()) * Draw.scl;
Draw.rect("circle-shadow", u.x, u.y, size * rad, size * rad);
};
for(EntityGroup<? extends BaseUnit> group : unitGroups){
if(!group.isEmpty()){
drawAndInterpolate(group, unit -> !unit.isDead(), draw::accept);
}
}
if(!playerGroup.isEmpty()){
drawAndInterpolate(playerGroup, unit -> !unit.isDead(), draw::accept);
}
Draw.color();
}
private void drawFlyerShadows(){
float trnsX = -12, trnsY = -13;
Draw.color(0, 0, 0, 0.22f);
@@ -271,10 +307,6 @@ public class Renderer implements ApplicationListener{
EntityDraw.drawWith(group, toDraw, drawer);
}
public float cameraScale(){
return camerascale;
}
public void scaleCamera(float amount){
targetscale += amount;
clampScale();
@@ -282,7 +314,62 @@ public class Renderer implements ApplicationListener{
public void clampScale(){
float s = io.anuke.arc.scene.ui.layout.Unit.dp.scl(1f);
targetscale = Mathf.clamp(targetscale, s * 1.5f, Math.round(s * 5));
targetscale = Mathf.clamp(targetscale, s * 1.5f, Math.round(s * 6));
}
public float getScale(){
return targetscale;
}
public void setScale(float scl){
targetscale = scl;
clampScale();
}
public void takeMapScreenshot(){
drawGroundShadows();
int w = world.width()*tilesize, h = world.height()*tilesize;
boolean hadShields = Core.settings.getBool("animatedshields");
boolean hadWater = Core.settings.getBool("animatedwater");
Core.settings.put("animatedwater", false);
Core.settings.put("animatedshields", false);
FrameBuffer buffer = new FrameBuffer(w, h);
float vpW = camera.width, vpH = camera.height, px = camera.position.x, py = camera.position.y;
disableUI = true;
camera.width = w;
camera.height = h;
camera.position.x = w/2f + tilesize/2f;
camera.position.y = h/2f + tilesize/2f;
Draw.flush();
buffer.begin();
draw();
Draw.flush();
buffer.end();
disableUI = false;
camera.width = vpW;
camera.height = vpH;
camera.position.set(px, py);
buffer.begin();
byte[] lines = ScreenUtils.getFrameBufferPixels(0, 0, w, h, true);
for(int i = 0; i < lines.length; i+= 4){
lines[i + 3] = (byte)255;
}
buffer.end();
Pixmap fullPixmap = new Pixmap(w, h, Pixmap.Format.RGBA8888);
BufferUtils.copy(lines, 0, fullPixmap.getPixels(), lines.length);
FileHandle file = screenshotDirectory.child("screenshot-" + Time.millis() + ".png");
PixmapIO.writePNG(file, fullPixmap);
fullPixmap.dispose();
ui.showInfoFade(Core.bundle.format("screenshot", file.toString()));
buffer.dispose();
Core.settings.put("animatedwater", hadWater);
Core.settings.put("animatedshields", hadShields);
}
}
+7 -6
View File
@@ -63,11 +63,11 @@ public class UI implements ApplicationListener{
public AdminsDialog admins;
public TraceDialog traces;
public ChangelogDialog changelog;
public LocalPlayerDialog localplayers;
public DatabaseDialog database;
public ContentInfoDialog content;
public DeployDialog deploy;
public TechTreeDialog tech;
public MinimapDialog minimap;
public Cursor drillCursor, unloadCursor;
@@ -109,6 +109,7 @@ public class UI implements ApplicationListener{
});
Colors.put("accent", Pal.accent);
Colors.put("stat", Pal.stat);
loadCursors();
}
@@ -175,15 +176,15 @@ public class UI implements ApplicationListener{
admins = new AdminsDialog();
traces = new TraceDialog();
maps = new MapsDialog();
localplayers = new LocalPlayerDialog();
content = new ContentInfoDialog();
deploy = new DeployDialog();
tech = new TechTreeDialog();
minimap = new MinimapDialog();
Group group = Core.scene.root;
backfrag.build(group);
control.input(0).getFrag().build(group);
control.input().getFrag().build(group);
hudfrag.build(group);
menufrag.build(group);
chatfrag.container().build(group);
@@ -219,7 +220,7 @@ public class UI implements ApplicationListener{
cont.margin(30).add(text).padRight(6f);
TextField field = cont.addField(def, t -> {
}).size(170f, 50f).get();
field.setTextFieldFilter((f, c) -> field.getText().length() < 12 && filter.acceptChar(f, c));
field.setFilter((f, c) -> field.getText().length() < 12 && filter.acceptChar(f, c));
Platform.instance.addDialog(field);
buttons.defaults().size(120, 54).pad(4);
buttons.addButton("$ok", () -> {
@@ -288,11 +289,11 @@ public class UI implements ApplicationListener{
public String formatAmount(int number){
if(number >= 1000000){
return Strings.toFixed(number / 1000000f, 1) + "[gray]mil[]";
return Strings.fixed(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[]";
return Strings.fixed(number / 1000f, 1) + "[gray]k[]";
}else{
return number + "";
}
+12 -8
View File
@@ -1,5 +1,6 @@
package io.anuke.mindustry.core;
import io.anuke.annotations.Annotations.Nullable;
import io.anuke.arc.ApplicationListener;
import io.anuke.arc.Core;
import io.anuke.arc.Events;
@@ -96,11 +97,11 @@ public class World implements ApplicationListener{
return tiles == null ? 0 : tiles[0].length;
}
public Tile tile(int pos){
public @Nullable Tile tile(int pos){
return tiles == null ? null : tile(Pos.x(pos), Pos.y(pos));
}
public Tile tile(int x, int y){
public @Nullable Tile tile(int x, int y){
if(tiles == null){
return null;
}
@@ -112,7 +113,7 @@ public class World implements ApplicationListener{
return tiles[x][y];
}
public Tile tileWorld(float x, float y){
public @Nullable Tile tileWorld(float x, float y){
return tile(Math.round(x / tilesize), Math.round(y / tilesize));
}
@@ -258,19 +259,24 @@ public class World implements ApplicationListener{
invalidMap = false;
if(!headless){
if(state.teams.get(players[0].getTeam()).cores.size == 0){
if(state.teams.get(player.getTeam()).cores.size == 0){
ui.showError("$map.nospawn");
invalidMap = true;
}else if(state.rules.pvp){ //pvp maps need two cores to be valid
invalidMap = true;
for(Team team : Team.all){
if(state.teams.get(team).cores.size != 0 && team != players[0].getTeam()){
if(state.teams.get(team).cores.size != 0 && team != player.getTeam()){
invalidMap = false;
}
}
if(invalidMap){
ui.showError("$map.nospawn.pvp");
}
}else if(!state.rules.waves){ //pvp maps need two cores to be valid
invalidMap = state.teams.get(waveTeam).cores.isEmpty();
if(invalidMap){
ui.showError("$map.nospawn.attack");
}
}
}else{
invalidMap = true;
@@ -451,9 +457,7 @@ public class World implements ApplicationListener{
}
for(int x = 0; x < tiles.length; x++){
for(int y = 0; y < tiles[0].length; y++){
dark[x][y] = writeBuffer[x][y];
}
System.arraycopy(writeBuffer[x], 0, dark[x], 0, tiles[0].length);
}
}
@@ -4,6 +4,7 @@ import io.anuke.annotations.Annotations.Struct;
import io.anuke.arc.collection.LongArray;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.gen.TileOp;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.Floor;
@@ -39,7 +40,11 @@ public class DrawOperation{
if(type == OpType.floor.ordinal()){
tile.setFloor((Floor)content.block(to));
}else if(type == OpType.block.ordinal()){
tile.setBlock(content.block(to));
Block block = content.block(to);
tile.setBlock(block);
if(block.isMultiblock()){
editor.updateLinks(block, tile.x, tile.y);
}
}else if(type == OpType.rotation.ordinal()){
tile.setRotation(to);
}else if(type == OpType.team.ordinal()){
@@ -49,7 +49,7 @@ public class EditorTile extends Tile{
@Override
public void setBlock(Block type){
Block previous = wall == null ? Blocks.air : wall;
Block previous =wall;
if(previous == type) return;
super.setBlock(type);
op(TileOp.get(x, y, (byte)OpType.block.ordinal(), previous.id, type.id));
@@ -146,6 +146,27 @@ public class MapEditor{
return tiles[0].length;
}
public void updateLinks(Block block, int x, int y){
int offsetx = -(block.size - 1) / 2;
int offsety = -(block.size - 1) / 2;
for(int dx = 0; dx < block.size; dx++){
for(int dy = 0; dy < block.size; dy++){
int worldx = dx + offsetx + x;
int worldy = dy + offsety + y;
if(Structs.inBounds(worldx, worldy, width(), height())){
Tile tile = tiles[worldx][worldy];
if(!(worldx == x && worldy == y)){
tile.setBlock(Blocks.part);
tile.setLinkByte(Pack.byteByte((byte)(dx + offsetx + 8), (byte)(dy + offsety + 8)));
}
}
}
}
}
public void draw(int x, int y, boolean paint){
draw(x, y, paint, drawBlock);
}
@@ -181,7 +181,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
shown(() -> {
saved = true;
Platform.instance.beginForceLandscape();
if(!Core.settings.getBool("landscape")) Platform.instance.beginForceLandscape();
editor.clearOp();
Core.scene.setScrollFocus(view);
if(!shownWithMap){
@@ -195,7 +195,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
hidden(() -> {
editor.clearOp();
Platform.instance.updateRPC();
Platform.instance.endForceLandscape();
if(!Core.settings.getBool("landscape")) Platform.instance.endForceLandscape();
});
}
@@ -233,7 +233,7 @@ public class MapGenerateDialog extends FloatingDialog{
Tile tile = editor.tile(x, y);
DummyTile write = writeTiles[x][y];
tile.setRotation((byte)write.rotation);
tile.setRotation(write.rotation);
tile.setFloor((Floor)content.block(write.floor));
tile.setBlock(content.block(write.block));
tile.setTeam(Team.all[write.team]);
@@ -72,8 +72,7 @@ public class MapRenderer implements Disposable{
IndexedRenderer mesh = chunks[x][y];
if(mesh == null){
chunks[x][y] = new IndexedRenderer(chunksize * chunksize * 2);
mesh = chunks[x][y];
continue;
}
mesh.getTransformMatrix().setToTranslation(tx, ty).scale(tw / (width * tilesize), th / (height * tilesize));
@@ -140,7 +139,7 @@ public class MapRenderer implements Disposable{
offsetX = tilesize/2f - region.getWidth()/2f * Draw.scl;
offsetY = tilesize/2f - region.getHeight()/2f * Draw.scl;
}else if(wall == Blocks.air && tile.ore() != null){
region = tile.ore().editorVariantRegions()[Mathf.randomSeed(idxWall, 0, tile.ore().editorVariantRegions().length-1)];;
region = tile.ore().editorVariantRegions()[Mathf.randomSeed(idxWall, 0, tile.ore().editorVariantRegions().length-1)];
}else{
region = Core.atlas.find("clear-editor");
}
@@ -184,7 +184,7 @@ public class WaveInfoDialog extends FloatingDialog{
}).width(80f);
a.add(" + ");
a.addField(Strings.toFixed(Math.max((Mathf.isZero(group.unitScaling) ? 0 : 1f/group.unitScaling), 0), 2), TextFieldFilter.floatsOnly, text -> {
a.addField(Strings.fixed(Math.max((Mathf.isZero(group.unitScaling) ? 0 : 1f/group.unitScaling), 0), 2), TextFieldFilter.floatsOnly, text -> {
if(Strings.canParsePositiveFloat(text)){
group.unitScaling = 1f / Strings.parseFloat(text);
updateWaves();
@@ -1,7 +1,6 @@
package io.anuke.mindustry.editor.generation;
import io.anuke.mindustry.content.Blocks;
import io.anuke.mindustry.editor.generation.FilterOption.BlockOption;
import io.anuke.mindustry.editor.generation.FilterOption.SliderOption;
import io.anuke.mindustry.world.Block;
@@ -1,22 +1,27 @@
package io.anuke.mindustry.entities;
import io.anuke.mindustry.entities.Effects.Effect;
import io.anuke.annotations.Annotations.Struct;
import io.anuke.arc.collection.GridBits;
import io.anuke.arc.collection.IntQueue;
import io.anuke.arc.function.Consumer;
import io.anuke.arc.function.Predicate;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Geometry;
import io.anuke.arc.math.geom.Point2;
import io.anuke.arc.math.geom.Rectangle;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.util.Time;
import io.anuke.mindustry.content.Bullets;
import io.anuke.mindustry.content.Fx;
import io.anuke.mindustry.entities.Effects.Effect;
import io.anuke.mindustry.entities.bullet.Bullet;
import io.anuke.mindustry.entities.effect.Fire;
import io.anuke.mindustry.entities.effect.Lightning;
import io.anuke.mindustry.entities.type.Unit;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.gen.PropCell;
import io.anuke.mindustry.graphics.Pal;
import io.anuke.mindustry.world.Tile;
@@ -27,6 +32,8 @@ public class Damage{
private static Rectangle rect = new Rectangle();
private static Rectangle hitrect = new Rectangle();
private static Vector2 tr = new Vector2();
private static GridBits bits = new GridBits(30, 30);
private static IntQueue propagation = new IntQueue();
/**Creates a dynamic explosion based on specified parameters.*/
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, Color color){
@@ -152,11 +159,16 @@ public class Damage{
/**Damages everything in a radius.*/
public static void damage(float x, float y, float radius, float damage){
damage(null, x, y, radius, damage);
damage(null, x, y, radius, damage, false);
}
/**Damages all entities and blocks in a radius that are enemies of the team.*/
public static void damage(Team team, float x, float y, float radius, float damage){
damage(team, x, y, radius, damage, false);
}
/**Damages all entities and blocks in a radius that are enemies of the team.*/
public static void damage(Team team, float x, float y, float radius, float damage, boolean complete){
Consumer<Unit> cons = entity -> {
if(entity.getTeam() == team || entity.dst(x, y) > radius){
return;
@@ -175,17 +187,70 @@ public class Damage{
Units.getNearby(rect, cons);
}
if(!complete){
int trad = (int)(radius / tilesize);
Tile tile = world.tileWorld(x, y);
if(tile != null){
tileDamage(team, tile.x, tile.y, trad, damage);
}
}else{
completeDamage(team, x, y, radius, damage);
}
}
public static void tileDamage(Team team, int startx, int starty, int radius, float baseDamage){
bits.clear();
propagation.clear();
int bitOffset = bits.width()/2;
propagation.addFirst(PropCell.get((byte)0, (byte)0, (short)baseDamage));
//clamp radius to fit bits
radius = Math.min(radius, bits.width()/2);
while(!propagation.isEmpty()){
int prop = propagation.removeLast();
int x = PropCell.x(prop);
int y = PropCell.y(prop);
int damage = PropCell.damage(prop);
//manhattan distance used for calculating falloff, results in a diamond pattern
int dst = Math.abs(x) + Math.abs(y);
int scaledDamage = (int)(damage * (1f - (float)dst / radius));
bits.set(bitOffset + x, bitOffset + y);
Tile tile = world.tile(startx + x, starty + y);
if(scaledDamage <= 0 || tile == null) continue;
tile = tile.target();
//apply damage to entity if needed
if(tile.entity != null && tile.getTeam() != team){
int health = (int)tile.entity.health;
tile.entity.damage(scaledDamage);
scaledDamage -= health;
if(scaledDamage <= 0) continue;
}
for(Point2 p : Geometry.d4){
if(!bits.get(bitOffset + x + p.x, bitOffset + y + p.y)){
propagation.addFirst(PropCell.get((byte)(x + p.x), (byte)(y + p.y), (short)scaledDamage));
}
}
}
}
private static void completeDamage(Team team, float x, float y, float radius, float damage){
int trad = (int) (radius / tilesize);
for(int dx = -trad; dx <= trad; dx++){
for(int dy = -trad; dy <= trad; dy++){
Tile tile = world.tile(Math.round(x / tilesize) + dx, Math.round(y / tilesize) + dy);
if(tile != null && tile.entity != null && (team == null || state.teams.areEnemies(team, tile.getTeam())) && Mathf.dst(dx, dy, 0, 0) <= trad){
float amount = calculateDamage(x, y, tile.worldx(), tile.worldy(), radius, damage);
tile.entity.damage(amount);
if(tile != null && tile.entity != null && (team == null || state.teams.areEnemies(team, tile.getTeam())) && Mathf.dst(dx, dy) <= trad){
tile.entity.damage(damage);
}
}
}
}
private static float calculateDamage(float x, float y, float tx, float ty, float radius, float damage){
@@ -194,4 +259,11 @@ public class Damage{
float scaled = Mathf.lerp(1f - dist / radius, 1f, falloff);
return damage * scaled;
}
@Struct
class PropCellStruct{
byte x;
byte y;
short damage;
}
}
@@ -156,11 +156,11 @@ public class Effects{
}
}
public static interface EffectProvider{
public interface EffectProvider{
void createEffect(Effect effect, Color color, float x, float y, float rotation, Object data);
}
public static interface EffectRenderer{
public interface EffectRenderer{
void render(EffectContainer effect);
}
}
@@ -12,7 +12,7 @@ import io.anuke.mindustry.entities.traits.SolidTrait;
public class EntityCollisions{
//range for tile collision scanning
private static final int r = 2;
private static final int r = 1;
//move in 1-unit chunks
private static final float seg = 1f;
@@ -6,6 +6,7 @@ import io.anuke.arc.function.Predicate;
import io.anuke.arc.graphics.Camera;
import io.anuke.arc.math.geom.Rectangle;
import io.anuke.mindustry.entities.traits.DrawTrait;
import io.anuke.mindustry.entities.traits.Entity;
public class EntityDraw{
private static final Rectangle viewport = new Rectangle();
@@ -42,15 +43,12 @@ public class EntityDraw{
viewport.set(cam.position.x - cam.width / 2, cam.position.y - cam.height / 2, cam.width, cam.height);
}
group.forEach(e -> {
if(!(e instanceof DrawTrait)) return;
T t = (T) e;
if(!toDraw.test(t) || !e.isAdded()) return;
for(Entity e : group.all()){
if(!(e instanceof DrawTrait) || !toDraw.test((T)e) || !e.isAdded()) continue;
if(!clip || rect.setSize(((DrawTrait) e).drawSize()).setCenter(e.getX(), e.getY()).overlaps(viewport)){
cons.accept(t);
cons.accept((T)e);
}
});
}
}
}
@@ -4,13 +4,6 @@ import io.anuke.arc.Core;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.math.Angles;
import io.anuke.arc.math.Mathf;
import io.anuke.mindustry.entities.Damage;
import io.anuke.mindustry.entities.Effects;
import io.anuke.mindustry.entities.Units;
import io.anuke.mindustry.entities.effect.Lightning;
import io.anuke.mindustry.entities.traits.TargetTrait;
import io.anuke.mindustry.graphics.Pal;
/**An extended BulletType for most ammo-based bullets shot from turrets and units.*/
@@ -20,28 +13,9 @@ public class BasicBulletType extends BulletType{
public float bulletShrink = 0.5f;
public String bulletSprite;
public int fragBullets = 9;
public float fragVelocityMin = 0.2f, fragVelocityMax = 1f;
public BulletType fragBullet = null;
/**Use a negative value to disable splash damage.*/
public float splashDamageRadius = -1f;
public int incendAmount = 0;
public float incendSpread = 8f;
public float incendChance = 1f;
public float homingPower = 0f;
public float homingRange = 50f;
public int lightining;
public int lightningLength = 5;
public TextureRegion backRegion;
public TextureRegion frontRegion;
public float hitShake = 0f;
public BasicBulletType(float speed, float damage, String bulletSprite){
super(speed, damage);
this.bulletSprite = bulletSprite;
@@ -63,51 +37,4 @@ public class BasicBulletType extends BulletType{
Draw.rect(frontRegion, b.x, b.y, bulletWidth, height, b.rot() - 90);
Draw.color();
}
@Override
public void update(Bullet b){
super.update(b);
if(homingPower > 0.0001f){
TargetTrait target = Units.getClosestTarget(b.getTeam(), b.x, b.y, homingRange);
if(target != null){
b.velocity().setAngle(Mathf.slerpDelta(b.velocity().angle(), b.angleTo(target), 0.08f));
}
}
}
@Override
public void hit(Bullet b, float x, float y){
super.hit(b, x, y);
Effects.shake(hitShake, hitShake, b);
if(fragBullet != null){
for(int i = 0; i < fragBullets; i++){
float len = Mathf.random(1f, 7f);
float a = Mathf.random(360f);
Bullet.create(fragBullet, b, x + Angles.trnsx(a, len), y + Angles.trnsy(a, len), a, Mathf.random(fragVelocityMin, fragVelocityMax));
}
}
if(Mathf.chance(incendChance)){
Damage.createIncend(x, y, incendSpread, incendAmount);
}
if(splashDamageRadius > 0){
Damage.damage(b.getTeam(), x, y, splashDamageRadius, splashDamage);
}
}
@Override
public void despawned(Bullet b){
super.despawned(b);
if(fragBullet != null || splashDamageRadius > 0){
hit(b);
}
for (int i = 0; i < lightining; i++) {
Lightning.create(b.getTeam(), Pal.surge, damage, b.x, b.y, Mathf.random(360f), lightningLength);
}
}
}
@@ -131,6 +131,13 @@ public class Bullet extends SolidEntity implements DamageTrait, ScaleTrait, Pool
this.data = data;
}
public float damageMultiplier(){
if(owner instanceof Unit){
return ((Unit) owner).getDamageMultipler();
}
return 1f;
}
@Override
public void absorb(){
supressCollision = true;
@@ -144,16 +151,10 @@ public class Bullet extends SolidEntity implements DamageTrait, ScaleTrait, Pool
@Override
public float damage(){
//todo hacky way to get damage, refactor
if(owner instanceof Unit){
return type.damage * ((Unit) owner).getDamageMultipler();
}
if(owner instanceof Lightning && data instanceof Float){
return (Float)data;
}
return type.damage;
return type.damage * damageMultiplier();
}
@Override
@@ -1,10 +1,17 @@
package io.anuke.mindustry.entities.bullet;
import io.anuke.arc.math.Angles;
import io.anuke.arc.math.Mathf;
import io.anuke.mindustry.content.Fx;
import io.anuke.mindustry.content.StatusEffects;
import io.anuke.mindustry.entities.Damage;
import io.anuke.mindustry.entities.Effects;
import io.anuke.mindustry.entities.Effects.Effect;
import io.anuke.mindustry.content.StatusEffects;
import io.anuke.mindustry.content.Fx;
import io.anuke.mindustry.entities.Units;
import io.anuke.mindustry.entities.effect.Lightning;
import io.anuke.mindustry.entities.traits.TargetTrait;
import io.anuke.mindustry.game.Content;
import io.anuke.mindustry.graphics.Pal;
import io.anuke.mindustry.type.ContentType;
import io.anuke.mindustry.type.StatusEffect;
import io.anuke.mindustry.world.Tile;
@@ -41,8 +48,6 @@ public abstract class BulletType extends Content{
public StatusEffect status = StatusEffects.none;
/**Intensity of applied status effect in terms of duration.*/
public float statusDuration = 60 * 1f;
/**What fraction of armor is pierced, 0-1*/
public float armorPierce = 0f;
/**Whether to sync this bullet to clients.*/
public boolean syncable;
/**Whether this bullet type collides with tiles.*/
@@ -56,6 +61,27 @@ public abstract class BulletType extends Content{
/**Whether velocity is inherited from the shooter.*/
public boolean keepVelocity = true;
//additional effects
public int fragBullets = 9;
public float fragVelocityMin = 0.2f, fragVelocityMax = 1f;
public BulletType fragBullet = null;
/**Use a negative value to disable splash damage.*/
public float splashDamageRadius = -1f;
public int incendAmount = 0;
public float incendSpread = 8f;
public float incendChance = 1f;
public float homingPower = 0f;
public float homingRange = 50f;
public int lightining;
public int lightningLength = 5;
public float hitShake = 0f;
public BulletType(float speed, float damage){
this.speed = speed;
this.damage = damage;
@@ -81,12 +107,38 @@ public abstract class BulletType extends Content{
hit(b, b.x, b.y);
}
public void hit(Bullet b, float hitx, float hity){
Effects.effect(hitEffect, hitx, hity, b.rot());
public void hit(Bullet b, float x, float y){
Effects.effect(hitEffect, x, y, b.rot());
Effects.shake(hitShake, hitShake, b);
if(fragBullet != null){
for(int i = 0; i < fragBullets; i++){
float len = Mathf.random(1f, 7f);
float a = Mathf.random(360f);
Bullet.create(fragBullet, b, x + Angles.trnsx(a, len), y + Angles.trnsy(a, len), a, Mathf.random(fragVelocityMin, fragVelocityMax));
}
}
if(Mathf.chance(incendChance)){
Damage.createIncend(x, y, incendSpread, incendAmount);
}
if(splashDamageRadius > 0){
Damage.damage(b.getTeam(), x, y, splashDamageRadius, splashDamage * b.damageMultiplier());
}
}
public void despawned(Bullet b){
Effects.effect(despawnEffect, b.x, b.y, b.rot());
if(fragBullet != null || splashDamageRadius > 0){
hit(b);
}
for (int i = 0; i < lightining; i++) {
Lightning.create(b.getTeam(), Pal.surge, damage, b.x, b.y, Mathf.random(360f), lightningLength);
}
}
public void draw(Bullet b){
@@ -96,6 +148,13 @@ public abstract class BulletType extends Content{
}
public void update(Bullet b){
if(homingPower > 0.0001f){
TargetTrait target = Units.getClosestTarget(b.getTeam(), b.x, b.y, homingRange);
if(target != null){
b.velocity().setAngle(Mathf.slerpDelta(b.velocity().angle(), b.angleTo(target), 0.08f));
}
}
}
@Override
@@ -20,7 +20,7 @@ public class LiquidBulletType extends BulletType{
Liquid liquid;
public LiquidBulletType(Liquid liquid){
super(2.8f, 0);
super(3.5f, 0);
this.liquid = liquid;
lifetime = 74f;
@@ -305,9 +305,10 @@ public class Puddle extends SolidEntity implements SaveTrait, Poolable, DrawTrai
y = data.readFloat();
liquid = content.liquid(data.readByte());
targetAmount = data.readShort() / 4f;
tile = world.tile(data.readInt());
int pos = data.readInt();
tile = world.tile(pos);
map.put(tile.pos(), this);
map.put(pos, this);
}
@Override
@@ -38,16 +38,21 @@ import java.io.IOException;
import java.util.Arrays;
import static io.anuke.mindustry.Vars.*;
import static io.anuke.mindustry.entities.traits.BuilderTrait.BuildDataStatic.*;
/**
* Interface for units that build, break or mine things.
*/
public interface BuilderTrait extends Entity, TeamTrait{
//these are not instance variables!
Vector2[] tmptr = new Vector2[]{new Vector2(), new Vector2(), new Vector2(), new Vector2()};
float placeDistance = 220f;
float mineDistance = 70f;
Array<BuildRequest> removal = new Array<>();
//due to iOS wierdness
class BuildDataStatic{
static Array<BuildRequest> removal = new Array<>();
static Vector2[] tmptr = new Vector2[]{new Vector2(), new Vector2(), new Vector2(), new Vector2()};
}
/**Returns the queue for storing build requests.*/
Queue<BuildRequest> getPlaceQueue();
@@ -197,9 +202,9 @@ public interface BuilderTrait extends Entity, TeamTrait{
if(!(tile.block() instanceof BuildBlock)){
if(canCreateBlocks() && !current.breaking && Build.validPlace(getTeam(), current.x, current.y, current.block, current.rotation)){
Build.beginPlace(getTeam(), current.x, current.y, current.block, current.rotation);
Call.beginPlace(getTeam(), current.x, current.y, current.block, current.rotation);
}else if(canCreateBlocks() && current.breaking && Build.validBreak(getTeam(), current.x, current.y)){
Build.beginBreak(getTeam(), current.x, current.y);
Call.beginBreak(getTeam(), current.x, current.y);
}else{
getPlaceQueue().removeFirst();
return;
@@ -208,8 +213,8 @@ public interface BuilderTrait extends Entity, TeamTrait{
TileEntity core = unit.getClosestCore();
//if there is no core to build with, stop building!
if(core == null){
//if there is no core to build with or no build entity, stop building!
if(core == null || !(tile.entity instanceof BuildEntity)){
return;
}
@@ -217,7 +222,6 @@ public interface BuilderTrait extends Entity, TeamTrait{
BuildEntity entity = tile.entity();
if(entity == null){
getPlaceQueue().removeFirst();
return;
}
@@ -229,9 +233,9 @@ public interface BuilderTrait extends Entity, TeamTrait{
if(!Net.client()){
//deconstructing is 2x as fast
if(current.breaking){
entity.deconstruct(unit, core, 2f / entity.buildCost * Time.delta() * getBuildPower(tile));
entity.deconstruct(unit, core, 2f / entity.buildCost * Time.delta() * getBuildPower(tile) * state.rules.buildSpeedMultiplier);
}else{
entity.construct(unit, core, 1f / entity.buildCost * Time.delta() * getBuildPower(tile));
entity.construct(unit, core, 1f / entity.buildCost * Time.delta() * getBuildPower(tile) * state.rules.buildSpeedMultiplier);
}
current.progress = entity.progress();
@@ -63,6 +63,16 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
unit.onSuperDeath();
//visual only.
if(Net.client()){
Tile tile = world.tile(unit.spawner);
if(tile != null && !Net.client()){
tile.block().unitRemoved(tile, unit);
}
unit.spawner = noSpawner;
}
//must run afterwards so the unit's group is not null when sending the removal packet
Core.app.post(unit::remove);
}
@@ -129,7 +139,10 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
}
public void targetClosest(){
target = Units.getClosestTarget(team, x, y, Math.max(getWeapon().bullet.range(), type.range), u -> type.targetAir || !u.isFlying());
TargetTrait newTarget = Units.getClosestTarget(team, x, y, Math.max(getWeapon().bullet.range(), type.range), u -> type.targetAir || !u.isFlying());
if(newTarget != null){
target = newTarget;
}
}
public TileEntity getClosestEnemyCore(){
@@ -214,7 +227,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
@Override
public float maxHealth(){
return type.health;
return type.health * Vars.state.rules.unitHealthMultiplier;
}
@Override
@@ -275,8 +288,9 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
@Override
public void removed(){
super.removed();
Tile tile = world.tile(spawner);
if(tile != null){
if(tile != null && !Net.client()){
tile.block().unitRemoved(tile, this);
}
@@ -353,6 +367,8 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
interpolator.read(lastx, lasty, x, y, rotation);
rotation = lastrot;
x = lastx;
y = lasty;
}
public void onSuperDeath(){
@@ -47,7 +47,7 @@ public abstract class FlyingUnit extends BaseUnit{
attack(type.attackLength);
if((Angles.near(angleTo(target), rotation, type.shootCone) || getWeapon().ignoreRotation) //bombers and such don't care about rotation
&& dst(target) < Math.max(getWeapon().bullet.range(), type.range)){
&& dst(target) < getWeapon().bullet.range()){
BulletType ammo = getWeapon().bullet;
if(type.rotateWeapon){
@@ -75,8 +75,9 @@ public abstract class FlyingUnit extends BaseUnit{
targetClosest();
targetClosestEnemyFlag(BlockFlag.target);
if(target != null){
if(target != null && !Units.invalidateTarget(target, team, x, y)){
setState(attack);
return;
}
target = getClosestCore();
@@ -54,10 +54,11 @@ public abstract class GroundUnit extends BaseUnit{
patrol = new UnitState(){
public void update(){
TileEntity target = getClosestCore();
if(target != null){
if(dst(target) > 400f){
moveAwayFromCore();
}else{
}else if(!(!Units.invalidateTarget(GroundUnit.this.target, GroundUnit.this) && dst(GroundUnit.this.target) < getWeapon().bullet.range())){
patrol();
}
}
@@ -210,11 +211,9 @@ public abstract class GroundUnit extends BaseUnit{
if(tile == targetTile) return;
float angle = angleTo(targetTile);
velocity.add(vec.trns(angleTo(targetTile), type.speed*Time.delta()));
if(Units.invalidateTarget(target, this)){
rotation = Mathf.slerpDelta(rotation, angle, type.rotatespeed);
rotation = Mathf.slerpDelta(rotation, baseRotation, type.rotatespeed);
}
}
@@ -236,9 +235,7 @@ public abstract class GroundUnit extends BaseUnit{
if(tile == targetTile || core == null || dst(core) < 90f) return;
float angle = angleTo(targetTile);
velocity.add(vec.trns(angleTo(targetTile), type.speed*Time.delta()));
rotation = Mathf.slerpDelta(rotation, angle, type.rotatespeed);
rotation = Mathf.slerpDelta(rotation, baseRotation, type.rotatespeed);
}
}
@@ -66,7 +66,6 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
public SpawnerTrait spawner, lastSpawner;
public NetConnection con;
public int playerIndex = 0;
public boolean isLocal = false;
public Interval timer = new Interval(4);
public TargetTrait target;
@@ -92,6 +91,11 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
player.mech = (player.isMobile ? Mechs.starterMobile : Mechs.starterDesktop);
}
@Override
public float getDamageMultipler(){
return status.getDamageMultiplier() * state.rules.playerDamageMultiplier;
}
@Override
public void hitbox(Rectangle rectangle){
rectangle.setSize(mech.hitsize).setCenter(x, y);
@@ -279,7 +283,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
if(dead) return;
if(!movement.isZero() && moved && !state.isPaused()){
walktime += movement.len() / 1f * getFloorOn().speedMultiplier;
walktime += movement.len() * getFloorOn().speedMultiplier * 2f;
baseRotation = Mathf.slerpDelta(baseRotation, movement.angle(), 0.13f);
}
@@ -585,7 +589,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
movement.x += xa * speed;
}
Vector2 vec = Core.input.mouseWorld(control.input(playerIndex).getMouseX(), control.input(playerIndex).getMouseY());
Vector2 vec = Core.input.mouseWorld(control.input().getMouseX(), control.input().getMouseY());
pointerX = vec.x;
pointerY = vec.y;
updateShooting();
@@ -608,7 +612,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
rotation = Mathf.slerpDelta(rotation, mech.flying ? velocity.angle() : movement.angle(), 0.13f * baseLerp);
}
}else{
float angle = control.input(playerIndex).mouseAngle(x, y);
float angle = control.input().mouseAngle(x, y);
this.rotation = Mathf.slerpDelta(this.rotation, angle, 0.1f * baseLerp);
}
}
@@ -727,8 +731,8 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
}
}else if(isShooting()){
Vector2 vec = Core.input.mouseWorld(control.input(playerIndex).getMouseX(),
control.input(playerIndex).getMouseY());
Vector2 vec = Core.input.mouseWorld(control.input().getMouseX(),
control.input().getMouseY());
pointerX = vec.x;
pointerY = vec.y;
@@ -808,7 +812,6 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
if(isLocal){
stream.writeByte(mech.id);
stream.writeByte(playerIndex);
stream.writeInt(lastSpawner == null ? noSpawner : lastSpawner.getTile().pos());
super.writeSave(stream, false);
}
@@ -820,14 +823,13 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
if(local && !headless){
byte mechid = stream.readByte();
int index = stream.readByte();
int spawner = stream.readInt();
if(world.tile(spawner) != null && world.tile(spawner).entity != null && world.tile(spawner).entity instanceof SpawnerTrait){
lastSpawner = (SpawnerTrait)(world.tile(spawner).entity);
}
players[index].readSaveSuper(stream);
players[index].mech = content.getByID(ContentType.mech, mechid);
players[index].dead = false;
player.readSaveSuper(stream);
player.mech = content.getByID(ContentType.mech, mechid);
player.dead = false;
}else if(local){
byte mechid = stream.readByte();
stream.readByte();
@@ -877,10 +879,10 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
interpolator.read(lastx, lasty, x, y, rotation, baseRotation);
rotation = lastrot;
x = lastx;
y = lasty;
if(isLocal){
x = lastx;
y = lasty;
velocity.x = lastvx;
velocity.y = lastvy;
}else{

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