Compare commits

..

97 Commits
v67 ... v71

Author SHA1 Message Date
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 (97f5bf3cc4 (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
303 changed files with 9556 additions and 8773 deletions

View File

@@ -3,7 +3,6 @@
package="io.anuke.mindustry"> package="io.anuke.mindustry">
<uses-feature android:glEsVersion="0x00020000" android:required="true" /> <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.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />

View File

@@ -27,9 +27,6 @@ repositories {
dependencies { dependencies {
implementation project(":core") implementation project(":core")
implementation project(":net") 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") implementation arcModule("backends:backend-android")
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
@@ -47,9 +44,9 @@ dependencies {
task deploy(type: Copy){ task deploy(type: Copy){
dependsOn "assembleRelease" dependsOn "assembleRelease"
from "build/outputs/apk/google/release/android-google-release.apk" from "build/outputs/apk/release/android-release.apk"
into "../deploy/" into "../deploy/"
rename ("android-google-release.apk", appName + "-android-" + getVersionString() + ".apk") rename ("android-release.apk", appName + "-android-" + getVersionString() + ".apk")
} }
android { android {
@@ -103,12 +100,6 @@ android {
flavorDimensions "google" flavorDimensions "google"
productFlavors {
google {
buildConfigField "boolean", "DONATIONS_GOOGLE", "true"
}
}
signingConfigs { signingConfigs {
release { release {
if(project.hasProperty("RELEASE_STORE_FILE")) { if(project.hasProperty("RELEASE_STORE_FILE")) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

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>

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>

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>

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>

View File

@@ -2,14 +2,5 @@
<resources> <resources>
<string name="app_name">Mindustry</string> <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>

View File

@@ -10,11 +10,6 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings.Secure; import android.provider.Settings.Secure;
import android.telephony.TelephonyManager; 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.Core;
import io.anuke.arc.backends.android.surfaceview.AndroidApplication; import io.anuke.arc.backends.android.surfaceview.AndroidApplication;
import io.anuke.arc.backends.android.surfaceview.AndroidApplicationConfiguration; import io.anuke.arc.backends.android.surfaceview.AndroidApplicationConfiguration;
@@ -53,8 +48,8 @@ public class AndroidLauncher extends AndroidApplication{
Platform.instance = new Platform(){ Platform.instance = new Platform(){
@Override @Override
public void openDonations(){ public void hide(){
showDonations(); moveTaskToBack(true);
} }
@Override @Override
@@ -94,7 +89,7 @@ public class AndroidLauncher extends AndroidApplication{
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
perms.add(Manifest.permission.READ_EXTERNAL_STORAGE); perms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
} }
requestPermissions(perms.toArray(new String[perms.size()]), PERMISSION_REQUEST_CODE); requestPermissions(perms.toArray(new String[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())){ if(doubleScaleTablets && isTablet(this.getContext())){
Unit.dp.addition = 0.5f; Unit.dp.addition = 0.5f;
} }
config.hideStatusBar = true; config.hideStatusBar = true;
Net.setClientProvider(new KryoClient()); Net.setClientProvider(new KryoClient());
Net.setServerProvider(new KryoServer()); Net.setServerProvider(new KryoServer());
@@ -133,7 +121,7 @@ public class AndroidLauncher extends AndroidApplication{
} }
@Override @Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults){ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){
if(requestCode == PERMISSION_REQUEST_CODE){ if(requestCode == PERMISSION_REQUEST_CODE){
for(int i : grantResults){ for(int i : grantResults){
if(i != PackageManager.PERMISSION_GRANTED) return; 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){ private boolean isTablet(Context context){
TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE; return manager != null && manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE;
}
private void showDonations(){
Intent intent = new Intent(this, DonationsActivity.class);
startActivity(intent);
} }
} }

View File

@@ -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);
}
}
}

View File

@@ -7,6 +7,18 @@ import java.lang.annotation.Target;
public class Annotations{ 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.*/ /** Marks a class as serializable.*/
@Target(ElementType.TYPE) @Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)

View File

@@ -109,7 +109,7 @@ public class RemoteWriteGenerator{
for(VariableElement var : elem.getParameters()){ for(VariableElement var : elem.getParameters()){
//special case: calling local-only methods uses the local player //special case: calling local-only methods uses the local player
if(index == 0 && methodEntry.where == Loc.client){ if(index == 0 && methodEntry.where == Loc.client){
results.append("io.anuke.mindustry.Vars.players[0]"); results.append("io.anuke.mindustry.Vars.player");
}else{ }else{
results.append(var.getSimpleName()); results.append(var.getSimpleName());
} }

View File

@@ -50,8 +50,21 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
classBuilder.addJavadoc(RemoteMethodAnnotationProcessor.autogenWarning); classBuilder.addJavadoc(RemoteMethodAnnotationProcessor.autogenWarning);
MethodSpec.Builder method = MethodSpec.methodBuilder("init").addModifiers(Modifier.PUBLIC, Modifier.STATIC); 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){ for(TypeElement elem : elements){
TypeName type = TypeName.get(elem.asType()); TypeName type = TypeName.get(elem.asType());
String simpleTypeName = type.toString().substring(type.toString().lastIndexOf('.') + 1);
TypeSpec.Builder serializer = TypeSpec.anonymousClassBuilder("") TypeSpec.Builder serializer = TypeSpec.anonymousClassBuilder("")
.addSuperinterface(ParameterizedTypeName.get( .addSuperinterface(ParameterizedTypeName.get(
@@ -70,7 +83,19 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
.addException(IOException.class) .addException(IOException.class)
.addModifiers(Modifier.PUBLIC); .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); 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)); List<VariableElement> fields = ElementFilter.fieldsIn(Utils.elementUtils.getAllMembers(elem));
for(VariableElement field : fields){ for(VariableElement field : fields){
@@ -83,6 +108,9 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
if(field.asType().getKind().isPrimitive()){ if(field.asType().getKind().isPrimitive()){
writeMethod.addStatement("stream.write" + capName + "(object." + name + ")"); writeMethod.addStatement("stream.write" + capName + "(object." + name + ")");
readMethod.addStatement("object." + name + "= stream.read" + capName + "()"); 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{ }else{
writeMethod.addStatement("io.anuke.arc.Core.settings.getSerializer(" + typeName+ ".class).write(stream, object." + name + ")"); 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)"); 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"); readMethod.addStatement("return object");
jsonReadMethod.addStatement("return object");
serializer.addMethod(writeMethod.build()); serializer.addMethod(writeMethod.build());
serializer.addMethod(readMethod.build()); serializer.addMethod(readMethod.build());
method.addStatement("io.anuke.arc.Core.settings.setSerializer($N, $L)", Utils.elementUtils.getBinaryName(elem).toString().replace('$', '.') + ".class", serializer.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" + simpleTypeName);
name(readMethod, "read" + simpleTypeName);
name(writeMethod, "write" + sname);
name(readMethod, "read" + sname);
writeMethod.addModifiers(Modifier.STATIC); writeMethod.addModifiers(Modifier.STATIC);
readMethod.addModifiers(Modifier.STATIC); readMethod.addModifiers(Modifier.STATIC);
classBuilder.addMethod(writeMethod.build()); classBuilder.addMethod(writeMethod.build());
classBuilder.addMethod(readMethod.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()); classBuilder.addMethod(method.build());

View File

@@ -129,7 +129,7 @@ public class StructAnnotationProcessor extends AbstractProcessor{
//floats: need conversion //floats: need conversion
setter.addStatement("return ($T)(($L & $L) | (($T)Float.floatToIntBits(value) << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset); setter.addStatement("return ($T)(($L & $L) | (($T)Float.floatToIntBits(value) << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
}else{ }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 //bytes, shorts, chars, ints
setter.addStatement("return ($T)(($L & $L) | (($T)value << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset); setter.addStatement("return ($T)(($L & $L) | (($T)value << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);

View File

@@ -8,7 +8,7 @@ buildscript{
} }
dependencies{ 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.gdx:gdx-tools:1.9.9"
classpath "com.badlogicgames.packr:packr:2.1-SNAPSHOT" classpath "com.badlogicgames.packr:packr:2.1-SNAPSHOT"
} }
@@ -25,7 +25,7 @@ allprojects{
if(!project.hasProperty("versionType")) versionType = 'official' if(!project.hasProperty("versionType")) versionType = 'official'
appName = 'Mindustry' appName = 'Mindustry'
gdxVersion = '1.9.9' gdxVersion = '1.9.9'
roboVMVersion = '2.3.0' roboVMVersion = '2.3.6'
arcHash = null arcHash = null
debugged = { debugged = {
@@ -43,7 +43,7 @@ allprojects{
arcHash = 'git ls-remote https://github.com/Anuken/Arc.git'.execute().text.split("\t")[0] arcHash = 'git ls-remote https://github.com/Anuken/Arc.git'.execute().text.split("\t")[0]
}catch(e){ }catch(e){
e.printStackTrace() e.printStackTrace()
arcHash = "-SNAPSHOT"; arcHash = "-SNAPSHOT"
} }
} }
return arcHash return arcHash
@@ -156,6 +156,7 @@ project(":ios"){
dependencies{ dependencies{
compile project(":core") compile project(":core")
compile project(":net") compile project(":net")
compileOnly project(":annotations")
compile arcModule("backends:backend-robovm") compile arcModule("backends:backend-robovm")

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

View File

@@ -43,6 +43,7 @@ addplayers = Add/Remove Players
customgame = Custom Game customgame = Custom Game
newgame = New Game newgame = New Game
none = <none> none = <none>
minimap = Minimap
close = Close close = Close
quit = Quit quit = Quit
maps = Maps 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.delete.confirm = Are you sure you want to delete this map? This action cannot be undone!
map.random = [accent]Random Map 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 = 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. map.invalid = Error loading map: corrupted or invalid map file.
editor.brush = Brush editor.brush = Brush
editor.openin = Open In Editor editor.openin = Open In Editor
@@ -286,7 +288,8 @@ donate = Donate
abandon = Abandon abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy. abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked locked = Locked
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Reach:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0} resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best Wave: {0} bestwave = [LIGHT_GRAY]Best Wave: {0}
launch = < LAUNCH > launch = < LAUNCH >
@@ -298,7 +301,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}. configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -340,63 +343,62 @@ no = No
info.title = Info info.title = Info
error.title = [crimson]An error has occured error.title = [crimson]An error has occured
error.crashtitle = An error has occured error.crashtitle = An error has occured
blocks.outputspeed = Drill Speed: {0}/ blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = Block Info block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Power Capacity blocks.powercapacity = Power Capacity
blocks.powershot = Power/Shot blocks.powershot = Power/Shot
blocks.targetsair = Targets Air blocks.targetsair = Targets Air
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Range blocks.shootrange = Range
blocks.size = Size blocks.size = Size
blocks.liquidcapacity = Liquid Capacity blocks.liquidcapacity = Liquid Capacity
blocks.maxitemssecond = Max Items
blocks.powerrange = Power Range blocks.powerrange = Power Range
blocks.poweruse = Power Use blocks.poweruse = Power Use
blocks.powerdamage = Power/Damage blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Input Item Capacity
blocks.outputitemcapacity = Output Item Capacity
blocks.itemcapacity = Item Capacity blocks.itemcapacity = Item Capacity
blocks.basepowergeneration = Base Power Generation blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Power Transfer blocks.productiontime = Production Time
blocks.craftspeed = Production Speed blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Input Liquid blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Aux Liquid blocks.range = Range
blocks.inputitem = Input Item
blocks.inputitems = Input Items
blocks.outputitem = Output Item
blocks.drilltier = Drillables blocks.drilltier = Drillables
blocks.drillspeed = Base Drill Speed blocks.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = Inaccuracy
blocks.shots = Shots blocks.shots = Shots
blocks.reload = Shots/Second blocks.reload = Shots/Second
blocks.inputfuel = Fuel
blocks.fuelburntime = Fuel Burn Time
blocks.inputcapacity = Input capacity
blocks.outputcapacity = Output capacity
blocks.ammo = Ammo 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.blocks = blocks
unit.powersecond = power units/second unit.powersecond = power units/second
unit.liquidsecond = liquid units/second unit.liquidsecond = liquid units/second
@@ -405,6 +407,9 @@ unit.liquidunits = liquid units
unit.powerunits = power units unit.powerunits = power units
unit.degrees = degrees unit.degrees = degrees
unit.seconds = seconds unit.seconds = seconds
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = items unit.items = items
category.general = General category.general = General
category.power = Power category.power = Power
@@ -413,8 +418,10 @@ category.items = Items
category.crafting = Input/Output category.crafting = Input/Output
category.shooting = Shooting category.shooting = Shooting
category.optional = Optional Enhancements category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Enemy/Ally Indicators setting.indicators.name = Enemy/Ally Indicators
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
@@ -438,6 +445,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Show FPS setting.fps.name = Show FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Show Power Lasers setting.lasers.name = Show Power Lasers
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Show Minimap setting.minimap.name = Show Minimap
setting.musicvol.name = Music Volume setting.musicvol.name = Music Volume
setting.mutemusic.name = Mute Music setting.mutemusic.name = Mute Music
@@ -490,6 +498,23 @@ mode.pvp.name = PvP
mode.pvp.description = Fight against other players locally. mode.pvp.description = Fight against other players locally.
mode.attack.name = Attack mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Items
content.liquid.name = Liquids content.liquid.name = Liquids
content.unit.name = Units content.unit.name = Units
@@ -532,7 +557,7 @@ liquid.oil.name = Oil
liquid.cryofluid.name = Cryofluid liquid.cryofluid.name = Cryofluid
mech.alpha-mech.name = Alpha mech.alpha-mech.name = Alpha
mech.alpha-mech.weapon = Heavy Repeater 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.alpha-mech.description = The standard mech. Has decent speed and damage output.
mech.delta-mech.name = Delta mech.delta-mech.name = Delta
mech.delta-mech.weapon = Arc Generator mech.delta-mech.weapon = Arc Generator
@@ -567,9 +592,10 @@ unit.speed = [LIGHT_GRAY]Speed: {0}
mech.weapon = [LIGHT_GRAY]Weapon: {0} mech.weapon = [LIGHT_GRAY]Weapon: {0}
mech.health = [LIGHT_GRAY]Health: {0} mech.health = [LIGHT_GRAY]Health: {0}
mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {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.minepower = [LIGHT_GRAY]Mining Power: {0}
mech.ability = [LIGHT_GRAY]Ability: {0} mech.ability = [LIGHT_GRAY]Ability: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0} liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosity: {0} liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
liquid.temperature = [LIGHT_GRAY]Temperature: {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-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smelter block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
block.mend-projector.name = Mend Projector block.mend-projector.name = Mend Projector
block.surge-wall.name = Surge Wall block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall block.surge-wall-large.name = Large Surge Wall
@@ -745,6 +772,7 @@ block.meltdown.name = Meltdown
block.container.name = Container block.container.name = Container
block.launch-pad.name = Launch Pad 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.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.blue.name = blue
team.red.name = red team.red.name = red
team.orange.name = orange 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.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.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.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.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.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. block.cryofluidmixer.description = Combines water and titanium into cryofluid which is much more efficient for cooling.

View File

@@ -40,6 +40,7 @@ addplayers = Přidat/Odebrat hráče
customgame = Vlastní hra customgame = Vlastní hra
newgame = New Game newgame = New Game
none = <none> none = <none>
minimap = Minimap
close = Zavřít close = Zavřít
quit = Ukončit quit = Ukončit
maps = Mapy 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.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 = 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.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. map.invalid = Chyba v načítání mapy: poškozený nebo neplatný soubor mapy.
editor.brush = Štětec editor.brush = Štětec
editor.openin = Otevřít v editoru. 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. abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked locked = Locked
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0} resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0} bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -333,63 +336,59 @@ no = Ne
info.title = Informace info.title = Informace
error.title = [crimson]Objevila se chyba error.title = [crimson]Objevila se chyba
error.crashtitle = Objevila se chyba error.crashtitle = Objevila se chyba
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = Informace o bloku block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Kapacita energie blocks.powercapacity = Kapacita energie
blocks.powershot = Energie na výstřel blocks.powershot = Energie na výstřel
blocks.targetsair = Zaměřuje vzdušné jednotky blocks.targetsair = Zaměřuje vzdušné jednotky
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Dostřel blocks.shootrange = Dostřel
blocks.size = velikost blocks.size = velikost
blocks.liquidcapacity = Kapacita tekutin blocks.liquidcapacity = Kapacita tekutin
blocks.maxitemssecond = Max předmětů
blocks.powerrange = Rozsah energie blocks.powerrange = Rozsah energie
blocks.poweruse = Spotřebuje energie blocks.poweruse = Spotřebuje energie
blocks.powerdamage = Energie na poškození 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.itemcapacity = kapacita předmětů
blocks.basepowergeneration = Základní generování energie blocks.basepowergeneration = Základní generování energie
blocks.powertransferspeed = Přenos energie blocks.productiontime = Production Time
blocks.craftspeed = Rychlost produkce blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Vstupní tekutiny blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Aux tekutina blocks.range = Range
blocks.inputitem = Vstupní předmět
blocks.inputitems = Vstupní předměty
blocks.outputitem = Výstupní předmět
blocks.drilltier = Vrtatelné blocks.drilltier = Vrtatelné
blocks.drillspeed = Základní rychlost vrtu blocks.drillspeed = Základní rychlost vrtu
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = Nepřesnost/výchylka
blocks.shots = Střely blocks.shots = Střely
blocks.reload = Střely za sekundu 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 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.blocks = Bloky
unit.powersecond = jednotek energie/sekunda unit.powersecond = jednotek energie/sekunda
unit.liquidsecond = jednotek tekutin/sekundu unit.liquidsecond = jednotek tekutin/sekundu
@@ -398,6 +397,9 @@ unit.liquidunits = jednotek tekutin
unit.powerunits = jednotek energie unit.powerunits = jednotek energie
unit.degrees = úhly unit.degrees = úhly
unit.seconds = sekundy unit.seconds = sekundy
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = předměty unit.items = předměty
category.general = Všeobecné category.general = Všeobecné
category.power = Energie category.power = Energie
@@ -406,8 +408,10 @@ category.items = Předměty
category.crafting = Vyžaduje category.crafting = Vyžaduje
category.shooting = Střílí category.shooting = Střílí
category.optional = Volitelné vylepšení category.optional = Volitelné vylepšení
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Indikátor pro spojence setting.indicators.name = Indikátor pro spojence
setting.autotarget.name = Automaticky zaměřuje setting.autotarget.name = Automaticky zaměřuje
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Ukázat snímky/sekundu setting.fps.name = Ukázat snímky/sekundu
setting.vsync.name = Vertikální synchronizace setting.vsync.name = Vertikální synchronizace
setting.lasers.name = Ukázat laser energie setting.lasers.name = Ukázat laser energie
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Ukázat minimapu setting.minimap.name = Ukázat minimapu
setting.musicvol.name = Hlasitost hudby setting.musicvol.name = Hlasitost hudby
setting.mutemusic.name = Ztišit hudbu 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.pvp.description = Bojuj proti ostatním hráčům v lokální síti.
mode.attack.name = Útok mode.attack.name = Útok
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Předměty
content.liquid.name = Tekutiny content.liquid.name = Tekutiny
content.unit.name = jednotky 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.minespeed = [LIGHT_GRAY]Rychlost těžení: {0}
mech.minepower = [LIGHT_GRAY]Síla těžení: {0} mech.minepower = [LIGHT_GRAY]Síla těžení: {0}
mech.ability = [LIGHT_GRAY]Schopnost: {0} mech.ability = [LIGHT_GRAY]Schopnost: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Kapacita teploty: {0} liquid.heatcapacity = [LIGHT_GRAY]Kapacita teploty: {0}
liquid.viscosity = [LIGHT_GRAY]Viskozita: {0} liquid.viscosity = [LIGHT_GRAY]Viskozita: {0}
liquid.temperature = [LIGHT_GRAY]Teplota: {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-pump.name = Termální pumpa
block.thermal-generator.name = Termální Generátor block.thermal-generator.name = Termální Generátor
block.alloy-smelter.name = Slitinová pec block.alloy-smelter.name = Slitinová pec
block.mender.name = Mender
block.mend-projector.name = Opravný projektor block.mend-projector.name = Opravný projektor
block.surge-wall.name = Impulzní stěna block.surge-wall.name = Impulzní stěna
block.surge-wall-large.name = Velká 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.container.name = Kontejnér
block.launch-pad.name = Launch Pad 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.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.blue.name = modrá
team.red.name = červená team.red.name = červená
team.orange.name = oranžová team.orange.name = oranžová

View File

@@ -40,6 +40,7 @@ addplayers = Hinzufügen/Entfernen von Spielern
customgame = Benutzerdefiniertes Spiel customgame = Benutzerdefiniertes Spiel
newgame = New Game newgame = New Game
none = <nichts> none = <nichts>
minimap = Minimap
close = Schließen close = Schließen
quit = Verlassen quit = Verlassen
maps = Karten 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.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 = 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.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. map.invalid = Fehler beim Laden der Karte: Beschädigtes oder invalide Karten Datei.
editor.brush = Pinsel editor.brush = Pinsel
editor.openin = Öffne im Editor 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. abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked locked = Locked
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0} resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0} bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -333,63 +336,59 @@ no = Nein
info.title = [accent]Info info.title = [accent]Info
error.title = [crimson] Ein Fehler ist aufgetreten error.title = [crimson] Ein Fehler ist aufgetreten
error.crashtitle = Ein Fehler ist aufgetreten! error.crashtitle = Ein Fehler ist aufgetreten!
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = Blockinfo: block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Kapazität blocks.powercapacity = Kapazität
blocks.powershot = Stromverbrauch/Schuss blocks.powershot = Stromverbrauch/Schuss
blocks.targetsair = Visiert Luft Einheiten an blocks.targetsair = Visiert Luft Einheiten an
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Reichweite blocks.shootrange = Reichweite
blocks.size = Größe blocks.size = Größe
blocks.liquidcapacity = Flüssigkeitskapazität blocks.liquidcapacity = Flüssigkeitskapazität
blocks.maxitemssecond = Max Materialien
blocks.powerrange = Stromreichweite blocks.powerrange = Stromreichweite
blocks.poweruse = Stromverbrauch blocks.poweruse = Stromverbrauch
blocks.powerdamage = Stromverbrauch/Schadenspunkt blocks.powerdamage = Stromverbrauch/Schadenspunkt
blocks.inputitemcapacity = Annahmekapazität
blocks.outputitemcapacity = Ausgabekapazität
blocks.itemcapacity = Materialkapazität blocks.itemcapacity = Materialkapazität
blocks.basepowergeneration = Basis-Stromerzeugung blocks.basepowergeneration = Basis-Stromerzeugung
blocks.powertransferspeed = Stromübertragung blocks.productiontime = Production Time
blocks.craftspeed = Produktionsgeschwindigkeit blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Benötigte Flüssigkeit blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Optionale Flüssigkeit blocks.range = Range
blocks.inputitem = Akzeptiertes Material
blocks.inputitems = Akzeptierte Materialien
blocks.outputitem = Erzeugtes Material
blocks.drilltier = Abbaubare Erze blocks.drilltier = Abbaubare Erze
blocks.drillspeed = Bohrgeschwindigkeit blocks.drillspeed = Bohrgeschwindigkeit
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = Ungenauigkeit
blocks.shots = Schüsse blocks.shots = Schüsse
blocks.reload = Schüsse/Sekunde blocks.reload = Schüsse/Sekunde
blocks.inputfuel = Kraftstoff
blocks.fuelburntime = Kraftstoff Verbrennungs-Zeit
blocks.inputcapacity = Annahmekapazität
blocks.outputcapacity = Ausgabekapazität
blocks.ammo = Ammo 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.blocks = Blöcke
unit.powersecond = Stromeinheiten/Sekunde unit.powersecond = Stromeinheiten/Sekunde
unit.liquidsecond = Flüssigkeitseinheiten/Sekunde unit.liquidsecond = Flüssigkeitseinheiten/Sekunde
@@ -398,6 +397,9 @@ unit.liquidunits = Flüssigkeitseinheiten
unit.powerunits = Stromeinheiten unit.powerunits = Stromeinheiten
unit.degrees = Grad unit.degrees = Grad
unit.seconds = Sekunden unit.seconds = Sekunden
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = Materialeinheiten unit.items = Materialeinheiten
category.general = Generell category.general = Generell
category.power = Strom category.power = Strom
@@ -406,8 +408,10 @@ category.items = Materialien
category.crafting = Erzeugung category.crafting = Erzeugung
category.shooting = Schießen category.shooting = Schießen
category.optional = Optional Enhancements category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Zielauswahl setting.autotarget.name = Auto-Zielauswahl
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Zeige FPS setting.fps.name = Zeige FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Zeige Stromlaser setting.lasers.name = Zeige Stromlaser
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Zeige die Minimap setting.minimap.name = Zeige die Minimap
setting.musicvol.name = Musiklautstärke setting.musicvol.name = Musiklautstärke
setting.mutemusic.name = Musik stummschalten setting.mutemusic.name = Musik stummschalten
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = Kämpfe gegen andere Spieler local. mode.pvp.description = Kämpfe gegen andere Spieler local.
mode.attack.name = Attack mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Materialien
content.liquid.name = Flüssigkeiten content.liquid.name = Flüssigkeiten
content.unit.name = Einheiten content.unit.name = Einheiten
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Materialkapazität: {0}
mech.minespeed = [LIGHT_GRAY]Erzabbaugeschwindigkeit: {0} mech.minespeed = [LIGHT_GRAY]Erzabbaugeschwindigkeit: {0}
mech.minepower = [LIGHT_GRAY]Erzabbaukraft: {0} mech.minepower = [LIGHT_GRAY]Erzabbaukraft: {0}
mech.ability = [LIGHT_GRAY]Fähigkeit: {0} mech.ability = [LIGHT_GRAY]Fähigkeit: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Wärmekapazität: {0} liquid.heatcapacity = [LIGHT_GRAY]Wärmekapazität: {0}
liquid.viscosity = [LIGHT_GRAY]Viskosität: {0} liquid.viscosity = [LIGHT_GRAY]Viskosität: {0}
liquid.temperature = [LIGHT_GRAY]Temperatur: {0} liquid.temperature = [LIGHT_GRAY]Temperatur: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Sprengbohrer
block.thermal-pump.name = Thermische Pumpe block.thermal-pump.name = Thermische Pumpe
block.thermal-generator.name = Thermischer Generator block.thermal-generator.name = Thermischer Generator
block.alloy-smelter.name = Legierungsschmeltzer block.alloy-smelter.name = Legierungsschmeltzer
block.mender.name = Mender
block.mend-projector.name = Reparaturprojektor block.mend-projector.name = Reparaturprojektor
block.surge-wall.name = Spannungsstoß-Mauer block.surge-wall.name = Spannungsstoß-Mauer
block.surge-wall-large.name = Große Spannungsstoß-Mauer block.surge-wall-large.name = Große Spannungsstoß-Mauer
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container block.container.name = Container
block.launch-pad.name = Launch Pad 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.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.blue.name = Blau
team.red.name = Rot team.red.name = Rot
team.orange.name = Orange team.orange.name = Orange

View File

@@ -40,6 +40,7 @@ addplayers = Agregar/Quitar Jugadores
customgame = Partida personalizada customgame = Partida personalizada
newgame = New Game newgame = New Game
none = <no hay> none = <no hay>
minimap = Minimap
close = Cerrar close = Cerrar
quit = Salir quit = Salir
maps = Mapas 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.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 = ¡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.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. map.invalid = Error cargando el mapa: archivo corrupto o inválido.
editor.brush = Pincel editor.brush = Pincel
editor.openin = Abrir en el Editor 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. abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked locked = Locked
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0} resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0} bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -333,63 +336,59 @@ no = No
info.title = [accent]Información info.title = [accent]Información
error.title = [crimson]Un error ha ocurrido. error.title = [crimson]Un error ha ocurrido.
error.crashtitle = Un error ha ocurrido. error.crashtitle = Un error ha ocurrido.
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = Información del Bloque block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Capacidad de Energía blocks.powercapacity = Capacidad de Energía
blocks.powershot = Energía/Disparo blocks.powershot = Energía/Disparo
blocks.targetsair = Apunta al Aire blocks.targetsair = Apunta al Aire
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Rango blocks.shootrange = Rango
blocks.size = Tamaño blocks.size = Tamaño
blocks.liquidcapacity = Capacidad de Líquidos blocks.liquidcapacity = Capacidad de Líquidos
blocks.maxitemssecond = Máximo de Objetos
blocks.powerrange = Rango de Energía blocks.powerrange = Rango de Energía
blocks.poweruse = Consumo de Energía blocks.poweruse = Consumo de Energía
blocks.powerdamage = Energía/Daño 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.itemcapacity = Capacidad de Objetos
blocks.basepowergeneration = Generación de energía base blocks.basepowergeneration = Generación de energía base
blocks.powertransferspeed = Transferencia de Energía blocks.productiontime = Production Time
blocks.craftspeed = Velocidad de Producción blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Líquidos de Entrada blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Líquido Auxiliar blocks.range = Range
blocks.inputitem = Objeto de Entrada
blocks.inputitems = Objetos de Entrada
blocks.outputitem = Objeto de Salida
blocks.drilltier = Taladrables blocks.drilltier = Taladrables
blocks.drillspeed = Velocidad Base del Taladro blocks.drillspeed = Velocidad Base del Taladro
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = Imprecisión
blocks.shots = Disparos blocks.shots = Disparos
blocks.reload = Recarga 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 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.blocks = bloques
unit.powersecond = unidades de energía/segundo unit.powersecond = unidades de energía/segundo
unit.liquidsecond = unidades de líquido/segundo unit.liquidsecond = unidades de líquido/segundo
@@ -398,6 +397,9 @@ unit.liquidunits = unidades de líquido
unit.powerunits = unidades de energía unit.powerunits = unidades de energía
unit.degrees = grados unit.degrees = grados
unit.seconds = segundos unit.seconds = segundos
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = objetos unit.items = objetos
category.general = General category.general = General
category.power = Energía category.power = Energía
@@ -406,8 +408,10 @@ category.items = Objetos
category.crafting = Fabricación category.crafting = Fabricación
category.shooting = Disparo category.shooting = Disparo
category.optional = Mejoras Opcionales category.optional = Mejoras Opcionales
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto apuntado setting.autotarget.name = Auto apuntado
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Mostrar FPS setting.fps.name = Mostrar FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Mostrar Energía de los Láseres setting.lasers.name = Mostrar Energía de los Láseres
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Mostrar Minimapa setting.minimap.name = Mostrar Minimapa
setting.musicvol.name = Volumen de la Música setting.musicvol.name = Volumen de la Música
setting.mutemusic.name = Silenciar Musica setting.mutemusic.name = Silenciar Musica
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = Pelea contra otros jugadores localmente. mode.pvp.description = Pelea contra otros jugadores localmente.
mode.attack.name = Attack mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Objetos
content.liquid.name = Líquidos content.liquid.name = Líquidos
content.unit.name = Unidades 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.minespeed = [LIGHT_GRAY]Velocidad de minado: {0}
mech.minepower = [LIGHT_GRAY]Potencia de minado: {0} mech.minepower = [LIGHT_GRAY]Potencia de minado: {0}
mech.ability = [LIGHT_GRAY]Hablidad: {0} mech.ability = [LIGHT_GRAY]Hablidad: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacidad Térmica: {0} liquid.heatcapacity = [LIGHT_GRAY]Capacidad Térmica: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosidad: {0} liquid.viscosity = [LIGHT_GRAY]Viscosidad: {0}
liquid.temperature = [LIGHT_GRAY]Temperatura: {0} liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Taladro de explosión
block.thermal-pump.name = Bomba Térmica block.thermal-pump.name = Bomba Térmica
block.thermal-generator.name = Generador Térmico block.thermal-generator.name = Generador Térmico
block.alloy-smelter.name = Alloy Smelter block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
block.mend-projector.name = Proyector de reparación block.mend-projector.name = Proyector de reparación
block.surge-wall.name = Surge Wall block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall block.surge-wall-large.name = Large Surge Wall
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Contenedor block.container.name = Contenedor
block.launch-pad.name = Launch Pad 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.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.blue.name = Azul
team.red.name = Rojo team.red.name = Rojo
team.orange.name = Naranja team.orange.name = Naranja

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.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 credits = Crédits
contributors = Translators and Contributors contributors = Traducteurs et contributeurs
discord = Rejoignez le discord de Mindustry discord = Rejoignez le discord de Mindustry
link.discord.description = Le discord officiel de mindustry link.discord.description = Le discord officiel de Mindustry!
link.github.description = Code source du jeu link.github.description = Code source du jeu.
link.dev-builds.description = Versions instables du jeu link.dev-builds.description = Versions instables du jeu.
link.trello.description = Trello officiel pour les futurs ajouts . 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.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 . link.wiki.description = Wiki officiel de mindustry .
linkfail = Erreur lors de l'ouverture du lien !\nL'URL a été copié avec succès. 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 = Partie terminée.
gameover.pvp = L'équipe [accent] {0}[] a gagnée ! gameover.pvp = L'équipe [accent] {0}[] a gagnée !
highscore = [YELLOW]Nouveau meilleur score! highscore = [YELLOW]Nouveau meilleur score!
stat.wave = Waves Defeated:[accent] {0} stat.wave = Vagues vaincues:[accent] {0}
stat.enemiesDestroyed = Enemies Destroyed:[accent] {0} stat.enemiesDestroyed = Ennemies détruits:[accent] {0}
stat.built = Buildings Built:[accent] {0} stat.built = Bâtiments construits:[accent] {0}
stat.destroyed = Buildings Destroyed:[accent] {0} stat.destroyed = Bâtiments détruits:[accent] {0}
stat.deconstructed = Buildings Deconstructed:[accent] {0} stat.deconstructed = Bâtiments déconstruits:[accent] {0}
stat.delivered = Resources Launched: stat.delivered = Ressources transférées:
stat.rank = Final Rank: [accent]{0} stat.rank = Rang Final: [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. 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 = 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. 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]Launched Items launcheditems = [accent]ressources transférées
map.delete = Êtes-vous sûr de supprimer cette carte"[accent]{0}[]"? map.delete = Êtes-vous sûr de supprimer cette carte"[accent]{0}[]"?
level.highscore = Meilleur score: [accent]{0} level.highscore = Meilleur score: [accent]{0}
level.select = Sélection de niveau level.select = Sélection de niveau
level.mode = Mode de jeu : level.mode = Mode de jeu :
showagain = Ne pas montrer la prochaine fois showagain = Ne pas montrer la prochaine fois
coreattack = [scarlet]<La base est sous les feux ennemis> coreattack = [scarlet]<La base est sous les feux ennemis>
nearpoint = [[ [scarlet]LEAVE DROP POINT IMMEDIATELY[] ]\nannihilation imminent nearpoint = [[ [scarlet]QUITTEZ LE POINT D'APPARITION ENNEMI IMMÉDIATEMENT[] ]\nannihilation imminente
outofbounds = [[ OUT OF BOUNDS ]\n[]self-destruct in {0} outofbounds = [[ HORS LIMITES ]\n[]auto-destruction dans {0}
database = Core Database database = Base de données
savegame = Sauvegarder la partie savegame = Sauvegarder la partie
loadgame = Charger la partie loadgame = Charger la partie
joingame = Rejoindre une partie joingame = Rejoindre une partie
addplayers = Ajouter/Enlever des joueurs addplayers = Ajouter/Enlever des joueurs
customgame = Partie personnalisée customgame = Partie customisée
newgame = New Game newgame = Nouvelle partie
none = <vide> none = <vide>
minimap = Minimap
close = Fermer close = Fermer
quit = Quitter quit = Quitter
maps = Cartes maps = Cartes
@@ -47,16 +48,16 @@ continue = Continuer
maps.none = [LIGHT_GRAY]Aucune carte trouvée! maps.none = [LIGHT_GRAY]Aucune carte trouvée!
about.button = À propos about.button = À propos
name = Nom: name = Nom:
noname = Pick a[accent] player name[] first. noname = Commencer par choisir un[accent] nom de joueur[].
filename = Nom du fichier: filename = Nom du fichier:
unlocked = Nouveau bloc débloqué! unlocked = Nouveau bloc débloqué!
completed = [accent]Completed completed = [accent]Complété
techtree = Tech Tree techtree = Arbre technologique
research.list = [LIGHT_GRAY]Research: research.list = [LIGHT_GRAY]Recherche:
research = Research research = Rechercher
researched = [LIGHT_GRAY]{0} researched. researched = [LIGHT_GRAY]{0} recherché(e).
players = {0} joueurs en ligne players = {0} joueurs en ligne
players.single = {0} joueur en ligne players.single = {0} joueurs en ligne
server.closing = [accent]Fermeture du serveur... server.closing = [accent]Fermeture du serveur...
server.kicked.kick = Vous avez été expulsé du serveur! server.kicked.kick = Vous avez été expulsé du serveur!
server.kicked.serverClose = Serveur fermé. server.kicked.serverClose = Serveur fermé.
@@ -148,7 +149,7 @@ save.wave = Vague {0}
save.difficulty = Difficulté: {0} save.difficulty = Difficulté: {0}
save.date = Dernière sauvegarde: {0} save.date = Dernière sauvegarde: {0}
save.playtime = Temps de jeu: {0} save.playtime = Temps de jeu: {0}
warning = Warning. warning = Avertissement.
confirm = Confirmer confirm = Confirmer
delete = Supprimer delete = Supprimer
ok = OK 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.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 = 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.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. map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide.
editor.brush = Pinceau editor.brush = Pinceau
editor.openin = Ouvrir dans l'éditeur 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.mapinfo = Infos sur la carte
editor.author = Auteur: editor.author = Auteur:
editor.description = Description: editor.description = Description:
editor.waves = Waves: editor.waves = Vagues:
waves.title = Waves waves.title = Vagues
waves.remove = Remove waves.remove = Remove
waves.never = <never> waves.never = <jamais>
waves.every = every waves.every = tous les
waves.waves = wave(s) waves.waves = vague(s)
waves.perspawn = per spawn waves.perspawn = par apparition
waves.to = to waves.to = à
waves.boss = Boss waves.boss = Boss
waves.preview = Preview waves.preview = Prévisualiser
waves.edit = Edit... waves.edit = Modifier...
waves.copy = Copy to Clipboard waves.copy = Copier dans le Presse-papiers
waves.load = Load from Clipboard waves.load = Coller depuis le Presse-papiers
waves.invalid = Invalid waves in clipboard. waves.invalid = Vagues invalides dans le Presse-papiers.
waves.copied = Waves copied. waves.copied = Vagues copiées
editor.default = [LIGHT_GRAY]<Default> editor.default = [LIGHT_GRAY]<par défaut>
edit = Edit... edit = Modifier...
editor.name = Nom: editor.name = Nom:
editor.teams = Équipe editor.teams = Équipe
editor.elevation = Élevation editor.elevation = Élevation
editor.errorload = Error loading file:\n[accent]{0} editor.errorload = Erreur lors du chargement du fichier:\n[accent]{0}
editor.errorsave = Error saving file:\n[accent]{0} editor.errorsave = Erreur lors de la sauvegarde du fichier:\n[accent]{0}
editor.errorname = Map has no name defined. editor.errorname = La carte n'a pas de nom!
editor.update = Update editor.update = Mettre à jour
editor.randomize = Randomize editor.randomize = Randomiser
editor.apply = Apply editor.apply = Appliquer
editor.generate = Générer editor.generate = Générer
editor.resize = Redimensionner editor.resize = Redimensionner
editor.loadmap = Charger une carte 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 = [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.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: editor.selectmap = Séléctionnez une carte:
filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filters.empty = [LIGHT_GRAY]Aucun filtre! Ajoutez-en un avec les boutons ci-dessous.
filter.distort = Distort filter.distort = Déformation
filter.noise = Noise filter.noise = Bruit
filter.ore = Ore filter.ore = Minerai
filter.rivernoise = River Noise filter.rivernoise = Bruit des rivières
filter.scatter = Scatter filter.scatter = Dispersement
filter.terrain = Terrain filter.terrain = Terrain
filter.option.scale = Scale filter.option.scale = Gamme
filter.option.chance = Chance filter.option.chance = Chance
filter.option.mag = Magnitude filter.option.mag = Magnitude
filter.option.threshold = Threshold filter.option.threshold = Seuil
filter.option.circle-scale = Circle Scale filter.option.circle-scale = Gamme du cercle
filter.option.octaves = Octaves filter.option.octaves = Octaves
filter.option.falloff = Falloff filter.option.falloff = Diminution
filter.option.block = Block filter.option.block = Bloc
filter.option.floor = Floor filter.option.floor = Sol
filter.option.wall = Wall filter.option.wall = Mur
filter.option.ore = Ore filter.option.ore = Minerai
filter.option.floor2 = Secondary Floor filter.option.floor2 = Sol secondaire
filter.option.threshold2 = Secondary Threshold filter.option.threshold2 = Seuil secondaire
width = Largeur: width = Largeur:
height = Hauteur: height = Hauteur:
menu = Menu menu = Menu
@@ -280,48 +282,49 @@ editor = Éditeur
mapeditor = Éditeur de carte mapeditor = Éditeur de carte
donate = Faire un\ndon donate = Faire un\ndon
abandon = Abandon abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy. abandon.text = Cette zone et tous ses ressources vont être perdues.
locked = Locked locked = Verrouillé
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Compléter:
resume = Resume Zone:\n[LIGHT_GRAY]{0} zone.requirement = Vague {0} dans la zone {1}
bestwave = [LIGHT_GRAY]Best: {0} resume = Reprendre la partie en cours:\n[LIGHT_GRAY]{0}
launch = Launch bestwave = [LIGHT_GRAY]Meilleur: {0}
launch.title = Launch Successful launch = Lancement
launch.next = [LIGHT_GRAY]next opportunity at wave {0} launch.title = Lancement réussi
launch.unable = [scarlet]Unable to LAUNCH.[] Enemies. launch.next = [LIGHT_GRAY] Prochaine opportunité à la vague {0}
launch.confirm = This will launch all resources in your core.\nYou will not be able to return to this base. launch.unable = [scarlet]Impossible d'effectuer le lancement.[] Ennemis.
uncover = Uncover launch.confirm = Cela va transférer tous tes ressources dans votre coeur.\nTu ne vas pas pouvoir retourner à cette base.
configure = Configure Loadout uncover = Découvrir
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure = Configurer le transfert des ressources.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. configure.locked = [LIGHT_GRAY]Atteigner la vague {0}\npour configurer le transfert des ressources
zone.complete = Zone conditions met. zone.unlocked = [LIGHT_GRAY]{0} Débloquée.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked. zone.requirement.complete = Vague {0} atteinte:\n{1} Exigences de la zone complétées
zone.resources = Resources Detected: zone.config.complete = Vague {0} atteinte:\nConfiguration du transfert débloquée.
add = Add... zone.resources = Ressources détectées:
boss.health = Boss Health add = Ajouter...
boss.health = Vie du BOSS
connectfail = [crimson]Échec de la connexion au serveur : [accent]{0} connectfail = [crimson]Échec de la connexion au serveur : [accent]{0}
error.unreachable = Server injoignable. error.unreachable = Serveur injoignable.
error.invalidaddress = Adresse invalide. error.invalidaddress = Adresse invalide.
error.timedout = Délai de connexion dépassé!\nAssurez-vous que l'hôte a autorisé l'accès au port, et que l'adresse soit correcte! error.timedout = Délai de connexion dépassé!\nAssurez-vous que l'hôte a autorisé l'accès au port, 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.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.alreadyconnected = Déjà connecté.
error.mapnotfound = Fichier de la carte introuvable! 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. error.any = Erreur réseau inconnue.
zone.groundZero.name = Ground Zero zone.groundZero.name = Première Bataille
zone.craters.name = The Craters zone.craters.name = Les Cratères
zone.frozenForest.name = Frozen Forest zone.frozenForest.name = Forêt Glaciale
zone.ruinousShores.name = Ruinous Shores zone.ruinousShores.name = Rives en Ruine
zone.stainedMountains.name = Stained Mountains zone.stainedMountains.name = Montagnes Tâchetées
zone.desolateRift.name = Desolate Rift zone.desolateRift.name = Fissure abandonnée
zone.nuclearComplex.name = Nuclear Production Complex zone.nuclearComplex.name = Complexe nucléaire
settings.language = Langage settings.language = Langage
settings.reset = Valeur par défaut. settings.reset = Valeur par défaut.
settings.rebind = Réatttribuer settings.rebind = Réatttribuer
settings.controls = Contrôles settings.controls = Contrôles
settings.game = Jeu settings.game = Jeu
settings.sound = Son settings.sound = Son
settings.graphics = Graphiques settings.graphics = Graphismes
settings.cleardata = Effacer les données du jeu... settings.cleardata = Effacer les données du jeu...
settings.clear.confirm = Êtes-vous sûr d'effacer ces données ?\nCe qui est fait ne peut être défait ! 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. 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 info.title = Info
error.title = [crimson]Une erreur s'est produite error.title = [crimson]Une erreur s'est produite
error.crashtitle = Une erreur s'est produite error.crashtitle = Une erreur s'est produite
blocks.outputspeed = Drill Speed: {0}/s bar.drillspeed = Vitesse de forage: {0}/s
blocks.efficiency = Efficiency: {0}% bar.efficiency = Efficacité: {0}%
blocks.unknown = [LIGHT_GRAY]??? block.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Info sur le bloc blocks.blockinfo = Info sur le bloc
blocks.powerbalance = Power: {0} bar.powerbalance = Énergie: {0}
blocks.poweroutput = Power Output: {0} bar.poweroutput = Énergie en sortie: {0}
blocks.powercapacity = capacité d'énergie blocks.powercapacity = Capacité d'énergie
blocks.powershot = Énergie/Tir blocks.powershot = Énergie/Tir
blocks.targetsair = Cible les unités aériennes blocks.targetsair = Cible les unités aériennes
blocks.targetsground = Targets Ground blocks.targetsground = Cible les unités terrestres
blocks.items = Items: {0} bar.items = Objets: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Vitesse de Déplacement
blocks.launchtime = Temps entre chaque lancement
blocks.shootrange = Portée blocks.shootrange = Portée
blocks.size = Taille blocks.size = Taille
blocks.liquidcapacity = Capacité en liquide blocks.liquidcapacity = Capacité en liquide
blocks.maxitemssecond = Production maximale
blocks.powerrange = Distance de transmission blocks.powerrange = Distance de transmission
blocks.poweruse = Énergie utilisée blocks.poweruse = Énergie utilisée
blocks.powerdamage = Énergie/Dégâts blocks.powerdamage = Énergie/Dégâts
blocks.inputitemcapacity = Capacité d'entrée
blocks.outputitemcapacity = Capacité de sortie
blocks.itemcapacity = Stockage 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.powertransferspeed = Vitesse de transfert d'énergie
blocks.craftspeed = Vitesse de production blocks.craftspeed = Vitesse de production
blocks.repairtime = Temps pour la Réparation Totale du Bloc
blocks.range = Portée
blocks.inputliquid = Liquide requis blocks.inputliquid = Liquide requis
blocks.inputliquidaux = Liquide optionnel blocks.inputliquidaux = Liquide optionnel
blocks.inputitem = Objets en entrée blocks.inputitem = Objets en entrée
@@ -365,23 +368,23 @@ blocks.inputitems = Objets utilisés
blocks.outputitem = Objet produit blocks.outputitem = Objet produit
blocks.drilltier = Forable blocks.drilltier = Forable
blocks.drillspeed = Vitesse de forage de base 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.liquidoutput = Liquide en sortie
blocks.liquidoutputspeed = Vitesse de production de liquide blocks.liquidoutputspeed = Vitesse de production de liquide
blocks.liquiduse = Quantité de liquide utilisée blocks.liquiduse = Quantité de liquide utilisée
blocks.coolant = Liquide de refroidissement blocks.coolant = Liquide de refroidissement
blocks.liquid = Liquid bar.liquid = Liquide
blocks.coolantuse = Quantité de liquide de refroidissement utilisée blocks.coolantuse = Quantité de liquide de refroidissement utilisée
blocks.inputliquidfuel = Carburant liquide blocks.inputliquidfuel = Carburant liquide
blocks.liquidfueluse = Quantité de carburant liquide utilisé blocks.liquidfueluse = Quantité de carburant liquide utilisé
blocks.boostitem = Boost Item blocks.boostitem = Objets boosters
blocks.boostliquid = Boost Liquid blocks.boostliquid = Liquides boosters
blocks.health = Santé blocks.health = Santé
blocks.heat = Heat bar.heat = Chaleur
blocks.power = Power bar.power = Énergie
blocks.progress = Build Progress bar.progress = Progression de la construction
blocks.spawned = Units: {0}/{1} bar.spawned = Unités: {0}/{1}
blocks.power.satisfaction = Power Satisfaction blocks.power.satisfaction = Énergie minimum nécessaire
blocks.inaccuracy = Précision blocks.inaccuracy = Précision
blocks.shots = Tir blocks.shots = Tir
blocks.reload = Tirs/Seconde blocks.reload = Tirs/Seconde
@@ -389,7 +392,18 @@ blocks.inputfuel = Carburant
blocks.fuelburntime = Durée du carburant blocks.fuelburntime = Durée du carburant
blocks.inputcapacity = Capacité d'entrée blocks.inputcapacity = Capacité d'entrée
blocks.outputcapacity = Capacité de production 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.blocks = blocs
unit.powersecond = Énergie/seconde unit.powersecond = Énergie/seconde
unit.liquidsecond = Liquides/seconde unit.liquidsecond = Liquides/seconde
@@ -398,6 +412,9 @@ unit.liquidunits = Unité de liquide
unit.powerunits = Unité d'énergie unit.powerunits = Unité d'énergie
unit.degrees = degrés unit.degrees = degrés
unit.seconds = secondes unit.seconds = secondes
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = Objets unit.items = Objets
category.general = Général category.general = Général
category.power = Énergie category.power = Énergie
@@ -405,21 +422,22 @@ category.liquids = Liquides
category.items = Objets category.items = Objets
category.crafting = Fabrication category.crafting = Fabrication
category.shooting = Défense category.shooting = Défense
category.optional = Optional Enhancements category.optional = Améliorations optionnelles
setting.shadows.name = Shadows setting.landscape.name = Verrouiller la rotation en mode paysage
setting.animatedwater.name = Animated Water setting.shadows.name = Ombres
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.animatedwater.name = Eau animée
setting.indicators.name = Ally Indicators 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.autotarget.name = Visée automatique
setting.fpscap.name = Max FPS setting.fpscap.name = Max FPS
setting.fpscap.none = None setting.fpscap.none = None
setting.fpscap.text = {0} FPS 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.training = entraînement
setting.difficulty.easy = facile setting.difficulty.easy = Facile
setting.difficulty.normal = normal setting.difficulty.normal = Normal
setting.difficulty.hard = difficile setting.difficulty.hard = Difficile
setting.difficulty.insane = Extreme setting.difficulty.insane = Extrème
setting.difficulty.name = Difficulté: setting.difficulty.name = Difficulté:
setting.screenshake.name = Tremblement de l'écran setting.screenshake.name = Tremblement de l'écran
setting.effects.name = Montrer les effets 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.saveinterval.name = Intervalle des sauvegardes auto
setting.seconds = {0} secondes setting.seconds = {0} secondes
setting.fullscreen.name = Plein écran setting.fullscreen.name = Plein écran
setting.borderless.name = Borderless Window setting.borderless.name = Fenêtre sans contour
setting.fps.name = Afficher FPS setting.fps.name = Afficher FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Afficher les rayons des lasers setting.lasers.name = Afficher les rayons des lasers
setting.minimap.name = montrer la minimap setting.minimap.name = Montrer la minimap
setting.musicvol.name = volume de la musique setting.musicvol.name = Volume de la musique
setting.mutemusic.name = Couper la musique setting.mutemusic.name = Couper la musique
setting.sfxvol.name = Volume des SFX setting.sfxvol.name = Volume des SFX
setting.mutesound.name = Couper les SFX setting.mutesound.name = Couper les SFX
setting.crashreport.name = Send Anonymous Crash Reports setting.crashreport.name = Envoyer un rapport de crash anonyme
keybind.title = Paramétrer les touches keybind.title = Paramétrer les touches
category.general.name = General category.general.name = Général
category.view.name = Voir category.view.name = Voir
category.multiplayer.name = Multijoueur category.multiplayer.name = Multijoueur
command.attack = Attaque command.attack = Attaque
command.retreat = Retraite command.retreat = Retraite
command.patrol = Patrouille command.patrol = Patrouille
keybind.gridMode.name = Block Select keybind.gridMode.name = Sélection des blocs
keybind.gridModeShift.name = Category Select keybind.gridModeShift.name = Sélection des catégories
keybind.press = Appuyer sur une touche... keybind.press = Appuyer sur une touche...
keybind.press.axis = Appuyer sur un axe ou une touche... keybind.press.axis = Appuyer sur un axe ou une touche...
keybind.screenshot.name = Map Screenshot keybind.screenshot.name = Capture d'écran
keybind.move_x.name = mouvement x keybind.move_x.name = mouvement x
keybind.move_y.name = mouvement y keybind.move_y.name = mouvement y
keybind.select.name = sélectionner keybind.select.name = sélectionner
keybind.diagonal_placement.name = Diagonal Placement keybind.diagonal_placement.name = Placement en diagonal
keybind.pick.name = Pick Block keybind.pick.name = Choisir un bloc
keybind.break_block.name = Break Block keybind.break_block.name = Suppprimer un bloc
keybind.deselect.name = Déselectionner keybind.deselect.name = Désélectionner
keybind.shoot.name = tirer keybind.shoot.name = tirer
keybind.zoom_hold.name = tenir le zoom keybind.zoom_hold.name = maintenir le zoom
keybind.zoom.name = zoom keybind.zoom.name = zoom
keybind.menu.name = menu keybind.menu.name = menu
keybind.pause.name = Pause keybind.pause.name = Pause
@@ -483,6 +501,21 @@ mode.pvp.name = JcJ
mode.pvp.description = Battez-vous contre d'autres joueurs en local. mode.pvp.description = Battez-vous contre d'autres joueurs en local.
mode.attack.name = Attack mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Objets
content.liquid.name = Liquides content.liquid.name = Liquides
content.unit.name = Unités 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.minespeed = [LIGHT_GRAY]Vitesse de minage: {0}
mech.minepower = [LIGHT_GRAY]Puissance du minage: {0} mech.minepower = [LIGHT_GRAY]Puissance du minage: {0}
mech.ability = [LIGHT_GRAY]Compétence: {0} mech.ability = [LIGHT_GRAY]Compétence: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique: {0} liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosité: {0} liquid.viscosity = [LIGHT_GRAY]Viscosité: {0}
liquid.temperature = [LIGHT_GRAY]Température: {0} liquid.temperature = [LIGHT_GRAY]Température: {0}
@@ -722,6 +756,7 @@ block.blast-drill.name = Foreuse à explosion
block.thermal-pump.name = Pompe thermique block.thermal-pump.name = Pompe thermique
block.thermal-generator.name = Générateur thermique block.thermal-generator.name = Générateur thermique
block.alloy-smelter.name = Fonderie d'alliage superchargé block.alloy-smelter.name = Fonderie d'alliage superchargé
block.mender.name = Mender
block.mend-projector.name = Projecteur soignant block.mend-projector.name = Projecteur soignant
block.surge-wall.name = mur superchargé block.surge-wall.name = mur superchargé
block.surge-wall-large.name = Grand mur superchargé block.surge-wall-large.name = Grand mur superchargé
@@ -737,6 +772,7 @@ block.meltdown.name = Meltdown
block.container.name = Conteneur block.container.name = Conteneur
block.launch-pad.name = Launch Pad 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.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.blue.name = Bleu
team.red.name = Rouge team.red.name = Rouge
team.orange.name = Orange team.orange.name = Orange

View File

@@ -40,6 +40,7 @@ addplayers = Ajouter/Enlever des joueurs
customgame = Partie personnalisée customgame = Partie personnalisée
newgame = New Game newgame = New Game
none = <Vide> none = <Vide>
minimap = Minimap
close = Fermer close = Fermer
quit = Quitter quit = Quitter
maps = Cartes 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.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 = 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.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. map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide.
editor.brush = Pinceau editor.brush = Pinceau
editor.openin = Ouvrir dans l'éditeur 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. abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked locked = Locked
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0} resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0} bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -333,63 +336,59 @@ no = Non
info.title = Info info.title = Info
error.title = [crimson]Une erreur s'est produite error.title = [crimson]Une erreur s'est produite
error.crashtitle = Une erreur s'est produite error.crashtitle = Une erreur s'est produite
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = Info sur le bloc block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Capacité d'énergie blocks.powercapacity = Capacité d'énergie
blocks.powershot = Énergie/Tir blocks.powershot = Énergie/Tir
blocks.targetsair = Cible les unités aériennes blocks.targetsair = Cible les unités aériennes
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Portée blocks.shootrange = Portée
blocks.size = Taille blocks.size = Taille
blocks.liquidcapacity = Capacité en liquide blocks.liquidcapacity = Capacité en liquide
blocks.maxitemssecond = Production maximale
blocks.powerrange = Distance de transmission blocks.powerrange = Distance de transmission
blocks.poweruse = Énergie utilisée blocks.poweruse = Énergie utilisée
blocks.powerdamage = Énergie/Dégâts blocks.powerdamage = Énergie/Dégâts
blocks.inputitemcapacity = Capacité d'entrée
blocks.outputitemcapacity = Capacité de sortie
blocks.itemcapacity = Stockage blocks.itemcapacity = Stockage
blocks.basepowergeneration = Production d'énergie de base blocks.basepowergeneration = Production d'énergie de base
blocks.powertransferspeed = Vitesse de transfert d'énergie blocks.productiontime = Production Time
blocks.craftspeed = Vitesse de production blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Liquide requis blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Liquide optionnel blocks.range = Range
blocks.inputitem = Objet utilisé
blocks.inputitems = Objets utilisés
blocks.outputitem = Objet produit
blocks.drilltier = Forable blocks.drilltier = Forable
blocks.drillspeed = Vitesse de forage de base blocks.drillspeed = Vitesse de forage de base
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = Précision
blocks.shots = Tirs blocks.shots = Tirs
blocks.reload = Tirs/Seconde 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 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.blocks = Blocs
unit.powersecond = Énergie/seconde unit.powersecond = Énergie/seconde
unit.liquidsecond = Liquides/seconde unit.liquidsecond = Liquides/seconde
@@ -398,6 +397,9 @@ unit.liquidunits = Unité de liquide
unit.powerunits = Unité d'énergie unit.powerunits = Unité d'énergie
unit.degrees = degrés unit.degrees = degrés
unit.seconds = secondes unit.seconds = secondes
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = Objets unit.items = Objets
category.general = Général category.general = Général
category.power = Énergie category.power = Énergie
@@ -406,8 +408,10 @@ category.items = Objets
category.crafting = Fabrication category.crafting = Fabrication
category.shooting = Défense category.shooting = Défense
category.optional = Améliorations facultatives category.optional = Améliorations facultatives
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Indicateurs d'alliés setting.indicators.name = Indicateurs d'alliés
setting.autotarget.name = Visée automatique setting.autotarget.name = Visée automatique
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Afficher FPS setting.fps.name = Afficher FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Afficher les rayons des lasers setting.lasers.name = Afficher les rayons des lasers
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Montrer la minimap setting.minimap.name = Montrer la minimap
setting.musicvol.name = Volume de la musique setting.musicvol.name = Volume de la musique
setting.mutemusic.name = Couper 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.pvp.description = Lutter contre d'autres joueurs pour gagner !
mode.attack.name = Attaque mode.attack.name = Attaque
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Objets
content.liquid.name = Liquides content.liquid.name = Liquides
content.unit.name = Unités 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.minespeed = [LIGHT_GRAY]Vitesse de minage: {0}
mech.minepower = [LIGHT_GRAY]Puissance du minage: {0} mech.minepower = [LIGHT_GRAY]Puissance du minage: {0}
mech.ability = [LIGHT_GRAY]Compétence: {0} mech.ability = [LIGHT_GRAY]Compétence: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique {0} liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique {0}
liquid.viscosity = [LIGHT_GRAY]Viscosité: {0} liquid.viscosity = [LIGHT_GRAY]Viscosité: {0}
liquid.temperature = [LIGHT_GRAY]Température: {0} liquid.temperature = [LIGHT_GRAY]Température: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Foreuse à explosion
block.thermal-pump.name = Pompe thermique block.thermal-pump.name = Pompe thermique
block.thermal-generator.name = Générateur thermique block.thermal-generator.name = Générateur thermique
block.alloy-smelter.name = Fonderie d'alliage superchargé block.alloy-smelter.name = Fonderie d'alliage superchargé
block.mender.name = Mender
block.mend-projector.name = Projecteur soignant block.mend-projector.name = Projecteur soignant
block.surge-wall.name = Mur superchargé block.surge-wall.name = Mur superchargé
block.surge-wall-large.name = Grand mur superchargé block.surge-wall-large.name = Grand mur superchargé
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Conteneur block.container.name = Conteneur
block.launch-pad.name = Launch Pad 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.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.blue.name = Bleu
team.red.name = Rouge team.red.name = Rouge
team.orange.name = Orange team.orange.name = Orange

View File

@@ -40,6 +40,7 @@ addplayers = Tambah/Hapus Pemain
customgame = Game Bebas customgame = Game Bebas
newgame = New Game newgame = New Game
none = <kosong> none = <kosong>
minimap = Minimap
close = Tutup close = Tutup
quit = Keluar quit = Keluar
maps = Peta 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.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 = 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] red[] cores to this map in the editor.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Error loading map: corrupted or invalid map file. map.invalid = Error loading map: corrupted or invalid map file.
editor.brush = Brush editor.brush = Brush
editor.openin = Open In Editor 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. abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked locked = Locked
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0} resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0} bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -333,63 +336,59 @@ no = No
info.title = [accent]Info info.title = [accent]Info
error.title = [crimson]Telah terjadi kesalahan error.title = [crimson]Telah terjadi kesalahan
error.crashtitle = Telah terjadi kesalahan error.crashtitle = Telah terjadi kesalahan
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = Info Blok block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Kapasitas Tenaga blocks.powercapacity = Kapasitas Tenaga
blocks.powershot = Tenaga/tembakan blocks.powershot = Tenaga/tembakan
blocks.targetsair = Targets Air blocks.targetsair = Targets Air
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Range blocks.shootrange = Range
blocks.size = Ukuran blocks.size = Ukuran
blocks.liquidcapacity = Kapasitas cairan blocks.liquidcapacity = Kapasitas cairan
blocks.maxitemssecond = Batas barang/detik
blocks.powerrange = Jangkauan tenaga blocks.powerrange = Jangkauan tenaga
blocks.poweruse = Power Use blocks.poweruse = Power Use
blocks.powerdamage = Power/Damage blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Input Item Capacity
blocks.outputitemcapacity = Input Item Capacity
blocks.itemcapacity = Kapasitas Barang blocks.itemcapacity = Kapasitas Barang
blocks.basepowergeneration = Base Power Generation blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Power Transfer blocks.productiontime = Production Time
blocks.craftspeed = Production Speed blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Cairan yang Masuk blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Aux Liquid blocks.range = Range
blocks.inputitem = Barang yang Masuk
blocks.inputitems = Input Items
blocks.outputitem = Output Item
blocks.drilltier = Drillables blocks.drilltier = Drillables
blocks.drillspeed = Base Drill Speed blocks.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = Ketidaktelitian
blocks.shots = Tembakan blocks.shots = Tembakan
blocks.reload = Reload blocks.reload = Reload
blocks.inputfuel = Fuel
blocks.fuelburntime = Fuel Burn Time
blocks.inputcapacity = Kapasitas masuk
blocks.outputcapacity = Kapasitas keluar
blocks.ammo = Ammo 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.blocks = blocks
unit.powersecond = power units/second unit.powersecond = power units/second
unit.liquidsecond = liquid units/second unit.liquidsecond = liquid units/second
@@ -398,6 +397,9 @@ unit.liquidunits = liquid units
unit.powerunits = power units unit.powerunits = power units
unit.degrees = degrees unit.degrees = degrees
unit.seconds = seconds unit.seconds = seconds
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = items unit.items = items
category.general = General category.general = General
category.power = Power category.power = Power
@@ -406,8 +408,10 @@ category.items = Items
category.crafting = Crafting category.crafting = Crafting
category.shooting = Shooting category.shooting = Shooting
category.optional = Optional Enhancements category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Tunjukkan FPS setting.fps.name = Tunjukkan FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Tampilkan Laser Tenaga setting.lasers.name = Tampilkan Laser Tenaga
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Show Minimap setting.minimap.name = Show Minimap
setting.musicvol.name = Volume Musik setting.musicvol.name = Volume Musik
setting.mutemusic.name = Bisukan Musik setting.mutemusic.name = Bisukan Musik
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = fight against other players locally. mode.pvp.description = fight against other players locally.
mode.attack.name = Attack mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Items
content.liquid.name = Liquids content.liquid.name = Liquids
content.unit.name = Units content.unit.name = Units
@@ -563,6 +583,7 @@ 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.minepower = [LIGHT_GRAY]Mining Power: {0}
mech.ability = [LIGHT_GRAY]Ability: {0} mech.ability = [LIGHT_GRAY]Ability: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0} liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosity: {0} liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
liquid.temperature = [LIGHT_GRAY]Temperature: {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-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smtler block.alloy-smelter.name = Alloy Smtler
block.mender.name = Mender
block.mend-projector.name = Mend Projector block.mend-projector.name = Mend Projector
block.surge-wall.name = Surge Wall block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall block.surge-wall-large.name = Large Surge Wall
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container block.container.name = Container
block.launch-pad.name = Launch Pad 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.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.blue.name = blue
team.red.name = red team.red.name = red
team.orange.name = orange team.orange.name = orange

View File

@@ -40,6 +40,7 @@ addplayers = Aggiungi/rimuovi giocatori
customgame = Gioco personalizzato customgame = Gioco personalizzato
newgame = New Game newgame = New Game
none = <Niente . . . > none = <Niente . . . >
minimap = Minimap
close = Chiuso close = Chiuso
quit = Esci quit = Esci
maps = Mappe 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.random = [accent]Mappa casuale
map.nospawn = Questa mappa non possiede un nucleo dove spawnare! Aggiungine uno nell'editor. 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.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. map.invalid = Errore nel caricamento della mappa: file mappa corrotto o non valido.
editor.brush = Pennello editor.brush = Pennello
editor.openin = Apri nell'editor 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. abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked locked = Locked
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0} resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0} bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -333,63 +336,59 @@ no = No
info.title = [accent] Info info.title = [accent] Info
error.title = [crimson]Si è verificato un errore error.title = [crimson]Si è verificato un errore
error.crashtitle = Si è verificato un errore error.crashtitle = Si è verificato un errore
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = info sul blocco block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Capacità Energetica blocks.powercapacity = Capacità Energetica
blocks.powershot = Danno/Colpo blocks.powershot = Danno/Colpo
blocks.targetsair = Attacca nemici aerei blocks.targetsair = Attacca nemici aerei
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Raggio blocks.shootrange = Raggio
blocks.size = Grandezza blocks.size = Grandezza
blocks.liquidcapacity = Capacità del liquido blocks.liquidcapacity = Capacità del liquido
blocks.maxitemssecond = Oggetti massimi/secondo
blocks.powerrange = Raggio Energia blocks.powerrange = Raggio Energia
blocks.poweruse = Utilizzo energia blocks.poweruse = Utilizzo energia
blocks.powerdamage = Power/Damage blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Capacità oggetti in entrata
blocks.outputitemcapacity = Capacità oggetti in uscità
blocks.itemcapacity = Capacità blocks.itemcapacity = Capacità
blocks.basepowergeneration = Base Power Generation blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Velocità trasferimento energia blocks.productiontime = Production Time
blocks.craftspeed = Velocità produzione blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Input del liquido blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Liquidi extra blocks.range = Range
blocks.inputitem = Input Oggetto
blocks.inputitems = Oggetti in entrata
blocks.outputitem = Oggetti in uscita
blocks.drilltier = Scavabili blocks.drilltier = Scavabili
blocks.drillspeed = Velocità scavo stbile blocks.drillspeed = Velocità scavo stbile
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = Inaccuratezza
blocks.shots = Colpi blocks.shots = Colpi
blocks.reload = Ricarica blocks.reload = Ricarica
blocks.inputfuel = Carburante
blocks.fuelburntime = Tempo combustione carburante
blocks.inputcapacity = Capacità di ingresso
blocks.outputcapacity = Capacità di uscita
blocks.ammo = Ammo 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.blocks = blocchi
unit.powersecond = unità energia/secondo unit.powersecond = unità energia/secondo
unit.liquidsecond = unità liquide/secondo unit.liquidsecond = unità liquide/secondo
@@ -398,6 +397,9 @@ unit.liquidunits = unità liquidi
unit.powerunits = unità energia unit.powerunits = unità energia
unit.degrees = gradi unit.degrees = gradi
unit.seconds = secondi unit.seconds = secondi
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = oggetti unit.items = oggetti
category.general = Generali category.general = Generali
category.power = Energia category.power = Energia
@@ -406,8 +408,10 @@ category.items = Oggetti
category.crafting = Produzione category.crafting = Produzione
category.shooting = Potenza di fuoco category.shooting = Potenza di fuoco
category.optional = Optional Enhancements category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Mostra FPS setting.fps.name = Mostra FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Mostra Laser Energetici setting.lasers.name = Mostra Laser Energetici
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Mostra minimappa setting.minimap.name = Mostra minimappa
setting.musicvol.name = Volume Musica setting.musicvol.name = Volume Musica
setting.mutemusic.name = Silenzia musica setting.mutemusic.name = Silenzia musica
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = fight against other players locally. mode.pvp.description = fight against other players locally.
mode.attack.name = Attack mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Oggetti
content.liquid.name = Liquidi content.liquid.name = Liquidi
content.unit.name = Units content.unit.name = Units
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]Capacità oggetti: {0}
mech.minespeed = [LIGHT_GRAY]Velocità di scavo: {0} mech.minespeed = [LIGHT_GRAY]Velocità di scavo: {0}
mech.minepower = [LIGHT_GRAY]Potenza di scavo: {0} mech.minepower = [LIGHT_GRAY]Potenza di scavo: {0}
mech.ability = [LIGHT_GRAY]Abilità: {0} mech.ability = [LIGHT_GRAY]Abilità: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacità calorifica: {0} liquid.heatcapacity = [LIGHT_GRAY]Capacità calorifica: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosità: {0} liquid.viscosity = [LIGHT_GRAY]Viscosità: {0}
liquid.temperature = [LIGHT_GRAY]Temperatura: {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-pump.name = Pompa termica
block.thermal-generator.name = Generatore termico block.thermal-generator.name = Generatore termico
block.alloy-smelter.name = Altoforno block.alloy-smelter.name = Altoforno
block.mender.name = Mender
block.mend-projector.name = Riparatore block.mend-projector.name = Riparatore
block.surge-wall.name = Surge Wall block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall block.surge-wall-large.name = Large Surge Wall
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container block.container.name = Container
block.launch-pad.name = Launch Pad 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.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.blue.name = blue
team.red.name = red team.red.name = red
team.orange.name = orange team.orange.name = orange

View File

@@ -40,6 +40,7 @@ addplayers = プレイヤーを追加/削除
customgame = カスタムゲーム customgame = カスタムゲーム
newgame = 新しいゲーム newgame = 新しいゲーム
none = <なし> none = <なし>
minimap = Minimap
close = 閉じる close = 閉じる
quit = 終了 quit = 終了
maps = マップ maps = マップ
@@ -182,6 +183,7 @@ map.delete.confirm = マップを削除してもよろしいですか? これは
map.random = [accent]ランダムマップ map.random = [accent]ランダムマップ
map.nospawn = このマップにはスポーンするためのプレイヤーのコアがありません! [ROYAL]青い[]コアをエディターでマップに追加してください。 map.nospawn = このマップにはスポーンするためのプレイヤーのコアがありません! [ROYAL]青い[]コアをエディターでマップに追加してください。
map.nospawn.pvp = このマップには敵がスポーンするためのプレイヤーのコアがありません! [SCARLET]赤い[]コアをエディターでマップに追加してください。 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 = マップの読み込みエラー: ファイルが無効、または破損しています。 map.invalid = マップの読み込みエラー: ファイルが無効、または破損しています。
editor.brush = ブラシ editor.brush = ブラシ
editor.openin = エディターで開く editor.openin = エディターで開く
@@ -283,6 +285,7 @@ abandon = 撤退
abandon.text = このゾーンとすべての資源が敵に奪われます。 abandon.text = このゾーンとすべての資源が敵に奪われます。
locked = ロック locked = ロック
complete = [LIGHT_GRAY]完了: complete = [LIGHT_GRAY]完了:
zone.requirement = Wave {0} in zone {1}
resume = 再開ゾーン:\n[LIGHT_GRAY]{0} resume = 再開ゾーン:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]最高ウェーブ: {0} bestwave = [LIGHT_GRAY]最高ウェーブ: {0}
launch = 出撃 launch = 出撃
@@ -294,7 +297,7 @@ uncover = 開拓
configure = 積荷の設定 configure = 積荷の設定
configure.locked = [LIGHT_GRAY]ウェーブ {0} を達成すると積荷を設定できるようになります。 configure.locked = [LIGHT_GRAY]ウェーブ {0} を達成すると積荷を設定できるようになります。
zone.unlocked = [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.config.complete = ウェーブ {0} を達成:\n積荷の設定が解除されました。
zone.resources = 発見した資源: zone.resources = 発見した資源:
add = 追加... add = 追加...
@@ -333,63 +336,59 @@ no = いいえ
info.title = 情報 info.title = 情報
error.title = [crimson]エラーが発生しました error.title = [crimson]エラーが発生しました
error.crashtitle = エラーが発生しました error.crashtitle = エラーが発生しました
blocks.outputspeed = 採掘速度: {0}/秒 blocks.input = Input
blocks.efficiency = 効率: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = ブロック情報 block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = 電力: {0}
blocks.poweroutput = 電力発電量: {0}
blocks.powercapacity = 電力容量 blocks.powercapacity = 電力容量
blocks.powershot = 電力/ショット blocks.powershot = 電力/ショット
blocks.targetsair = 対空攻撃 blocks.targetsair = 対空攻撃
blocks.targetsground = 対地攻撃 blocks.targetsground = 対地攻撃
blocks.items = アイテム: {0}
blocks.itemsmoved = 輸送速度 blocks.itemsmoved = 輸送速度
blocks.launchtime = Time Between Launches
blocks.shootrange = 範囲 blocks.shootrange = 範囲
blocks.size = 大きさ blocks.size = 大きさ
blocks.liquidcapacity = 液体容量 blocks.liquidcapacity = 液体容量
blocks.maxitemssecond = 最大アイテム量
blocks.powerrange = 電力範囲 blocks.powerrange = 電力範囲
blocks.poweruse = 電力使用量 blocks.poweruse = 電力使用量
blocks.powerdamage = 電力/ダメージ blocks.powerdamage = 電力/ダメージ
blocks.inputitemcapacity = 搬入アイテム容量
blocks.outputitemcapacity = 搬出アイテム容量
blocks.itemcapacity = アイテム容量 blocks.itemcapacity = アイテム容量
blocks.basepowergeneration = 基本発電量 blocks.basepowergeneration = 基本発電量
blocks.powertransferspeed = 電力伝送量 blocks.productiontime = Production Time
blocks.craftspeed = 生産速度 blocks.repairtime = Block Full Repair Time
blocks.inputliquid = 必要な液体 blocks.speedincrease = Speed Increase
blocks.inputliquidaux = 補助液 blocks.range = Range
blocks.inputitem = 必要なアイテム
blocks.inputitems = 必要なアイテム
blocks.outputitem = 搬出アイテム
blocks.drilltier = ドリル blocks.drilltier = ドリル
blocks.drillspeed = 基本採掘速度 blocks.drillspeed = 基本採掘速度
blocks.boosteffect = Boost Effect
blocks.maxunits = 最大ユニット数 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.health = 耐久値
blocks.heat =
blocks.power = 電力
blocks.progress = 建設状況
blocks.spawned = ユニット数: {0}/{1}
blocks.power.satisfaction = 電力需要
blocks.inaccuracy = 精度のずれ blocks.inaccuracy = 精度のずれ
blocks.shots = ショット blocks.shots = ショット
blocks.reload = ショット/秒 blocks.reload = ショット/秒
blocks.inputfuel = 燃料
blocks.fuelburntime = 燃焼時間
blocks.inputcapacity = 搬入容量
blocks.outputcapacity = 搬出容量
blocks.ammo = 弾薬 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.blocks = ブロック
unit.powersecond = 電力/秒 unit.powersecond = 電力/秒
unit.liquidsecond = 液体/秒 unit.liquidsecond = 液体/秒
@@ -398,6 +397,9 @@ unit.liquidunits = 液体
unit.powerunits = 電力 unit.powerunits = 電力
unit.degrees = unit.degrees =
unit.seconds = unit.seconds =
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = アイテム unit.items = アイテム
category.general = 一般 category.general = 一般
category.power = 電力 category.power = 電力
@@ -406,8 +408,10 @@ category.items = アイテム
category.crafting = 製作速度 category.crafting = 製作速度
category.shooting = 攻撃速度 category.shooting = 攻撃速度
category.optional = 機能強化オプション category.optional = 機能強化オプション
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = 水のアニメーション setting.animatedwater.name = 水のアニメーション
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = 味方の方角表示 setting.indicators.name = 味方の方角表示
setting.autotarget.name = 自動ターゲット setting.autotarget.name = 自動ターゲット
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = FPSを表示 setting.fps.name = FPSを表示
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = 電力レーザーを表示 setting.lasers.name = 電力レーザーを表示
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = ミニマップを表示 setting.minimap.name = ミニマップを表示
setting.musicvol.name = 音楽 音量 setting.musicvol.name = 音楽 音量
setting.mutemusic.name = 音楽をミュート setting.mutemusic.name = 音楽をミュート
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = ローカル内で他のプレイヤーと戦います。 mode.pvp.description = ローカル内で他のプレイヤーと戦います。
mode.attack.name = アタック mode.attack.name = アタック
mode.attack.description = ウェーブがなく、敵の基地を破壊することを目指します。 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.item.name = アイテム
content.liquid.name = 液体 content.liquid.name = 液体
content.unit.name = ユニット content.unit.name = ユニット
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]アイテム容量: {0}
mech.minespeed = [LIGHT_GRAY]採掘速度: {0} mech.minespeed = [LIGHT_GRAY]採掘速度: {0}
mech.minepower = [LIGHT_GRAY]採掘性能: {0} mech.minepower = [LIGHT_GRAY]採掘性能: {0}
mech.ability = [LIGHT_GRAY]能力: {0} mech.ability = [LIGHT_GRAY]能力: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]熱容量: {0} liquid.heatcapacity = [LIGHT_GRAY]熱容量: {0}
liquid.viscosity = [LIGHT_GRAY]粘度: {0} liquid.viscosity = [LIGHT_GRAY]粘度: {0}
liquid.temperature = [LIGHT_GRAY]温度: {0} liquid.temperature = [LIGHT_GRAY]温度: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = エアブラストドリル
block.thermal-pump.name = サーマルポンプ block.thermal-pump.name = サーマルポンプ
block.thermal-generator.name = サーマル発電機 block.thermal-generator.name = サーマル発電機
block.alloy-smelter.name = 合金溶鉱炉 block.alloy-smelter.name = 合金溶鉱炉
block.mender.name = Mender
block.mend-projector.name = 修復プロジェクター block.mend-projector.name = 修復プロジェクター
block.surge-wall.name = サージの壁 block.surge-wall.name = サージの壁
block.surge-wall-large.name = 大きなサージの壁 block.surge-wall-large.name = 大きなサージの壁
@@ -737,6 +759,7 @@ block.meltdown.name = メルトダウン
block.container.name = コンテナー block.container.name = コンテナー
block.launch-pad.name = 出撃パッド block.launch-pad.name = 出撃パッド
block.launch-pad.description = コアの出撃不要で多くのアイテムを脱出します。これは未完成です。 block.launch-pad.description = コアの出撃不要で多くのアイテムを脱出します。これは未完成です。
block.launch-pad-large.name = Large Launch Pad
team.blue.name = ブルー team.blue.name = ブルー
team.red.name = レッド team.red.name = レッド
team.orange.name = オレンジ team.orange.name = オレンジ

View File

@@ -14,24 +14,27 @@ screenshot = 화면 캡쳐가 {0} 경로에 저장되었습니다.
gameover = 게임 오버 gameover = 게임 오버
gameover.pvp = [accent]{0}[] 팀이 승리했습니다! gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
highscore = [accent]최고점수 달성! highscore = [accent]최고점수 달성!
stat.wave = 웨이브 성공:[accent]{0} stat.wave = 웨이브 성공:[accent]{0}
stat.enemiesDestroyed = 파괴한 적 수:[accent]{0} stat.enemiesDestroyed = 파괴한 적 수:[accent]{0}
stat.built = 건설한 건물 수:[accent]{0} stat.built = 건설한 건물 수:[accent]{0}
stat.destroyed = 파괴된 건물 수:[accent]{0} stat.destroyed = 파괴된 건물 수:[accent]{0}
stat.deconstructed = 해체한 건물 수:[accent]{0} stat.deconstructed = 파괴한 건물 수:[accent]{0}
stat.delivered = 획득한 자원: stat.delivered = 획득한 자원:
stat.rank = 최종 기록: [accent]{0} stat.rank = 최종 기록: [accent]{0}
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. placeline = 블록을 선택하셨습니다.\n][accent]몇초간 설치 시작지점을 누르고[] 원하는 방향을 향해 드래그 하면 [accent]일렬로[] 설치할 수 있습니다.\n한번 해 보세요.
launcheditems = [accent]Launched Items removearea = 블록 제거모드를 선택하셨습니다.\n[accent]몇초간 제거 시작지점을 누르고[] 원하는 구역 끝을 향해 드래그 하면 [accent]직사각형[] 안에 있는 모든 건물을 제거할 수 있습니다.\n한번 해 보세요.
launcheditems = [accent]출격 아이템
map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까?\n map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까?\n
level.highscore = 최고 점수: [accent]{0} level.highscore = 최고 점수: [accent]{0}
level.select = 맵 선택 level.select = 맵 선택
level.mode = 게임 모드 : level.mode = 게임 모드 :
showagain = 다음 세션에서 이 메세지를 표시하지 않습니다 showagain = 다음 세션에서 이 메세지를 표시하지 않습니다
coreattack = < 코어가 공격받고 있습니다! > coreattack = < 코어가 공격받고 있습니다! >
nearpoint = [[ [scarlet]드롭 지점에서 나가세요[] ]\n모든 유닛 및 건물 파괴 임박 nearpoint = [[ [scarlet]드롭 지점에서 나가세요[] ]\n적 스폰시 건물 및 유닛 파괴
outofbounds = [[ 출입 금지 구역 ]\n[]{0}초후 건물이 해체됩니다. outofbounds = [[ 출입 금지 구역 ]\n[]{0}초후 유닛이 파괴됩니다.
database = 코어 데이터베이스 database = 코어 데이터베이스
savegame = 게임 저장 savegame = 게임 저장
loadgame = 게임 불러오기 loadgame = 게임 불러오기
@@ -40,6 +43,7 @@ addplayers = 플레이어 추가/제거
customgame = 커스텀 게임 customgame = 커스텀 게임
newgame = 새 게임 newgame = 새 게임
none = <없음> none = <없음>
minimap = 미니맵
close = 닫기 close = 닫기
quit = 나가기 quit = 나가기
maps = maps =
@@ -181,7 +185,8 @@ builtin = 기본맵
map.delete.confirm = 이 맵을 삭제하시겠습니까? 이 명령은 취소할 수 없습니다! map.delete.confirm = 이 맵을 삭제하시겠습니까? 이 명령은 취소할 수 없습니다!
map.random = [accent]랜덤 맵 map.random = [accent]랜덤 맵
map.nospawn = 이 맵에 플레이어가 스폰 할 코어가 없습니다! 맵 편집기에서 [ROYAL]파란색[]코어를 맵에 추가하세요. map.nospawn = 이 맵에 플레이어가 스폰 할 코어가 없습니다! 맵 편집기에서 [ROYAL]파란색[]코어를 맵에 추가하세요.
map.nospawn.pvp = 이 맵에는 적팀 코어가 없습니다! 에디터에서 [SCARLET]빨간팀[] 코어를 추가하세요. map.nospawn.pvp = 이 맵에는 적팀 코어가 없습니다! 에디터에서 [SCARLET]파란색 팀이 아닌[] 코어를 추가하세요.
map.nospawn.attack = 이 맵에는 플레이어가 공격할 수 있는 적의 코어가 없습니다! 에디터에서 [SCARLET] 빨간팀[] 코어를 맵에 추가하세요.
map.invalid = 파일이 잘못되었거나 손상되어 맵을 열 수 없습니다. map.invalid = 파일이 잘못되었거나 손상되어 맵을 열 수 없습니다.
editor.brush = 브러쉬 editor.brush = 브러쉬
editor.openin = 편집기 열기 editor.openin = 편집기 열기
@@ -199,12 +204,12 @@ waves.waves = 웨이브마다
waves.perspawn = 스폰. waves.perspawn = 스폰.
waves.to = 부터 waves.to = 부터
waves.boss = 이 몹은 보스임. waves.boss = 이 몹은 보스임.
waves.preview = Preview waves.preview = 미리보기
waves.edit = Edit... waves.edit = 편집...
waves.copy = Copy to Clipboard waves.copy = 클립보드로 복사
waves.load = Load from Clipboard waves.load = 클립보드에서 불러오기
waves.invalid = Invalid waves in clipboard. waves.invalid = 클립보드의 잘못된 웨이브 데이터
waves.copied = Waves copied. waves.copied = 웨이브 복사됨
editor.default = [LIGHT_GRAY]<기본값> editor.default = [LIGHT_GRAY]<기본값>
edit = 편집... edit = 편집...
editor.name = 이름: editor.name = 이름:
@@ -214,7 +219,7 @@ editor.errorload = [accent]{0} 파일을 불러오는데 실패했습니다.
editor.errorsave = [accent]{0} 파일을 저장하는데 실패했습니다. editor.errorsave = [accent]{0} 파일을 저장하는데 실패했습니다.
editor.errorname = 맵에 이름이 지정되어 있지 않습니다. editor.errorname = 맵에 이름이 지정되어 있지 않습니다.
editor.update = 업데이트 editor.update = 업데이트
editor.randomize = Randomize editor.randomize = 랜덤
editor.apply = 적용 editor.apply = 적용
editor.generate = 생성 editor.generate = 생성
editor.resize = 맵 크기조정 editor.resize = 맵 크기조정
@@ -279,10 +284,12 @@ tutorial = 게임 방법
editor = 편집기 editor = 편집기
mapeditor = 맵 편집기 mapeditor = 맵 편집기
donate = 기부 donate = 기부
abandon = 버리기
abandon = 포기
abandon.text = 이 구역과 모든 자원이 적에게 빼앗길 것입니다. abandon.text = 이 구역과 모든 자원이 적에게 빼앗길 것입니다.
locked = 잠김 locked = 잠김
complete = [LIGHT_GRAY]완료: complete = [LIGHT_GRAY]완료:
zone.requirement = 지역 {1} 에서 웨이브 {0} 달성
resume = 지역 계속 플레이:\n[LIGHT_GRAY]{0} resume = 지역 계속 플레이:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]최고 점수: {0} bestwave = [LIGHT_GRAY]최고 점수: {0}
launch = < 출격 > launch = < 출격 >
@@ -294,11 +301,12 @@ uncover = 털어넣기
configure = 로드아웃 설정 configure = 로드아웃 설정
configure.locked = {0} 단계에서 로드아웃을 설정할 수 있음. configure.locked = {0} 단계에서 로드아웃을 설정할 수 있음.
zone.unlocked = [LIGHT_GRAY] 잠금 해제됨. zone.unlocked = [LIGHT_GRAY] 잠금 해제됨.
zone.complete = 지역 조건이 충족됨. zone.requirement.complete = 웨이브 {0} 달성:\n{1} 지역 요구사항이 충족됨.
zone.config.complete = 웨이브 {0} 달성:\n로드아웃 설정 잠금 해제됨. zone.config.complete = 웨이브 {0} 달성:\n로드아웃 설정 잠금 해제됨.
zone.resources = 자원 감지됨: zone.resources = 자원 감지됨:
add = 추가... add = 추가...
boss.health = 보스 체력 boss.health = 보스 체력
connectfail = [crimson]{0}[accent] 서버에 연결하지 못했습니다.[] connectfail = [crimson]{0}[accent] 서버에 연결하지 못했습니다.[]
error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요? error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요?
error.invalidaddress = 잘못된 주소입니다. error.invalidaddress = 잘못된 주소입니다.
@@ -308,6 +316,7 @@ error.alreadyconnected = 이미 접속중입니다.
error.mapnotfound = 맵 파일을 찾을 수 없습니다! error.mapnotfound = 맵 파일을 찾을 수 없습니다!
error.io = 네트워크 I/O 오류. error.io = 네트워크 I/O 오류.
error.any = 알 수 없는 네트워크 오류. error.any = 알 수 없는 네트워크 오류.
zone.groundZero.name = 그라운드 제로 zone.groundZero.name = 그라운드 제로
zone.craters.name = 분화구 zone.craters.name = 분화구
zone.frozenForest.name = 얼어붙은 숲 zone.frozenForest.name = 얼어붙은 숲
@@ -315,6 +324,7 @@ zone.ruinousShores.name = 파멸의 기슭
zone.stainedMountains.name = 얼룩진 산맥 zone.stainedMountains.name = 얼룩진 산맥
zone.desolateRift.name = 황량한 강 zone.desolateRift.name = 황량한 강
zone.nuclearComplex.name = 핵 생산 단지 zone.nuclearComplex.name = 핵 생산 단지
settings.language = 언어 settings.language = 언어
settings.reset = 설정 초기화 settings.reset = 설정 초기화
settings.rebind = 키 재설정 settings.rebind = 키 재설정
@@ -333,63 +343,60 @@ no = 아니오
info.title = [accent]정보 info.title = [accent]정보
error.title = [crimson]오류가 발생했습니다. error.title = [crimson]오류가 발생했습니다.
error.crashtitle = 오류가 발생했습니다. error.crashtitle = 오류가 발생했습니다.
blocks.outputspeed = 채광 속도: {0}/s blocks.input = 입력
blocks.efficiency = Efficiency: {0}% blocks.output = 출력
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = 가속
blocks.blockinfo = 블록 정보 block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = 전력: {0}
blocks.poweroutput = 전력 출력: {0}
blocks.powercapacity = 전력 용량 blocks.powercapacity = 전력 용량
blocks.powershot = 1발당 전력 소모량 blocks.powershot = 1발당 전력 소모량
blocks.targetsair = 공중공격 가능 blocks.targetsair = 공중공격 가능
blocks.targetsground = 지상공격 가능 blocks.targetsground = 지상공격 가능
blocks.items = Items: {0}
blocks.itemsmoved = 이동 속도 blocks.itemsmoved = 이동 속도
blocks.launchtime = 출격 시간
blocks.shootrange = 사거리 blocks.shootrange = 사거리
blocks.size = 크기 blocks.size = 크기
blocks.liquidcapacity = 액체 용량 blocks.liquidcapacity = 액체 용량
blocks.maxitemssecond = 아이템 보관량
blocks.powerrange = 전력 범위 blocks.powerrange = 전력 범위
blocks.poweruse = 전력 사용 blocks.poweruse = 전력 사용
blocks.powerdamage = 전력/데미지 blocks.powerdamage = 전력/데미지
blocks.inputitemcapacity = 입력 아이템 용량
blocks.outputitemcapacity = 출력 아이템 용량
blocks.itemcapacity = 저장 용량 blocks.itemcapacity = 저장 용량
blocks.basepowergeneration = 전력 생성 blocks.basepowergeneration = 전력 생성
blocks.powertransferspeed = 전력 전송량 blocks.productiontime = 제작 시간
blocks.craftspeed = 생산 속도 blocks.repairtime = 전체 블록 수리시간
blocks.inputliquid = 사용되는 액체 blocks.speedincrease = 속도 증가
blocks.inputliquidaux = 보조 액체 blocks.range = 사거리
blocks.inputitem = 사용되는 아이템
blocks.inputitems = 사용되는 아이템들
blocks.outputitem = 출력 아이템
blocks.drilltier = 드릴 blocks.drilltier = 드릴
blocks.drillspeed = 기본 드릴 속도 blocks.drillspeed = 기본 드릴 속도
blocks.boosteffect = 가속 효과
blocks.maxunits = 최대 활성유닛 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.health = 체력
blocks.heat = 발열
blocks.power = 전력
blocks.progress = 건설 진행
blocks.spawned = 유닛: {0}/{1}
blocks.power.satisfaction = 전력 만족도
blocks.inaccuracy = 오차각 blocks.inaccuracy = 오차각
blocks.shots = 발포 횟수 blocks.shots = 발포 횟수
blocks.reload = 재장전 blocks.reload = 재장전
blocks.inputfuel = 연료
blocks.fuelburntime = 연료 연소 시간
blocks.inputcapacity = 입력 용량
blocks.outputcapacity = 출력 용량
blocks.ammo = 탄약 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.blocks = 블록
unit.powersecond = 전력/초 unit.powersecond = 전력/초
unit.liquidsecond = 액체/초 unit.liquidsecond = 액체/초
@@ -398,6 +405,9 @@ unit.liquidunits = 액체
unit.powerunits = 전력 unit.powerunits = 전력
unit.degrees = unit.degrees =
unit.seconds = unit.seconds =
unit.persecond = /초
unit.timesspeed = x 배
unit.percent = %
unit.items = 아이템 unit.items = 아이템
category.general = 일반 category.general = 일반
category.power = 전력 category.power = 전력
@@ -406,15 +416,17 @@ category.items = 아이템
category.crafting = 제작 category.crafting = 제작
category.shooting = 사격 category.shooting = 사격
category.optional = 보조 아이템 category.optional = 보조 아이템
setting.shadows.name = Shadows setting.landscape.name = 가로화면으로 고정
setting.shadows.name = 그림자
setting.animatedwater.name = 움직이는 물 setting.animatedwater.name = 움직이는 물
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.animatedshields.name = 움직이는 보호막
setting.antialias.name = 안티 에일리어싱[LIGHT_GRAY] (재시작 필요)[]
setting.indicators.name = 아군/적 인디게이터 표시 setting.indicators.name = 아군/적 인디게이터 표시
setting.autotarget.name = 자동 조준 setting.autotarget.name = 자동 조준
setting.fpscap.name = 최대 FPS setting.fpscap.name = 최대 FPS
setting.fpscap.none = 없음 setting.fpscap.none = 없음
setting.fpscap.text = FPS setting.fpscap.text = {0}FPS
setting.swapdiagonal.name = Always Diagonal Placement setting.swapdiagonal.name = 항상 대각선 설치
setting.difficulty.training = 훈련 setting.difficulty.training = 훈련
setting.difficulty.easy = 쉬움 setting.difficulty.easy = 쉬움
setting.difficulty.normal = 보통 setting.difficulty.normal = 보통
@@ -427,10 +439,11 @@ setting.sensitivity.name = 컨트롤러 감도
setting.saveinterval.name = 자동저장 간격 setting.saveinterval.name = 자동저장 간격
setting.seconds = setting.seconds =
setting.fullscreen.name = 전체 화면 setting.fullscreen.name = 전체 화면
setting.borderless.name = Borderless Window setting.borderless.name = 테두리 없는 창모드
setting.fps.name = FPS 표시 setting.fps.name = FPS 표시
setting.vsync.name = VSync 활성화 setting.vsync.name = VSync 활성화
setting.lasers.name = 전력 노드 레이저 표시 setting.lasers.name = 전력 노드 레이저 표시
setting.pixelate.name = 픽셀화 [LIGHT_GRAY](게임 성능이 감소할 수 있습니다)
setting.minimap.name = 미니맵 보기 setting.minimap.name = 미니맵 보기
setting.musicvol.name = 음악 크기 setting.musicvol.name = 음악 크기
setting.mutemusic.name = 음소거 setting.mutemusic.name = 음소거
@@ -452,7 +465,7 @@ keybind.screenshot.name = 맵 스크린샷
keybind.move_x.name = 오른쪽/왼쪽 이동 keybind.move_x.name = 오른쪽/왼쪽 이동
keybind.move_y.name = 위 / 아래 중간 keybind.move_y.name = 위 / 아래 중간
keybind.select.name = 선택 keybind.select.name = 선택
keybind.diagonal_placement.name = Diagonal Placement keybind.diagonal_placement.name = 대각선 설치
keybind.pick.name = 블록 선택 keybind.pick.name = 블록 선택
keybind.break_block.name = 블록 파괴 keybind.break_block.name = 블록 파괴
keybind.deselect.name = 선택해제 keybind.deselect.name = 선택해제
@@ -483,6 +496,23 @@ mode.pvp.name = PvP
mode.pvp.description = 실제 플레이어와 PvP를 합니다. mode.pvp.description = 실제 플레이어와 PvP를 합니다.
mode.attack.name = 공격 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.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.item.name = 아이템
content.liquid.name = 액체 content.liquid.name = 액체
content.unit.name = 유닛 content.unit.name = 유닛
@@ -525,7 +555,7 @@ liquid.oil.name = 석유
liquid.cryofluid.name = 냉각유체 liquid.cryofluid.name = 냉각유체
mech.alpha-mech.name = 알파 mech.alpha-mech.name = 알파
mech.alpha-mech.weapon = 중무장 소총 mech.alpha-mech.weapon = 중무장 소총
mech.alpha-mech.ability = 없음 mech.alpha-mech.ability = 회복
mech.alpha-mech.description = 표준 기체.\n적절한 속도와 공격력을 갖추고 있습니다. mech.alpha-mech.description = 표준 기체.\n적절한 속도와 공격력을 갖추고 있습니다.
mech.delta-mech.name = 델타 mech.delta-mech.name = 델타
mech.delta-mech.weapon = 전격 생산기 mech.delta-mech.weapon = 전격 생산기
@@ -560,19 +590,21 @@ unit.speed = [LIGHT_GRAY]속도: {0}
mech.weapon = [LIGHT_GRAY]무기: {0} mech.weapon = [LIGHT_GRAY]무기: {0}
mech.health = [LIGHT_GRAY]체력: {0} mech.health = [LIGHT_GRAY]체력: {0}
mech.itemcapacity = [LIGHT_GRAY]아이템 수용 용량: {0} mech.itemcapacity = [LIGHT_GRAY]아이템 수용 용량: {0}
mech.minespeed = [LIGHT_GRAY]채광 속도: {0} mech.minespeed = [LIGHT_GRAY]채광 속도: {0}%
mech.minepower = [LIGHT_GRAY]채광 레벨: {0} mech.minepower = [LIGHT_GRAY]채광 레벨: {0}
mech.ability = [LIGHT_GRAY]능력: {0} mech.ability = [LIGHT_GRAY]능력: {0}
mech.buildspeed = [LIGHT_GRAY]건설 속도: {0}%
liquid.heatcapacity = [LIGHT_GRAY]발열 용량: {0} liquid.heatcapacity = [LIGHT_GRAY]발열 용량: {0}
liquid.viscosity = [LIGHT_GRAY]점도: {0} liquid.viscosity = [LIGHT_GRAY]점도: {0}
liquid.temperature = [LIGHT_GRAY]온도: {0} liquid.temperature = [LIGHT_GRAY]온도: {0}
block.grass.name = 잔디 block.grass.name = 잔디
block.salt.name = 소금 block.salt.name = 소금
block.sandrocks.name = 모래 바위 block.sandrocks.name = 모래 바위
block.spore-pine.name = 포자 소나무 block.spore-pine.name = 포자 소나무
block.sporerocks.name = 포자 바위 block.sporerocks.name = 포자 바위
block.rock.name = 바위 block.rock.name = 바위
block.snowrock.name = Snow Rock block.snowrock.name = 눈바위
block.shale.name = 이판암 block.shale.name = 이판암
block.shale-boulder.name = 둥근 이판암 block.shale-boulder.name = 둥근 이판암
block.moss.name = 이끼 block.moss.name = 이끼
@@ -589,22 +621,22 @@ block.graphite-press.name = 흑연 압축기
block.multi-press.name = 다중 압축기 block.multi-press.name = 다중 압축기
block.constructing = {0} [LIGHT_GRAY](만드는중) block.constructing = {0} [LIGHT_GRAY](만드는중)
block.spawn.name = 적 스폰지점 block.spawn.name = 적 스폰지점
block.core-shard.name = 코어: 공유 block.core-shard.name = 코어-공유
block.core-foundation.name = 코어: 기초 block.core-foundation.name = 코어-기초
block.core-nucleus.name = 코어: block.core-nucleus.name = 코어-
block.deepwater.name = 깊은물 block.deepwater.name = 깊은물
block.water.name = block.water.name =
block.tainted-water.name = Tainted Water block.tainted-water.name = 도색된 물
block.darksand-tainted-water.name = Dark Sand Tainted Water block.darksand-tainted-water.name = 검은 모래로 도색된 물
block.tar.name = 타르 block.tar.name = 타르
block.stone.name = block.stone.name =
block.sand.name = 모래 block.sand.name = 모래
block.darksand.name = Dark Sand block.darksand.name = 검은 모래
block.ice.name = 얼음 block.ice.name = 얼음
block.snow.name = block.snow.name =
block.craters.name = 크레이터 block.craters.name = 크레이터
block.sand-water.name = 젖은모래 block.sand-water.name = 젖은모래
block.darksand-water.name = Dark Sand Water block.darksand-water.name = 검은모래물
block.char.name = block.char.name =
block.holostone.name = 홀로스톤 block.holostone.name = 홀로스톤
block.ice-snow.name = 얼음눈 block.ice-snow.name = 얼음눈
@@ -636,8 +668,8 @@ block.thorium-wall-large.name = 대형 토륨벽
block.door.name = block.door.name =
block.door-large.name = 대형문 block.door-large.name = 대형문
block.duo.name = 듀오 block.duo.name = 듀오
block.scorch.name = Scorch block.scorch.name = 스코어치
block.scatter.name = Scatter block.scatter.name = 스캐터
block.hail.name = 헤일 block.hail.name = 헤일
block.lancer.name = 랜서 block.lancer.name = 랜서
block.conveyor.name = 컨베이어 block.conveyor.name = 컨베이어
@@ -665,7 +697,7 @@ block.battery-large.name = 대형 배터리
block.combustion-generator.name = 화력 발전기 block.combustion-generator.name = 화력 발전기
block.turbine-generator.name = 터빈 발전기 block.turbine-generator.name = 터빈 발전기
block.differential-generator.name = 차동 발전기 block.differential-generator.name = 차동 발전기
block.impact-reactor.name = 충격 반응기 block.impact-reactor.name = 핵융합로
block.mechanical-drill.name = 기계 드릴 block.mechanical-drill.name = 기계 드릴
block.pneumatic-drill.name = 강철 드릴 block.pneumatic-drill.name = 강철 드릴
block.laser-drill.name = 레이저 드릴 block.laser-drill.name = 레이저 드릴
@@ -722,6 +754,7 @@ block.blast-drill.name = 압축 공기분사 드릴
block.thermal-pump.name = 화력 펌프 block.thermal-pump.name = 화력 펌프
block.thermal-generator.name = 열발전기 block.thermal-generator.name = 열발전기
block.alloy-smelter.name = 서지 합금 제련소 block.alloy-smelter.name = 서지 합금 제련소
block.mender.name = 멘더
block.mend-projector.name = 수리 프로젝터 block.mend-projector.name = 수리 프로젝터
block.surge-wall.name = 서지 합금벽 block.surge-wall.name = 서지 합금벽
block.surge-wall-large.name = 큰 서지 합금벽 block.surge-wall-large.name = 큰 서지 합금벽
@@ -737,6 +770,7 @@ block.meltdown.name = 멜트다운
block.container.name = 컨테이너 block.container.name = 컨테이너
block.launch-pad.name = 발사대 block.launch-pad.name = 발사대
block.launch-pad.description = 출격할 필요 없이 아이템을 수송시킵시다. 미완성. block.launch-pad.description = 출격할 필요 없이 아이템을 수송시킵시다. 미완성.
block.launch-pad-large.name = 큰 출격 패드
team.blue.name = 블루팀 team.blue.name = 블루팀
team.red.name = 레드팀 team.red.name = 레드팀
team.orange.name = 오렌지팀 team.orange.name = 오렌지팀
@@ -821,7 +855,7 @@ block.silicon-smelter.description = 고순도 석탄으로 모래를 줄여 실
block.plastanium-compressor.description = 석유와 티타늄으로 플라스타늄을 생산합니다. block.plastanium-compressor.description = 석유와 티타늄으로 플라스타늄을 생산합니다.
block.phase-weaver.description = 방사능 토륨과 많은 량의 모래에서 상직물을 생산합니다. block.phase-weaver.description = 방사능 토륨과 많은 량의 모래에서 상직물을 생산합니다.
block.alloy-smelter.description = 티타늄, 납, 실리콘, 구리로부터 서지 합금을 생산합니다. block.alloy-smelter.description = 티타늄, 납, 실리콘, 구리로부터 서지 합금을 생산합니다.
block.pulverizer.description = 모래로 을 부숩니다. 천연 모래가 부족할 때 유용합니다. block.pulverizer.description = 모래로 을 부숩니다. 천연 모래가 부족할 때 유용합니다.
block.pyratite-mixer.description = 석탄, 납, 모래를 가연성이 높은 피라타이트로 만듭니다. block.pyratite-mixer.description = 석탄, 납, 모래를 가연성이 높은 피라타이트로 만듭니다.
block.blast-mixer.description = 기름을 사용하여 피라타이트를 인화성은 떨어지지만 폭발성은 높은 폭발성 화합물로 변환시킵니다. block.blast-mixer.description = 기름을 사용하여 피라타이트를 인화성은 떨어지지만 폭발성은 높은 폭발성 화합물로 변환시킵니다.
block.cryofluidmixer.description = 물과 티타늄을 냉각에 훨씬 더 효과적인 냉동액으로 결합시킵니다. block.cryofluidmixer.description = 물과 티타늄을 냉각에 훨씬 더 효과적인 냉동액으로 결합시킵니다.
@@ -841,7 +875,7 @@ block.solar-panel-large.description = 일반 태양 전지판보다 훨씬 나
block.thorium-reactor.description = 고방사능 토륨으로부터 막대한 양의 전력을 발생시킵니다. 지속적인 냉각이 필요하며 냉각제의 양이 부족하면 크게 폭발합니다. 전력 출력은 최대 용량에서 기본 전력을 발생시키는 완전성에 따라 결정됩니다. block.thorium-reactor.description = 고방사능 토륨으로부터 막대한 양의 전력을 발생시킵니다. 지속적인 냉각이 필요하며 냉각제의 양이 부족하면 크게 폭발합니다. 전력 출력은 최대 용량에서 기본 전력을 발생시키는 완전성에 따라 결정됩니다.
block.rtg-generator.description = 냉각은 필요 없지만 토륨 원자로에 비해 전력을 적게 공급하는 방사성 동위원소 열전 발생기. block.rtg-generator.description = 냉각은 필요 없지만 토륨 원자로에 비해 전력을 적게 공급하는 방사성 동위원소 열전 발생기.
block.unloader.description = 컨테이너, 금고 또는 코어에서 인접한 블록으로 아이템을 출하합니다. 출하시킬 아이템의 종류는 언로더를 눌러 지정할 수 있습니다. block.unloader.description = 컨테이너, 금고 또는 코어에서 인접한 블록으로 아이템을 출하합니다. 출하시킬 아이템의 종류는 언로더를 눌러 지정할 수 있습니다.
block.container.description = 각종 소량의 자원을 저장할 수 있습니다.[LIGHT_GRAY언로더[]를 사용하여 컨테이너에서 물건을 회수할 수 있습니다. block.container.description = 각종 소량의 자원을 저장할 수 있습니다.[LIGHT_GRAY]언로더[]를 사용하여 컨테이너에서 물건을 회수할 수 있습니다.
block.vault.description = 각종 대량의 자원을 저장할 수 있습니다.[LIGHT_GRAY]언로더[]를 사용하여 금고에서 물건을 회수할 수 있습니다. block.vault.description = 각종 대량의 자원을 저장할 수 있습니다.[LIGHT_GRAY]언로더[]를 사용하여 금고에서 물건을 회수할 수 있습니다.
block.mechanical-drill.description = 싸구려 드릴. 적절한 타일 위에 놓였을때 매우 느린 속도로 계속 출력합니다. block.mechanical-drill.description = 싸구려 드릴. 적절한 타일 위에 놓였을때 매우 느린 속도로 계속 출력합니다.
block.pneumatic-drill.description = 기압을 이용하여 보다 빠르고 단단한 물질을 채광할 수 있는 향상된 드릴. block.pneumatic-drill.description = 기압을 이용하여 보다 빠르고 단단한 물질을 채광할 수 있는 향상된 드릴.
@@ -862,6 +896,7 @@ block.wraith-factory.description = 빠른 뺑소니 요격기 유닛을 생산
block.ghoul-factory.description = 중탄두 폭격기를 생산합니다. block.ghoul-factory.description = 중탄두 폭격기를 생산합니다.
block.dagger-factory.description = 기본 지상 유닛을 생산합니다. block.dagger-factory.description = 기본 지상 유닛을 생산합니다.
block.titan-factory.description = 첨단 장갑 지상부대를 생산합니다. block.titan-factory.description = 첨단 장갑 지상부대를 생산합니다.
block.fortress-factory.description = 중대포 지상부대를 생산합니다. block.fortress-factory.description = 중대포 지상부대를 생산합니다.
block.revenant-factory.description = 중량의 레이저 포대를 가진 공중부대를 생산합니다. block.revenant-factory.description = 중량의 레이저 포대를 가진 공중부대를 생산합니다.
block.repair-point.description = 주변에서 가장 가까운 손상된 유닛을 지속적으로 치료합니다. block.repair-point.description = 주변에서 가장 가까운 손상된 유닛을 지속적으로 치료합니다.

View File

@@ -40,6 +40,7 @@ addplayers = Add/Remove Players
customgame = Custom Game customgame = Custom Game
newgame = New Game newgame = New Game
none = <none> none = <none>
minimap = Minimap
close = Close close = Close
quit = Quit quit = Quit
maps = Maps 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.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 = 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] red[] cores to this map in the editor.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Error loading map: corrupted or invalid map file. map.invalid = Error loading map: corrupted or invalid map file.
editor.brush = Brush editor.brush = Brush
editor.openin = Open In Editor 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. abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked locked = Locked
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0} resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best Wave: {0} bestwave = [LIGHT_GRAY]Best Wave: {0}
launch = < LAUNCH > launch = < LAUNCH >
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}. configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -333,63 +336,59 @@ no = No
info.title = Info info.title = Info
error.title = [crimson]An error has occured error.title = [crimson]An error has occured
error.crashtitle = An error has occured error.crashtitle = An error has occured
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = Block Info block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Power Capacity blocks.powercapacity = Power Capacity
blocks.powershot = Power/Shot blocks.powershot = Power/Shot
blocks.targetsair = Targets Air blocks.targetsair = Targets Air
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Range blocks.shootrange = Range
blocks.size = Size blocks.size = Size
blocks.liquidcapacity = Liquid Capacity blocks.liquidcapacity = Liquid Capacity
blocks.maxitemssecond = Max Items
blocks.powerrange = Power Range blocks.powerrange = Power Range
blocks.poweruse = Power Use blocks.poweruse = Power Use
blocks.powerdamage = Power/Damage blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Input Item Capacity
blocks.outputitemcapacity = Output Item Capacity
blocks.itemcapacity = Item Capacity blocks.itemcapacity = Item Capacity
blocks.basepowergeneration = Base Power Generation blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Power Transfer blocks.productiontime = Production Time
blocks.craftspeed = Production Speed blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Input Liquid blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Aux Liquid blocks.range = Range
blocks.inputitem = Input Item
blocks.inputitems = Input Items
blocks.outputitem = Output Item
blocks.drilltier = Drillables blocks.drilltier = Drillables
blocks.drillspeed = Base Drill Speed blocks.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = Inaccuracy
blocks.shots = Shots blocks.shots = Shots
blocks.reload = Shots/Second blocks.reload = Shots/Second
blocks.inputfuel = Fuel
blocks.fuelburntime = Fuel Burn Time
blocks.inputcapacity = Input capacity
blocks.outputcapacity = Output capacity
blocks.ammo = Ammo 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.blocks = blocks
unit.powersecond = power units/second unit.powersecond = power units/second
unit.liquidsecond = liquid units/second unit.liquidsecond = liquid units/second
@@ -398,6 +397,9 @@ unit.liquidunits = liquid units
unit.powerunits = power units unit.powerunits = power units
unit.degrees = degrees unit.degrees = degrees
unit.seconds = seconds unit.seconds = seconds
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = items unit.items = items
category.general = General category.general = General
category.power = Power category.power = Power
@@ -406,8 +408,10 @@ category.items = Items
category.crafting = Crafting category.crafting = Crafting
category.shooting = Shooting category.shooting = Shooting
category.optional = Optional Enhancements category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Show FPS setting.fps.name = Show FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Show Power Lasers setting.lasers.name = Show Power Lasers
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Show Minimap setting.minimap.name = Show Minimap
setting.musicvol.name = Music Volume setting.musicvol.name = Music Volume
setting.mutemusic.name = Mute Music setting.mutemusic.name = Mute Music
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = Fight against other players locally. mode.pvp.description = Fight against other players locally.
mode.attack.name = Attack mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Items
content.liquid.name = Liquids content.liquid.name = Liquids
content.unit.name = Units content.unit.name = Units
@@ -563,6 +583,7 @@ 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.minepower = [LIGHT_GRAY]Mining Power: {0}
mech.ability = [LIGHT_GRAY]Ability: {0} mech.ability = [LIGHT_GRAY]Ability: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0} liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosity: {0} liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
liquid.temperature = [LIGHT_GRAY]Temperature: {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-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smelter block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
block.mend-projector.name = Mend Projector block.mend-projector.name = Mend Projector
block.surge-wall.name = Surge Wall block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall block.surge-wall-large.name = Large Surge Wall
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container block.container.name = Container
block.launch-pad.name = Launch Pad 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.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.blue.name = blue
team.red.name = red team.red.name = red
team.orange.name = orange team.orange.name = orange

View File

@@ -40,6 +40,7 @@ addplayers = Dodaj/Usuń graczy
customgame = Własna Gra customgame = Własna Gra
newgame = Nowa Gra newgame = Nowa Gra
none = <żadne> none = <żadne>
minimap = Minimap
close = Zamknij close = Zamknij
quit = Wyjdź quit = Wyjdź
maps = Mapy 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.random = [accent]Losowa mapa
map.nospawn = Ta mapa nie zawiera żadnego rdzenia! Musisz dodać [ROYAL]niebieski[] rdzeń do tej mapy. 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.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. map.invalid = Error podczas ładowania mapy: uszkodzony lub niepoprawny plik mapy.
editor.brush = Pędzel editor.brush = Pędzel
editor.openin = Otwórz w edytorze 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. abandon.text = Ta strefa i wszystkie jej surowce będą przejęte przez przeciwników.
locked = Zablokowane locked = Zablokowane
complete = [LIGHT_GRAY]Ukończone: complete = [LIGHT_GRAY]Ukończone:
zone.requirement = Wave {0} in zone {1}
resume = Kontynuuj Strefę:\n[LIGHT_GRAY]{0} resume = Kontynuuj Strefę:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Najwyższa fala: {0} bestwave = [LIGHT_GRAY]Najwyższa fala: {0}
launch = Wystrzel launch = Wystrzel
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY] Strefa {0} odblokowana! 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -333,63 +336,59 @@ no = Nie ma mowy!
info.title = [accent]Informacje info.title = [accent]Informacje
error.title = [crimson]Wystąpił błąd error.title = [crimson]Wystąpił błąd
error.crashtitle = Wystąpił błąd error.crashtitle = Wystąpił błąd
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = Informacje o bloku block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Pojemność mocy blocks.powercapacity = Pojemność mocy
blocks.powershot = moc/strzał blocks.powershot = moc/strzał
blocks.targetsair = Może namierzać wrogów powietrznych blocks.targetsair = Może namierzać wrogów powietrznych
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Zasięg blocks.shootrange = Zasięg
blocks.size = Rozmiar blocks.size = Rozmiar
blocks.liquidcapacity = Pojemność cieczy blocks.liquidcapacity = Pojemność cieczy
blocks.maxitemssecond = Maksymalna liczba przedmiotów/sekundę
blocks.powerrange = Zakres mocy blocks.powerrange = Zakres mocy
blocks.poweruse = Zużycie prądu blocks.poweruse = Zużycie prądu
blocks.powerdamage = Moc/Zniszczenia blocks.powerdamage = Moc/Zniszczenia
blocks.inputitemcapacity = Pojemność materiałów
blocks.outputitemcapacity = Pojemność produktów
blocks.itemcapacity = Pojemność przedmiotów blocks.itemcapacity = Pojemność przedmiotów
blocks.basepowergeneration = Base Power Generation blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Szybość przesyłu prądu blocks.productiontime = Production Time
blocks.craftspeed = Szybkość produkcji blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Potrzebna ciecz blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Płyny do produkcji blocks.range = Range
blocks.inputitem = Potrzebne przedmioty
blocks.inputitems = Materiały do produkcji
blocks.outputitem = Produkty
blocks.drilltier = Co może wykopać blocks.drilltier = Co może wykopać
blocks.drillspeed = Postawowa szybkość kopania blocks.drillspeed = Postawowa szybkość kopania
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = Niedokładność
blocks.shots = Strzały blocks.shots = Strzały
blocks.reload = Przeładowanie 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 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.blocks = Klocki
unit.powersecond = jednostek prądu na sekundę unit.powersecond = jednostek prądu na sekundę
unit.liquidsecond = jednostek płynów na sekundę unit.liquidsecond = jednostek płynów na sekundę
@@ -398,6 +397,9 @@ unit.liquidunits = jednostek płynów
unit.powerunits = jednostek prądu unit.powerunits = jednostek prądu
unit.degrees = stopnie unit.degrees = stopnie
unit.seconds = sekundy unit.seconds = sekundy
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = Przedmioty unit.items = Przedmioty
category.general = Główne category.general = Główne
category.power = Prąd category.power = Prąd
@@ -406,8 +408,10 @@ category.items = Przedmioty
category.crafting = Przetwórstwo category.crafting = Przetwórstwo
category.shooting = Strzelanie category.shooting = Strzelanie
category.optional = Ulepszenia Nieobowiąskowe category.optional = Ulepszenia Nieobowiąskowe
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Wskaźniki Przyjaciół setting.indicators.name = Wskaźniki Przyjaciół
setting.autotarget.name = Automatyczne Celowanie setting.autotarget.name = Automatyczne Celowanie
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Widoczny licznik FPS setting.fps.name = Widoczny licznik FPS
setting.vsync.name = Synchronizacja pionowa setting.vsync.name = Synchronizacja pionowa
setting.lasers.name = Pokaż lasery zasilające setting.lasers.name = Pokaż lasery zasilające
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Pokaż Minimapę setting.minimap.name = Pokaż Minimapę
setting.musicvol.name = Głośność muzyki setting.musicvol.name = Głośność muzyki
setting.mutemusic.name = Wycisz muzykę setting.mutemusic.name = Wycisz muzykę
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = Walcz przeciwko innym graczom. mode.pvp.description = Walcz przeciwko innym graczom.
mode.attack.name = Atak mode.attack.name = Atak
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Przedmioty
content.liquid.name = Płyny content.liquid.name = Płyny
content.unit.name = Jednostki 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.minespeed = [LIGHT_GRAY]Prędkość kopania: {0}
mech.minepower = [LIGHT_GRAY]Moc kopania: {0} mech.minepower = [LIGHT_GRAY]Moc kopania: {0}
mech.ability = [LIGHT_GRAY]Umiejętność: {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.heatcapacity = [LIGHT_GRAY]Wytrzymałość na przegrzewanie: {0}
liquid.viscosity = [LIGHT_GRAY]Lepkość: {0} liquid.viscosity = [LIGHT_GRAY]Lepkość: {0}
liquid.temperature = [LIGHT_GRAY]Temperatura: {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-pump.name = Pompa Termalna
block.thermal-generator.name = Generator Termalny block.thermal-generator.name = Generator Termalny
block.alloy-smelter.name = Piec Mieszający block.alloy-smelter.name = Piec Mieszający
block.mender.name = Mender
block.mend-projector.name = Projektor Napraw block.mend-projector.name = Projektor Napraw
block.surge-wall.name = Ściana Stopu Energetycznego block.surge-wall.name = Ściana Stopu Energetycznego
block.surge-wall-large.name = Duża Ś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.container.name = Kontener
block.launch-pad.name = Skocznia block.launch-pad.name = Skocznia
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished. 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.blue.name = niebieski
team.red.name = czerwony team.red.name = czerwony
team.orange.name = pomarańczowy team.orange.name = pomarańczowy

View File

@@ -40,6 +40,7 @@ addplayers = Adicionar/Remover Jogador
customgame = Jogo Customizado customgame = Jogo Customizado
newgame = Novo Jogo newgame = Novo Jogo
none = <none> none = <none>
minimap = Minimap
close = Fechar close = Fechar
quit = Sair quit = Sair
maps = Mapas 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.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 = 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.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. map.invalid = Erro ao carregar o mapa: Arquivo de mapa invalido ou corrupto.
editor.brush = Pincel editor.brush = Pincel
editor.openin = Abrir no Editor 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. abandon.text = Esta zona e todos os seus recursos serão perdidos para o enimigo.
locked = Trancado locked = Trancado
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resumir Zona:\n[LIGHT_GRAY]{0} resume = Resumir Zona:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Melhor: {0} bestwave = [LIGHT_GRAY]Melhor: {0}
launch = Lançar launch = Lançar
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -333,63 +336,59 @@ no = Não
info.title = [accent]Informação info.title = [accent]Informação
error.title = [crimson]Ocorreu um Erro. error.title = [crimson]Ocorreu um Erro.
error.crashtitle = Ocorreu um Erro error.crashtitle = Ocorreu um Erro
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = Informação do Bloco block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Capacidade de Energia blocks.powercapacity = Capacidade de Energia
blocks.powershot = Energia/tiro blocks.powershot = Energia/tiro
blocks.targetsair = Mirar no ar blocks.targetsair = Mirar no ar
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Alcance blocks.shootrange = Alcance
blocks.size = Tamanho blocks.size = Tamanho
blocks.liquidcapacity = Capacidade de Líquido blocks.liquidcapacity = Capacidade de Líquido
blocks.maxitemssecond = Máximo de itens/segundo
blocks.powerrange = Alcance da Energia blocks.powerrange = Alcance da Energia
blocks.poweruse = Uso de energia blocks.poweruse = Uso de energia
blocks.powerdamage = Dano/Poder blocks.powerdamage = Dano/Poder
blocks.inputitemcapacity = Configurar capacidade de itens
blocks.outputitemcapacity = Configurar capacidade de itens
blocks.itemcapacity = Capacidade de Itens blocks.itemcapacity = Capacidade de Itens
blocks.basepowergeneration = Geração de poder base blocks.basepowergeneration = Geração de poder base
blocks.powertransferspeed = Transferência de energia blocks.productiontime = Production Time
blocks.craftspeed = Velocidade de produção blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Líquido de entrada blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Líquido auxiliar blocks.range = Range
blocks.inputitem = Item de entrada
blocks.inputitems = Itens de entrada
blocks.outputitem = Itens de saida
blocks.drilltier = Furaveis blocks.drilltier = Furaveis
blocks.drillspeed = Velocidade da furadeira base blocks.drillspeed = Velocidade da furadeira base
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = Imprecisão
blocks.shots = Tiros blocks.shots = Tiros
blocks.reload = Recarregar 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 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.blocks = blocos
unit.powersecond = Unidades de energia/segundo unit.powersecond = Unidades de energia/segundo
unit.liquidsecond = Unidades de líquido/segundo unit.liquidsecond = Unidades de líquido/segundo
@@ -398,6 +397,9 @@ unit.liquidunits = Unidades de liquido
unit.powerunits = Unidades de energia unit.powerunits = Unidades de energia
unit.degrees = Graus unit.degrees = Graus
unit.seconds = segundos unit.seconds = segundos
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = itens unit.items = itens
category.general = Geral category.general = Geral
category.power = Poder category.power = Poder
@@ -406,8 +408,10 @@ category.items = Itens
category.crafting = Construindo category.crafting = Construindo
category.shooting = Atirando category.shooting = Atirando
category.optional = Melhoras opcionais category.optional = Melhoras opcionais
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators setting.indicators.name = Ally Indicators
setting.autotarget.name = Alvo automatico setting.autotarget.name = Alvo automatico
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Mostrar FPS setting.fps.name = Mostrar FPS
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Mostrar lasers setting.lasers.name = Mostrar lasers
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Mostrar minimapa setting.minimap.name = Mostrar minimapa
setting.musicvol.name = Volume da Música setting.musicvol.name = Volume da Música
setting.mutemusic.name = Desligar 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.pvp.description = Lutar contra outros jogadores locais.
mode.attack.name = Ataque mode.attack.name = Ataque
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Itens
content.liquid.name = Liquidos content.liquid.name = Liquidos
content.unit.name = Units 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.minespeed = [LIGHT_GRAY]Velocidade de mineração: {0}
mech.minepower = [LIGHT_GRAY]Poder de mineração: {0} mech.minepower = [LIGHT_GRAY]Poder de mineração: {0}
mech.ability = [LIGHT_GRAY]Habilidade: {0} mech.ability = [LIGHT_GRAY]Habilidade: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacidade de aquecimento: {0} liquid.heatcapacity = [LIGHT_GRAY]Capacidade de aquecimento: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosidade: {0} liquid.viscosity = [LIGHT_GRAY]Viscosidade: {0}
liquid.temperature = [LIGHT_GRAY]Temperatura: {0} liquid.temperature = [LIGHT_GRAY]Temperatura: {0}
@@ -722,6 +743,7 @@ block.blast-drill.name = Mineradora de Explosão
block.thermal-pump.name = Cano termico block.thermal-pump.name = Cano termico
block.thermal-generator.name = Gerador Térmico block.thermal-generator.name = Gerador Térmico
block.alloy-smelter.name = Fundidora de Liga block.alloy-smelter.name = Fundidora de Liga
block.mender.name = Mender
block.mend-projector.name = Projetor Mend block.mend-projector.name = Projetor Mend
block.surge-wall.name = Parede de Surge block.surge-wall.name = Parede de Surge
block.surge-wall-large.name = Parede de Surge grande block.surge-wall-large.name = Parede de Surge grande
@@ -737,6 +759,7 @@ block.meltdown.name = Derreter
block.container.name = Container block.container.name = Container
block.launch-pad.name = Launch Pad 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.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.blue.name = Azul
team.red.name = Vermelho team.red.name = Vermelho
team.orange.name = Laranja team.orange.name = Laranja

View File

@@ -40,6 +40,7 @@ addplayers = Доб/удалить игроков
customgame = Пользовательская игра customgame = Пользовательская игра
newgame = Новая игра newgame = Новая игра
none = <нет> none = <нет>
minimap = Minimap
close = Закрыть close = Закрыть
quit = Выход quit = Выход
maps = Карты maps = Карты
@@ -182,6 +183,7 @@ map.delete.confirm = Вы действительно хотите удалить
map.random = [accent]Случайная карта map.random = [accent]Случайная карта
map.nospawn = Эта карта не имеет ядер, в которых игрок может появиться! Добавьте[ROYAL] синее[] ядро на эту карту в редакторе карт. map.nospawn = Эта карта не имеет ядер, в которых игрок может появиться! Добавьте[ROYAL] синее[] ядро на эту карту в редакторе карт.
map.nospawn.pvp = У этой карты нет вражеских ядер, в которых игрок может появиться! Добавьте[SCARLET] красные[] ядра к этой карте в редакторе. map.nospawn.pvp = У этой карты нет вражеских ядер, в которых игрок может появиться! Добавьте[SCARLET] красные[] ядра к этой карте в редакторе.
map.nospawn.attack = У этой карты нету вражеских ядер! Добавьте [scarlet] красные[] ядра в эту карте в редакторе.
map.invalid = Ошибка загрузки карты: повреждённый или недопустимый файл карты. map.invalid = Ошибка загрузки карты: повреждённый или недопустимый файл карты.
editor.brush = Кисть editor.brush = Кисть
editor.openin = Открыть в редакторе editor.openin = Открыть в редакторе
@@ -283,6 +285,7 @@ abandon = Покинуть
abandon.text = Эта зона и все ресурсы будут потеряны. abandon.text = Эта зона и все ресурсы будут потеряны.
locked = Заблокировано locked = Заблокировано
complete = [LIGHT_GRAY]Завершено: complete = [LIGHT_GRAY]Завершено:
zone.requirement = Wave {0} in zone {1}
resume = Возобновить зону:\n[LIGHT_GRAY]{0} resume = Возобновить зону:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Наилучшая волна: {0} bestwave = [LIGHT_GRAY]Наилучшая волна: {0}
launch = < ЗАПУСК > launch = < ЗАПУСК >
@@ -294,7 +297,7 @@ uncover = Раскрыть
configure = Выгрузить конфигурацию configure = Выгрузить конфигурацию
configure.locked = [LIGHT_GRAY]Разблокировать настройки выгрузки:\nВолна {0}. configure.locked = [LIGHT_GRAY]Разблокировать настройки выгрузки:\nВолна {0}.
zone.unlocked = [LIGHT_GRAY]{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.config.complete = {0} волн достигнуто:\nВыгружаемая конфигурация разблокирована
zone.resources = Обнаруженные ресурсы: zone.resources = Обнаруженные ресурсы:
add = Добавить... add = Добавить...
@@ -333,63 +336,61 @@ no = Нет
info.title = Информация info.title = Информация
error.title = [crimson]Произошла ошибка error.title = [crimson]Произошла ошибка
error.crashtitle = Произошла ошибка error.crashtitle = Произошла ошибка
blocks.outputspeed = Скорость сверления: {0}/с blocks.input = Вход
blocks.efficiency = Эффективность: {0}% blocks.output = Выход
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Ускоритель
blocks.blockinfo = Информация о блоке block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Энергия: {0}
blocks.poweroutput = Выходная энергия: {0}
blocks.powercapacity = Вместимость энергии blocks.powercapacity = Вместимость энергии
blocks.powershot = Энергия/выстрел blocks.powershot = Энергия/выстрел
blocks.targetsair = Воздушные цели blocks.targetsair = Воздушные цели
blocks.targetsground = Наземные цели blocks.targetsground = Наземные цели
blocks.items = Предметы: {0}
blocks.itemsmoved = Скорость перемещения blocks.itemsmoved = Скорость перемещения
blocks.launchtime = Интервал запусков
blocks.shootrange = Радиус действия blocks.shootrange = Радиус действия
blocks.size = Размер blocks.size = Размер
blocks.liquidcapacity = Вместимость жидкости blocks.liquidcapacity = Вместимость жидкости
blocks.maxitemssecond = Макс. количество предметов/секунду
blocks.powerrange = Диапазон передачи энергии blocks.powerrange = Диапазон передачи энергии
blocks.poweruse = Потребляет энергии blocks.poweruse = Потребляет энергии
blocks.powerdamage = Энергия/урон blocks.powerdamage = Энергия/урон
blocks.inputitemcapacity = Вместимость входящих предметов
blocks.outputitemcapacity = Вместимость выходящих предметов
blocks.itemcapacity = Вместимость предметов blocks.itemcapacity = Вместимость предметов
blocks.basepowergeneration = Базовая генерация энергии blocks.basepowergeneration = Базовая генерация энергии
blocks.powertransferspeed = Скорость передачи энергии blocks.productiontime = Время производства
blocks.craftspeed = Скорость производства blocks.craftspeed = Скорость производства
blocks.repairtime = Время полной регенерации
blocks.speedincrease = Увеличение скорости
blocks.range = Радиус действия
blocks.inputliquid = Прием жидкости blocks.inputliquid = Прием жидкости
blocks.inputliquidaux = Вспом. жидкость
blocks.inputitem = Входящий предмет
blocks.inputitems = Входящие предметы
blocks.outputitem = Выходящий предмет
blocks.drilltier = Добывает blocks.drilltier = Добывает
blocks.drillspeed = Базовая скорость сверления blocks.drillspeed = Базовая скорость сверления
blocks.boosteffect = Ускоряющий эффект
blocks.maxunits = Максимальное количество активных единиц 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.health = Здоровье
blocks.heat = Температура
blocks.power = Энергия
blocks.progress = Строительство продолжается
blocks.spawned = Бой. ед.: {0}/{1}
blocks.power.satisfaction = Энергия
blocks.inaccuracy = Разброс blocks.inaccuracy = Разброс
blocks.shots = Выстрелы blocks.shots = Выстрелы
blocks.reload = Выстрелы/секунду blocks.reload = Выстрелы/секунду
blocks.inputfuel = Входящее топливо
blocks.fuelburntime = Время горения топлива
blocks.inputcapacity = Макс. вместимость входящих предметов
blocks.outputcapacity = Макс. вместимость выходящих предметов
blocks.ammo = Боеприпасы 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.blocks = блоки
unit.powersecond = единиц энергии/секунду unit.powersecond = единиц энергии/секунду
unit.liquidsecond = жидкостных единиц/секунду unit.liquidsecond = жидкостных единиц/секунду
@@ -398,6 +399,9 @@ unit.liquidunits = жидкостных единиц
unit.powerunits = энерг. единиц unit.powerunits = энерг. единиц
unit.degrees = град. unit.degrees = град.
unit.seconds = сек. unit.seconds = сек.
unit.persecond = /сек
unit.timesspeed = x скорость
unit.percent = %
unit.items = единиц unit.items = единиц
category.general = Основные category.general = Основные
category.power = Энергия category.power = Энергия
@@ -406,13 +410,16 @@ category.items = Предметы
category.crafting = Ввод/вывод category.crafting = Ввод/вывод
category.shooting = рельба category.shooting = рельба
category.optional = Дополнительные улучшения category.optional = Дополнительные улучшения
setting.shadows.name = Shadows setting.landscape.name = Сохранить ландшафт
setting.shadows.name = Тени
setting.animatedwater.name = Анимированная вода setting.animatedwater.name = Анимированная вода
setting.animatedshields.name = Анимированные щиты
setting.antialias.name = Сглаживание[LIGHT_GRAY] (требует перезапуска)[] setting.antialias.name = Сглаживание[LIGHT_GRAY] (требует перезапуска)[]
setting.indicators.name = Показывать в сторону союзников и врагов setting.indicators.name = Показывать в сторону союзников и врагов
setting.autotarget.name = Авто-стрельба setting.autotarget.name = Авто-стрельба
setting.fpscap.name = Макс. FPS setting.fpscap.name = Макс. FPS
setting.fpscap.none = Неограниченный setting.fpscap.none = Неограниченный
minimap = Мини-карта
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.swapdiagonal.name = Всегда Диагональное Размещение setting.swapdiagonal.name = Всегда Диагональное Размещение
setting.difficulty.training = обучение setting.difficulty.training = обучение
@@ -479,10 +486,25 @@ mode.sandbox.name = Песочница
mode.sandbox.description = Бесконечные ресурсы и нет таймера для волн, но можно самим вызвать волну. mode.sandbox.description = Бесконечные ресурсы и нет таймера для волн, но можно самим вызвать волну.
mode.freebuild.name = ободная\nстройка mode.freebuild.name = ободная\nстройка
mode.freebuild.description = Ограниченные ресурсы и нет таймера для волн. mode.freebuild.description = Ограниченные ресурсы и нет таймера для волн.
mode.pvp.name = Противо-\nстояние mode.pvp.name = PvP
mode.pvp.description = боритесь против других игроков. mode.pvp.description = боритесь против других игроков.
mode.attack.name = Атака mode.attack.name = Атака
mode.attack.description = Нет волн, цель - уничтожить базу противника. 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.item.name = Предметы
content.liquid.name = Жидкости content.liquid.name = Жидкости
content.unit.name = Боевые единицы content.unit.name = Боевые единицы
@@ -511,7 +533,7 @@ item.spore-pod.name = Споровой стручок
item.spore-pod.description = Используется для превращения в нефть, взрывчатые вещества и топливо. item.spore-pod.description = Используется для превращения в нефть, взрывчатые вещества и топливо.
item.sand.name = Песок item.sand.name = Песок
item.sand.description = Обычный материал, который широко используется при плавке как в сплаве, так и в виде шлака. item.sand.description = Обычный материал, который широко используется при плавке как в сплаве, так и в виде шлака.
item.blast-compound.name = Взрывоопасное соединение item.blast-compound.name = Взрывная смесь
item.blast-compound.description = Летучее соединение, используемое в бомбах и взрывчатых веществах. Также может гореть в качестве топлива, но не рекомендуется этого делать. item.blast-compound.description = Летучее соединение, используемое в бомбах и взрывчатых веществах. Также может гореть в качестве топлива, но не рекомендуется этого делать.
item.pyratite.name = Пиротит item.pyratite.name = Пиротит
item.pyratite.description = Очень огнеопасное вещество, используемое в зажигательном оружии. item.pyratite.description = Очень огнеопасное вещество, используемое в зажигательном оружии.
@@ -525,7 +547,7 @@ liquid.oil.name = Нефть
liquid.cryofluid.name = Криогенная жидкость liquid.cryofluid.name = Криогенная жидкость
mech.alpha-mech.name = Альфа mech.alpha-mech.name = Альфа
mech.alpha-mech.weapon = Тяжёлый пулемёт mech.alpha-mech.weapon = Тяжёлый пулемёт
mech.alpha-mech.ability = Нет mech.alpha-mech.ability = Регенерация
mech.alpha-mech.description = Стандартный мех для настольных устройств. Имеет приличную скорость и урон. mech.alpha-mech.description = Стандартный мех для настольных устройств. Имеет приличную скорость и урон.
mech.delta-mech.name = Дельта mech.delta-mech.name = Дельта
mech.delta-mech.weapon = Дуговой генератор mech.delta-mech.weapon = Дуговой генератор
@@ -560,9 +582,10 @@ unit.speed = [LIGHT_GRAY]Скорость: {0}
mech.weapon = [LIGHT_GRAY]Оружие: {0} mech.weapon = [LIGHT_GRAY]Оружие: {0}
mech.health = [LIGHT_GRAY]Здоровье: {0} mech.health = [LIGHT_GRAY]Здоровье: {0}
mech.itemcapacity = [LIGHT_GRAY]Вместимость предметов: {0} mech.itemcapacity = [LIGHT_GRAY]Вместимость предметов: {0}
mech.minespeed = [LIGHT_GRAY]Скорость добычи: {0} mech.minespeed = [LIGHT_GRAY]Скорость добычи: {0}%
mech.minepower = [LIGHT_GRAY]Мощность добычи: {0} mech.minepower = [LIGHT_GRAY]Мощность добычи: {0}
mech.ability = [LIGHT_GRAY]Способность: {0} mech.ability = [LIGHT_GRAY]Способность: {0}
mech.buildspeed = [LIGHT_GRAY]Скорость строительства: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Теплоёмкость: {0} liquid.heatcapacity = [LIGHT_GRAY]Теплоёмкость: {0}
liquid.viscosity = [LIGHT_GRAY]Вязкость: {0} liquid.viscosity = [LIGHT_GRAY]Вязкость: {0}
liquid.temperature = [LIGHT_GRAY]Температура: {0} liquid.temperature = [LIGHT_GRAY]Температура: {0}
@@ -669,7 +692,7 @@ block.impact-reactor.name = Импульсный реактор
block.mechanical-drill.name = Механический бур block.mechanical-drill.name = Механический бур
block.pneumatic-drill.name = Пневматический бур block.pneumatic-drill.name = Пневматический бур
block.laser-drill.name = Лазерный бур block.laser-drill.name = Лазерный бур
block.water-extractor.name = Экстрактор воды block.water-extractor.name = Гидроконденсатор
block.cultivator.name = Культиватор block.cultivator.name = Культиватор
block.alpha-dart-mech-pad.name = Реконструктор мехов "Альфа-Дротик" block.alpha-dart-mech-pad.name = Реконструктор мехов "Альфа-Дротик"
block.delta-mech-pad.name = Реконструктор "Дельта" block.delta-mech-pad.name = Реконструктор "Дельта"
@@ -698,7 +721,7 @@ block.pyratite-mixer.name = Мешалка пиротита
block.blast-mixer.name = Мешалка взрывоопасного соединения block.blast-mixer.name = Мешалка взрывоопасного соединения
block.solar-panel.name = Солнечная панель block.solar-panel.name = Солнечная панель
block.solar-panel-large.name = Большая солнечная панель block.solar-panel-large.name = Большая солнечная панель
block.oil-extractor.name = Нефтяной экстрактор block.oil-extractor.name = Нефтяная вышка
block.spirit-factory.name = Завод дронов "Призрак" block.spirit-factory.name = Завод дронов "Призрак"
block.phantom-factory.name = Завод дронов "Фантом" block.phantom-factory.name = Завод дронов "Фантом"
block.wraith-factory.name = Завод призрачных истребителей block.wraith-factory.name = Завод призрачных истребителей
@@ -722,6 +745,7 @@ block.blast-drill.name = Воздушная буровая установка
block.thermal-pump.name = Термальный насос block.thermal-pump.name = Термальный насос
block.thermal-generator.name = Термальный генератор block.thermal-generator.name = Термальный генератор
block.alloy-smelter.name = Плавильня кинетического сплава block.alloy-smelter.name = Плавильня кинетического сплава
block.mender.name = Mender
block.mend-projector.name = Ремонтирующий гранатомёт block.mend-projector.name = Ремонтирующий гранатомёт
block.surge-wall.name = Стена из кинетического сплава block.surge-wall.name = Стена из кинетического сплава
block.surge-wall-large.name = Большая стена из кинетического сплава block.surge-wall-large.name = Большая стена из кинетического сплава
@@ -737,6 +761,7 @@ block.meltdown.name = Катастрофа
block.container.name = Склад block.container.name = Склад
block.launch-pad.name = Стартовая площадка block.launch-pad.name = Стартовая площадка
block.launch-pad.description = Запускает партии предметов без необходимости запуска ядра. Незавершённое. block.launch-pad.description = Запускает партии предметов без необходимости запуска ядра. Незавершённое.
block.launch-pad-large.name = Большая Стартовая площадка
team.blue.name = Синяя team.blue.name = Синяя
team.red.name = Красная team.red.name = Красная
team.orange.name = Оранжевая team.orange.name = Оранжевая
@@ -821,7 +846,7 @@ block.silicon-smelter.description = С помощью песка, угля и э
block.plastanium-compressor.description = Создаёт пластиний из титана и нефти. Требует энергии. Для ускорения производства можно добавить в компрессор песок. block.plastanium-compressor.description = Создаёт пластиний из титана и нефти. Требует энергии. Для ускорения производства можно добавить в компрессор песок.
block.phase-weaver.description = Производит фазовую материю из тория и песка. Требует большего количества энергии. block.phase-weaver.description = Производит фазовую материю из тория и песка. Требует большего количества энергии.
block.alloy-smelter.description = Создаёт кинетический сплав из титана, кремния, меди и свинца. Требует энергию. block.alloy-smelter.description = Создаёт кинетический сплав из титана, кремния, меди и свинца. Требует энергию.
block.pulverizer.description = Измельчает камень в песок. Требует энергию. block.pulverizer.description = Измельчает металлолом в песок. Требует энергию.
block.pyratite-mixer.description = Создаёт пиротит из угля, свинца и песка. Требует энергии. block.pyratite-mixer.description = Создаёт пиротит из угля, свинца и песка. Требует энергии.
block.blast-mixer.description = Создаёт взрывоопасное соединение из нефти и пиротита. Для ускорения производства можно добавить в мешалку песок. block.blast-mixer.description = Создаёт взрывоопасное соединение из нефти и пиротита. Для ускорения производства можно добавить в мешалку песок.
block.cryofluidmixer.description = Производит криогенную жидкость из воды и титана. Требует энергии. block.cryofluidmixer.description = Производит криогенную жидкость из воды и титана. Требует энергии.
@@ -865,7 +890,7 @@ block.titan-factory.description = Производит продвинутые з
block.fortress-factory.description = Производит тяжёлые артиллерийские боевые единицы. block.fortress-factory.description = Производит тяжёлые артиллерийские боевые единицы.
block.revenant-factory.description = Производит тяжёлые летающие боевые единицы. block.revenant-factory.description = Производит тяжёлые летающие боевые единицы.
block.repair-point.description = Может ремонтировать вас и ваши боевые единицы block.repair-point.description = Может ремонтировать вас и ваши боевые единицы
block.conduit.description = Основной блок транспортировки жидкости. Работает как конвейер, но с жидкостями. Лучше всего использовать экстракторы, насосы или т.п.. block.conduit.description = Основной блок транспортировки жидкости. Работает как конвейер, но с жидкостями.
block.pulse-conduit.description = Улучшенный блок транспортировки жидкости. Транспортирует жидкости быстрее и хранит больше, чем стандартные. block.pulse-conduit.description = Улучшенный блок транспортировки жидкости. Транспортирует жидкости быстрее и хранит больше, чем стандартные.
block.phase-conduit.description = Улучшенный блок транспортировки жидкости. Использует энергию для передачи жидкостей на подключенный фазовый канал на несколько плиток. block.phase-conduit.description = Улучшенный блок транспортировки жидкости. Использует энергию для передачи жидкостей на подключенный фазовый канал на несколько плиток.
block.liquid-router.description = Принимает жидкости с одного направления и равномерно выводит их до трех других направлений. Может также хранить определенное количество жидкости. Полезно для разделения жидкостей из одного источника на несколько целей. block.liquid-router.description = Принимает жидкости с одного направления и равномерно выводит их до трех других направлений. Может также хранить определенное количество жидкости. Полезно для разделения жидкостей из одного источника на несколько целей.

View File

@@ -40,6 +40,7 @@ addplayers = Oyuncu ekle/cikar
customgame = Ozel oyun customgame = Ozel oyun
newgame = New Game newgame = New Game
none = <none> none = <none>
minimap = Minimap
close = Kapat close = Kapat
quit = Cik quit = Cik
maps = Haritalar maps = Haritalar
@@ -182,6 +183,7 @@ map.delete.confirm = Haritayi silmek istedigine emin misin? Bu geri alinamaz!
map.random = [accent]Rasgele harita map.random = [accent]Rasgele harita
map.nospawn = Haritada Oyncularin cikmasi icin cekirdek yok! Haritaya[ROYAL]Mavi[] cekirdek ekle. 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.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. map.invalid = Harita yuklenemedi. Gecersiz yada bozuk dosya.
editor.brush = Firca editor.brush = Firca
editor.openin = Editorde ac editor.openin = Editorde ac
@@ -283,6 +285,7 @@ abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy. abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked locked = Locked
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0} resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0} bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -333,63 +336,59 @@ no = Hayir
info.title = [accent]Bilgi info.title = [accent]Bilgi
error.title = [crimson]Bir hata olustu error.title = [crimson]Bir hata olustu
error.crashtitle = Bir hata olustu error.crashtitle = Bir hata olustu
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = Yapi bilgisi block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Guc kapasitesi blocks.powercapacity = Guc kapasitesi
blocks.powershot = Guc/Saldiri hizi blocks.powershot = Guc/Saldiri hizi
blocks.targetsair = Havayi hedef alir mi? blocks.targetsair = Havayi hedef alir mi?
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Menzil blocks.shootrange = Menzil
blocks.size = Buyukluk blocks.size = Buyukluk
blocks.liquidcapacity = Sivi kapasitesi blocks.liquidcapacity = Sivi kapasitesi
blocks.maxitemssecond = Esya limiti
blocks.powerrange = Menzil blocks.powerrange = Menzil
blocks.poweruse = Guc kullanimi blocks.poweruse = Guc kullanimi
blocks.powerdamage = Power/Damage blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Giris esya kapasitesi
blocks.outputitemcapacity = Cikis esya kapasitesi
blocks.itemcapacity = Esya kapasitesi blocks.itemcapacity = Esya kapasitesi
blocks.basepowergeneration = Base Power Generation blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Guc transfer hizi blocks.productiontime = Production Time
blocks.craftspeed = Yapilma hizi blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Giris sivi blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Yardimci sivi blocks.range = Range
blocks.inputitem = Giris esyasi
blocks.inputitems = Giris esyalari
blocks.outputitem = Sonuc
blocks.drilltier = Kazilabilirler blocks.drilltier = Kazilabilirler
blocks.drillspeed = Ana kazma hizi blocks.drillspeed = Ana kazma hizi
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = sekme
blocks.shots = vuruslar blocks.shots = vuruslar
blocks.reload = Yeniden doldurma blocks.reload = Yeniden doldurma
blocks.inputfuel = Yakit
blocks.fuelburntime = Yakit yakilma suresi
blocks.inputcapacity = Giris kapasitesi
blocks.outputcapacity = Cikis kapasitesi
blocks.ammo = Ammo 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.blocks = Yapilar
unit.powersecond = saniyede bir unit.powersecond = saniyede bir
unit.liquidsecond = Saniyede bir unit.liquidsecond = Saniyede bir
@@ -398,6 +397,9 @@ unit.liquidunits = Litre
unit.powerunits = Volt unit.powerunits = Volt
unit.degrees = derece unit.degrees = derece
unit.seconds = saniye unit.seconds = saniye
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = esya unit.items = esya
category.general = General category.general = General
category.power = Guc category.power = Guc
@@ -406,8 +408,10 @@ category.items = esyalar
category.crafting = uretim category.crafting = uretim
category.shooting = sikma category.shooting = sikma
category.optional = Optional Enhancements category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = FPS'i goster setting.fps.name = FPS'i goster
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Guc lazerlerini goster setting.lasers.name = Guc lazerlerini goster
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Haritayi goster setting.minimap.name = Haritayi goster
setting.musicvol.name = Ses yuksekligi setting.musicvol.name = Ses yuksekligi
setting.mutemusic.name = Sesi kapat setting.mutemusic.name = Sesi kapat
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = fight against other players locally. mode.pvp.description = fight against other players locally.
mode.attack.name = Attack mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Esyalar
content.liquid.name = Sivilar content.liquid.name = Sivilar
content.unit.name = Units content.unit.name = Units
@@ -563,6 +583,7 @@ mech.itemcapacity = [LIGHT_GRAY]esya kapasitesi: {0}
mech.minespeed = [LIGHT_GRAY]kazma hizi: {0} mech.minespeed = [LIGHT_GRAY]kazma hizi: {0}
mech.minepower = [LIGHT_GRAY]kazma gucu: {0} mech.minepower = [LIGHT_GRAY]kazma gucu: {0}
mech.ability = [LIGHT_GRAY]yetenek gucu: {0} mech.ability = [LIGHT_GRAY]yetenek gucu: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]isinma kapasitesi: {0} liquid.heatcapacity = [LIGHT_GRAY]isinma kapasitesi: {0}
liquid.viscosity = [LIGHT_GRAY]Yari sivilik: {0} liquid.viscosity = [LIGHT_GRAY]Yari sivilik: {0}
liquid.temperature = [LIGHT_GRAY]isi: {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-pump.name = Termal pompa
block.thermal-generator.name = Magma jeneratoru block.thermal-generator.name = Magma jeneratoru
block.alloy-smelter.name = Alloy eritici block.alloy-smelter.name = Alloy eritici
block.mender.name = Mender
block.mend-projector.name = Mend koruyucu block.mend-projector.name = Mend koruyucu
block.surge-wall.name = kabarma duvari block.surge-wall.name = kabarma duvari
block.surge-wall-large.name = genis kabarma duvari block.surge-wall-large.name = genis kabarma duvari
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container block.container.name = Container
block.launch-pad.name = Launch Pad 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.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.blue.name = blue
team.red.name = red team.red.name = red
team.orange.name = orange team.orange.name = orange

View File

@@ -40,6 +40,7 @@ addplayers = Oyuncu ekle/cikar
customgame = Ozel oyun customgame = Ozel oyun
newgame = New Game newgame = New Game
none = <none> none = <none>
minimap = Minimap
close = Kapat close = Kapat
quit = Çık quit = Çık
maps = Haritalar 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.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 = 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] red[] cores to this map in the editor.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Error loading map: corrupted or invalid map file. map.invalid = Error loading map: corrupted or invalid map file.
editor.brush = Brush editor.brush = Brush
editor.openin = Open In Editor 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. abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked locked = Locked
complete = [LIGHT_GRAY]Complete: complete = [LIGHT_GRAY]Complete:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0} resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best: {0} bestwave = [LIGHT_GRAY]Best: {0}
launch = Launch launch = Launch
@@ -294,7 +297,7 @@ uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
zone.unlocked = [LIGHT_GRAY]{0} unlocked. 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected: zone.resources = Resources Detected:
add = Add... add = Add...
@@ -333,63 +336,59 @@ no = No
info.title = [Vurgu] Bilgi info.title = [Vurgu] Bilgi
error.title = [crimson] Bir hata oluştu error.title = [crimson] Bir hata oluştu
error.crashtitle = Bir hata oluştu error.crashtitle = Bir hata oluştu
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = Blok Bilgisi block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = Güç kapasitesi blocks.powercapacity = Güç kapasitesi
blocks.powershot = Güç / atış blocks.powershot = Güç / atış
blocks.targetsair = Targets Air blocks.targetsair = Targets Air
blocks.targetsground = Targets Ground blocks.targetsground = Targets Ground
blocks.items = Items: {0}
blocks.itemsmoved = Move Speed blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Range blocks.shootrange = Range
blocks.size = Boyut blocks.size = Boyut
blocks.liquidcapacity = Sıvı kapasitesi blocks.liquidcapacity = Sıvı kapasitesi
blocks.maxitemssecond = Maksimum öğe / saniye
blocks.powerrange = Güç aralığı blocks.powerrange = Güç aralığı
blocks.poweruse = Power Use blocks.poweruse = Power Use
blocks.powerdamage = Power/Damage blocks.powerdamage = Power/Damage
blocks.inputitemcapacity = Input Item Capacity
blocks.outputitemcapacity = Input Item Capacity
blocks.itemcapacity = Ürün kapasitesi blocks.itemcapacity = Ürün kapasitesi
blocks.basepowergeneration = Base Power Generation blocks.basepowergeneration = Base Power Generation
blocks.powertransferspeed = Power Transfer blocks.productiontime = Production Time
blocks.craftspeed = Production Speed blocks.repairtime = Block Full Repair Time
blocks.inputliquid = Giriş sıvı blocks.speedincrease = Speed Increase
blocks.inputliquidaux = Aux Liquid blocks.range = Range
blocks.inputitem = Giriş öğesi
blocks.inputitems = Input Items
blocks.outputitem = Output Item
blocks.drilltier = Drillables blocks.drilltier = Drillables
blocks.drillspeed = Base Drill Speed blocks.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units 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.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.inaccuracy = yanlışlık
blocks.shots = atışlar blocks.shots = atışlar
blocks.reload = Reload blocks.reload = Reload
blocks.inputfuel = Fuel
blocks.fuelburntime = Fuel Burn Time
blocks.inputcapacity = Giriş kapasitesi
blocks.outputcapacity = Çıkış kapasitesi
blocks.ammo = Ammo 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.blocks = blocks
unit.powersecond = power units/second unit.powersecond = power units/second
unit.liquidsecond = liquid units/second unit.liquidsecond = liquid units/second
@@ -398,6 +397,9 @@ unit.liquidunits = liquid units
unit.powerunits = power units unit.powerunits = power units
unit.degrees = degrees unit.degrees = degrees
unit.seconds = seconds unit.seconds = seconds
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = items unit.items = items
category.general = General category.general = General
category.power = Power category.power = Power
@@ -406,8 +408,10 @@ category.items = Items
category.crafting = Crafting category.crafting = Crafting
category.shooting = Shooting category.shooting = Shooting
category.optional = Optional Enhancements category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = Animated Water setting.animatedwater.name = Animated Water
setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Ally Indicators setting.indicators.name = Ally Indicators
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
@@ -431,6 +435,7 @@ setting.borderless.name = Borderless Window
setting.fps.name = Saniyede ... Kare göstermek setting.fps.name = Saniyede ... Kare göstermek
setting.vsync.name = VSync setting.vsync.name = VSync
setting.lasers.name = Güç Lazerleri Göster setting.lasers.name = Güç Lazerleri Göster
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = Show Minimap setting.minimap.name = Show Minimap
setting.musicvol.name = Müzik sesi setting.musicvol.name = Müzik sesi
setting.mutemusic.name = Müziği Kapat setting.mutemusic.name = Müziği Kapat
@@ -483,6 +488,21 @@ mode.pvp.name = PvP
mode.pvp.description = fight against other players locally. mode.pvp.description = fight against other players locally.
mode.attack.name = Attack mode.attack.name = Attack
mode.attack.description = No waves, with the goal to destroy the enemy base. 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.item.name = Items
content.liquid.name = Liquids content.liquid.name = Liquids
content.unit.name = Units content.unit.name = Units
@@ -563,6 +583,7 @@ 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.minepower = [LIGHT_GRAY]Mining Power: {0}
mech.ability = [LIGHT_GRAY]Ability: {0} mech.ability = [LIGHT_GRAY]Ability: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0} liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosity: {0} liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
liquid.temperature = [LIGHT_GRAY]Temperature: {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-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smtler block.alloy-smelter.name = Alloy Smtler
block.mender.name = Mender
block.mend-projector.name = Mend Projector block.mend-projector.name = Mend Projector
block.surge-wall.name = Surge Wall block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall block.surge-wall-large.name = Large Surge Wall
@@ -737,6 +759,7 @@ block.meltdown.name = Meltdown
block.container.name = Container block.container.name = Container
block.launch-pad.name = Launch Pad 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.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.blue.name = blue
team.red.name = red team.red.name = red
team.orange.name = orange team.orange.name = orange

View File

@@ -40,6 +40,7 @@ addplayers = Дод/Видалити гравців
customgame = Користувальницька гра customgame = Користувальницька гра
newgame = Нова гра newgame = Нова гра
none = <нічого> none = <нічого>
minimap = Minimap
close = Закрити close = Закрити
quit = Вийти quit = Вийти
maps = Мапи maps = Мапи
@@ -181,7 +182,8 @@ builtin = Bбудована
map.delete.confirm = Ви впевнені, що хочете видалити цю мапу? Цю дію не можна скасувати! map.delete.confirm = Ви впевнені, що хочете видалити цю мапу? Цю дію не можна скасувати!
map.random = [accent]Випадкова мапа map.random = [accent]Випадкова мапа
map.nospawn = Ця мапа не має жодного ядра для спавну гравця! Додайте[ROYAL] сине[] ядро в цю мапу редакторі. map.nospawn = Ця мапа не має жодного ядра для спавну гравця! Додайте[ROYAL] сине[] ядро в цю мапу редакторі.
map.nospawn.pvp = У цієї мапи немає ворожих ядер, в яких гравець може з'явитися! Додайте[SCARLET] червоне[] ядро до цієї мапи в редакторі. map.nospawn.pvp = У цієї мапи немає ворожих ядер, в яких гравець може з'явитися! Додайте[SCARLET] не сине[] ядро до цієї мапи в редакторі.
map.nospawn.attack = У цієї мапи немає ворожих ядер,які гравець може атакувати! Додайте[SCARLET] червоне[] ядро до цієї мапи в редакторі.
map.invalid = Помилка завантаження мапи: пошкоджений або невірний файл мапи. map.invalid = Помилка завантаження мапи: пошкоджений або невірний файл мапи.
editor.brush = Пензлик editor.brush = Пензлик
editor.openin = Відкрити в редакторі editor.openin = Відкрити в редакторі
@@ -283,6 +285,7 @@ abandon = Покинути
abandon.text = Ця зона і всі її ресурси будуть втрачені для ворога. abandon.text = Ця зона і всі її ресурси будуть втрачені для ворога.
locked = Заблоковано locked = Заблоковано
complete = [LIGHT_GRAY]Завершено: complete = [LIGHT_GRAY]Завершено:
zone.requirement = Wave {0} in zone {1}
resume = Відновити зону:\n[LIGHT_GRAY]{0} resume = Відновити зону:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Найкраща хвиля: {0} bestwave = [LIGHT_GRAY]Найкраща хвиля: {0}
launch = < ЗАПУСК > launch = < ЗАПУСК >
@@ -294,7 +297,7 @@ uncover = Розкрити
configure = Вивантаження configure = Вивантаження
configure.locked = [LIGHT_GRAY]Розблокувати можливість вивантаження ресурсів:\nWave {0}. configure.locked = [LIGHT_GRAY]Розблокувати можливість вивантаження ресурсів:\nWave {0}.
zone.unlocked = [LIGHT_GRAY]{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.config.complete = {0} хвиль досягнено. reached:\nРозблоковано можливість вивантаження.
zone.resources = Виявлені ресурси: zone.resources = Виявлені ресурси:
add = Додати... add = Додати...
@@ -333,63 +336,61 @@ no = Ні
info.title = Інформація info.title = Інформація
error.title = [crimson]Виникла помилка error.title = [crimson]Виникла помилка
error.crashtitle = Виникла помилка error.crashtitle = Виникла помилка
blocks.outputspeed = Швидкість свердління: {0}/с blocks.input = Вхід
blocks.efficiency = Ефективність: {0}% blocks.output = Вихід
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Прискорювач
blocks.blockinfo = Інформація про блок block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Енергія: {0}
blocks.poweroutput = Вихідна енергія: {0}
blocks.powercapacity = Місткість енергії blocks.powercapacity = Місткість енергії
blocks.powershot = Енергія/постріл blocks.powershot = Енергія/постріл
blocks.targetsair = Повітряні мішені blocks.targetsair = Повітряні мішені
blocks.targetsground = Наземні мішені blocks.targetsground = Наземні мішені
blocks.items = Предмети: {0}
blocks.itemsmoved = Швидкість переміщення blocks.itemsmoved = Швидкість переміщення
blocks.launchtime = Час між запусками
blocks.shootrange = Діапазон дії blocks.shootrange = Діапазон дії
blocks.size = Розмір blocks.size = Розмір
blocks.liquidcapacity = Місткість рідини blocks.liquidcapacity = Місткість рідини
blocks.maxitemssecond = Макс. кількість предметів/секунду
blocks.powerrange = Діапазон передачі енергії blocks.powerrange = Діапазон передачі енергії
blocks.poweruse = Енергії використовує blocks.poweruse = Енергії використовує
blocks.powerdamage = Енергія/урон blocks.powerdamage = Енергія/урон
blocks.inputitemcapacity = Ємність вхідних елементів
blocks.outputitemcapacity = Ємність вихідних елементів
blocks.itemcapacity = Місткість предметів blocks.itemcapacity = Місткість предметів
blocks.basepowergeneration = Базова генерація енергії blocks.basepowergeneration = Базова генерація енергії
blocks.powertransferspeed = Швидкість передачі енергії
blocks.craftspeed = Швидкість виробництва blocks.craftspeed = Швидкість виробництва
blocks.productiontime = Час виробництва
blocks.repairtime = Час повного відновлення блоку
blocks.speedincrease = Збільшення швидкості
blocks.range = Радіус дії
blocks.inputliquid = Прийом рідини blocks.inputliquid = Прийом рідини
blocks.inputliquidaux = Допоміжна рідина
blocks.inputitem = Вхідний предмет
blocks.inputitems = Вхідні предмети
blocks.outputitem = Вихідний предмет
blocks.drilltier = Видобуває blocks.drilltier = Видобуває
blocks.drillspeed = Базова швидкість свердління blocks.drillspeed = Базова швидкість свердління
blocks.boosteffect = Прискорювальний ефект
blocks.maxunits = Максимальна кількість активних одиниць 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.health = Здоров'я
blocks.heat = Температура
blocks.power = Енергія
blocks.progress = Будівництво триває
blocks.spawned = Бой. од.: {0}/{1}
blocks.power.satisfaction = Енергія
blocks.inaccuracy = Розкид blocks.inaccuracy = Розкид
blocks.shots = Постріли blocks.shots = Постріли
blocks.reload = Постріли/секунду blocks.reload = Постріли/секунду
blocks.inputfuel = Паливо
blocks.fuelburntime = Час горіння топлива
blocks.inputcapacity = Макс. місткість вхідних предметів
blocks.outputcapacity = Макс. місткість вихідних предметів
blocks.ammo = Боєприпаси 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.blocks = блоки
unit.powersecond = одиниць енергії/секунду unit.powersecond = одиниць енергії/секунду
unit.liquidsecond = рідких одиниць/секунду unit.liquidsecond = рідких одиниць/секунду
@@ -398,6 +399,9 @@ unit.liquidunits = рідинних одиниць
unit.powerunits = енергетичних одиниць unit.powerunits = енергетичних одиниць
unit.degrees = град. unit.degrees = град.
unit.seconds = сек. unit.seconds = сек.
unit.persecond = /сек
unit.timesspeed = x швидкість
unit.percent = %
unit.items = предм. unit.items = предм.
category.general = Загальні category.general = Загальні
category.power = Енергетичні category.power = Енергетичні
@@ -406,13 +410,16 @@ category.items = Предмети
category.crafting = Введення/виведення category.crafting = Введення/виведення
category.shooting = Стрільба category.shooting = Стрільба
category.optional = Додаткові поліпшення category.optional = Додаткові поліпшення
setting.shadows.name = Shadows setting.landscape.name = Зберегти пейхаж
setting.shadows.name = Тіні
setting.animatedwater.name = Анімована вода setting.animatedwater.name = Анімована вода
setting.animatedshields.name = Анімовані щити
setting.antialias.name = Згладжування[LIGHT_GRAY] (потребує перезапуску)[] setting.antialias.name = Згладжування[LIGHT_GRAY] (потребує перезапуску)[]
setting.indicators.name = Показувати у сторону ворогів та союзників setting.indicators.name = Показувати у сторону ворогів та союзників
setting.autotarget.name = Авто-стрільба setting.autotarget.name = Авто-стрільба
setting.fpscap.name = Макс. FPS setting.fpscap.name = Макс. FPS
setting.fpscap.none = Необмежений setting.fpscap.none = Необмежений
minimap = Міні-мапа
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.swapdiagonal.name = Завжди Діагональне Розміщення setting.swapdiagonal.name = Завжди Діагональне Розміщення
setting.difficulty.training = навчання setting.difficulty.training = навчання
@@ -431,7 +438,8 @@ setting.borderless.name = Вікно без полів
setting.fps.name = Показувати FPS setting.fps.name = Показувати FPS
setting.vsync.name = Вертикальна синхронізація setting.vsync.name = Вертикальна синхронізація
setting.lasers.name = Показувати енергію лазерів setting.lasers.name = Показувати енергію лазерів
setting.minimap.name = Показати мінімапу setting.pixelate.name = Пікселізація [LIGHT_GRAY](може знизити продуктивність)
setting.minimap.name = Показати міні-мапу
setting.musicvol.name = Гучність музики setting.musicvol.name = Гучність музики
setting.mutemusic.name = Заглушити музику setting.mutemusic.name = Заглушити музику
setting.sfxvol.name = Гучність звукових ефектів setting.sfxvol.name = Гучність звукових ефектів
@@ -476,13 +484,28 @@ mode.help.title = Опис режимів
mode.survival.name = Хвилі mode.survival.name = Хвилі
mode.survival.description = Звичайний режим. В цьому режимі треба самим добувати ресурси та хвилі йдуть беззупинно. mode.survival.description = Звичайний режим. В цьому режимі треба самим добувати ресурси та хвилі йдуть беззупинно.
mode.sandbox.name = Пісочниця mode.sandbox.name = Пісочниця
mode.sandbox.description = В режимі "Пісочниця" бескінечні ресурси(але їх все одно можно добувати) та хвилі йдуть за вашим бажанням. mode.sandbox.description = В режимі "Пісочниця" незкінченні ресурси(але їх все одно можно добувати) та хвилі йдуть за вашим бажанням.
mode.freebuild.name = Вільне\nбудівництво mode.freebuild.name = Вільне\nбудівництво
mode.freebuild.description = В режимі "Пісочниця" треба самим добувати ресурси та хвилі йдуть за вашим бажанням. mode.freebuild.description = В режимі "Пісочниця" треба самим добувати ресурси та хвилі йдуть за вашим бажанням.
mode.pvp.name = PVP mode.pvp.name = PVP
mode.pvp.description = боріться проти інших гравців. mode.pvp.description = боріться проти інших гравців.
mode.attack.name = Атака mode.attack.name = Атака
mode.attack.description = Немає хвиль, мета - знищити базу противника. 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.item.name = Предмети
content.liquid.name = Рідини content.liquid.name = Рідини
content.unit.name = Бойові одиниці content.unit.name = Бойові одиниці
@@ -511,7 +534,7 @@ item.spore-pod.name = Споровий стручок
item.spore-pod.description = Використовується для перетворення на нафту, вибухові речовини та паливо. item.spore-pod.description = Використовується для перетворення на нафту, вибухові речовини та паливо.
item.sand.name = Пісок item.sand.name = Пісок
item.sand.description = Загальний матеріал, який широко використовується при плавленні, як у процесі плавки, так і у вигляді шлака. item.sand.description = Загальний матеріал, який широко використовується при плавленні, як у процесі плавки, так і у вигляді шлака.
item.blast-compound.name = Вибухонебезпечне з'єднання item.blast-compound.name = Вибухова суміш
item.blast-compound.description = Нестійке з'єднання, що використовується в бомбах та вибухових речовинах. Хоча воно може спалюватися як паливо, та це не рекомендується. item.blast-compound.description = Нестійке з'єднання, що використовується в бомбах та вибухових речовинах. Хоча воно може спалюватися як паливо, та це не рекомендується.
item.pyratite.name = Піротит item.pyratite.name = Піротит
item.pyratite.description = Вкрай легкозаймиста речовина, що використовується у запальній зброї. item.pyratite.description = Вкрай легкозаймиста речовина, що використовується у запальній зброї.
@@ -525,7 +548,7 @@ liquid.oil.name = Нафта
liquid.cryofluid.name = Кріогенна рідина liquid.cryofluid.name = Кріогенна рідина
mech.alpha-mech.name = Альфа mech.alpha-mech.name = Альфа
mech.alpha-mech.weapon = Тяжкий кулемет mech.alpha-mech.weapon = Тяжкий кулемет
mech.alpha-mech.ability = Нема mech.alpha-mech.ability = Регенерація
mech.alpha-mech.description = Стандартний мех для настільних пристроїв. Має пристойну швидкість і урон. mech.alpha-mech.description = Стандартний мех для настільних пристроїв. Має пристойну швидкість і урон.
mech.delta-mech.name = Дельта mech.delta-mech.name = Дельта
mech.delta-mech.weapon = Генератор дуг mech.delta-mech.weapon = Генератор дуг
@@ -560,9 +583,10 @@ unit.speed = [LIGHT_GRAY]Швидкість: {0}
mech.weapon = [LIGHT_GRAY]Зброя: {0} mech.weapon = [LIGHT_GRAY]Зброя: {0}
mech.health = [LIGHT_GRAY]Здоров'я: {0} mech.health = [LIGHT_GRAY]Здоров'я: {0}
mech.itemcapacity = [LIGHT_GRAY] Ємність елементів: {0} mech.itemcapacity = [LIGHT_GRAY] Ємність елементів: {0}
mech.minespeed = [LIGHT_GRAY]Швидкість видобутку: {0} mech.minespeed = [LIGHT_GRAY]Швидкість видобутку: {0}%
mech.minepower = [LIGHT_GRAY]Потужність видобутку: {0} mech.minepower = [LIGHT_GRAY]Потужність видобутку: {0}
mech.ability = [LIGHT_GRAY]Здібність: {0} mech.ability = [LIGHT_GRAY]Здібність: {0}
mech.buildspeed = [LIGHT_GRAY]Швидкість будування: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Теплоємність: {0} liquid.heatcapacity = [LIGHT_GRAY]Теплоємність: {0}
liquid.viscosity = [LIGHT_GRAY]В'язкість: {0} liquid.viscosity = [LIGHT_GRAY]В'язкість: {0}
liquid.temperature = [LIGHT_GRAY]Температура: {0} liquid.temperature = [LIGHT_GRAY]Температура: {0}
@@ -594,8 +618,8 @@ block.core-foundation.name = Ядро: Штаб
block.core-nucleus.name = Ядро: Атом block.core-nucleus.name = Ядро: Атом
block.deepwater.name = Глибоководдя block.deepwater.name = Глибоководдя
block.water.name = Вода block.water.name = Вода
block.tainted-water.name = Tainted Water block.tainted-water.name = Забруднена вода
block.darksand-tainted-water.name = Dark Sand Tainted Water block.darksand-tainted-water.name = Темний пісок з забрудненою водою
block.tar.name = Tar block.tar.name = Tar
block.stone.name = Камінь block.stone.name = Камінь
block.sand.name = Пісок block.sand.name = Пісок
@@ -616,10 +640,10 @@ block.pine.name = Сосна
block.white-tree-dead.name = Мертве Біле Дерево block.white-tree-dead.name = Мертве Біле Дерево
block.white-tree.name = Біле Дерево block.white-tree.name = Біле Дерево
block.spore-cluster.name = Скупчення спор block.spore-cluster.name = Скупчення спор
block.metal-floor.name = Металевий Пол block.metal-floor.name = Металевий Пол 1
block.metal-floor-2.name = Металевий Пол 2 block.metal-floor-2.name = Металевий Пол 2
block.metal-floor-3.name = Металевий Пол 3 block.metal-floor-3.name = Металевий Пол 3
block.metal-floor-5.name = Металевий Пол 5 block.metal-floor-5.name = Металевий Пол 4
block.metal-floor-damaged.name = Пошкоджений Металевий Пол block.metal-floor-damaged.name = Пошкоджений Металевий Пол
block.ignarock.name = Магматичні Гірські Породи block.ignarock.name = Магматичні Гірські Породи
block.hotrock.name = Гарячий Камінь block.hotrock.name = Гарячий Камінь
@@ -669,7 +693,7 @@ block.impact-reactor.name = Імпульсний реактор
block.mechanical-drill.name = Механічний дриль block.mechanical-drill.name = Механічний дриль
block.pneumatic-drill.name = Пневматичний дриль block.pneumatic-drill.name = Пневматичний дриль
block.laser-drill.name = Лазерний дриль block.laser-drill.name = Лазерний дриль
block.water-extractor.name = Екстрактор води block.water-extractor.name = Гідроконденсатор
block.cultivator.name = Культиватор block.cultivator.name = Культиватор
block.alpha-dart-mech-pad.name = Реконструктор "Альфа-Дротик" block.alpha-dart-mech-pad.name = Реконструктор "Альфа-Дротик"
block.delta-mech-pad.name = Реконструктор "Дельта" block.delta-mech-pad.name = Реконструктор "Дельта"
@@ -698,7 +722,7 @@ block.pyratite-mixer.name = Змішувач піротиту
block.blast-mixer.name = Доменний змішувач block.blast-mixer.name = Доменний змішувач
block.solar-panel.name = Сонячна панель block.solar-panel.name = Сонячна панель
block.solar-panel-large.name = Велика сонячна панель block.solar-panel-large.name = Велика сонячна панель
block.oil-extractor.name = Екстрактор нафти block.oil-extractor.name = Нафтова вежа
block.spirit-factory.name = Завод дронов "Призрак" block.spirit-factory.name = Завод дронов "Призрак"
block.phantom-factory.name = Завод дронов "Фантом" block.phantom-factory.name = Завод дронов "Фантом"
block.wraith-factory.name = Завод винищувачів "Примара" block.wraith-factory.name = Завод винищувачів "Примара"
@@ -722,6 +746,7 @@ block.blast-drill.name = Бурова установка
block.thermal-pump.name = Тепловий насос block.thermal-pump.name = Тепловий насос
block.thermal-generator.name = Тепловий генератор block.thermal-generator.name = Тепловий генератор
block.alloy-smelter.name = Сплавовий завод block.alloy-smelter.name = Сплавовий завод
block.mender.name = Mender
block.mend-projector.name = Ремонту гранатомет block.mend-projector.name = Ремонту гранатомет
block.surge-wall.name = Хвиляста стіна block.surge-wall.name = Хвиляста стіна
block.surge-wall-large.name = Велика хвиляста стіна block.surge-wall-large.name = Велика хвиляста стіна
@@ -737,6 +762,7 @@ block.meltdown.name = Розтоплення
block.container.name = Склад block.container.name = Склад
block.launch-pad.name = Стартовий майданчик block.launch-pad.name = Стартовий майданчик
block.launch-pad.description = Запускає партії елементів без необхідності запуску ядра. Незакінчено. block.launch-pad.description = Запускає партії елементів без необхідності запуску ядра. Незакінчено.
block.launch-pad-large.name = Великий Стартовий майданчик
team.blue.name = Синя team.blue.name = Синя
team.red.name = Червона team.red.name = Червона
team.orange.name = Помаренчева team.orange.name = Помаренчева
@@ -821,7 +847,7 @@ block.silicon-smelter.description = За допомогою піску, вугі
block.plastanium-compressor.description = Створює пластинійи з титану і нафти. Вимагає енергії. Для прискорення виробництва можна додати в компресор пісок. block.plastanium-compressor.description = Створює пластинійи з титану і нафти. Вимагає енергії. Для прискорення виробництва можна додати в компресор пісок.
block.phase-weaver.description = Виробляє фазову тканину торію і піску. Вимагає багато енергії. block.phase-weaver.description = Виробляє фазову тканину торію і піску. Вимагає багато енергії.
block.alloy-smelter.description = Створює кінетичний сплав з титану, кременя, міді і свинця. Вимагає енергію. block.alloy-smelter.description = Створює кінетичний сплав з титану, кременя, міді і свинця. Вимагає енергію.
block.pulverizer.description = Подрібнює камінь в пісок. Вимагає енергії. block.pulverizer.description = Подрібнює металобрухт в пісок. Вимагає енергії.
block.pyratite-mixer.description = Створює піротит з вугілля, свинцю і піску. Вимагає енергії. block.pyratite-mixer.description = Створює піротит з вугілля, свинцю і піску. Вимагає енергії.
block.blast-mixer.description = Створює вибухонебезпечне з'єднання з нафти і піротіта. Для прискорення виробництва можна додати в мішалку пісок. block.blast-mixer.description = Створює вибухонебезпечне з'єднання з нафти і піротіта. Для прискорення виробництва можна додати в мішалку пісок.
block.cryofluidmixer.description = Виробляє криогенну рідину з води і титану. Вимагає енергії. block.cryofluidmixer.description = Виробляє криогенну рідину з води і титану. Вимагає енергії.

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 = 致谢 credits = 致谢
contributors = 译者和贡献者 contributors = 译者和贡献者
discord = 加入 Mindustry 的 Discord! discord = 加入 Mindustry 的 Discord!
@@ -12,65 +12,66 @@ link.wiki.description = 官方 Mindustry 维基
linkfail = 打开链接失败!\nURL 已经复制到剪贴板。 linkfail = 打开链接失败!\nURL 已经复制到剪贴板。
screenshot = 荧幕截图已放在 {0} screenshot = 荧幕截图已放在 {0}
gameover = 你的核心被摧毁了! gameover = 你的核心被摧毁了!
gameover.pvp = accent] {0}[] 队获胜! gameover.pvp = [accent] {0}[] 队获胜!
highscore = [accent]新纪录! highscore = [accent]新纪录!
stat.wave = 战胜的波数:[accent]{0} stat.wave = 战胜的波数:[accent]{0}
stat.enemiesDestroyed = Enemies Destroyed:[accent] {0} stat.enemiesDestroyed = 消灭的敌人:[accent]{0}
stat.built = Buildings Built:[accent] {0} stat.built = 建造的建筑:[accent]{0}
stat.destroyed = Buildings Destroyed:[accent] {0} stat.destroyed = 摧毁的建筑:[accent]{0}
stat.deconstructed = Buildings Deconstructed:[accent] {0} stat.deconstructed = 拆除的建筑:[accent]{0}
stat.delivered = Resources Launched: stat.delivered = 发射的资源:
stat.rank = Final Rank: [accent]{0} 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. placeline = 你选择了一个方块。\n你能通过[accent]长按几秒钟[]并向一个方向拖动来[accent]直线放置方块[]。\n试试看吧。
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. removearea = 你选择了拆除模式。\n你能通过[accent]长按几秒钟[]并拖动来[accent]删除矩形内的方块[]。\n试试看吧。
launcheditems = [accent]Launched Items launcheditems = [accent]发射的资源
map.delete = 确定要删除 "[accent]{0}[]" 地图吗? map.delete = 确定要删除 "[accent]{0}[]" 地图吗?
level.highscore = 最高分:[accent]{0} level.highscore = 最高分:[accent]{0}
level.select = 选择关卡 level.select = 选择关卡Level Select
level.mode = 游戏模式: level.mode = 游戏模式:
showagain = 不再显示 showagain = 下次不再显示
coreattack = < 核心正在受到攻击! > coreattack = < 核心正在受到攻击! >
nearpoint = [[ [scarlet]LEAVE DROP POINT IMMEDIATELY[] ]\nannihilation imminent nearpoint = [[ [scarlet]立即离开敌人出生点[] ]\n将被清理
outofbounds = [[ OUT OF BOUNDS ]\n[]self-destruct in {0} outofbounds = [[ 超出边界 ]\n[]{0}秒后自毁
database = Core Database database = 核心数据库
savegame = 保存游戏 savegame = 保存游戏
loadgame = 载入游戏 loadgame = 载入游戏
joingame = 加入游戏 joingame = 加入游戏
addplayers = 加/删除玩家 addplayers = 加/删除玩家
customgame = 自定义游戏 customgame = 自定义游戏
newgame = 新游戏 newgame = 新游戏
none = <无> none = <无>
minimap = Minimap
close = 关闭 close = 关闭
quit = 退出 quit = 退出
maps = 地图 maps = 地图
continue = 继续 continue = 继续
maps.none = [LIGHT_GRAY]未发现地图! maps.none = [LIGHT_GRAY]没有找到地图!
about.button = 关于 about.button = 关于
name = 名字: name = 名字:
noname = Pick a[accent] player name[] first. noname = 先取一个[accent] 玩家名[]。
filename = 文件名: filename = 文件名:
unlocked = 新方块已解锁! unlocked = 新方块已解锁!
completed = [accent]Completed completed = [accent]完成的
techtree = Tech Tree techtree = 科技树
research.list = [LIGHT_GRAY]Research: research.list = [LIGHT_GRAY]研究:
research = Research research = 研究
researched = [LIGHT_GRAY]{0} researched. researched = [LIGHT_GRAY]{0} 己研究。
players = {0} 玩家在线 players = {0} 玩家在线
players.single = {0} 玩家在线 players.single = {0} 玩家在线
server.closing = [accent]正在关闭服务器…… server.closing = [accent]正在关闭服务器……
server.kicked.kick = 你被踢出服务器了! server.kicked.kick = 你被踢出服务器了!
server.kicked.serverClose = 服务器已关闭。 server.kicked.serverClose = 服务器已关闭。
server.kicked.clientOutdated = 客户端版本过旧!请升级 server.kicked.clientOutdated = 过旧的客户端!更新你的游戏
server.kicked.serverOutdated = 服务器版本过旧!请联系房主升级! server.kicked.serverOutdated = 过旧的服务器!联系房主升级!
server.kicked.banned = 这个服务器拉黑了。 server.kicked.banned = 这个服务器上被禁了。
server.kicked.recentKick = 你刚刚被踢出服务器。\n请稍后重新连接 server.kicked.recentKick = 你刚刚被踢出服务器。\n请稍后重新连接
server.kicked.nameInUse = 服务器中已经\n有人有相同的名字了。 server.kicked.nameInUse = 服务器中已经\n有人有相同的名字了。
server.kicked.nameEmpty = 你的名字必须至少包含一个字母或数字 server.kicked.nameEmpty = 选择的名字是无效的
server.kicked.idInUse = 你已在服务器!不允许用两个账号。 server.kicked.idInUse = 你已在这个服务器!不允许用两个账号连接
server.kicked.customClient = 这个服务器不支持修改版客户端,请下载官方版本。 server.kicked.customClient = 这个服务器不支持定制版本。下载官方版本。
server.kicked.gameover = ! server.kicked.gameover = 游戏结束!
host.info = [accent]创建局域网游戏[]按钮会在[scarlet]6567[]端口运行一个服务器。[]\n任何在同一个[LIGHT_GRAY]网络或本地网络[]下的人都在服务器列表中看到你的服务器。\n\n如果你想让别人在任何地方都能通过IP地址连接你需要设定[accent]端口转发[]。\n\n[LIGHT_GRAY]注意如果某人无法连接到你的局域网游戏请确保你在防火墙设置里允许了Mindustry连接本地网络。 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地址。 join.info = 此时,可以输入[accent]服务器的IP地址[]连接,或寻找[accent]本地网络[]中的服务器连接。\n局域网或广域网多人游戏都被支持。\n\n[LIGHT_GRAY]注意没有全球服务器列表如果你想通过IP地址连接某个服务器你需要向房主询问IP地址。
hostserver = 创建服务器 hostserver = 创建服务器
hostserver.mobile = 创建\n服务器 hostserver.mobile = 创建\n服务器
host = 创建 host = 创建
@@ -81,189 +82,190 @@ server.refreshing = 正在刷新服务器
hosts.none = [lightgray]未发现局域网游戏! hosts.none = [lightgray]未发现局域网游戏!
host.invalid = [scarlet]无法连接服务器。 host.invalid = [scarlet]无法连接服务器。
trace = 跟踪玩家 trace = 跟踪玩家
trace.playername = 玩家名字: [accent]{0} trace.playername = 玩家名称:[accent]{0}
trace.ip = IP地址[accent]{0} trace.ip = IP地址[accent]{0}
trace.id = ID[accent]{0} trace.id = 唯一的ID[accent]{0}
trace.android = 安卓客户端:[accent]{0} trace.android = 安卓客户端:[accent]{0}
trace.modclient = 修改版客户端: [accent]{0} trace.modclient = 定制版客户端:[accent]{0}
trace.totalblocksbroken = 总共破坏了 [accent]{0} 个方块。 trace.totalblocksbroken = 总共破坏了 [accent]{0} 个方块。
trace.structureblocksbroken = 总共破坏了[accent]{0}方块。 trace.structureblocksbroken = 总共破坏了 [accent]{0} 个建筑物方块。
trace.lastblockbroken = 最后破坏的方块:[accent]{0} trace.lastblockbroken = 最后破坏的方块:[accent]{0}
trace.totalblocksplaced = 总共放置了 [accent]{0} 个方块。 trace.totalblocksplaced = 总共放置了 [accent]{0} 个方块。
trace.lastblockplaced = 最后放置的方块:[accent]{0} trace.lastblockplaced = 最后放置的方块:[accent]{0}
invalidid = 无效的客户端ID提交错误报告。 invalidid = 无效的客户端ID提交一个错误报告。
server.bans = 黑名单 server.bans = 黑名单
server.bans.none = 没有被拉黑的玩家! server.bans.none = 没有找到被拉黑的玩家!
server.admins = 管理员 server.admins = 管理员
server.admins.none = 没有管理员! server.admins.none = 没有找到管理员!
server.add = 添加服务器 server.add = 添加服务器
server.delete = 确定要删除这个服务器吗? server.delete = 确定要删除这个服务器吗?
server.hostname = 主机{0} server.hostname = 主机{0}
server.edit = 编辑服务器 server.edit = 编辑服务器
server.outdated = [crimson]服务器过旧[] server.outdated = [crimson]过旧的服务器![]
server.outdated.client = [crimson]客户端过旧[] server.outdated.client = [crimson]过旧的客户端![]
server.version = [lightgray]版本: {0} server.version = [lightgray]版本:{0} {1}
server.custombuild = [yellow]修改 server.custombuild = [yellow]定制
confirmban = 确认拉黑这玩家吗? confirmban = 确认你想拉黑这玩家吗?
confirmkick = 确定要踢出这个玩家吗? confirmkick = 确定你想要踢走这名玩家吗?
confirmunban = 确认要取消拉黑这玩家吗? confirmunban = 你确定你想要取消拉黑这玩家吗?
confirmadmin = 确认要添加这个玩家为管理员吗? confirmadmin = 你确定你想要使这名玩家成为一个管理员吗?
confirmunadmin = 确认要取消这个玩家的管理员身份吗? confirmunadmin = 你确定你想要删除这名玩家的管理员地位吗?
joingame.title = 加入游戏 joingame.title = 加入游戏
joingame.ip = IP joingame.ip = 地址
disconnect = 已断开 disconnect = 已断开
disconnect.data = 载入世界失败! disconnect.data = 读取世界数据失败!
connecting = [accent]连接中…… connecting = [accent]正在连接...
connecting.data = [accent]加载世界中…… connecting.data = [accent]正在加载世界数据...
server.port = 端口 server.port = 端口
server.addressinuse = 地址已经使用! server.addressinuse = 地址已经使用
server.invalidport = 无效的端口! server.invalidport = 无效的端口
server.error = [crimson]创建服务器错误:[accent]{0} server.error = [crimson]创建服务器错误:[accent]{0}
save.old = 这个存档属于旧版本游戏,无法继续使用。\n\n[LIGHT_GRAY]存档向下兼容将在 4.0 版本中实现。 save.old = 这个存档属于旧版本游戏,不再被使用。\n\n[LIGHT_GRAY]存档向下兼容将在完整的 4.0 版本中实现。
save.new = 新存档 save.new = 新存档
save.overwrite = 确认要覆盖这个存档吗? save.overwrite = 你确定你要覆盖这个存档吗?
overwrite = 覆盖 overwrite = 覆盖
save.none = 没有存档! save.none = 没有存档被找到
saveload = [accent]保存中…… saveload = [accent]正在保存...
savefail = 保存失败! savefail = 保存失败!
save.delete.confirm = 确认要删除这个存档吗? save.delete.confirm = 你确定你要删除这个存档吗?
save.delete = 删除 save.delete = 删除
save.export = 导出存档 save.export = 导出存档
save.import.invalid = [accent]存档无效! save.import.invalid = [accent]这个存档无效
save.import.fail = [crimson]导入存档失败:[accent]{0} save.import.fail = [crimson]导入存档失败:[accent]{0}
save.export.fail = [crimson]导出存档失败:[accent]{0} save.export.fail = [crimson]导出存档失败:[accent]{0}
save.import = 导入存档 save.import = 导入存档
save.newslot = 保存游戏 save.newslot = 保存的名称
save.rename = 重命名 save.rename = 重命名
save.rename.text = 新名 save.rename.text = 新名
selectslot = 选择一个存档。 selectslot = 选择一个存档。
slot = [accent]存档 {0} slot = [accent]存档 {0}
save.corrupted = [accent]存档损坏或无效!\n如果你刚刚升级了游戏那么这可能是因为存档格式改变了而[scarlet]不是[]bug 。 save.corrupted = [accent]存档损坏或无效!\n如果你刚刚升级了游戏那么这可能是因为存档格式改变了而[scarlet]不是[]bug 。
empty = <空> empty = <空>
on = on =
off = off =
save.autosave = 自动保存:{0} save.autosave = 自动保存:{0}
save.map = 地图:{0} save.map = 地图:{0}
save.wave = {0} save.wave = 波次 {0}
save.difficulty = 难度:{0} save.difficulty = 难度:{0}
save.date = 最后保存日期{0} save.date = 最后保存{0}
save.playtime = 游戏时间:{0} save.playtime = 游戏时间:{0}
warning = Warning. warning = 警告。
confirm = 确认 confirm = 确认
delete = 删除 delete = 删除
ok = 好的 ok = 好的
open = 打开 open = 打开
cancel = 取消 cancel = 取消
openlink = 打开链接 openlink = 打开链接
copylink = 删除链接 copylink = 复制链接
back = 返回 back = 返回
quit.confirm = 确认要退出? quit.confirm = 你确定你想要退出?
changelog.title = 更新日志 changelog.title = 更新日志
changelog.loading = 正在获取更新日志... changelog.loading = 正在获取更新日志...
changelog.error.android = [accent]注意更新日志有时在安卓 4.4 以下不工作。\n这是因为安卓系统的一个 bug changelog.error.android = [accent]注意更新日志有时在安卓 4.4 以下不工作。\n这是安卓系统内部的一个bug。
changelog.error.ios = [accent]iOS还不支持更新日志。 changelog.error.ios = [accent]更新日志当前在iOS中不被支持
changelog.error = [scarlet]获取更新日志失败!\n请检查你的网络。 changelog.error = [scarlet]获取更新日志失败!\n请检查你的网络。
changelog.current = [yellow][[Current version] changelog.current = [yellow][[当前版本]
changelog.latest = [accent][[Latest version] changelog.latest = [accent][[最新版本]
loading = [accent]加载中…… loading = [accent]正在加载...
saving = [accent]保存中…… saving = [accent]正在保存...
wave = [accent] {0} wave = [accent]波次 {0}
wave.waiting = 下一波将在 {0} 秒后到来 wave.waiting = [LIGHT_GRAY]下一波将在{0}秒后到来
waiting = 等待中……
waiting.players = 等待玩家中…… waiting.players = 等待玩家中……
wave.enemies = 剩下 [LIGHT_GRAY]{0} 敌人 waiting = [LIGHT_GRAY]正在等待...
wave.enemy = 剩下 [LIGHT_GRAY]{0} 敌人 wave.enemies = [LIGHT_GRAY]剩余 {0} 敌人
wave.enemy = [LIGHT_GRAY]剩余 {0} 个敌人
loadimage = 加载图片 loadimage = 加载图片
saveimage = 保存图片 saveimage = 保存图片
unknown = 未知 unknown = 未知
custom = 自定义 custom = 自定义
builtin = 内建的 builtin = 内建的
map.delete.confirm = 确认要删除地图吗?这个操作无法撤销 map.delete.confirm = 你确定你想要删除这张地图吗?这个操作无法取消
map.random = [accent]随机地图 map.random = [accent]随机地图
map.nospawn = 这个地图没有核心!请在编辑器中添加一个[ROYAL]蓝色[]的核心。 map.nospawn = 这个地图没有核心!请在编辑器中添加一个[ROYAL]蓝色[]的核心。
map.nospawn.pvp = 这个地图没有敌人的核心!请在编辑器中添加一个[ROYAL]红色[]的核心。 map.nospawn.pvp = 这个地图没有敌人的核心!请在编辑器中添加一个[ROYAL]红色[]的核心。
map.nospawn.attack = 这个地图没有敌人的核心!请在编辑中向地图添加一个[SCARLET]红色[]的核心。
map.invalid = 地图载入错误:地图文件可能已经损坏。 map.invalid = 地图载入错误:地图文件可能已经损坏。
editor.brush = 笔刷 editor.brush = 笔刷
editor.openin = 在编辑器中打开 editor.openin = 在编辑器中打开
editor.oregen = 生成矿石 editor.oregen = 矿石的生成
editor.oregen.info = 生成矿石: editor.oregen.info = 矿石的生成
editor.mapinfo = 地图详情 editor.mapinfo = 地图信息
editor.author = 作者: editor.author = 作者:
editor.description = 描述: editor.description = 描述:
editor.waves = Waves: editor.waves = 波数:
waves.title = Waves waves.title = 波数
waves.remove = Remove waves.remove = 去除
waves.never = <never> waves.never = <never>
waves.every = every waves.every =
waves.waves = wave(s) waves.waves =
waves.perspawn = per spawn waves.perspawn = 每次生成
waves.to = to waves.to =
waves.boss = Boss waves.boss = 首领Boos
waves.preview = Preview waves.preview = 预览
waves.edit = Edit... waves.edit = 编辑...
waves.copy = Copy to Clipboard waves.copy = 复制到剪贴板
waves.load = Load from Clipboard waves.load = 从剪贴板读取
waves.invalid = Invalid waves in clipboard. waves.invalid = 剪贴板中无效的波次信息。
waves.copied = Waves copied. waves.copied = 波次信息已复制。
editor.default = [LIGHT_GRAY]<Default> editor.default = [LIGHT_GRAY]<默认>
edit = Edit... edit = 编辑...
editor.name = editor.name =
editor.teams = editor.teams =
editor.elevation = 高度 editor.elevation = 高度
editor.errorload = Error loading file:\n[accent]{0} editor.errorload = 读取文件时出现错误:\n[accent]{0}
editor.errorsave = Error saving file:\n[accent]{0} editor.errorsave = 保存文件时出现错误:\n[accent]{0}
editor.errorname = Map has no name defined. editor.errorname = 地图没有被定义的名称。
editor.update = Update editor.update = 更新(Update
editor.randomize = Randomize editor.randomize = 随机化
editor.apply = Apply editor.apply = 应用
editor.generate = 生成 editor.generate = 生成
editor.resize = 调整 editor.resize = 调整大小
editor.loadmap = 载入地图 editor.loadmap = 载入地图
editor.savemap = 保存地图 editor.savemap = 保存地图
editor.saved = 已保存! editor.saved = 已保存!
editor.save.noname = 你的地图没有名字!在“地图信息”菜单里设置一个名字 editor.save.noname = 你的地图没有名字!在“地图信息”菜单里设置一个。
editor.save.overwrite = 你的地图覆盖了一个内建的地图!在“地图信息”菜单里重新设置一个的名 editor.save.overwrite = 你的地图覆盖了一个内建的地图!在“地图信息”菜单里重新设置一个不同的名
editor.import.exists = [scarlet]无法导入:[] 已经有一个叫 '{0}' 的内建地图存在 editor.import.exists = [scarlet]无法导入:[]名为‘{0}的内建地图存在
editor.import = 导入…… editor.import = 导入...
editor.importmap = 导入地图 editor.importmap = 导入地图
editor.importmap.description = 导入一个已经存在的地图 editor.importmap.description = 导入一个已经存在的地图
editor.importfile = 导入文件 editor.importfile = 导入文件
editor.importfile.description = 导入一个外置的地图文件 editor.importfile.description = 导入一个外置的地图文件
editor.importimage = 导入地形图像 editor.importimage = 导入地形图像
editor.importimage.description = 导入外置地图图像文件 editor.importimage.description = 导入一个外置地图图像文件
editor.export = 导出…… editor.export = 导出...
editor.exportfile = 导出文件 editor.exportfile = 导出文件
editor.exportfile.description = 导出一个地图文件 editor.exportfile.description = 导出一个地图文件
editor.exportimage = 导出一个地形文件 editor.exportimage = 导出一个地形文件
editor.exportimage.description = 导出一个地图图像文件 editor.exportimage.description = 导出一个地图图像文件
editor.loadimage = 导入地形 editor.loadimage = 导入地形
editor.saveimage = 导出地形 editor.saveimage = 导出地形
editor.unsaved = [scarlet]你有未保存的更改![]\n确定要退出 editor.unsaved = [scarlet]你有未保存的更改![]\n确定你想要要退出?
editor.resizemap = 调整地图 editor.resizemap = 调整地图大小
editor.mapname = 地图名 editor.mapname = 地图名
editor.overwrite = [accent]警告!\n这将会覆盖一个已经存在的地图。 editor.overwrite = [accent]警告!\n这将会覆盖一个已经存在的地图。
editor.overwrite.confirm = [scarlet]警告![] 存在同名地图,确定要覆盖? editor.overwrite.confirm = [scarlet]警告![]存在同名地图。你确定你想要覆盖?
editor.selectmap = 选择一个地图加载: editor.selectmap = 选择一个地图加载:
filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filters.empty = [LIGHT_GRAY]没有过滤器(filters)!用下方的按钮添加一个。
filter.distort = Distort filter.distort = 扭曲?(Distort
filter.noise = Noise filter.noise = 噪音(Noise
filter.ore = Ore filter.ore = 矿石(Ore
filter.rivernoise = River Noise filter.rivernoise = 河流噪音(River Noise
filter.scatter = Scatter filter.scatter = 散播(Scatter
filter.terrain = Terrain filter.terrain = 地形(Terrain
filter.option.scale = Scale filter.option.scale = 规模?(Scale
filter.option.chance = Chance filter.option.chance = 机会(Chance
filter.option.mag = Magnitude filter.option.mag = 大小?(Magnitude
filter.option.threshold = Threshold filter.option.threshold = 门槛?(Threshold
filter.option.circle-scale = Circle Scale filter.option.circle-scale = 圈规模?(Circle Scale
filter.option.octaves = Octaves filter.option.octaves = 八度?(Octaves
filter.option.falloff = Falloff filter.option.falloff = 减少?(Falloff
filter.option.block = Block filter.option.block = 方块
filter.option.floor = Floor filter.option.floor = 地面
filter.option.wall = Wall filter.option.wall =
filter.option.ore = Ore filter.option.ore = 矿石
filter.option.floor2 = Secondary Floor filter.option.floor2 = 第二地面?(Secondary Floor
filter.option.threshold2 = Secondary Threshold filter.option.threshold2 = 第二门槛?(Secondary Threshold
width = 宽度: width = 宽度:
height = 高度: height = 高度:
menu = 菜单 menu = 菜单
@@ -279,10 +281,11 @@ tutorial = 教程
editor = 编辑器 editor = 编辑器
mapeditor = 地图编辑器 mapeditor = 地图编辑器
donate = 捐赠 donate = 捐赠
abandon = Abandon abandon = 放弃
abandon.text = 这个区域和它的所有资源会被敌人没收. abandon.text = 这个区域和它的所有资源会被敌人没收.
locked = 已被锁定 locked = 已被锁定
complete = [LIGHT_GRAY]完成: complete = [LIGHT_GRAY]完成:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0} resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]最好: {0} bestwave = [LIGHT_GRAY]最好: {0}
launch = < 发射 > launch = < 发射 >
@@ -294,11 +297,11 @@ uncover = Uncover
configure = 设定 Loadout configure = 设定 Loadout
configure.locked = [LIGHT_GRAY]到达第 {0} 波\n才设定 loadout. configure.locked = [LIGHT_GRAY]到达第 {0} 波\n才设定 loadout.
zone.unlocked = [LIGHT_GRAY]{0} 已解锁。 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.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = 已被发现的资源: zone.resources = 已被发现的资源:
add = Add... add = Add...
boss.health = Boss Health boss.health = Boss 生命值
connectfail = [crimson]服务器连接失败: [accent]{0} connectfail = [crimson]服务器连接失败: [accent]{0}
error.unreachable = 服务器无法访问。 error.unreachable = 服务器无法访问。
error.invalidaddress = 地址无效。 error.invalidaddress = 地址无效。
@@ -308,13 +311,13 @@ error.alreadyconnected = 已连接。
error.mapnotfound = 找不到地图文件! error.mapnotfound = 找不到地图文件!
error.io = 网络 I/O 错误。 error.io = 网络 I/O 错误。
error.any = 未知网络错误。 error.any = 未知网络错误。
zone.groundZero.name = Ground Zero zone.groundZero.name = 零号地区
zone.craters.name = The Craters zone.craters.name = 陨石地带
zone.frozenForest.name = Frozen Forest zone.frozenForest.name = 冰冻森林
zone.ruinousShores.name = Ruinous Shores zone.ruinousShores.name = 毁灭海岸
zone.stainedMountains.name = Stained Mountains zone.stainedMountains.name = 绵延群山
zone.desolateRift.name = Desolate Rift zone.desolateRift.name = 荒芜裂谷
zone.nuclearComplex.name = Nuclear Production Complex zone.nuclearComplex.name = 核能生产
settings.language = 语言 settings.language = 语言
settings.reset = 恢复默认 settings.reset = 恢复默认
settings.rebind = 重新绑定 settings.rebind = 重新绑定
@@ -333,31 +336,30 @@ no = 不
info.title = [accent]详情 info.title = [accent]详情
error.title = [crimson]发生了一个错误 error.title = [crimson]发生了一个错误
error.crashtitle = 发生了一个错误 error.crashtitle = 发生了一个错误
blocks.outputspeed = Drill Speed: {0}/s blocks.input = Input
blocks.efficiency = Efficiency: {0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY]??? blocks.booster = Booster
blocks.blockinfo = 方块详情 block.unknown = [LIGHT_GRAY]???
blocks.powerbalance = Power: {0}
blocks.poweroutput = Power Output: {0}
blocks.powercapacity = 能量容量 blocks.powercapacity = 能量容量
blocks.powershot = 能量/发射 blocks.powershot = 能量/发射
blocks.targetsair = 攻击空中单位 blocks.targetsair = 攻击空中单位
blocks.targetsground = Targets Ground blocks.targetsground = 攻击地面单位
blocks.items = Items: {0}
blocks.itemsmoved = 移动速度 blocks.itemsmoved = 移动速度
blocks.launchtime = 发射间隔时间
blocks.shootrange = 范围 blocks.shootrange = 范围
blocks.size = 尺寸 blocks.size = 尺寸
blocks.liquidcapacity = 液体容量 blocks.liquidcapacity = 液体容量
blocks.maxitemssecond = 最大物品数量
blocks.powerrange = 能量范围 blocks.powerrange = 能量范围
blocks.poweruse = 能量使用 blocks.poweruse = 能量使用
blocks.powerdamage = 功率/损伤 blocks.powerdamage = 功率/损伤
blocks.inputitemcapacity = 最大输入
blocks.outputitemcapacity = 最大输出
blocks.itemcapacity = 物品容量 blocks.itemcapacity = 物品容量
blocks.basepowergeneration = 基础能源输出 blocks.basepowergeneration = 基础能源输出
blocks.powertransferspeed = 能量传输 blocks.powertransferspeed = 能量传输
blocks.craftspeed = 生产速度 blocks.craftspeed = 生产速度
blocks.productiontime = 生产时间
blocks.repairtime = 方块完全修复时间
blocks.speedincrease = 提速
blocks.range = 范围
blocks.inputliquid = 液体输入 blocks.inputliquid = 液体输入
blocks.inputliquidaux = 辅助液体 blocks.inputliquidaux = 辅助液体
blocks.inputitem = 物品输入 blocks.inputitem = 物品输入
@@ -365,31 +367,40 @@ blocks.inputitems = 物品输入
blocks.outputitem = 物品输出 blocks.outputitem = 物品输出
blocks.drilltier = 可钻探矿物 blocks.drilltier = 可钻探矿物
blocks.drillspeed = 基础钻探速度 blocks.drillspeed = 基础钻探速度
blocks.maxunits = Max Active Units blocks.boosteffect = 加成影响
blocks.liquidoutput = 液体输出 blocks.maxunits = 最大单位数量
blocks.liquidoutputspeed = 液体输出速度
blocks.liquiduse = 液体使用速度
blocks.coolant = 冷却剂
blocks.liquid = Liquid
blocks.coolantuse = 冷却剂使用速度
blocks.inputliquidfuel = 液体燃料输入
blocks.liquidfueluse = 液体燃料使用速度
blocks.boostitem = 强化物件
blocks.boostliquid = 强化液体
blocks.health = 生命值 blocks.health = 生命值
blocks.heat = Heat blocks.heat = 热量
blocks.power = 电力 blocks.power = 电力
blocks.progress = Build Progress blocks.progress = 制造进度
blocks.spawned = Units: {0}/{1} blocks.spawned = 单位数量: {0}/{1}
blocks.power.satisfaction = 电力见面 blocks.power.satisfaction = 电力输入
blocks.inaccuracy = 误差 blocks.inaccuracy = 误差
blocks.shots = 发射数 blocks.shots = 发射数
blocks.reload = 重新装弹 blocks.reload = 重新装弹
blocks.inputfuel = 燃料
blocks.fuelburntime = 燃料燃烧时间
blocks.inputcapacity = 输入容量
blocks.outputcapacity = 输出容量
blocks.ammo = 子弹 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.blocks = 方块
unit.powersecond = 能量单位/秒 unit.powersecond = 能量单位/秒
unit.liquidsecond = 液体单位/秒 unit.liquidsecond = 液体单位/秒
@@ -398,6 +409,9 @@ unit.liquidunits = 液体单位
unit.powerunits = 能量单位 unit.powerunits = 能量单位
unit.degrees = unit.degrees =
unit.seconds = unit.seconds =
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = 物品 unit.items = 物品
category.general = 普通 category.general = 普通
category.power = 能量 category.power = 能量
@@ -406,15 +420,16 @@ category.items = 物品
category.crafting = 制造 category.crafting = 制造
category.shooting = 发射 category.shooting = 发射
category.optional = 可选的增强物品 category.optional = 可选的增强物品
setting.shadows.name = Shadows setting.landscape.name = 锁定横屏
setting.animatedwater.name = Animated Water setting.shadows.name = 影子
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] setting.animatedwater.name = 流动的水
setting.antialias.name = 抗锯齿[LIGHT_GRAY] (需要重新启动)[]
setting.indicators.name = 队友指示器 setting.indicators.name = 队友指示器
setting.autotarget.name = 自动发射 setting.autotarget.name = 自动发射
setting.fpscap.name = 最高 FPS setting.fpscap.name = 最高 FPS
setting.fpscap.none = setting.fpscap.none =
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.swapdiagonal.name = Always Diagonal Placement setting.swapdiagonal.name = 总是自动铺设
setting.difficulty.training = 训练 setting.difficulty.training = 训练
setting.difficulty.easy = 简单 setting.difficulty.easy = 简单
setting.difficulty.normal = 普通 setting.difficulty.normal = 普通
@@ -427,10 +442,11 @@ setting.sensitivity.name = 控制器灵敏度
setting.saveinterval.name = 自动保存间隔 setting.saveinterval.name = 自动保存间隔
setting.seconds = {0} 秒 setting.seconds = {0} 秒
setting.fullscreen.name = 全屏 setting.fullscreen.name = 全屏
setting.borderless.name = Borderless Window setting.borderless.name = 无边界
setting.fps.name = 显示 FPS setting.fps.name = 显示 FPS
setting.vsync.name = 帧同步 setting.vsync.name = 帧同步
setting.lasers.name = 显示能量射线 setting.lasers.name = 显示能量射线
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = 显示小地图 setting.minimap.name = 显示小地图
setting.musicvol.name = 音乐音量 setting.musicvol.name = 音乐音量
setting.mutemusic.name = 静音 setting.mutemusic.name = 静音
@@ -452,7 +468,7 @@ keybind.screenshot.name = 地图截图
keybind.move_x.name = 水平移动 keybind.move_x.name = 水平移动
keybind.move_y.name = 垂直移动 keybind.move_y.name = 垂直移动
keybind.select.name = 选择 keybind.select.name = 选择
keybind.diagonal_placement.name = Diagonal Placement keybind.diagonal_placement.name = 自动铺设
keybind.pick.name = 选择方块 keybind.pick.name = 选择方块
keybind.break_block.name = 破坏方块 keybind.break_block.name = 破坏方块
keybind.deselect.name = 取消 keybind.deselect.name = 取消
@@ -474,7 +490,7 @@ keybind.drop_unit.name = 掉落单位
keybind.zoom_minimap.name = 小地图缩放 keybind.zoom_minimap.name = 小地图缩放
mode.help.title = 模式说明 mode.help.title = 模式说明
mode.survival.name = 生存 mode.survival.name = 生存
mode.survival.description = 正常的游戏模式,有限的资源和自动入射波。 mode.survival.description = 正常的游戏模式,有限的资源和自动波
mode.sandbox.name = 沙盒 mode.sandbox.name = 沙盒
mode.sandbox.description = 无限的资源,不会自动生成敌人。 mode.sandbox.description = 无限的资源,不会自动生成敌人。
mode.freebuild.name = 自由建造 mode.freebuild.name = 自由建造
@@ -482,7 +498,19 @@ mode.freebuild.description = 有限的资源,不会自动生成敌人。
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = 和本地玩家对战. mode.pvp.description = 和本地玩家对战.
mode.attack.name = 攻击 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.item.name = 物品
content.liquid.name = 液体 content.liquid.name = 液体
content.unit.name = 部队 content.unit.name = 部队
@@ -494,7 +522,7 @@ item.lead.name = 铅
item.lead.description = 一种基本的起始材料。被广泛用于电子设备和液体运输方块。 item.lead.description = 一种基本的起始材料。被广泛用于电子设备和液体运输方块。
item.coal.name = item.coal.name =
item.coal.description = 一种常见并容易获得的燃料。 item.coal.description = 一种常见并容易获得的燃料。
item.graphite.name = Graphite item.graphite.name = 石墨
item.titanium.name = item.titanium.name =
item.titanium.description = 一种罕见的超轻金属,被广泛运用于液体运输、钻头和飞机。 item.titanium.description = 一种罕见的超轻金属,被广泛运用于液体运输、钻头和飞机。
item.thorium.name = item.thorium.name =
@@ -507,39 +535,39 @@ item.phase-fabric.name = 相织物
item.phase-fabric.description = 一种接近0重量的物质用于先进的电子技术和自我修复技术。 item.phase-fabric.description = 一种接近0重量的物质用于先进的电子技术和自我修复技术。
item.surge-alloy.name = 巨浪合金 item.surge-alloy.name = 巨浪合金
item.surge-alloy.description = 一种具有独特电气性能的高级合金。 item.surge-alloy.description = 一种具有独特电气性能的高级合金。
item.spore-pod.name = Spore Pod item.spore-pod.name = 孢子荚
item.spore-pod.description = Used for conversion into oil, explosives and fuel. item.spore-pod.description = 一种用于制造石油,炸药及燃料的生物质。
item.sand.name = item.sand.name =
item.sand.description = 一种常见的材料,广泛用于冶炼,包括制作合金和助熔剂。 item.sand.description = 一种常见的材料,广泛用于冶炼,包括制作合金和助熔剂。
item.blast-compound.name = 爆炸混合物 item.blast-compound.name = 爆炸混合物
item.blast-compound.description = 一种用于炸弹和炸药的挥发性混合物。虽然它可以作为燃料燃烧,但不建议这样做。 item.blast-compound.description = 一种用于炸弹和炸药的挥发性混合物。虽然它可以作为燃料燃烧,但不建议这样做。
item.pyratite.name = item.pyratite.name =
item.pyratite.description = 一种燃烧武器中使用的极易燃物质。 item.pyratite.description = 一种燃烧武器中使用的极易燃物质。
item.metaglass.name = Metaglass item.metaglass.name = 钢化玻璃
item.metaglass.description = 一种超级强硬的复合玻璃。通常用来传送和收藏液体 item.metaglass.description = 一种超级强硬的复合玻璃。通常用来传送和收藏液体
item.scrap.name = Scrap item.scrap.name = 废料
item.scrap.description = Leftover remnants of old structures and units. Contains trace amounts of many different metals. item.scrap.description = 一种废弃的建筑物及废弃单位的残骸,富含多种金属元素。
liquid.water.name = liquid.water.name =
liquid.slag.name = Slag liquid.slag.name = 岩浆
liquid.oil.name = 石油 liquid.oil.name = 石油
liquid.cryofluid.name = 冷冻液 liquid.cryofluid.name = 冷冻液
mech.alpha-mech.name = Alpha mech.alpha-mech.name = 阿尔法
mech.alpha-mech.weapon = 重型机枪 mech.alpha-mech.weapon = 重型机枪
mech.alpha-mech.ability = 无人机群 mech.alpha-mech.ability = 无人机群
mech.alpha-mech.description = 标准的机甲。具有不错的速度和伤害输出;,可以制造多达 3 架无人机以提高进攻能力。 mech.alpha-mech.description = 标准的机甲。具有不错的速度和伤害输出;,可以制造多达 3 架无人机以提高进攻能力。
mech.delta-mech.name = Delta mech.delta-mech.name = 德尔塔
mech.delta-mech.weapon = 电弧发电机 mech.delta-mech.weapon = 电弧发电机
mech.delta-mech.ability = 放电 mech.delta-mech.ability = 放电
mech.delta-mech.description = 一种快速,轻便的机甲,一击即退。对结构造成的伤害很小,但可以用弧形闪电武器很快杀死大量敌方单位。 mech.delta-mech.description = 一种快速,轻便的机甲,一击即退。对结构造成的伤害很小,但可以用弧形闪电武器很快杀死大量敌方单位。
mech.tau-mech.name = Tau mech.tau-mech.name = 医疗机
mech.tau-mech.weapon = 重构激光 mech.tau-mech.weapon = 重构激光
mech.tau-mech.ability = 修复 mech.tau-mech.ability = 修复
mech.tau-mech.description = 后勤机甲。治疗友军。可以熄灭火焰并治疗一定范围内的友军。 mech.tau-mech.description = 后勤机甲。治疗友军。可以熄灭火焰并治疗一定范围内的友军。
mech.omega-mech.name = Omega mech.omega-mech.name = 欧米茄
mech.omega-mech.weapon = 导弹群 mech.omega-mech.weapon = 导弹群
mech.omega-mech.ability = 配置装甲 mech.omega-mech.ability = 配置装甲
mech.omega-mech.description = 一种装甲厚重的机甲,用于在前线攻击。它的护甲可以阻挡高达 90% 的伤害。 mech.omega-mech.description = 一种装甲厚重的机甲,用于在前线攻击。它的护甲可以阻挡高达 90% 的伤害。
mech.dart-ship.name = Dart mech.dart-ship.name = 飞镖
mech.dart-ship.weapon = 机枪 mech.dart-ship.weapon = 机枪
mech.dart-ship.description = 标准飞船。快速轻便,但攻击能力低,采矿速度快。 mech.dart-ship.description = 标准飞船。快速轻便,但攻击能力低,采矿速度快。
mech.javelin-ship.name = 标枪 mech.javelin-ship.name = 标枪
@@ -549,7 +577,7 @@ mech.javelin-ship.ability = 放电助推器
mech.trident-ship.name = 三叉戟 mech.trident-ship.name = 三叉戟
mech.trident-ship.description = 一种重型轰炸机。有厚装甲。 mech.trident-ship.description = 一种重型轰炸机。有厚装甲。
mech.trident-ship.weapon = 炸弹 mech.trident-ship.weapon = 炸弹
mech.glaive-ship.name = Glaive mech.glaive-ship.name = 阔剑
mech.glaive-ship.description = 一种大型,装甲厚重的武装直升机。配备燃烧机枪。有优秀的加速能力和最快的速度。 mech.glaive-ship.description = 一种大型,装甲厚重的武装直升机。配备燃烧机枪。有优秀的加速能力和最快的速度。
mech.glaive-ship.weapon = 火焰机枪 mech.glaive-ship.weapon = 火焰机枪
item.explosiveness = [LIGHT_GRAY]爆炸性:{0} item.explosiveness = [LIGHT_GRAY]爆炸性:{0}
@@ -558,11 +586,12 @@ item.radioactivity = [LIGHT_GRAY]放射性:{0}
unit.health = [LIGHT_GRAY]生命值:{0} unit.health = [LIGHT_GRAY]生命值:{0}
unit.speed = [LIGHT_GRAY]速度:{0} unit.speed = [LIGHT_GRAY]速度:{0}
mech.weapon = [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.itemcapacity = [LIGHT_GRAY]物品容量:{0}
mech.minespeed = [LIGHT_GRAY]采矿速度:{0} mech.minespeed = [LIGHT_GRAY]采矿速度:{0}
mech.minepower = [LIGHT_GRAY]采矿力量:{0} mech.minepower = [LIGHT_GRAY]采矿力量:{0}
mech.ability = [LIGHT_GRAY]能力:{0} mech.ability = [LIGHT_GRAY]能力:{0}
mech.buildspeed = [LIGHT_GRAY]建造速度:{0}%
liquid.heatcapacity = [LIGHT_GRAY]热容量:{0} liquid.heatcapacity = [LIGHT_GRAY]热容量:{0}
liquid.viscosity = [LIGHT_GRAY]粘度:{0} liquid.viscosity = [LIGHT_GRAY]粘度:{0}
liquid.temperature = [LIGHT_GRAY]温度:{0} liquid.temperature = [LIGHT_GRAY]温度:{0}
@@ -583,15 +612,15 @@ block.scrap-wall-large.name = Large Scrap Wall
block.scrap-wall-huge.name = Huge Scrap Wall block.scrap-wall-huge.name = Huge Scrap Wall
block.scrap-wall-gigantic.name = Gigantic Scrap Wall block.scrap-wall-gigantic.name = Gigantic Scrap Wall
block.thruster.name = Thruster block.thruster.name = Thruster
block.kiln.name = Kiln block.kiln.name = 熔炉
block.kiln.description = Smelts sand and lead into metaglass. Requires small amounts of power. block.kiln.description = 将铅和沙子熔炼成钢化玻璃,需要少量电力。
block.graphite-press.name = Graphite Press block.graphite-press.name = 石墨压缩机
block.multi-press.name = Multi-Press block.multi-press.name = 大型石墨压缩机
block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.constructing = {0}\n[LIGHT_GRAY](建造中)
block.spawn.name = 敌人出生点 block.spawn.name = 敌人出生点
block.core-shard.name = Core: Shard block.core-shard.name = 小型核心
block.core-foundation.name = Core: Foundation block.core-foundation.name = 中型核心
block.core-nucleus.name = Core: Nucleus block.core-nucleus.name = 大型核心
block.deepwater.name = 深水 block.deepwater.name = 深水
block.water.name = block.water.name =
block.tainted-water.name = Tainted Water block.tainted-water.name = Tainted Water
@@ -627,8 +656,8 @@ block.magmarock.name = Magma Rock
block.cliffs.name = Cliffs block.cliffs.name = Cliffs
block.copper-wall.name = 铜墙 block.copper-wall.name = 铜墙
block.copper-wall-large.name = 大型铜墙 block.copper-wall-large.name = 大型铜墙
block.titanium-wall.name = Titanium Wall block.titanium-wall.name = 钛墙
block.titanium-wall-large.name = Large Titanium Wall block.titanium-wall-large.name = 大型钛墙
block.phase-wall.name = 相织布墙 block.phase-wall.name = 相织布墙
block.phase-wall-large.name = 大型相织布墙 block.phase-wall-large.name = 大型相织布墙
block.thorium-wall.name = 钍墙 block.thorium-wall.name = 钍墙
@@ -636,8 +665,8 @@ block.thorium-wall-large.name = 大型钍墙
block.door.name = block.door.name =
block.door-large.name = 大门 block.door-large.name = 大门
block.duo.name = 双管炮 block.duo.name = 双管炮
block.scorch.name = Scorch block.scorch.name = 火焰炮
block.scatter.name = Scatter block.scatter.name = 分裂炮
block.hail.name = 冰雹炮 block.hail.name = 冰雹炮
block.lancer.name = 蓝瑟炮 block.lancer.name = 蓝瑟炮
block.conveyor.name = 传送带 block.conveyor.name = 传送带
@@ -655,29 +684,29 @@ block.pulverizer.name = 粉碎机
block.cryofluidmixer.name = 冷冻液混合器 block.cryofluidmixer.name = 冷冻液混合器
block.melter.name = 熔炉 block.melter.name = 熔炉
block.incinerator.name = 焚化炉 block.incinerator.name = 焚化炉
block.spore-press.name = Spore Press block.spore-press.name = 孢子压缩机
block.separator.name = 分离机 block.separator.name = 分离机
block.power-node.name = 能量节点 block.power-node.name = 能量节点
block.power-node-large.name = 大型能量节点 block.power-node-large.name = 大型能量节点
block.surge-tower.name = Surge Tower block.surge-tower.name = 远程输电塔
block.battery.name = 电池 block.battery.name = 电池
block.battery-large.name = 大型电池 block.battery-large.name = 大型电池
block.combustion-generator.name = 燃烧发电机 block.combustion-generator.name = 燃烧发电机
block.turbine-generator.name = 涡轮发电机 block.turbine-generator.name = 涡轮发电机
block.differential-generator.name = Differential Generator block.differential-generator.name = 差动发电机
block.impact-reactor.name = Impact Reactor block.impact-reactor.name = 冲击反应堆
block.mechanical-drill.name = 机械钻头 block.mechanical-drill.name = 机械钻头
block.pneumatic-drill.name = 气动钻头 block.pneumatic-drill.name = 气动钻头
block.laser-drill.name = 激光钻头 block.laser-drill.name = 激光钻头
block.water-extractor.name = 抽水机 block.water-extractor.name = 抽水机
block.cultivator.name = 耕种机 block.cultivator.name = 耕种机
block.alpha-dart-mech-pad.name = Alpha-Dart Mech Pad block.alpha-dart-mech-pad.name = 阿尔法-飞镖 机甲平台
block.delta-mech-pad.name = Delta 机甲平台 block.delta-mech-pad.name = 德尔塔 机甲平台
block.javelin-ship-pad.name = 标枪 机甲平台 block.javelin-ship-pad.name = 标枪 机甲平台
block.trident-ship-pad.name = 三叉戟 机甲平台 block.trident-ship-pad.name = 三叉戟 机甲平台
block.glaive-ship-pad.name = Glaive 机甲平台 block.glaive-ship-pad.name = 阔剑 机甲平台
block.omega-mech-pad.name = Omega 机甲平台 block.omega-mech-pad.name = 欧米茄 机甲平台
block.tau-mech-pad.name = Tau 机甲平台 block.tau-mech-pad.name = 医疗机 机甲平台
block.conduit.name = 导管 block.conduit.name = 导管
block.mechanical-pump.name = 机械泵 block.mechanical-pump.name = 机械泵
block.item-source.name = 物品源 block.item-source.name = 物品源
@@ -704,7 +733,7 @@ block.phantom-factory.name = 鬼怪无人机工厂
block.wraith-factory.name = 幻影战机工厂 block.wraith-factory.name = 幻影战机工厂
block.ghoul-factory.name = 食尸鬼轰炸机工厂 block.ghoul-factory.name = 食尸鬼轰炸机工厂
block.dagger-factory.name = 尖刀机甲工厂 block.dagger-factory.name = 尖刀机甲工厂
block.crawler-factory.name = Crawler Mech Factory block.crawler-factory.name = 爬行者机甲工厂
block.titan-factory.name = 泰坦机甲工厂 block.titan-factory.name = 泰坦机甲工厂
block.fortress-factory.name = 堡垒机甲工厂 block.fortress-factory.name = 堡垒机甲工厂
block.revenant-factory.name = 亡魂战机工厂 block.revenant-factory.name = 亡魂战机工厂
@@ -722,6 +751,7 @@ block.blast-drill.name = 爆破钻头
block.thermal-pump.name = 热能泵 block.thermal-pump.name = 热能泵
block.thermal-generator.name = 热能发电机 block.thermal-generator.name = 热能发电机
block.alloy-smelter.name = 合金冶炼厂 block.alloy-smelter.name = 合金冶炼厂
block.mender.name = Mender
block.mend-projector.name = 修理投影器 block.mend-projector.name = 修理投影器
block.surge-wall.name = 波动墙 block.surge-wall.name = 波动墙
block.surge-wall-large.name = 大型波动墙 block.surge-wall-large.name = 大型波动墙
@@ -735,8 +765,9 @@ block.rtg-generator.name = RTG 发电机
block.spectre.name = 幽灵 block.spectre.name = 幽灵
block.meltdown.name = 熔毁 block.meltdown.name = 熔毁
block.container.name = 容器 block.container.name = 容器
block.launch-pad.name = Launch Pad block.launch-pad.name = 发射台
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished. block.launch-pad.description = 不通过核心发射物体。尚未完成。
block.launch-pad-large.name = 大型发射台
team.blue.name = team.blue.name =
team.red.name = team.red.name =
team.orange.name = team.orange.name =
@@ -749,7 +780,7 @@ unit.phantom.name = 鬼怪无人机
unit.phantom.description = 一种先进的无人机单位。自动开采矿石,收集物品和修理块。比初始无人机有效得多。 unit.phantom.description = 一种先进的无人机单位。自动开采矿石,收集物品和修理块。比初始无人机有效得多。
unit.dagger.name = 尖刀 unit.dagger.name = 尖刀
unit.dagger.description = 基础的地面单位,在蜂群中很有用。 unit.dagger.description = 基础的地面单位,在蜂群中很有用。
unit.crawler.name = Crawler unit.crawler.name = 爬行者
unit.titan.name = 泰坦 unit.titan.name = 泰坦
unit.titan.description = 高级的有武装地面单位,使用电石作为弹药.攻击地面单位和空中单位. unit.titan.description = 高级的有武装地面单位,使用电石作为弹药.攻击地面单位和空中单位.
unit.ghoul.name = 食尸鬼轰炸机 unit.ghoul.name = 食尸鬼轰炸机
@@ -759,11 +790,11 @@ unit.wraith.description = 一种快速,打了就跑的截击机。
unit.fortress.name = 堡垒 unit.fortress.name = 堡垒
unit.fortress.description = 一种重炮地面部队。 unit.fortress.description = 一种重炮地面部队。
unit.revenant.name = 亡魂 unit.revenant.name = 亡魂
unit.eruptor.name = Eruptor unit.eruptor.name = 暴君
unit.chaos-array.name = Chaos Array unit.chaos-array.name = 混沌者
unit.eradicator.name = Eradicator unit.eradicator.name = 根除者
unit.lich.name = Lich unit.lich.name = 尸鬼
unit.reaper.name = Reaper unit.reaper.name = 死神
tutorial.begin = 你的任务是消灭[LIGHT_GRAY] 敌人 [].\n\n首先开始[accent] 采集铜矿 []。点击核心附近的铜矿开始。 tutorial.begin = 你的任务是消灭[LIGHT_GRAY] 敌人 [].\n\n首先开始[accent] 采集铜矿 []。点击核心附近的铜矿开始。
tutorial.drill = 手动采矿效率低.\n[accent] 钻头 []可以自动采矿.\n放一个在铜矿上吧. tutorial.drill = 手动采矿效率低.\n[accent] 钻头 []可以自动采矿.\n放一个在铜矿上吧.
tutorial.conveyor = [accent]传送带[] 可以把物资传送到核心.\n请造一个传送线从钻头到核心. tutorial.conveyor = [accent]传送带[] 可以把物资传送到核心.\n请造一个传送线从钻头到核心.
@@ -800,7 +831,7 @@ block.overdrive-projector.description = 提高附近建筑物的速度,如钻
block.force-projector.description = 自身周围创建一个六边形力场,保护建筑物和内部单位免受子弹的伤害。 block.force-projector.description = 自身周围创建一个六边形力场,保护建筑物和内部单位免受子弹的伤害。
block.shock-mine.description = 伤害踩到它的敌人。敌人几乎看不到它。 block.shock-mine.description = 伤害踩到它的敌人。敌人几乎看不到它。
block.duo.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.arc.description = 小型炮塔,发射电弧。
block.hail.description = 小型炮兵炮台。 block.hail.description = 小型炮兵炮台。
block.lancer.description = 中型炮塔,发射带电的电子束。 block.lancer.description = 中型炮塔,发射带电的电子束。
@@ -827,7 +858,7 @@ block.blast-mixer.description = 用油将硫转化为不易燃但更具爆炸性
block.cryofluidmixer.description = 水和钛结合到低温流体中,冷却效率更高。 block.cryofluidmixer.description = 水和钛结合到低温流体中,冷却效率更高。
block.melter.description = 石头加热到很高的温度以获得熔岩。 block.melter.description = 石头加热到很高的温度以获得熔岩。
block.incinerator.description = 用于除掉任何多余的物品或液体。 block.incinerator.description = 用于除掉任何多余的物品或液体。
block.spore-press.description = Compresses spore pods into oil. block.spore-press.description = 压缩孢子荚得到石油。
block.separator.description = 将石头暴露在水压下,以获得石头中含有的各种矿物质。 block.separator.description = 将石头暴露在水压下,以获得石头中含有的各种矿物质。
block.power-node.description = 连接节点传输电源。最多可连接四个电源,接收器或节点。节点将从任何相邻块接收电力或向其供电。 block.power-node.description = 连接节点传输电源。最多可连接四个电源,接收器或节点。节点将从任何相邻块接收电力或向其供电。
block.power-node-large.description = 传输径大于电源节点,最多可连接六个电源,接收器或节点。 block.power-node-large.description = 传输径大于电源节点,最多可连接六个电源,接收器或节点。

View File

@@ -14,7 +14,6 @@ screenshot = 截圖保存到{0}
gameover = 遊戲結束 gameover = 遊戲結束
gameover.pvp = [accent]{0}[]隊獲勝! gameover.pvp = [accent]{0}[]隊獲勝!
highscore = [accent]新的高分紀錄! highscore = [accent]新的高分紀錄!
stat.wave = 打敗的波次:[accent]{0} stat.wave = 打敗的波次:[accent]{0}
stat.enemiesDestroyed = 摧毀的敵人:[accent]{0} stat.enemiesDestroyed = 摧毀的敵人:[accent]{0}
stat.built = 建設的建築:[accent]{0} stat.built = 建設的建築:[accent]{0}
@@ -22,10 +21,8 @@ stat.destroyed = 摧毀的建築:[accent]{0}
stat.deconstructed = 移除的建築:[accent]{0} stat.deconstructed = 移除的建築:[accent]{0}
stat.delivered = 發射的資源: stat.delivered = 發射的資源:
stat.rank = 最終排名:[accent]{0} stat.rank = 最終排名:[accent]{0}
placeline = 你選擇了一個方塊。\n[accent]按住你的手指幾秒鐘[]並拖動以[accent]直線放置方塊[]。\n試試吧。 placeline = 你選擇了一個方塊。\n[accent]按住你的手指幾秒鐘[]並拖動以[accent]直線放置方塊[]。\n試試吧。
removearea = 你選擇了移除模式。\n[accent]按住你的手指幾秒鐘[]並拖動以[accent]移除矩形中的方塊[]。\n試試吧。 removearea = 你選擇了移除模式。\n[accent]按住你的手指幾秒鐘[]並拖動以[accent]移除矩形中的方塊[]。\n試試吧。
launcheditems = [accent]發射了的物品 launcheditems = [accent]發射了的物品
map.delete = 確認要刪除「[accent]{0}[]」地圖嗎? map.delete = 確認要刪除「[accent]{0}[]」地圖嗎?
level.highscore = 最高分:[accent]{0} level.highscore = 最高分:[accent]{0}
@@ -43,6 +40,7 @@ addplayers = 增加/移除玩家
customgame = 自訂遊戲 customgame = 自訂遊戲
newgame = 新遊戲 newgame = 新遊戲
none = 〈沒有〉 none = 〈沒有〉
minimap = Minimap
close = 關閉 close = 關閉
quit = 退出 quit = 退出
maps = 地圖 maps = 地圖
@@ -185,6 +183,7 @@ map.delete.confirm = 確認要刪除地圖嗎?此操作無法撤回!
map.random = [accent]隨機地圖 map.random = [accent]隨機地圖
map.nospawn = 這個地圖沒有核心!請在編輯器中添加一個[ROYAL]藍色[]的核心。 map.nospawn = 這個地圖沒有核心!請在編輯器中添加一個[ROYAL]藍色[]的核心。
map.nospawn.pvp = 這個地圖沒有核心讓敵人重生!請在編輯器中添加一個[SCARLET]紅色[]的核心。 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 = 地圖載入錯誤:地圖可能已經損壞。 map.invalid = 地圖載入錯誤:地圖可能已經損壞。
editor.brush = 粉刷 editor.brush = 粉刷
editor.openin = 在編輯器中開啟 editor.openin = 在編輯器中開啟
@@ -282,11 +281,11 @@ tutorial = 教學
editor = 地圖編輯器 editor = 地圖編輯器
mapeditor = 地圖編輯器 mapeditor = 地圖編輯器
donate = 贊助 donate = 贊助
abandon = 放棄 abandon = 放棄
abandon.text = 此區域及其所有資源將會丟失給敵人。 abandon.text = 此區域及其所有資源將會丟失給敵人。
locked = 鎖定 locked = 鎖定
complete = [LIGHT_GRAY]完成: complete = [LIGHT_GRAY]完成:
zone.requirement = Wave {0} in zone {1}
resume = 繼續區域:\n[LIGHT_GRAY]{0} resume = 繼續區域:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]高分:{0} bestwave = [LIGHT_GRAY]高分:{0}
launch = 發射 launch = 發射
@@ -298,12 +297,11 @@ uncover = 揭露
configure = 配置裝載 configure = 配置裝載
configure.locked = [LIGHT_GRAY]到達波次{0}\n以配置裝載。 configure.locked = [LIGHT_GRAY]到達波次{0}\n以配置裝載。
zone.unlocked = [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.config.complete = 到達波次{0}\n裝載配置已解鎖。
zone.resources = 檢測到的資源: zone.resources = 檢測到的資源:
add = 新增…… add = 新增……
boss.health = 頭目血量 boss.health = 頭目血量
connectfail = [crimson]無法連線到伺服器:[accent]{0} connectfail = [crimson]無法連線到伺服器:[accent]{0}
error.unreachable = 無法到達伺服器。 error.unreachable = 無法到達伺服器。
error.invalidaddress = 無效地址。 error.invalidaddress = 無效地址。
@@ -313,7 +311,6 @@ error.alreadyconnected = 已連接。
error.mapnotfound = 找不到地圖! error.mapnotfound = 找不到地圖!
error.io = 網絡輸入輸出錯誤。 error.io = 網絡輸入輸出錯誤。
error.any = 未知網絡錯誤。 error.any = 未知網絡錯誤。
zone.groundZero.name = 歸零地 zone.groundZero.name = 歸零地
zone.craters.name = 隕石坑 zone.craters.name = 隕石坑
zone.frozenForest.name = 冰凍森林 zone.frozenForest.name = 冰凍森林
@@ -321,7 +318,6 @@ zone.ruinousShores.name = 毀滅性的海岸
zone.stainedMountains.name = 染山 zone.stainedMountains.name = 染山
zone.desolateRift.name = 荒涼的裂痕 zone.desolateRift.name = 荒涼的裂痕
zone.nuclearComplex.name = 核生產綜合體 zone.nuclearComplex.name = 核生產綜合體
settings.language = 語言 settings.language = 語言
settings.reset = 重設為預設設定 settings.reset = 重設為預設設定
settings.rebind = 重新綁定 settings.rebind = 重新綁定
@@ -340,63 +336,59 @@ no = 否
info.title = [accent]資訊 info.title = [accent]資訊
error.title = [crimson]發生錯誤 error.title = [crimson]發生錯誤
error.crashtitle = 發生錯誤 error.crashtitle = 發生錯誤
blocks.outputspeed = 鑽頭速度:{0}/秒 blocks.input = Input
blocks.efficiency = 效率:{0}% blocks.output = Output
blocks.unknown = [LIGHT_GRAY] blocks.booster = Booster
blocks.blockinfo = 方塊資訊 block.unknown = [LIGHT_GRAY]
blocks.powerbalance = 能量變化:{0}
blocks.poweroutput = 能量輸出:{0}
blocks.powercapacity = 蓄電量 blocks.powercapacity = 蓄電量
blocks.powershot = 能量/射擊 blocks.powershot = 能量/射擊
blocks.targetsair = 攻擊空中目標 blocks.targetsair = 攻擊空中目標
blocks.targetsground = 攻擊地面 blocks.targetsground = 攻擊地面
blocks.items = 物品:{0}
blocks.itemsmoved = 移動速度 blocks.itemsmoved = 移動速度
blocks.launchtime = Time Between Launches
blocks.shootrange = 範圍 blocks.shootrange = 範圍
blocks.size = 尺寸 blocks.size = 尺寸
blocks.liquidcapacity = 液體容量 blocks.liquidcapacity = 液體容量
blocks.maxitemssecond = 最高產量
blocks.powerrange = 輸出範圍 blocks.powerrange = 輸出範圍
blocks.poweruse = 能量使用 blocks.poweruse = 能量使用
blocks.powerdamage = 能量/傷害 blocks.powerdamage = 能量/傷害
blocks.inputitemcapacity = 最大輸入
blocks.outputitemcapacity = 最大輸出
blocks.itemcapacity = 物品容量 blocks.itemcapacity = 物品容量
blocks.basepowergeneration = 基本能量生产 blocks.basepowergeneration = 基本能量生产
blocks.powertransferspeed = 能量傳輸 blocks.productiontime = Production Time
blocks.craftspeed = 產生速度 blocks.repairtime = Block Full Repair Time
blocks.inputliquid = 輸入液體 blocks.speedincrease = Speed Increase
blocks.inputliquidaux = 輔助液體 blocks.range = Range
blocks.inputitem = 輸入物品
blocks.inputitems = 輸入物品
blocks.outputitem = 輸出物品
blocks.drilltier = 可鑽取礦物 blocks.drilltier = 可鑽取礦物
blocks.drillspeed = 基本鑽取速度 blocks.drillspeed = 基本鑽取速度
blocks.boosteffect = Boost Effect
blocks.maxunits = 最大活躍單位 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.health = 耐久度
blocks.heat =
blocks.power = 能量
blocks.progress = 建造進度
blocks.spawned = 單位:{0}/{1}
blocks.power.satisfaction = 能量滿意度
blocks.inaccuracy = 誤差 blocks.inaccuracy = 誤差
blocks.shots = 射擊數 blocks.shots = 射擊數
blocks.reload = 重裝彈藥 blocks.reload = 重裝彈藥
blocks.inputfuel = 燃料
blocks.fuelburntime = 燃燒燃料時間
blocks.inputcapacity = 輸入容量
blocks.outputcapacity = 輸出容量
blocks.ammo = 彈藥 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.blocks = 方塊
unit.powersecond = 能量單位/秒 unit.powersecond = 能量單位/秒
unit.liquidsecond = 液體單位/秒 unit.liquidsecond = 液體單位/秒
@@ -405,6 +397,9 @@ unit.liquidunits = 液體單位
unit.powerunits = 能量單位 unit.powerunits = 能量單位
unit.degrees = unit.degrees =
unit.seconds = unit.seconds =
unit.persecond = /sec
unit.timesspeed = x speed
unit.percent = %
unit.items = 物品 unit.items = 物品
category.general = 一般 category.general = 一般
category.power = 能量 category.power = 能量
@@ -413,9 +408,11 @@ category.items = 物品
category.crafting = 合成 category.crafting = 合成
category.shooting = 射擊 category.shooting = 射擊
category.optional = 可選的強化 category.optional = 可選的強化
setting.animatedwater.name = 動畫水 setting.landscape.name = Lock Landscape
setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟)[]
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.animatedwater.name = 動畫水
setting.animatedshields.name = Animated Shields
setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟)[]
setting.indicators.name = 盟友指標 setting.indicators.name = 盟友指標
setting.autotarget.name = 自動射擊 setting.autotarget.name = 自動射擊
setting.fpscap.name = 最大FPS setting.fpscap.name = 最大FPS
@@ -438,6 +435,7 @@ setting.borderless.name = 無邊框窗口
setting.fps.name = 顯示FPS setting.fps.name = 顯示FPS
setting.vsync.name = 垂直同步 setting.vsync.name = 垂直同步
setting.lasers.name = 顯示雷射光束 setting.lasers.name = 顯示雷射光束
setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance)
setting.minimap.name = 顯示小地圖 setting.minimap.name = 顯示小地圖
setting.musicvol.name = 音樂音量 setting.musicvol.name = 音樂音量
setting.mutemusic.name = 靜音 setting.mutemusic.name = 靜音
@@ -490,6 +488,21 @@ mode.pvp.name = 對戰
mode.pvp.description = 和其他玩家鬥爭。 mode.pvp.description = 和其他玩家鬥爭。
mode.attack.name = 攻擊 mode.attack.name = 攻擊
mode.attack.description = 沒有波次,目標是摧毀敵人的基地。 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.item.name = 物品
content.liquid.name = 液體 content.liquid.name = 液體
content.unit.name = 機組 content.unit.name = 機組
@@ -570,10 +583,10 @@ mech.itemcapacity = [LIGHT_GRAY]物品容量:{0}
mech.minespeed = [LIGHT_GRAY]採礦速度:{0} mech.minespeed = [LIGHT_GRAY]採礦速度:{0}
mech.minepower = [LIGHT_GRAY]採礦力度:{0} mech.minepower = [LIGHT_GRAY]採礦力度:{0}
mech.ability = [LIGHT_GRAY]能力:{0} mech.ability = [LIGHT_GRAY]能力:{0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]熱容量:{0} liquid.heatcapacity = [LIGHT_GRAY]熱容量:{0}
liquid.viscosity = [LIGHT_GRAY]粘性:{0} liquid.viscosity = [LIGHT_GRAY]粘性:{0}
liquid.temperature = [LIGHT_GRAY]温度:{0} liquid.temperature = [LIGHT_GRAY]温度:{0}
block.grass.name = block.grass.name =
block.salt.name = block.salt.name =
block.sandrocks.name = 沙岩 block.sandrocks.name = 沙岩
@@ -730,6 +743,7 @@ block.blast-drill.name = 爆破鑽頭
block.thermal-pump.name = 熱能泵 block.thermal-pump.name = 熱能泵
block.thermal-generator.name = 熱能發電機 block.thermal-generator.name = 熱能發電機
block.alloy-smelter.name = 合金冶煉廠 block.alloy-smelter.name = 合金冶煉廠
block.mender.name = Mender
block.mend-projector.name = 修理投影器 block.mend-projector.name = 修理投影器
block.surge-wall.name = 波動牆 block.surge-wall.name = 波動牆
block.surge-wall-large.name = 大型波動牆 block.surge-wall-large.name = 大型波動牆
@@ -745,6 +759,7 @@ block.meltdown.name = 熔毀炮
block.container.name = 容器 block.container.name = 容器
block.launch-pad.name = 發射台 block.launch-pad.name = 發射台
block.launch-pad.description = 無需從核心發射即可發射物品。未完成。 block.launch-pad.description = 無需從核心發射即可發射物品。未完成。
block.launch-pad-large.name = Large Launch Pad
team.blue.name = team.blue.name =
team.red.name = team.red.name =
team.orange.name = team.orange.name =
@@ -870,7 +885,6 @@ block.wraith-factory.description = 生產快速、打了就跑的攔截機單位
block.ghoul-factory.description = 生產重型鋪蓋轟炸機。 block.ghoul-factory.description = 生產重型鋪蓋轟炸機。
block.dagger-factory.description = 產生基本地面單位。 block.dagger-factory.description = 產生基本地面單位。
block.titan-factory.description = 生產具有裝甲的高級地面單位。 block.titan-factory.description = 生產具有裝甲的高級地面單位。
block.fortress-factory.description = 生產重型火砲地面單位。 block.fortress-factory.description = 生產重型火砲地面單位。
block.revenant-factory.description = 生產重型激光地面單位。 block.revenant-factory.description = 生產重型激光地面單位。
block.repair-point.description = 持續治療附近最近的受損單位。 block.repair-point.description = 持續治療附近最近的受損單位。

View File

@@ -10,6 +10,5 @@ varying vec2 v_texCoord;
void main(){ void main(){
vec4 color = texture2D(u_texture, v_texCoord.xy); vec4 color = texture2D(u_texture, v_texCoord.xy);
color = vec4(0.0, 0.0, 0.0, 1.0 - color.r); gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0 - color.r);
gl_FragColor = color;
} }

View File

@@ -56,7 +56,6 @@ void main() {
if(color.r > 0.01){ 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 = 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 n1 = snoise(coords / 22.0 + vec2(-time) / 540.0);
float n2 = snoise((coords + vec2(632.0)) / 8.0 + vec2(0.0, time) / 510.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){ if(r < -0.3 && r > -0.6){
color *= 1.4; color *= 1.4;
color.a = 1.0;
} }
} }

View File

@@ -61,14 +61,14 @@ void main() {
float n2 = snoise((coords + vec2(632.0)) / 25.0 + vec2(0.0, -time) / 190.0); float n2 = snoise((coords + vec2(632.0)) / 25.0 + vec2(0.0, -time) / 190.0);
float r = (n1 + n2) * 3.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)) +
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 / 20.0 + coords.y/3.0) * 1.0 +
sin(stime / 10.0 + coords.y/2.0) * 2.0 + sin(stime / 10.0 + coords.y/2.0) * 2.0 +
sin(stime / 7.0 + coords.y/1.0) * 0.5 + sin(stime / 7.0 + coords.y/1.0) * 0.5 +
sin(coords.x + coords.y) + sin(coords.x + coords.y) +
sin(stime / 20.0 + coords.x/4.0) * 1.0, mscl) + r < mth){ sin(stime / 20.0 + coords.x/4.0) * 1.0, mscl) + r;
if(tester < mth){
color *= 1.2; color *= 1.2;
color.a = 1.0; color.a = 1.0;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 B

After

Width:  |  Height:  |  Size: 506 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: 277 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 KiB

After

Width:  |  Height:  |  Size: 542 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

View File

@@ -283,6 +283,7 @@
disabledFontColor: gray, disabledFontColor: gray,
selection: selection, selection: selection,
background: underline, background: underline,
invalidBackground: underline-red,
cursor: cursor, cursor: cursor,
messageFont: default-font, messageFont: default-font,
messageFontColor: gray messageFontColor: gray

View File

@@ -36,6 +36,8 @@ public class Vars{
public static final Charset charset = Charset.forName("UTF-8"); public static final Charset charset = Charset.forName("UTF-8");
/**main application name, capitalized*/ /**main application name, capitalized*/
public static final String appName = "Mindustry"; 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.*/ /**URL for discord invite.*/
public static final String discordURL = "https://discord.gg/mindustry"; public static final String discordURL = "https://discord.gg/mindustry";
/**URL for Github API for releases*/ /**URL for Github API for releases*/
@@ -142,7 +144,7 @@ public class Vars{
public static EntityGroup<BaseUnit>[] unitGroups; public static EntityGroup<BaseUnit>[] unitGroups;
/**all local players, currently only has one player. may be used for local co-op in the future*/ /**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(){ public static void init(){
Serialization.init(); Serialization.init();

View File

@@ -14,6 +14,7 @@ import io.anuke.mindustry.entities.Effects;
import io.anuke.mindustry.entities.type.BaseUnit; import io.anuke.mindustry.entities.type.BaseUnit;
import io.anuke.mindustry.game.EventType.WorldLoadEvent; import io.anuke.mindustry.game.EventType.WorldLoadEvent;
import io.anuke.mindustry.game.SpawnGroup; import io.anuke.mindustry.game.SpawnGroup;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.world.Pos; import io.anuke.mindustry.world.Pos;
import java.io.DataInput; import java.io.DataInput;
@@ -54,7 +55,7 @@ public class WaveSpawner{
/**@return true if the player is near a ground spawn point.*/ /**@return true if the player is near a ground spawn point.*/
public boolean playerNear(){ 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(){ public void spawnEnemies(){
@@ -96,7 +97,7 @@ public class WaveSpawner{
} }
Time.run(20f, () -> Effects.effect(Fx.spawnShockwave, spawn.x * tilesize, spawn.y * tilesize)); Time.run(20f, () -> Effects.effect(Fx.spawnShockwave, spawn.x * tilesize, spawn.y * tilesize));
//would be interesting to see player structures survive this without hacks //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(){ public boolean isSpawning(){
return spawning; return spawning && !Net.client();
} }
private void reset(){ private void reset(){

View File

@@ -3,11 +3,17 @@ package io.anuke.mindustry.content;
import io.anuke.arc.Core; import io.anuke.arc.Core;
import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.g2d.Draw; 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.graphics.g2d.TextureRegion;
import io.anuke.arc.math.Mathf;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.game.ContentList; import io.anuke.mindustry.game.ContentList;
import io.anuke.mindustry.graphics.CacheLayer; 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.Category;
import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.type.LiquidStack;
import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.*; 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.MechPad;
import io.anuke.mindustry.world.blocks.units.RepairPoint; import io.anuke.mindustry.world.blocks.units.RepairPoint;
import io.anuke.mindustry.world.blocks.units.UnitFactory; 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.consumers.ConsumeLiquidFilter;
import io.anuke.mindustry.world.meta.Attribute; 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.state;
import static io.anuke.mindustry.Vars.world; import static io.anuke.mindustry.Vars.world;
@@ -53,7 +59,7 @@ public class Blocks implements ContentList{
//defense //defense
scrapWall, scrapWallLarge, scrapWallHuge, scrapWallGigantic, thruster, //ok, these names are getting ridiculous, but at least I don't have humongous walls yet 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, 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 //transport
conveyor, titaniumConveyor, distributor, junction, itemBridge, phaseConveyor, sorter, router, overflowGate, massDriver, 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, mechanicalDrill, pneumaticDrill, laserDrill, blastDrill, waterExtractor, oilExtractor, cultivator,
//storage //storage
coreShard, coreFoundation, coreNucleus, vault, container, unloader, launchPad, coreShard, coreFoundation, coreNucleus, vault, container, unloader, launchPad, launchPadLarge,
//turrets //turrets
duo, scatter, scorch, hail, arc, wave, lancer, swarmer, salvo, fuse, ripple, cyclone, spectre, meltdown, 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"){{ air = new Floor("air"){{
alwaysReplace = true; alwaysReplace = true;
hasShadow = false;
} }
public void draw(Tile tile){} public void draw(Tile tile){}
@@ -199,6 +206,21 @@ public class Blocks implements ContentList{
blendGroup = stone; 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"){{ sand = new Floor("sand"){{
itemDrop = Items.sand; itemDrop = Items.sand;
playerUnmineable = true; playerUnmineable = true;
@@ -230,6 +252,7 @@ public class Blocks implements ContentList{
dragMultiplier = 1f; dragMultiplier = 1f;
speedMultiplier = 1f; speedMultiplier = 1f;
attributes.set(Attribute.water, 0.4f); attributes.set(Attribute.water, 0.4f);
edgeStyle = "blocky";
}}; }};
iceSnow = new Floor("ice-snow"){{ iceSnow = new Floor("ice-snow"){{
@@ -337,21 +360,6 @@ public class Blocks implements ContentList{
variants = 0; 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 //endregion
//region ore //region ore
@@ -369,7 +377,7 @@ public class Blocks implements ContentList{
requirements(Category.crafting, ItemStack.with(Items.copper, 150, Items.lead, 60)); requirements(Category.crafting, ItemStack.with(Items.copper, 150, Items.lead, 60));
craftEffect = Fx.pulverizeMedium; craftEffect = Fx.pulverizeMedium;
output = Items.graphite; outputItem = new ItemStack(Items.graphite, 1);
craftTime = 90f; craftTime = 90f;
size = 2; size = 2;
hasItems = true; 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)); requirements(Category.crafting, ItemStack.with(Items.titanium, 200, Items.silicon, 50, Items.lead, 200, Items.graphite, 100));
craftEffect = Fx.pulverizeMedium; craftEffect = Fx.pulverizeMedium;
output = Items.graphite; outputItem = new ItemStack(Items.graphite, 2);
craftTime = 30f; craftTime = 30f;
size = 3; size = 3;
hasItems = true; hasItems = true;
@@ -389,16 +397,17 @@ public class Blocks implements ContentList{
hasPower = true; hasPower = true;
consumes.power(2f); consumes.power(2f);
consumes.item(Items.coal, 2); consumes.item(Items.coal, 4);
consumes.liquid(Liquids.water, 0.1f); 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)); requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 50));
craftEffect = Fx.smeltsmoke; craftEffect = Fx.smeltsmoke;
output = Items.silicon; outputItem = new ItemStack(Items.silicon, 1);
craftTime = 40f; craftTime = 40f;
size = 2; size = 2;
hasPower = true;
hasLiquids = false; hasLiquids = false;
flameColor = Color.valueOf("ffef99"); flameColor = Color.valueOf("ffef99");
@@ -406,10 +415,10 @@ public class Blocks implements ContentList{
consumes.power(0.50f); 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)); requirements(Category.crafting, ItemStack.with(Items.copper, 120, Items.graphite, 60, Items.lead, 60));
craftEffect = Fx.smeltsmoke; craftEffect = Fx.smeltsmoke;
output = Items.metaglass; outputItem = new ItemStack(Items.metaglass, 1);
craftTime = 30f; craftTime = 30f;
size = 2; size = 2;
hasPower = hasItems = true; hasPower = hasItems = true;
@@ -419,12 +428,12 @@ public class Blocks implements ContentList{
consumes.power(0.60f); 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)); requirements(Category.crafting, ItemStack.with(Items.silicon, 160, Items.lead, 230, Items.graphite, 120, Items.titanium, 160));
hasItems = true; hasItems = true;
liquidCapacity = 60f; liquidCapacity = 60f;
craftTime = 60f; craftTime = 60f;
output = Items.plastanium; outputItem = new ItemStack(Items.plastanium, 1);
size = 2; size = 2;
health = 320; health = 320;
hasPower = hasLiquids = true; hasPower = hasLiquids = true;
@@ -434,59 +443,135 @@ public class Blocks implements ContentList{
consumes.liquid(Liquids.oil, 0.25f); consumes.liquid(Liquids.oil, 0.25f);
consumes.power(3f); consumes.power(3f);
consumes.item(Items.titanium, 2); 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)); requirements(Category.crafting, ItemStack.with(Items.silicon, 260, Items.lead, 240, Items.thorium, 150));
craftEffect = Fx.smeltsmoke; craftEffect = Fx.smeltsmoke;
output = Items.phasefabric; outputItem = new ItemStack(Items.phasefabric, 1);
craftTime = 120f; craftTime = 120f;
size = 2; size = 2;
hasPower = true;
consumes.items(new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10)); consumes.items(new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10));
consumes.power(5f); 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)); requirements(Category.crafting, ItemStack.with(Items.silicon, 160, Items.lead, 160, Items.thorium, 140));
craftEffect = Fx.smeltsmoke; craftEffect = Fx.smeltsmoke;
output = Items.surgealloy; outputItem = new ItemStack(Items.surgealloy, 1);
craftTime = 75f; craftTime = 75f;
size = 3; size = 3;
hasPower = true;
consumes.power(4f); 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)); 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 GenericCrafter("cryofluidmixer"){{
requirements(Category.crafting, ItemStack.with(Items.lead, 130, Items.silicon, 80, Items.thorium, 90)); requirements(Category.crafting, ItemStack.with(Items.lead, 130, Items.silicon, 80, Items.thorium, 90));
outputLiquid = Liquids.cryofluid; outputLiquid = new LiquidStack(Liquids.cryofluid, 0.6f);
liquidPerItem = 50f; craftTime = 5f;
size = 2; size = 2;
hasPower = true; hasPower = true;
hasItems = true;
hasLiquids = true;
rotate = false;
solid = true;
outputsLiquid = true;
consumes.power(1f); consumes.power(1f);
consumes.item(Items.titanium); consumes.item(Items.titanium);
consumes.liquid(Liquids.water, 0.3f); consumes.liquid(Liquids.water, 0.6f);
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"){{ blastMixer = new GenericCrafter("blast-mixer"){{
requirements(Category.crafting, ItemStack.with(Items.lead, 60, Items.titanium, 40)); requirements(Category.crafting, ItemStack.with(Items.lead, 60, Items.titanium, 40));
hasItems = true; hasItems = true;
hasPower = true; hasPower = true;
output = Items.blastCompound; outputItem = new ItemStack(Items.blastCompound, 1);
size = 2; size = 2;
consumes.items(new ItemStack(Items.pyratite, 1), new ItemStack(Items.sporePod, 1)); consumes.items(new ItemStack(Items.pyratite, 1), new ItemStack(Items.sporePod, 1));
consumes.power(0.40f); 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)); requirements(Category.crafting, ItemStack.with(Items.copper, 100, Items.lead, 50));
flameColor = Color.CLEAR; flameColor = Color.CLEAR;
hasItems = true; hasItems = true;
hasPower = true; hasPower = true;
output = Items.pyratite; outputItem = new ItemStack(Items.pyratite, 1);
size = 2; 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)); 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)); requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 70, Items.graphite, 90));
health = 200; health = 200;
outputLiquid = Liquids.slag; outputLiquid = new LiquidStack(Liquids.slag, 2f);
outputLiquidAmount = 2f;
craftTime = 10f; craftTime = 10f;
hasLiquids = hasPower = true; hasLiquids = hasPower = true;
@@ -515,7 +599,7 @@ public class Blocks implements ContentList{
Items.titanium, 2 Items.titanium, 2
); );
hasPower = true; hasPower = true;
filterTime = 35f; craftTime = 35f;
spinnerLength = 1.5f; spinnerLength = 1.5f;
spinnerRadius = 3.5f; spinnerRadius = 3.5f;
spinnerThickness = 1.5f; spinnerThickness = 1.5f;
@@ -528,8 +612,8 @@ public class Blocks implements ContentList{
cultivator = new Cultivator("cultivator"){{ cultivator = new Cultivator("cultivator"){{
requirements(Category.crafting, ItemStack.with(Items.copper, 20, Items.lead, 50, Items.silicon, 20)); requirements(Category.crafting, ItemStack.with(Items.copper, 20, Items.lead, 50, Items.silicon, 20));
output = Items.sporePod; outputItem = new ItemStack(Items.sporePod, 1);
craftTime = 200; craftTime = 160;
size = 2; size = 2;
hasLiquids = true; hasLiquids = true;
hasPower = true; hasPower = true;
@@ -539,23 +623,45 @@ public class Blocks implements ContentList{
consumes.liquid(Liquids.water, 0.15f); 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)); requirements(Category.crafting, ItemStack.with(Items.lead, 70, Items.silicon, 60));
liquidCapacity = 60f; liquidCapacity = 60f;
craftTime = 20f; craftTime = 20f;
outputLiquid = Liquids.oil; outputLiquid = new LiquidStack(Liquids.oil, 4f);
outputLiquidAmount = 2.5f;
size = 2; size = 2;
health = 320; health = 320;
hasLiquids = true; hasLiquids = true;
hasPower = true;
craftEffect = Fx.none;
consumes.item(Items.sporePod, 1); consumes.item(Items.sporePod, 1);
consumes.power(0.60f); 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)); requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 50));
output = Items.sand; outputItem = new ItemStack(Items.sand, 1);
craftEffect = Fx.pulverize; craftEffect = Fx.pulverize;
craftTime = 40f; craftTime = 40f;
updateEffect = Fx.pulverizeSmall; updateEffect = Fx.pulverizeSmall;
@@ -563,6 +669,17 @@ public class Blocks implements ContentList{
consumes.item(Items.scrap, 1); consumes.item(Items.scrap, 1);
consumes.power(0.50f); 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"){{ incinerator = new Incinerator("incinerator"){{
@@ -598,7 +715,7 @@ public class Blocks implements ContentList{
//endregion //endregion
//region defense //region defense
int wallHealthMultiplier = 3; int wallHealthMultiplier = 4;
scrapWall = new Wall("scrap-wall"){{ scrapWall = new Wall("scrap-wall"){{
health = 60 * wallHealthMultiplier; health = 60 * wallHealthMultiplier;
@@ -695,10 +812,27 @@ public class Blocks implements ContentList{
size = 2; 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"){{ mendProjector = new MendProjector("mend-projector"){{
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 50, Items.silicon, 180)); requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 50, Items.silicon, 80));
consumes.power(2f); consumes.power(1.5f);
size = 2; size = 2;
reload = 250f;
range = 85f;
healPercent = 14f;
health = 80 * size * size;
consumes.item(Items.phasefabric).optional(true); 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)); requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 150, Items.silicon, 150, Items.plastanium, 60));
consumes.power(3.50f); consumes.power(3.50f);
size = 2; size = 2;
consumes.item(Items.phasefabric).optional(true).boost(true); consumes.item(Items.phasefabric).optional(true);
}}; }};
forceProjector = new ForceProjector("force-projector"){{ forceProjector = new ForceProjector("force-projector"){{
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 150, Items.silicon, 250)); requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 150, Items.silicon, 250));
size = 3; size = 3;
consumes.item(Items.phasefabric).optional(true).boost(true); consumes.item(Items.phasefabric).optional(true);
}}; }};
shockMine = new ShockMine("shock-mine"){{ shockMine = new ShockMine("shock-mine"){{
requirements(Category.effect, ItemStack.with(Items.lead, 50, Items.silicon, 25)); requirements(Category.effect, ItemStack.with(Items.lead, 50, Items.silicon, 25));
hasShadow = false;
health = 40; health = 40;
damage = 11; damage = 11;
tileDamage = 7f; tileDamage = 7f;
@@ -736,7 +871,7 @@ public class Blocks implements ContentList{
titaniumConveyor = new Conveyor("titanium-conveyor"){{ titaniumConveyor = new Conveyor("titanium-conveyor"){{
requirements(Category.distribution, ItemStack.with(Items.copper, 2, Items.lead, 1, Items.titanium, 1)); requirements(Category.distribution, ItemStack.with(Items.copper, 2, Items.lead, 1, Items.titanium, 1));
health = 65; health = 65;
speed = 0.07f; speed = 0.08f;
}}; }};
junction = new Junction("junction"){{ junction = new Junction("junction"){{
@@ -878,20 +1013,20 @@ public class Blocks implements ContentList{
}}; }};
battery = new Battery("battery"){{ battery = new Battery("battery"){{
requirements(Category.power, ItemStack.with(Items.copper, 8, Items.lead, 30, Items.silicon, 4)); requirements(Category.power, ItemStack.with(Items.copper, 8, Items.lead, 40));
consumes.powerBuffered(3200f, 1f); consumes.powerBuffered(4000f, 1f);
}}; }};
batteryLarge = new Battery("battery-large"){{ 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; size = 3;
consumes.powerBuffered(37440f, 1f); consumes.powerBuffered(50000f, 1f);
}}; }};
combustionGenerator = new BurnerGenerator("combustion-generator"){{ combustionGenerator = new BurnerGenerator("combustion-generator"){{
requirements(Category.power, ItemStack.with(Items.copper, 50, Items.lead, 30)); requirements(Category.power, ItemStack.with(Items.copper, 50, Items.lead, 30));
powerProduction = 1f; powerProduction = 1f;
itemDuration = 40f; itemDuration = 60f;
}}; }};
thermalGenerator = new ThermalGenerator("thermal-generator"){{ thermalGenerator = new ThermalGenerator("thermal-generator"){{
@@ -901,24 +1036,24 @@ public class Blocks implements ContentList{
size = 2; 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)); requirements(Category.power, ItemStack.with(Items.copper, 70, Items.graphite, 50, Items.lead, 80, Items.silicon, 60));
powerProduction = 6f; powerProduction = 6f;
itemDuration = 30f; itemDuration = 40f;
consumes.liquid(Liquids.water, 0.05f); consumes.liquid(Liquids.water, 0.05f);
hasLiquids = true; hasLiquids = true;
size = 2; 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)); 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; itemDuration = 50f;
consumes.remove(ConsumeItemFilter.class); hasLiquids = true;
consumes.remove(ConsumeLiquidFilter.class); size = 3;
consumes.item(Items.pyratite); consumes.item(Items.pyratite);
consumes.liquid(Liquids.cryofluid, 0.2f); consumes.liquid(Liquids.cryofluid, 0.2f);
size = 3;
}}; }};
rtgGenerator = new DecayGenerator("rtg-generator"){{ rtgGenerator = new DecayGenerator("rtg-generator"){{
@@ -952,9 +1087,9 @@ public class Blocks implements ContentList{
requirements(Category.power, ItemStack.with(Items.lead, 1000, Items.silicon, 600, Items.graphite, 800, Items.thorium, 200, Items.surgealloy, 500, Items.metaglass, 500)); 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; size = 4;
health = 900; health = 900;
powerProduction = 80f; powerProduction = 100f;
useTime = 40f; itemDuration = 40f;
consumes.power(23f); consumes.power(25f);
consumes.item(Items.blastCompound); consumes.item(Items.blastCompound);
consumes.liquid(Liquids.cryofluid, 0.8f); consumes.liquid(Liquids.cryofluid, 0.8f);
}}; }};
@@ -968,6 +1103,7 @@ public class Blocks implements ContentList{
drillTime = 600; drillTime = 600;
size = 2; size = 2;
drawMineItem = true; drawMineItem = true;
consumes.liquid(Liquids.water, 0.05f).optional(true);
}}; }};
pneumaticDrill = new Drill("pneumatic-drill"){{ pneumaticDrill = new Drill("pneumatic-drill"){{
@@ -1078,12 +1214,12 @@ public class Blocks implements ContentList{
}}; }};
unloader = new Unloader("unloader"){{ 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; speed = 7f;
}}; }};
launchPad = new LaunchPad("launch-pad"){{ 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; size = 3;
itemCapacity = 100; itemCapacity = 100;
launchTime = 60f * 8; launchTime = 60f * 8;
@@ -1091,6 +1227,16 @@ public class Blocks implements ContentList{
consumes.power(1f); 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 //endregion
//region turrets //region turrets
@@ -1118,15 +1264,15 @@ public class Blocks implements ContentList{
Items.scrap, Bullets.flakScrap, Items.scrap, Bullets.flakScrap,
Items.lead, Bullets.flakLead Items.lead, Bullets.flakLead
); );
reload = 43f; reload = 15f;
range = 160f; range = 180f;
size = 2; size = 2;
burstSpacing = 5f; burstSpacing = 5f;
shots = 2; shots = 2;
targetGround = false; targetGround = false;
recoil = 2f; recoil = 2f;
rotatespeed = 10f; rotatespeed = 15f;
inaccuracy = 17f; inaccuracy = 17f;
shootCone = 35f; shootCone = 35f;
@@ -1141,7 +1287,7 @@ public class Blocks implements ContentList{
); );
recoil = 0f; recoil = 0f;
reload = 4f; reload = 4f;
range = 53f; range = 60f;
shootCone = 50f; shootCone = 50f;
targetAir = false; targetAir = false;
ammoUseEffect = Fx.none; ammoUseEffect = Fx.none;
@@ -1173,11 +1319,11 @@ public class Blocks implements ContentList{
); );
size = 2; size = 2;
recoil = 0f; recoil = 0f;
reload = 3f; reload = 2f;
inaccuracy = 5f; inaccuracy = 5f;
shootCone = 50f; shootCone = 50f;
shootEffect = Fx.shootLiquid; shootEffect = Fx.shootLiquid;
range = 100f; range = 110f;
health = 250*size*size; health = 250*size*size;
drawer = (tile, entity) -> { drawer = (tile, entity) -> {
@@ -1216,13 +1362,13 @@ public class Blocks implements ContentList{
arc = new PowerTurret("arc"){{ arc = new PowerTurret("arc"){{
requirements(Category.turret, ItemStack.with(Items.copper, 70, Items.lead, 70)); requirements(Category.turret, ItemStack.with(Items.copper, 70, Items.lead, 70));
shootType = Bullets.arc; shootType = Bullets.arc;
reload = 25f; reload = 24f;
shootCone = 40f; shootCone = 40f;
rotatespeed = 8f; rotatespeed = 8f;
powerUsed = 1f / 2f; powerUsed = 1f / 2f;
targetAir = false; targetAir = false;
consumes.powerBuffered(80f); consumes.powerBuffered(60f, 60f);
range = 80f; range = 95f;
shootEffect = Fx.lightningShoot; shootEffect = Fx.lightningShoot;
heatColor = Color.RED; heatColor = Color.RED;
recoil = 1f; recoil = 1f;
@@ -1304,8 +1450,8 @@ public class Blocks implements ContentList{
Items.surgealloy, Bullets.flakSurge Items.surgealloy, Bullets.flakSurge
); );
xRand = 4f; xRand = 4f;
reload = 8f; reload = 7f;
range = 160f; range = 170f;
size = 3; size = 3;
recoil = 3f; recoil = 3f;
rotatespeed = 10f; rotatespeed = 10f;
@@ -1337,7 +1483,6 @@ public class Blocks implements ContentList{
); );
reload = 6f; reload = 6f;
coolantMultiplier = 0.5f; coolantMultiplier = 0.5f;
maxCoolantUsed = 1.5f;
restitution = 0.1f; restitution = 0.1f;
ammoUseEffect = Fx.shellEjectBig; ammoUseEffect = Fx.shellEjectBig;
range = 200f; range = 200f;
@@ -1351,6 +1496,7 @@ public class Blocks implements ContentList{
shootCone = 24f; shootCone = 24f;
health = 155 * size * size; 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"){{ meltdown = new LaserTurret("meltdown"){{
@@ -1363,12 +1509,13 @@ public class Blocks implements ContentList{
shootShake = 2f; shootShake = 2f;
powerUsed = 0.5f; powerUsed = 0.5f;
consumes.powerBuffered(1200f); consumes.powerBuffered(1200f);
range = 160f; range = 190f;
reload = 170f; reload = 170f;
firingMoveFract = 0.1f; firingMoveFract = 0.2f;
shootDuration = 220f; 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 //endregion
@@ -1379,6 +1526,7 @@ public class Blocks implements ContentList{
type = UnitTypes.spirit; type = UnitTypes.spirit;
produceTime = 5700; produceTime = 5700;
size = 2; size = 2;
maxSpawn = 2;
consumes.power(0.80f); consumes.power(0.80f);
consumes.items(new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30)); consumes.items(new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30));
}}; }};
@@ -1388,6 +1536,7 @@ public class Blocks implements ContentList{
type = UnitTypes.phantom; type = UnitTypes.phantom;
produceTime = 7300; produceTime = 7300;
size = 2; size = 2;
maxSpawn = 2;
consumes.power(2f); consumes.power(2f);
consumes.items(new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80)); consumes.items(new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80));
}}; }};
@@ -1451,6 +1600,7 @@ public class Blocks implements ContentList{
type = UnitTypes.fortress; type = UnitTypes.fortress;
produceTime = 5000; produceTime = 5000;
size = 3; size = 3;
maxSpawn = 3;
consumes.power(2f); consumes.power(2f);
consumes.items(new ItemStack(Items.silicon, 40), new ItemStack(Items.thorium, 50)); consumes.items(new ItemStack(Items.silicon, 40), new ItemStack(Items.thorium, 50));
}}; }};

View File

@@ -134,28 +134,32 @@ public class Bullets implements ContentList{
bulletWidth = bulletHeight = 14f; bulletWidth = bulletHeight = 14f;
collides = true; collides = true;
collidesTiles = true; collidesTiles = true;
splashDamageRadius = 45f; splashDamageRadius = 20f;
splashDamage = 50f; splashDamage = 38f;
backColor = Pal.bulletYellowBack; backColor = Pal.bulletYellowBack;
frontColor = Pal.bulletYellow; frontColor = Pal.bulletYellow;
}}; }};
flakLead = new FlakBulletType(3.9f, 3){{ flakLead = new FlakBulletType(4.2f, 3){{
lifetime = 60f;
ammoMultiplier = 3f;
shootEffect = Fx.shootSmall; shootEffect = Fx.shootSmall;
bulletWidth = 6f; bulletWidth = 6f;
bulletHeight = 8f; bulletHeight = 8f;
hitEffect = Fx.flakExplosion; hitEffect = Fx.flakExplosion;
splashDamage = 25f; splashDamage = 35f;
splashDamageRadius = 15f; splashDamageRadius = 15f;
}}; }};
flakScrap = new FlakBulletType(3.5f, 3){{ flakScrap = new FlakBulletType(4f, 3){{
lifetime = 60f;
ammoMultiplier = 3f;
shootEffect = Fx.shootSmall; shootEffect = Fx.shootSmall;
reloadMultiplier = 0.5f; reloadMultiplier = 0.5f;
bulletWidth = 6f; bulletWidth = 6f;
bulletHeight = 8f; bulletHeight = 8f;
hitEffect = Fx.flakExplosion; hitEffect = Fx.flakExplosion;
splashDamage = 16f; splashDamage = 26f;
splashDamageRadius = 24f; splashDamageRadius = 24f;
}}; }};
@@ -269,7 +273,7 @@ public class Bullets implements ContentList{
keepVelocity = false; keepVelocity = false;
splashDamageRadius = 25f; splashDamageRadius = 25f;
splashDamage = 10f; splashDamage = 10f;
lifetime = 80f; lifetime = 50f;
trailColor = Pal.unitBack; trailColor = Pal.unitBack;
backColor = Pal.unitBack; backColor = Pal.unitBack;
frontColor = Pal.unitFront; frontColor = Pal.unitFront;
@@ -290,7 +294,6 @@ public class Bullets implements ContentList{
standardDense = new BasicBulletType(3.5f, 18, "bullet"){{ standardDense = new BasicBulletType(3.5f, 18, "bullet"){{
bulletWidth = 9f; bulletWidth = 9f;
bulletHeight = 12f; bulletHeight = 12f;
armorPierce = 0.2f;
reloadMultiplier = 0.6f; reloadMultiplier = 0.6f;
ammoMultiplier = 2; ammoMultiplier = 2;
}}; }};
@@ -298,7 +301,6 @@ public class Bullets implements ContentList{
standardThorium = new BasicBulletType(4f, 29, "bullet"){{ standardThorium = new BasicBulletType(4f, 29, "bullet"){{
bulletWidth = 10f; bulletWidth = 10f;
bulletHeight = 13f; bulletHeight = 13f;
armorPierce = 0.5f;
shootEffect = Fx.shootBig; shootEffect = Fx.shootBig;
smokeEffect = Fx.shootBigSmoke; smokeEffect = Fx.shootBigSmoke;
ammoMultiplier = 2; ammoMultiplier = 2;
@@ -344,14 +346,12 @@ public class Bullets implements ContentList{
standardDenseBig = new BasicBulletType(7f, 42, "bullet"){{ standardDenseBig = new BasicBulletType(7f, 42, "bullet"){{
bulletWidth = 15f; bulletWidth = 15f;
bulletHeight = 21f; bulletHeight = 21f;
armorPierce = 0.2f;
shootEffect = Fx.shootBig; shootEffect = Fx.shootBig;
}}; }};
standardThoriumBig = new BasicBulletType(8f, 65, "bullet"){{ standardThoriumBig = new BasicBulletType(8f, 65, "bullet"){{
bulletWidth = 16f; bulletWidth = 16f;
bulletHeight = 23f; bulletHeight = 23f;
armorPierce = 0.5f;
shootEffect = Fx.shootBig; 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; ammoMultiplier = 3f;
hitSize = 7f; hitSize = 7f;
lifetime = 40f; lifetime = 42f;
pierce = true; pierce = true;
drag = 0.05f; drag = 0.05f;
statusDuration = 60f * 4; 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; ammoMultiplier = 4f;
hitSize = 7f; hitSize = 7f;
lifetime = 40f; lifetime = 42f;
pierce = true; pierce = true;
drag = 0.05f; drag = 0.05f;
statusDuration = 60f * 6; statusDuration = 60f * 6;
@@ -533,13 +533,13 @@ public class Bullets implements ContentList{
} }
}; };
meltdownLaser = new BulletType(0.001f, 35){ meltdownLaser = new BulletType(0.001f, 50){
Color tmpColor = new Color(); Color tmpColor = new Color();
Color[] colors = {Color.valueOf("ec745855"), Color.valueOf("ec7458aa"), Color.valueOf("ff9c5a"), Color.WHITE}; Color[] colors = {Color.valueOf("ec745855"), Color.valueOf("ec7458aa"), Color.valueOf("ff9c5a"), Color.WHITE};
float[] tscales = {1f, 0.7f, 0.5f, 0.2f}; float[] tscales = {1f, 0.7f, 0.5f, 0.2f};
float[] strokes = {2f, 1.5f, 1f, 0.3f}; float[] strokes = {2f, 1.5f, 1f, 0.3f};
float[] lenscales = {1f, 1.12f, 1.15f, 1.17f}; float[] lenscales = {1f, 1.12f, 1.15f, 1.17f};
float length = 200f; float length = 220f;
{ {
hitEffect = Fx.hitMeltdown; hitEffect = Fx.hitMeltdown;
@@ -664,7 +664,7 @@ public class Bullets implements ContentList{
} }
}; };
arc = new BulletType(0.001f, 21){{ arc = new BulletType(0.001f, 25){{
lifetime = 1; lifetime = 1;
despawnEffect = Fx.none; despawnEffect = Fx.none;
hitEffect = Fx.hitLancer; hitEffect = Fx.hitLancer;
@@ -675,7 +675,7 @@ public class Bullets implements ContentList{
@Override @Override
public void init(Bullet b){ 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 +730,7 @@ public class Bullets implements ContentList{
lifetime = 23f; lifetime = 23f;
speed = 1f; speed = 1f;
splashDamageRadius = 50f; splashDamageRadius = 50f;
splashDamage = 20f; splashDamage = 28f;
} }
@Override @Override

View File

@@ -34,7 +34,7 @@ public class Fx implements ContentList{
bigShockwave, nuclearShockwave, explosion, blockExplosion, blockExplosionSmoke, shootSmall, shootHeal, shootSmallSmoke, shootBig, shootBig2, shootBigSmoke, bigShockwave, nuclearShockwave, explosion, blockExplosion, blockExplosionSmoke, shootSmall, shootHeal, shootSmallSmoke, shootBig, shootBig2, shootBigSmoke,
shootBigSmoke2, shootSmallFlame, shootPyraFlame, shootLiquid, shellEjectSmall, shellEjectMedium, shootBigSmoke2, shootSmallFlame, shootPyraFlame, shootLiquid, shellEjectSmall, shellEjectMedium,
shellEjectBig, lancerLaserShoot, lancerLaserShootSmoke, lancerLaserCharge, lancerLaserChargeBegin, lightningCharge, lightningShoot, shellEjectBig, lancerLaserShoot, lancerLaserShootSmoke, lancerLaserCharge, lancerLaserChargeBegin, lightningCharge, lightningShoot,
unitSpawn, spawnShockwave, magmasmoke, impactShockwave, impactcloud, impactsmoke, dynamicExplosion; unitSpawn, spawnShockwave, magmasmoke, impactShockwave, impactcloud, impactsmoke, dynamicExplosion, padlaunch;
@Override @Override
public void load(){ public void load(){
@@ -107,6 +107,13 @@ public class Fx implements ContentList{
Draw.reset(); 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 -> { vtolHover = new Effect(40f, e -> {
float len = e.finpow() * 10f; float len = e.finpow() * 10f;
float ang = e.rotation + Mathf.randomSeedRange(e.id, 30f); float ang = e.rotation + Mathf.randomSeedRange(e.id, 30f);

View File

@@ -14,24 +14,28 @@ public class Items implements ContentList{
copper = new Item("copper", Color.valueOf("d99d73")){{ copper = new Item("copper", Color.valueOf("d99d73")){{
type = ItemType.material; type = ItemType.material;
hardness = 1; hardness = 1;
cost = 0.6f; cost = 0.5f;
alwaysUnlocked = true; alwaysUnlocked = true;
}}; }};
lead = new Item("lead", Color.valueOf("8c7fa9")){{ lead = new Item("lead", Color.valueOf("8c7fa9")){{
type = ItemType.material; type = ItemType.material;
hardness = 1; hardness = 1;
cost = 0.9f; cost = 0.7f;
}}; }};
metaglass = new Item("metaglass", Color.valueOf("ebeef5")){{ metaglass = new Item("metaglass", Color.valueOf("ebeef5")){{
type = ItemType.material; type = ItemType.material;
cost = 2f; cost = 1.5f;
}}; }};
graphite = new Item("graphite", Color.valueOf("b2c6d2")){{ graphite = new Item("graphite", Color.valueOf("b2c6d2")){{
type = ItemType.material; type = ItemType.material;
cost = 1.3f; cost = 1f;
}};
sand = new Item("sand", Color.valueOf("f7cba4")){{
}}; }};
coal = new Item("coal", Color.valueOf("272727")){{ coal = new Item("coal", Color.valueOf("272727")){{
@@ -43,7 +47,7 @@ public class Items implements ContentList{
titanium = new Item("titanium", Color.valueOf("8da1e3")){{ titanium = new Item("titanium", Color.valueOf("8da1e3")){{
type = ItemType.material; type = ItemType.material;
hardness = 3; hardness = 3;
cost = 1.1f; cost = 1f;
}}; }};
thorium = new Item("thorium", Color.valueOf("f9a3c7")){{ thorium = new Item("thorium", Color.valueOf("f9a3c7")){{
@@ -51,7 +55,7 @@ public class Items implements ContentList{
explosiveness = 0.2f; explosiveness = 0.2f;
hardness = 4; hardness = 4;
radioactivity = 1f; radioactivity = 1f;
cost = 1.4f; cost = 1.1f;
}}; }};
scrap = new Item("scrap", Color.valueOf("777777")){{ scrap = new Item("scrap", Color.valueOf("777777")){{
@@ -60,19 +64,19 @@ public class Items implements ContentList{
silicon = new Item("silicon", Color.valueOf("53565c")){{ silicon = new Item("silicon", Color.valueOf("53565c")){{
type = ItemType.material; type = ItemType.material;
cost = 0.9f; cost = 0.8f;
}}; }};
plastanium = new Item("plastanium", Color.valueOf("cbd97f")){{ plastanium = new Item("plastanium", Color.valueOf("cbd97f")){{
type = ItemType.material; type = ItemType.material;
flammability = 0.2f; flammability = 0.1f;
explosiveness = 0.2f; explosiveness = 0.2f;
cost = 1.6f; cost = 1.3f;
}}; }};
phasefabric = new Item("phase-fabric", Color.valueOf("f4ba6e")){{ phasefabric = new Item("phase-fabric", Color.valueOf("f4ba6e")){{
type = ItemType.material; type = ItemType.material;
cost = 1.5f; cost = 1.3f;
radioactivity = 0.6f; radioactivity = 0.6f;
}}; }};
@@ -84,10 +88,6 @@ public class Items implements ContentList{
flammability = 1.05f; flammability = 1.05f;
}}; }};
sand = new Item("sand", Color.valueOf("f7cba4")){{
}};
blastCompound = new Item("blast-compound", Color.valueOf("ff795e")){{ blastCompound = new Item("blast-compound", Color.valueOf("ff795e")){{
flammability = 0.4f; flammability = 0.4f;
explosiveness = 1.2f; explosiveness = 1.2f;

View File

@@ -35,6 +35,7 @@ public class Mechs implements ContentList{
mass = 1.2f; mass = 1.2f;
speed = 0.5f; speed = 0.5f;
boostSpeed = 0.85f; boostSpeed = 0.85f;
buildPower = 1.2f;
engineColor = Color.valueOf("ffd37f"); engineColor = Color.valueOf("ffd37f");
health = 300f; health = 300f;
@@ -47,6 +48,11 @@ public class Mechs implements ContentList{
}}; }};
} }
@Override
public void updateAlt(Player player){
player.healBy(Time.delta() * 0.4f);
}
@Override @Override
public boolean alwaysUnlocked(){ public boolean alwaysUnlocked(){
return true; return true;
@@ -63,6 +69,7 @@ public class Mechs implements ContentList{
itemCapacity = 15; itemCapacity = 15;
mass = 0.9f; mass = 0.9f;
health = 250f; health = 250f;
buildPower = 0.9f;
weaponOffsetX = -1; weaponOffsetX = -1;
weaponOffsetY = -1; weaponOffsetY = -1;
engineColor = Color.valueOf("d3ddff"); engineColor = Color.valueOf("d3ddff");
@@ -110,6 +117,7 @@ public class Mechs implements ContentList{
boostSpeed = 0.8f; boostSpeed = 0.8f;
canHeal = true; canHeal = true;
health = 200f; health = 200f;
buildPower = 1.6f;
engineColor = Pal.heal; engineColor = Pal.heal;
weapon = new Weapon("heal-blaster"){{ weapon = new Weapon("heal-blaster"){{
@@ -161,6 +169,7 @@ public class Mechs implements ContentList{
weaponOffsetY = 0; weaponOffsetY = 0;
engineColor = Color.valueOf("feb380"); engineColor = Color.valueOf("feb380");
health = 300f; health = 300f;
buildPower = 1.5f;
weapon = new Weapon("swarmer"){{ weapon = new Weapon("swarmer"){{
length = 1.5f; length = 1.5f;
recoil = 4f; recoil = 4f;
@@ -227,6 +236,7 @@ public class Mechs implements ContentList{
weaponOffsetY = -1; weaponOffsetY = -1;
engineColor = Pal.lightTrail; engineColor = Pal.lightTrail;
cellTrnsY = 1f; cellTrnsY = 1f;
buildPower = 1.1f;
weapon = new Weapon("blaster"){{ weapon = new Weapon("blaster"){{
length = 1.5f; length = 1.5f;
reload = 20f; reload = 20f;
@@ -315,6 +325,7 @@ public class Mechs implements ContentList{
itemCapacity = 30; itemCapacity = 30;
engineColor = Color.valueOf("84f491"); engineColor = Color.valueOf("84f491");
cellTrnsY = 1f; cellTrnsY = 1f;
buildPower = 2f;
weapon = new Weapon("bomber"){{ weapon = new Weapon("bomber"){{
length = 0f; length = 0f;
width = 2f; width = 2f;
@@ -346,6 +357,7 @@ public class Mechs implements ContentList{
itemCapacity = 60; itemCapacity = 60;
engineColor = Color.valueOf("feb380"); engineColor = Color.valueOf("feb380");
cellTrnsY = 1f; cellTrnsY = 1f;
buildPower = 1.2f;
weapon = new Weapon("bomber"){{ weapon = new Weapon("bomber"){{
length = 1.5f; length = 1.5f;

View File

@@ -19,17 +19,22 @@ public class TechTree implements ContentList{
node(junction, () -> { node(junction, () -> {
node(itemBridge); node(itemBridge);
node(router, () -> { node(router, () -> {
node(launchPad, () -> {
node(launchPadLarge, () -> {
});
});
node(distributor); node(distributor);
node(sorter, () -> {
node(overflowGate); node(overflowGate);
node(sorter); });
node(container, () -> { node(container, () -> {
node(unloader); node(unloader);
node(vault, () -> { node(vault, () -> {
node(launchPad, () -> {
}); });
}); });
});
node(titaniumConveyor, () -> { node(titaniumConveyor, () -> {
node(phaseConveyor, () -> { node(phaseConveyor, () -> {
@@ -194,14 +199,18 @@ public class TechTree implements ContentList{
node(combustionGenerator, () -> { node(combustionGenerator, () -> {
node(powerNode, () -> { node(powerNode, () -> {
node(powerNodeLarge, () -> { node(powerNodeLarge, () -> {
node(battery, () -> {
node(batteryLarge, () -> {
node(surgeTower, () -> { node(surgeTower, () -> {
}); });
}); });
node(battery, () -> {
node(batteryLarge, () -> {
});
}); });
node(mender, () -> {
node(mendProjector, () -> { node(mendProjector, () -> {
node(forceProjector, () -> { node(forceProjector, () -> {
node(overdriveProjector, () -> { node(overdriveProjector, () -> {
@@ -236,12 +245,13 @@ public class TechTree implements ContentList{
}); });
}); });
node(alphaDartPad, () -> {
node(deltaPad, () -> {
node(spiritFactory, () -> { node(spiritFactory, () -> {
node(phantomFactory); node(phantomFactory);
}); });
node(alphaDartPad, () -> {
node(deltaPad, () -> {
node(javelinPad, () -> { node(javelinPad, () -> {
node(tridentPad, () -> { node(tridentPad, () -> {
node(glaivePad); node(glaivePad);
@@ -263,7 +273,7 @@ public class TechTree implements ContentList{
private TechNode node(Block block, Runnable children){ private TechNode node(Block block, Runnable children){
ItemStack[] requirements = new ItemStack[block.buildRequirements.length]; ItemStack[] requirements = new ItemStack[block.buildRequirements.length];
for(int i = 0; i < requirements.length; i++){ for(int i = 0; i < requirements.length; i++){
requirements[i] = new ItemStack(block.buildRequirements[i].item, block.buildRequirements[i].amount * 6); requirements[i] = new ItemStack(block.buildRequirements[i].item, block.buildRequirements[i].amount * 5);
} }
return new TechNode(block, requirements, children); return new TechNode(block, requirements, children);

View File

@@ -91,7 +91,7 @@ public class UnitTypes implements ContentList{
hitsize = 10f; hitsize = 10f;
rotatespeed = 0.06f; rotatespeed = 0.06f;
targetAir = false; targetAir = false;
health = 800; health = 750;
weapon = new Weapon("artillery"){{ weapon = new Weapon("artillery"){{
length = 1f; length = 1f;
reload = 60f; reload = 60f;
@@ -178,8 +178,9 @@ public class UnitTypes implements ContentList{
drag = 0.01f; drag = 0.01f;
mass = 1.5f; mass = 1.5f;
isFlying = true; isFlying = true;
health = 70; health = 75;
engineOffset = 5.5f; engineOffset = 5.5f;
range = 140f;
weapon = new Weapon("chain-blaster"){{ weapon = new Weapon("chain-blaster"){{
length = 1.5f; length = 1.5f;
reload = 28f; reload = 28f;
@@ -190,7 +191,7 @@ public class UnitTypes implements ContentList{
}}; }};
ghoul = new UnitType("ghoul", Ghoul.class, Ghoul::new){{ ghoul = new UnitType("ghoul", Ghoul.class, Ghoul::new){{
health = 250; health = 220;
speed = 0.2f; speed = 0.2f;
maxVelocity = 1.4f; maxVelocity = 1.4f;
mass = 3f; mass = 3f;
@@ -198,6 +199,7 @@ public class UnitTypes implements ContentList{
isFlying = true; isFlying = true;
targetAir = false; targetAir = false;
engineOffset = 7.8f; engineOffset = 7.8f;
range = 140f;
weapon = new Weapon("bomber"){{ weapon = new Weapon("bomber"){{
length = 0f; length = 0f;
width = 2f; width = 2f;

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))){{ 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); startingItems = ItemStack.list(Items.copper, 200);
conditionWave = 10; conditionWave = 10;
itemRequirements = ItemStack.with(Items.copper, 2000); zoneRequirements = ZoneRequirement.with(groundZero, 10);
zoneRequirements = new Zone[]{groundZero};
blockRequirements = new Block[]{Blocks.router}; blockRequirements = new Block[]{Blocks.router};
resources = new Item[]{Items.copper, Items.lead}; resources = new Item[]{Items.copper, Items.lead};
rules = () -> new Rules(){{ rules = () -> new Rules(){{
waves = true; waves = true;
waveTimer = true; waveTimer = true;
waveSpacing = 60 * 60 * 1f; waveSpacing = 60 * 60 * 1.5f;
}}; }};
}}; }};
@@ -50,8 +49,7 @@ public class Zones implements ContentList{
baseLaunchCost = ItemStack.with(); baseLaunchCost = ItemStack.with();
startingItems = ItemStack.list(Items.copper, 400); startingItems = ItemStack.list(Items.copper, 400);
conditionWave = 10; conditionWave = 10;
zoneRequirements = new Zone[]{craters}; zoneRequirements = ZoneRequirement.with(craters, 10);
itemRequirements = ItemStack.with(Items.copper, 4000, Items.lead, 2000);
resources = new Item[]{Items.copper, Items.lead, Items.coal}; resources = new Item[]{Items.copper, Items.lead, Items.coal};
rules = () -> new Rules(){{ rules = () -> new Rules(){{
waves = true; waves = true;
@@ -66,8 +64,7 @@ public class Zones implements ContentList{
startingItems = ItemStack.list(Items.copper, 400); startingItems = ItemStack.list(Items.copper, 400);
conditionWave = 20; conditionWave = 20;
launchPeriod = 20; launchPeriod = 20;
zoneRequirements = new Zone[]{frozenForest}; zoneRequirements = ZoneRequirement.with(frozenForest, 10, craters, 15);
itemRequirements = ItemStack.with(Items.lead, 6000, Items.graphite, 2000);
blockRequirements = new Block[]{Blocks.graphitePress, Blocks.combustionGenerator}; blockRequirements = new Block[]{Blocks.graphitePress, Blocks.combustionGenerator};
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand}; resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand};
rules = () -> new Rules(){{ rules = () -> new Rules(){{
@@ -99,9 +96,8 @@ public class Zones implements ContentList{
startingItems = ItemStack.list(Items.copper, 400, Items.lead, 100); startingItems = ItemStack.list(Items.copper, 400, Items.lead, 100);
conditionWave = 10; conditionWave = 10;
launchPeriod = 10; launchPeriod = 10;
zoneRequirements = new Zone[]{frozenForest}; zoneRequirements = ZoneRequirement.with(frozenForest, 15);
blockRequirements = new Block[]{Blocks.pneumaticDrill}; 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}; resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium};
rules = () -> new Rules(){{ rules = () -> new Rules(){{
waves = true; waves = true;
@@ -114,10 +110,9 @@ public class Zones implements ContentList{
loadout = Loadouts.basicNucleus; loadout = Loadouts.basicNucleus;
baseLaunchCost = ItemStack.with(); baseLaunchCost = ItemStack.with();
startingItems = ItemStack.list(Items.copper, 1500); startingItems = ItemStack.list(Items.copper, 1500);
itemRequirements = ItemStack.with(Items.copper, 8000, Items.metaglass, 2000, Items.graphite, 3000);
conditionWave = 10; conditionWave = 10;
launchPeriod = 20; launchPeriod = 20;
zoneRequirements = new Zone[]{ruinousShores}; zoneRequirements = ZoneRequirement.with(stainedMountains, 20);
blockRequirements = new Block[]{Blocks.thermalGenerator}; blockRequirements = new Block[]{Blocks.thermalGenerator};
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.sand}; resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.sand};
rules = () -> new Rules(){{ rules = () -> new Rules(){{
@@ -133,11 +128,10 @@ public class Zones implements ContentList{
loadout = Loadouts.basicNucleus; loadout = Loadouts.basicNucleus;
baseLaunchCost = ItemStack.with(); baseLaunchCost = ItemStack.with();
startingItems = ItemStack.list(Items.copper, 2500, Items.lead, 3000, Items.silicon, 800, Items.metaglass, 400); 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; conditionWave = 30;
launchPeriod = 15; launchPeriod = 15;
zoneRequirements = new Zone[]{desolateRift}; zoneRequirements = ZoneRequirement.with(desolateRift, 20);
blockRequirements = new Block[]{Blocks.blastDrill, Blocks.thermalGenerator}; blockRequirements = new Block[]{Blocks.thermalGenerator};
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.thorium, Items.sand}; resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.thorium, Items.sand};
rules = () -> new Rules(){{ rules = () -> new Rules(){{
waves = true; waves = true;

View File

@@ -8,6 +8,7 @@ import io.anuke.arc.graphics.GL20;
import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.TextureAtlas; import io.anuke.arc.graphics.g2d.TextureAtlas;
import io.anuke.arc.input.KeyCode; import io.anuke.arc.input.KeyCode;
import io.anuke.arc.scene.ui.TextField;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.mindustry.content.Mechs; import io.anuke.mindustry.content.Mechs;
import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.GameState.State;
@@ -48,7 +49,7 @@ public class Control implements ApplicationListener{
private Interval timer = new Interval(2); private Interval timer = new Interval(2);
private boolean hiscore = false; private boolean hiscore = false;
private boolean wasPaused = false; private boolean wasPaused = false;
private InputHandler[] inputs = {}; private InputHandler input;
public Control(){ public Control(){
IntBuffer buf = BufferUtils.newIntBuffer(1); IntBuffer buf = BufferUtils.newIntBuffer(1);
@@ -80,7 +81,7 @@ public class Control implements ApplicationListener{
"lastBuild", 0 "lastBuild", 0
); );
addPlayer(0); createPlayer();
saves.load(); saves.load();
@@ -91,21 +92,17 @@ public class Control implements ApplicationListener{
}); });
Events.on(PlayEvent.class, event -> { Events.on(PlayEvent.class, event -> {
for(Player player : players){
player.add(); player.add();
}
state.set(State.playing); state.set(State.playing);
}); });
Events.on(WorldLoadEvent.class, event -> { 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 -> { Events.on(ResetEvent.class, event -> {
for(Player player : players){
player.reset(); player.reset();
}
hiscore = false; hiscore = false;
@@ -139,7 +136,7 @@ public class Control implements ApplicationListener{
if(state.rules.pvp && !Net.active()){ if(state.rules.pvp && !Net.active()){
try{ try{
Net.host(port); Net.host(port);
players[0].isAdmin = true; player.isAdmin = true;
}catch(IOException e){ }catch(IOException e){
ui.showError(Core.bundle.format("server.error", Strings.parseException(e, false))); ui.showError(Core.bundle.format("server.error", Strings.parseException(e, false)));
Core.app.post(() -> state.set(State.menu)); Core.app.post(() -> state.set(State.menu));
@@ -150,7 +147,7 @@ public class Control implements ApplicationListener{
Events.on(UnlockEvent.class, e -> ui.hudfrag.showUnlock(e.content)); Events.on(UnlockEvent.class, e -> ui.hudfrag.showUnlock(e.content));
Events.on(BlockBuildEndEvent.class, e -> { Events.on(BlockBuildEndEvent.class, e -> {
if(e.team == players[0].getTeam()){ if(e.team == player.getTeam()){
if(e.breaking){ if(e.breaking){
state.stats.buildingsDeconstructed++; state.stats.buildingsDeconstructed++;
}else{ }else{
@@ -160,19 +157,19 @@ public class Control implements ApplicationListener{
}); });
Events.on(BlockDestroyEvent.class, e -> { Events.on(BlockDestroyEvent.class, e -> {
if(e.tile.getTeam() == players[0].getTeam()){ if(e.tile.getTeam() == player.getTeam()){
state.stats.buildingsDestroyed ++; state.stats.buildingsDestroyed ++;
} }
}); });
Events.on(UnitDestroyEvent.class, e -> { Events.on(UnitDestroyEvent.class, e -> {
if(e.unit.getTeam() != players[0].getTeam()){ if(e.unit.getTeam() != player.getTeam()){
state.stats.enemyUnitsDestroyed ++; state.stats.enemyUnitsDestroyed ++;
} }
}); });
Events.on(ZoneCompleteEvent.class, e -> { Events.on(ZoneRequireCompleteEvent.class, e -> {
ui.hudfrag.showToast(Core.bundle.format("zone.complete", e.zone.conditionWave)); ui.hudfrag.showToast(Core.bundle.format("zone.requirement.complete", state.wave, e.zone.localizedName));
}); });
Events.on(ZoneConfigureCompleteEvent.class, e -> { Events.on(ZoneConfigureCompleteEvent.class, e -> {
@@ -180,65 +177,29 @@ public class Control implements ApplicationListener{
}); });
} }
public void addPlayer(int index){ void createPlayer(){
if(players.length != index + 1){ player = new Player();
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();
player.name = Core.settings.getString("name"); player.name = Core.settings.getString("name");
player.mech = mobile ? Mechs.starterMobile : Mechs.starterDesktop; 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.isLocal = true;
player.playerIndex = index;
player.isMobile = mobile; player.isMobile = mobile;
players[index] = player;
if(setTo != null){ if(mobile){
player.set(setTo.x, setTo.y); input = new MobileInput();
}else{
input = new DesktopInput();
} }
if(!state.is(State.menu)){ if(!state.is(State.menu)){
player.add(); player.add();
} }
InputHandler input;
if(mobile){
input = new MobileInput(player);
}else{
input = new DesktopInput(player);
}
inputs[index] = input;
Core.input.addProcessor(input); Core.input.addProcessor(input);
} }
public void removePlayer(){ public InputHandler input(){
players[players.length - 1].remove(); return input;
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 void playMap(Map map, Rules rules){ public void playMap(Map map, Rules rules){
@@ -259,8 +220,6 @@ public class Control implements ApplicationListener{
content.dispose(); content.dispose();
Net.dispose(); Net.dispose();
ui.editor.dispose(); ui.editor.dispose();
inputs = new InputHandler[]{};
players = new Player[]{};
} }
@Override @Override
@@ -304,20 +263,16 @@ public class Control implements ApplicationListener{
public void update(){ public void update(){
saves.update(); saves.update();
for(InputHandler inputHandler : inputs){ input.updateController();
inputHandler.updateController();
}
//autosave global data if it's modified //autosave global data if it's modified
data.checkSave(); data.checkSave();
if(!state.is(State.menu)){ if(!state.is(State.menu)){
for(InputHandler input : inputs){
input.update(); input.update();
}
if(world.isZone()){ 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()){ for(Item item : content.items()){
if(tile.entity.items.has(item)){ if(tile.entity.items.has(item)){
data.unlockContent(item); data.unlockContent(item);
@@ -344,10 +299,18 @@ public class Control implements ApplicationListener{
} }
} }
if(!mobile && Core.input.keyTap(Binding.screenshot) && !(scene.getKeyboardFocus() instanceof TextField) && !ui.chatfrag.chatOpen()){
renderer.takeMapScreenshot();
}
}else{ }else{
if(!state.isPaused()){ if(!state.isPaused()){
Time.update(); Time.update();
} }
if(!scene.hasDialog() && Core.input.keyTap(KeyCode.BACK)){
Platform.instance.hide();
}
} }
} }
} }

View File

@@ -63,7 +63,7 @@ public class NetClient implements ApplicationListener{
public NetClient(){ public NetClient(){
Net.handleClient(Connect.class, packet -> { Net.handleClient(Connect.class, packet -> {
Player player = players[0]; Log.info("Connecting to server: {0}", packet.addressTCP);
player.isAdmin = false; player.isAdmin = false;
@@ -188,8 +188,8 @@ public class NetClient implements ApplicationListener{
@Remote(variants = Variant.one) @Remote(variants = Variant.one)
public static void onPositionSet(float x, float y){ public static void onPositionSet(float x, float y){
players[0].x = x; player.x = x;
players[0].y = y; player.y = y;
} }
@Remote @Remote
@@ -213,6 +213,11 @@ public class NetClient implements ApplicationListener{
SyncTrait entity = (SyncTrait) group.getByID(id); SyncTrait entity = (SyncTrait) group.getByID(id);
boolean add = false; boolean add = false;
if(entity == null && id == player.id){
entity = player;
add = true;
}
//entity must not be added yet, so create it //entity must not be added yet, so create it
if(entity == null){ if(entity == null){
entity = (SyncTrait) TypeTrait.getTypeByID(typeID).get(); //create entity from supplier 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++){ for(int i = 0; i < cores; i++){
int pos = input.readInt(); int pos = input.readInt();
Tile tile = world.tile(pos); Tile tile = world.tile(pos);
if(tile != null && tile.entity != null){ if(tile != null && tile.entity != null){
tile.entity.items.read(input); tile.entity.items.read(input);
}else{ }else{
@@ -333,8 +339,6 @@ public class NetClient implements ApplicationListener{
void sync(){ void sync(){
if(timer.get(0, playerSyncTime)){ if(timer.get(0, playerSyncTime)){
Player player = players[0];
BuildRequest[] requests; BuildRequest[] requests;
//limit to 10 to prevent buffer overflows //limit to 10 to prevent buffer overflows
int usedRequests = Math.min(player.getPlaceQueue().size, 10); int usedRequests = Math.min(player.getPlaceQueue().size, 10);

View File

@@ -190,20 +190,7 @@ public class NetServer implements ApplicationListener{
//playing in pvp mode automatically assigns players to teams //playing in pvp mode automatically assigns players to teams
if(state.rules.pvp){ if(state.rules.pvp){
//find team with minimum amount of players and auto-assign player to that. player.setTeam(assignTeam());
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);
Log.info("Auto-assigned player {0} to team {1}.", player.name, player.getTeam()); 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(){
//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 : playerGroup.all()){
if(other.getTeam() == team){
count ++;
}
}
return count;
}
return Integer.MAX_VALUE;
});
}
public void sendWorldData(Player player, int clientID){ public void sendWorldData(Player player, int clientID){
ByteArrayOutputStream stream = new ByteArrayOutputStream(); ByteArrayOutputStream stream = new ByteArrayOutputStream();
DeflaterOutputStream def = new DeflaterOutputStream(stream); DeflaterOutputStream def = new DeflaterOutputStream(stream);
@@ -294,10 +297,12 @@ public class NetServer implements ApplicationListener{
player.isShooting = shooting; player.isShooting = shooting;
player.getPlaceQueue().clear(); player.getPlaceQueue().clear();
for(BuildRequest req : requests){ for(BuildRequest req : requests){
Tile tile = world.tile(req.x, req.y);
if(tile == null) continue;
//auto-skip done requests //auto-skip done requests
if(req.breaking && world.tile(req.x, req.y).block() == Blocks.air){ if(req.breaking && tile.block() == Blocks.air){
continue; 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; continue;
} }
player.getPlaceQueue().addLast(req); player.getPlaceQueue().addLast(req);
@@ -425,7 +430,7 @@ public class NetServer implements ApplicationListener{
Log.err("Cannot kick unknown player!"); Log.err("Cannot kick unknown player!");
return; return;
}else{ }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); Player player = connections.get(con.id);
@@ -458,7 +463,7 @@ public class NetServer implements ApplicationListener{
byte[] stateBytes = syncStream.toByteArray(); byte[] stateBytes = syncStream.toByteArray();
//write basic state data. //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); viewport.setSize(player.con.viewWidth, player.con.viewHeight).setCenter(player.con.viewX, player.con.viewY);

View File

@@ -37,8 +37,6 @@ public abstract class Platform {
} }
/**Update discord RPC.*/ /**Update discord RPC.*/
public void updateRPC(){} public void updateRPC(){}
/**Open donation dialog. Currently android only.*/
public void openDonations(){}
/**Whether donating is supported.*/ /**Whether donating is supported.*/
public boolean canDonate(){ public boolean canDonate(){
return false; return false;
@@ -69,6 +67,9 @@ public abstract class Platform {
*/ */
public void showFileChooser(String text, String content, Consumer<FileHandle> cons, boolean open, String filetype){} public void showFileChooser(String text, String content, Consumer<FileHandle> cons, boolean open, String filetype){}
/**Hide the app. Android only.*/
public void hide(){}
/**Forces the app into landscape mode. Currently Android only.*/ /**Forces the app into landscape mode. Currently Android only.*/
public void beginForceLandscape(){} public void beginForceLandscape(){}

View File

@@ -2,10 +2,13 @@ package io.anuke.mindustry.core;
import io.anuke.arc.ApplicationListener; import io.anuke.arc.ApplicationListener;
import io.anuke.arc.Core; import io.anuke.arc.Core;
import io.anuke.arc.files.FileHandle;
import io.anuke.arc.function.Consumer; import io.anuke.arc.function.Consumer;
import io.anuke.arc.function.Predicate; import io.anuke.arc.function.Predicate;
import io.anuke.arc.graphics.Camera; import io.anuke.arc.graphics.Camera;
import io.anuke.arc.graphics.Color; 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.Draw;
import io.anuke.arc.graphics.g2d.Lines; import io.anuke.arc.graphics.g2d.Lines;
import io.anuke.arc.graphics.g2d.SpriteBatch; 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.Mathf;
import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.math.geom.Rectangle;
import io.anuke.arc.math.geom.Vector2; 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.Time;
import io.anuke.arc.util.Tmp; import io.anuke.arc.util.Tmp;
import io.anuke.arc.util.pooling.Pools; import io.anuke.arc.util.pooling.Pools;
@@ -42,6 +47,7 @@ public class Renderer implements ApplicationListener{
public final BlockRenderer blocks = new BlockRenderer(); public final BlockRenderer blocks = new BlockRenderer();
public final MinimapRenderer minimap = new MinimapRenderer(); public final MinimapRenderer minimap = new MinimapRenderer();
public final OverlayRenderer overlays = new OverlayRenderer(); public final OverlayRenderer overlays = new OverlayRenderer();
public final Pixelator pixelator = new Pixelator();
public FrameBuffer shieldBuffer = new FrameBuffer(2, 2); public FrameBuffer shieldBuffer = new FrameBuffer(2, 2);
private Color clearColor; private Color clearColor;
@@ -53,7 +59,7 @@ public class Renderer implements ApplicationListener{
public Renderer(){ public Renderer(){
batch = new SpriteBatch(4096); batch = new SpriteBatch(4096);
camera = new Camera(); camera = new Camera();
Lines.setCircleVertices(14); Lines.setCircleVertices(20);
Shaders.init(); Shaders.init();
Effects.setScreenShakeProvider((intensity, duration) -> { Effects.setScreenShakeProvider((intensity, duration) -> {
@@ -113,11 +119,11 @@ public class Renderer implements ApplicationListener{
if(state.is(State.menu)){ if(state.is(State.menu)){
graphics.clear(Color.BLACK); graphics.clear(Color.BLACK);
}else{ }else{
Vector2 position = Tmp.v3.set(players[0]); Vector2 position = Tmp.v3.set(player);
if(players[0].isDead()){ if(player.isDead()){
TileEntity core = players[0].getClosestCore(); TileEntity core = player.getClosestCore();
if(core != null && players[0].spawner == null){ if(core != null && player.spawner == null){
camera.position.lerpDelta(core.x, core.y, 0.08f); camera.position.lerpDelta(core.x, core.y, 0.08f);
}else{ }else{
camera.position.lerpDelta(position, 0.08f); camera.position.lerpDelta(position, 0.08f);
@@ -127,10 +133,13 @@ public class Renderer implements ApplicationListener{
} }
updateShake(0.75f); updateShake(0.75f);
if(pixelator.enabled()){
pixelator.drawPixelate();
}else{
draw(); draw();
} }
} }
}
void updateShake(float scale){ void updateShake(float scale){
if(shaketime > 0){ if(shaketime > 0){
@@ -148,13 +157,13 @@ public class Renderer implements ApplicationListener{
camera.update(); camera.update();
if(Float.isNaN(camera.position.x) || Float.isNaN(camera.position.y)){ if(Float.isNaN(camera.position.x) || Float.isNaN(camera.position.y)){
camera.position.x = players[0].x; camera.position.x = player.x;
camera.position.y = players[0].y; camera.position.y = player.y;
} }
graphics.clear(clearColor); 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()); shieldBuffer.resize(graphics.getWidth(), graphics.getHeight());
} }
@@ -169,6 +178,7 @@ public class Renderer implements ApplicationListener{
blocks.processBlocks(); blocks.processBlocks();
blocks.drawShadows(); blocks.drawShadows();
Draw.color();
blocks.floor.beginDraw(); blocks.floor.beginDraw();
blocks.floor.drawLayer(CacheLayer.walls); blocks.floor.drawLayer(CacheLayer.walls);
@@ -183,6 +193,8 @@ public class Renderer implements ApplicationListener{
blocks.drawBlocks(Layer.overlay); blocks.drawBlocks(Layer.overlay);
drawGroundShadows();
drawAllTeams(false); drawAllTeams(false);
blocks.skipLayer(Layer.turret); blocks.skipLayer(Layer.turret);
@@ -199,6 +211,7 @@ public class Renderer implements ApplicationListener{
drawAndInterpolate(playerGroup, p -> true, Player::drawBuildRequests); drawAndInterpolate(playerGroup, p -> true, Player::drawBuildRequests);
if(EntityDraw.countInBounds(shieldGroup) > 0){ if(EntityDraw.countInBounds(shieldGroup) > 0){
if(settings.getBool("animatedshields")){
Draw.flush(); Draw.flush();
shieldBuffer.begin(); shieldBuffer.begin();
graphics.clear(Color.CLEAR); graphics.clear(Color.CLEAR);
@@ -211,18 +224,41 @@ public class Renderer implements ApplicationListener{
Draw.rect(Draw.wrap(shieldBuffer.getTexture()), camera.position.x, camera.position.y, camera.width, -camera.height); Draw.rect(Draw.wrap(shieldBuffer.getTexture()), camera.position.x, camera.position.y, camera.width, -camera.height);
Draw.color(); Draw.color();
Draw.shader(); Draw.shader();
}else{
EntityDraw.drawWith(shieldGroup, shield -> true, shield -> ((ShieldEntity)shield).drawSimple());
}
} }
overlays.drawTop(); overlays.drawTop();
EntityDraw.setClip(false);
drawAndInterpolate(playerGroup, p -> !p.isDead() && !p.isLocal, Player::drawName); drawAndInterpolate(playerGroup, p -> !p.isDead() && !p.isLocal, Player::drawName);
EntityDraw.setClip(true);
Draw.color(); Draw.color();
Draw.flush(); 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(){ private void drawFlyerShadows(){
float trnsX = -12, trnsY = -13; float trnsX = -12, trnsY = -13;
Draw.color(0, 0, 0, 0.22f); Draw.color(0, 0, 0, 0.22f);
@@ -271,10 +307,6 @@ public class Renderer implements ApplicationListener{
EntityDraw.drawWith(group, toDraw, drawer); EntityDraw.drawWith(group, toDraw, drawer);
} }
public float cameraScale(){
return camerascale;
}
public void scaleCamera(float amount){ public void scaleCamera(float amount){
targetscale += amount; targetscale += amount;
clampScale(); clampScale();
@@ -282,7 +314,62 @@ public class Renderer implements ApplicationListener{
public void clampScale(){ public void clampScale(){
float s = io.anuke.arc.scene.ui.layout.Unit.dp.scl(1f); 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);
} }
} }

View File

@@ -63,11 +63,11 @@ public class UI implements ApplicationListener{
public AdminsDialog admins; public AdminsDialog admins;
public TraceDialog traces; public TraceDialog traces;
public ChangelogDialog changelog; public ChangelogDialog changelog;
public LocalPlayerDialog localplayers;
public DatabaseDialog database; public DatabaseDialog database;
public ContentInfoDialog content; public ContentInfoDialog content;
public DeployDialog deploy; public DeployDialog deploy;
public TechTreeDialog tech; public TechTreeDialog tech;
public MinimapDialog minimap;
public Cursor drillCursor, unloadCursor; public Cursor drillCursor, unloadCursor;
@@ -109,6 +109,7 @@ public class UI implements ApplicationListener{
}); });
Colors.put("accent", Pal.accent); Colors.put("accent", Pal.accent);
Colors.put("stat", Pal.stat);
loadCursors(); loadCursors();
} }
@@ -175,15 +176,15 @@ public class UI implements ApplicationListener{
admins = new AdminsDialog(); admins = new AdminsDialog();
traces = new TraceDialog(); traces = new TraceDialog();
maps = new MapsDialog(); maps = new MapsDialog();
localplayers = new LocalPlayerDialog();
content = new ContentInfoDialog(); content = new ContentInfoDialog();
deploy = new DeployDialog(); deploy = new DeployDialog();
tech = new TechTreeDialog(); tech = new TechTreeDialog();
minimap = new MinimapDialog();
Group group = Core.scene.root; Group group = Core.scene.root;
backfrag.build(group); backfrag.build(group);
control.input(0).getFrag().build(group); control.input().getFrag().build(group);
hudfrag.build(group); hudfrag.build(group);
menufrag.build(group); menufrag.build(group);
chatfrag.container().build(group); chatfrag.container().build(group);
@@ -219,7 +220,7 @@ public class UI implements ApplicationListener{
cont.margin(30).add(text).padRight(6f); cont.margin(30).add(text).padRight(6f);
TextField field = cont.addField(def, t -> { TextField field = cont.addField(def, t -> {
}).size(170f, 50f).get(); }).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); Platform.instance.addDialog(field);
buttons.defaults().size(120, 54).pad(4); buttons.defaults().size(120, 54).pad(4);
buttons.addButton("$ok", () -> { buttons.addButton("$ok", () -> {
@@ -288,11 +289,11 @@ public class UI implements ApplicationListener{
public String formatAmount(int number){ public String formatAmount(int number){
if(number >= 1000000){ if(number >= 1000000){
return Strings.toFixed(number / 1000000f, 1) + "[gray]mil[]"; return Strings.fixed(number / 1000000f, 1) + "[gray]mil[]";
}else if(number >= 10000){ }else if(number >= 10000){
return number / 1000 + "[gray]k[]"; return number / 1000 + "[gray]k[]";
}else if(number >= 1000){ }else if(number >= 1000){
return Strings.toFixed(number / 1000f, 1) + "[gray]k[]"; return Strings.fixed(number / 1000f, 1) + "[gray]k[]";
}else{ }else{
return number + ""; return number + "";
} }

View File

@@ -1,5 +1,6 @@
package io.anuke.mindustry.core; package io.anuke.mindustry.core;
import io.anuke.annotations.Annotations.Nullable;
import io.anuke.arc.ApplicationListener; import io.anuke.arc.ApplicationListener;
import io.anuke.arc.Core; import io.anuke.arc.Core;
import io.anuke.arc.Events; import io.anuke.arc.Events;
@@ -96,11 +97,11 @@ public class World implements ApplicationListener{
return tiles == null ? 0 : tiles[0].length; 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)); 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){ if(tiles == null){
return null; return null;
} }
@@ -112,7 +113,7 @@ public class World implements ApplicationListener{
return tiles[x][y]; 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)); return tile(Math.round(x / tilesize), Math.round(y / tilesize));
} }
@@ -258,19 +259,24 @@ public class World implements ApplicationListener{
invalidMap = false; invalidMap = false;
if(!headless){ 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"); ui.showError("$map.nospawn");
invalidMap = true; invalidMap = true;
}else if(state.rules.pvp){ //pvp maps need two cores to be valid }else if(state.rules.pvp){ //pvp maps need two cores to be valid
invalidMap = true; invalidMap = true;
for(Team team : Team.all){ 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; invalidMap = false;
} }
} }
if(invalidMap){ if(invalidMap){
ui.showError("$map.nospawn.pvp"); 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{ }else{
invalidMap = true; invalidMap = true;
@@ -451,9 +457,7 @@ public class World implements ApplicationListener{
} }
for(int x = 0; x < tiles.length; x++){ for(int x = 0; x < tiles.length; x++){
for(int y = 0; y < tiles[0].length; y++){ System.arraycopy(writeBuffer[x], 0, dark[x], 0, tiles[0].length);
dark[x][y] = writeBuffer[x][y];
}
} }
} }

View File

@@ -4,6 +4,7 @@ import io.anuke.annotations.Annotations.Struct;
import io.anuke.arc.collection.LongArray; import io.anuke.arc.collection.LongArray;
import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.gen.TileOp; import io.anuke.mindustry.gen.TileOp;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.Floor; import io.anuke.mindustry.world.blocks.Floor;
@@ -39,7 +40,11 @@ public class DrawOperation{
if(type == OpType.floor.ordinal()){ if(type == OpType.floor.ordinal()){
tile.setFloor((Floor)content.block(to)); tile.setFloor((Floor)content.block(to));
}else if(type == OpType.block.ordinal()){ }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()){ }else if(type == OpType.rotation.ordinal()){
tile.setRotation(to); tile.setRotation(to);
}else if(type == OpType.team.ordinal()){ }else if(type == OpType.team.ordinal()){

View File

@@ -49,7 +49,7 @@ public class EditorTile extends Tile{
@Override @Override
public void setBlock(Block type){ public void setBlock(Block type){
Block previous = wall == null ? Blocks.air : wall; Block previous =wall;
if(previous == type) return; if(previous == type) return;
super.setBlock(type); super.setBlock(type);
op(TileOp.get(x, y, (byte)OpType.block.ordinal(), previous.id, type.id)); op(TileOp.get(x, y, (byte)OpType.block.ordinal(), previous.id, type.id));

View File

@@ -146,6 +146,27 @@ public class MapEditor{
return tiles[0].length; 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){ public void draw(int x, int y, boolean paint){
draw(x, y, paint, drawBlock); draw(x, y, paint, drawBlock);
} }

View File

@@ -181,7 +181,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
shown(() -> { shown(() -> {
saved = true; saved = true;
Platform.instance.beginForceLandscape(); if(!Core.settings.getBool("landscape")) Platform.instance.beginForceLandscape();
editor.clearOp(); editor.clearOp();
Core.scene.setScrollFocus(view); Core.scene.setScrollFocus(view);
if(!shownWithMap){ if(!shownWithMap){
@@ -195,7 +195,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
hidden(() -> { hidden(() -> {
editor.clearOp(); editor.clearOp();
Platform.instance.updateRPC(); Platform.instance.updateRPC();
Platform.instance.endForceLandscape(); if(!Core.settings.getBool("landscape")) Platform.instance.endForceLandscape();
}); });
} }

View File

@@ -233,7 +233,7 @@ public class MapGenerateDialog extends FloatingDialog{
Tile tile = editor.tile(x, y); Tile tile = editor.tile(x, y);
DummyTile write = writeTiles[x][y]; DummyTile write = writeTiles[x][y];
tile.setRotation((byte)write.rotation); tile.setRotation(write.rotation);
tile.setFloor((Floor)content.block(write.floor)); tile.setFloor((Floor)content.block(write.floor));
tile.setBlock(content.block(write.block)); tile.setBlock(content.block(write.block));
tile.setTeam(Team.all[write.team]); tile.setTeam(Team.all[write.team]);

View File

@@ -72,8 +72,7 @@ public class MapRenderer implements Disposable{
IndexedRenderer mesh = chunks[x][y]; IndexedRenderer mesh = chunks[x][y];
if(mesh == null){ if(mesh == null){
chunks[x][y] = new IndexedRenderer(chunksize * chunksize * 2); continue;
mesh = chunks[x][y];
} }
mesh.getTransformMatrix().setToTranslation(tx, ty).scale(tw / (width * tilesize), th / (height * tilesize)); 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; offsetX = tilesize/2f - region.getWidth()/2f * Draw.scl;
offsetY = tilesize/2f - region.getHeight()/2f * Draw.scl; offsetY = tilesize/2f - region.getHeight()/2f * Draw.scl;
}else if(wall == Blocks.air && tile.ore() != null){ }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{ }else{
region = Core.atlas.find("clear-editor"); region = Core.atlas.find("clear-editor");
} }

View File

@@ -184,7 +184,7 @@ public class WaveInfoDialog extends FloatingDialog{
}).width(80f); }).width(80f);
a.add(" + "); 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)){ if(Strings.canParsePositiveFloat(text)){
group.unitScaling = 1f / Strings.parseFloat(text); group.unitScaling = 1f / Strings.parseFloat(text);
updateWaves(); updateWaves();

View File

@@ -1,7 +1,6 @@
package io.anuke.mindustry.editor.generation; package io.anuke.mindustry.editor.generation;
import io.anuke.mindustry.content.Blocks; 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.editor.generation.FilterOption.SliderOption;
import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block;

View File

@@ -1,22 +1,27 @@
package io.anuke.mindustry.entities; 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.Consumer;
import io.anuke.arc.function.Predicate; import io.anuke.arc.function.Predicate;
import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.Color;
import io.anuke.arc.math.Mathf; import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.math.geom.Geometry;
import io.anuke.arc.math.geom.Point2;
import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.math.geom.Rectangle;
import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.util.Time; import io.anuke.arc.util.Time;
import io.anuke.mindustry.content.Bullets; import io.anuke.mindustry.content.Bullets;
import io.anuke.mindustry.content.Fx; 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.bullet.Bullet;
import io.anuke.mindustry.entities.effect.Fire; import io.anuke.mindustry.entities.effect.Fire;
import io.anuke.mindustry.entities.effect.Lightning; import io.anuke.mindustry.entities.effect.Lightning;
import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.type.Unit;
import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.gen.PropCell;
import io.anuke.mindustry.graphics.Pal; import io.anuke.mindustry.graphics.Pal;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
@@ -27,6 +32,8 @@ public class Damage{
private static Rectangle rect = new Rectangle(); private static Rectangle rect = new Rectangle();
private static Rectangle hitrect = new Rectangle(); private static Rectangle hitrect = new Rectangle();
private static Vector2 tr = new Vector2(); 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.*/ /**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){ 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.*/ /**Damages everything in a radius.*/
public static void damage(float x, float y, float radius, float damage){ 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.*/ /**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){ 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 -> { Consumer<Unit> cons = entity -> {
if(entity.getTeam() == team || entity.dst(x, y) > radius){ if(entity.getTeam() == team || entity.dst(x, y) > radius){
return; return;
@@ -175,17 +187,68 @@ public class Damage{
Units.getNearby(rect, cons); Units.getNearby(rect, cons);
} }
if(!complete){
int trad = (int)(radius / tilesize); int trad = (int)(radius / tilesize);
for(int dx = -trad; dx <= trad; dx++){ Tile tile = world.tileWorld(x, y);
for(int dy = -trad; dy <= trad; dy++){ if(tile != null){
Tile tile = world.tile(Math.round(x / tilesize) + dx, Math.round(y / tilesize) + dy); tileDamage(team, tile.x, tile.y, trad, damage);
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); }else{
tile.entity.damage(amount); 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;
//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) <= trad){
tile.entity.damage(damage);
}
}
}
} }
private static float calculateDamage(float x, float y, float tx, float ty, float radius, float damage){ private static float calculateDamage(float x, float y, float tx, float ty, float radius, float damage){
@@ -194,4 +257,11 @@ public class Damage{
float scaled = Mathf.lerp(1f - dist / radius, 1f, falloff); float scaled = Mathf.lerp(1f - dist / radius, 1f, falloff);
return damage * scaled; return damage * scaled;
} }
@Struct
class PropCellStruct{
byte x;
byte y;
short damage;
}
} }

View File

@@ -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); 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); void render(EffectContainer effect);
} }
} }

View File

@@ -12,7 +12,7 @@ import io.anuke.mindustry.entities.traits.SolidTrait;
public class EntityCollisions{ public class EntityCollisions{
//range for tile collision scanning //range for tile collision scanning
private static final int r = 2; private static final int r = 1;
//move in 1-unit chunks //move in 1-unit chunks
private static final float seg = 1f; private static final float seg = 1f;

View File

@@ -6,6 +6,7 @@ import io.anuke.arc.function.Predicate;
import io.anuke.arc.graphics.Camera; import io.anuke.arc.graphics.Camera;
import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.math.geom.Rectangle;
import io.anuke.mindustry.entities.traits.DrawTrait; import io.anuke.mindustry.entities.traits.DrawTrait;
import io.anuke.mindustry.entities.traits.Entity;
public class EntityDraw{ public class EntityDraw{
private static final Rectangle viewport = new Rectangle(); 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); viewport.set(cam.position.x - cam.width / 2, cam.position.y - cam.height / 2, cam.width, cam.height);
} }
group.forEach(e -> { for(Entity e : group.all()){
if(!(e instanceof DrawTrait)) return; if(!(e instanceof DrawTrait) || !toDraw.test((T)e) || !e.isAdded()) continue;
T t = (T) e;
if(!toDraw.test(t) || !e.isAdded()) return;
if(!clip || rect.setSize(((DrawTrait) e).drawSize()).setCenter(e.getX(), e.getY()).overlaps(viewport)){ if(!clip || rect.setSize(((DrawTrait) e).drawSize()).setCenter(e.getX(), e.getY()).overlaps(viewport)){
cons.accept(t); cons.accept((T)e);
} }
}); }
} }
} }

View File

@@ -4,13 +4,6 @@ import io.anuke.arc.Core;
import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.TextureRegion; 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; import io.anuke.mindustry.graphics.Pal;
/**An extended BulletType for most ammo-based bullets shot from turrets and units.*/ /**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 float bulletShrink = 0.5f;
public String bulletSprite; 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 backRegion;
public TextureRegion frontRegion; public TextureRegion frontRegion;
public float hitShake = 0f;
public BasicBulletType(float speed, float damage, String bulletSprite){ public BasicBulletType(float speed, float damage, String bulletSprite){
super(speed, damage); super(speed, damage);
this.bulletSprite = bulletSprite; 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.rect(frontRegion, b.x, b.y, bulletWidth, height, b.rot() - 90);
Draw.color(); 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);
}
}
} }

View File

@@ -131,6 +131,17 @@ public class Bullet extends SolidEntity implements DamageTrait, ScaleTrait, Pool
this.data = data; this.data = data;
} }
public float damageMultiplier(){
if(owner instanceof Unit){
return ((Unit) owner).getDamageMultipler();
}
if(owner instanceof Lightning && data instanceof Float){
return (Float)data;
}
return 1f;
}
@Override @Override
public void absorb(){ public void absorb(){
supressCollision = true; supressCollision = true;
@@ -144,16 +155,7 @@ public class Bullet extends SolidEntity implements DamageTrait, ScaleTrait, Pool
@Override @Override
public float damage(){ public float damage(){
//todo hacky way to get damage, refactor return type.damage * damageMultiplier();
if(owner instanceof Unit){
return type.damage * ((Unit) owner).getDamageMultipler();
}
if(owner instanceof Lightning && data instanceof Float){
return (Float)data;
}
return type.damage;
} }
@Override @Override

View File

@@ -1,10 +1,17 @@
package io.anuke.mindustry.entities.bullet; 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;
import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.mindustry.entities.Effects.Effect;
import io.anuke.mindustry.content.StatusEffects; import io.anuke.mindustry.entities.Units;
import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.entities.effect.Lightning;
import io.anuke.mindustry.entities.traits.TargetTrait;
import io.anuke.mindustry.game.Content; import io.anuke.mindustry.game.Content;
import io.anuke.mindustry.graphics.Pal;
import io.anuke.mindustry.type.ContentType; import io.anuke.mindustry.type.ContentType;
import io.anuke.mindustry.type.StatusEffect; import io.anuke.mindustry.type.StatusEffect;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
@@ -41,8 +48,6 @@ public abstract class BulletType extends Content{
public StatusEffect status = StatusEffects.none; public StatusEffect status = StatusEffects.none;
/**Intensity of applied status effect in terms of duration.*/ /**Intensity of applied status effect in terms of duration.*/
public float statusDuration = 60 * 1f; public float statusDuration = 60 * 1f;
/**What fraction of armor is pierced, 0-1*/
public float armorPierce = 0f;
/**Whether to sync this bullet to clients.*/ /**Whether to sync this bullet to clients.*/
public boolean syncable; public boolean syncable;
/**Whether this bullet type collides with tiles.*/ /**Whether this bullet type collides with tiles.*/
@@ -56,6 +61,27 @@ public abstract class BulletType extends Content{
/**Whether velocity is inherited from the shooter.*/ /**Whether velocity is inherited from the shooter.*/
public boolean keepVelocity = true; 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){ public BulletType(float speed, float damage){
this.speed = speed; this.speed = speed;
this.damage = damage; this.damage = damage;
@@ -81,12 +107,38 @@ public abstract class BulletType extends Content{
hit(b, b.x, b.y); hit(b, b.x, b.y);
} }
public void hit(Bullet b, float hitx, float hity){ public void hit(Bullet b, float x, float y){
Effects.effect(hitEffect, hitx, hity, b.rot()); 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){ public void despawned(Bullet b){
Effects.effect(despawnEffect, b.x, b.y, b.rot()); 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){ public void draw(Bullet b){
@@ -96,6 +148,13 @@ public abstract class BulletType extends Content{
} }
public void update(Bullet b){ 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 @Override

View File

@@ -20,7 +20,7 @@ public class LiquidBulletType extends BulletType{
Liquid liquid; Liquid liquid;
public LiquidBulletType(Liquid liquid){ public LiquidBulletType(Liquid liquid){
super(2.8f, 0); super(3.5f, 0);
this.liquid = liquid; this.liquid = liquid;
lifetime = 74f; lifetime = 74f;

View File

@@ -305,9 +305,10 @@ public class Puddle extends SolidEntity implements SaveTrait, Poolable, DrawTrai
y = data.readFloat(); y = data.readFloat();
liquid = content.liquid(data.readByte()); liquid = content.liquid(data.readByte());
targetAmount = data.readShort() / 4f; 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 @Override

View File

@@ -38,16 +38,21 @@ import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
import static io.anuke.mindustry.entities.traits.BuilderTrait.BuildDataStatic.*;
/** /**
* Interface for units that build, break or mine things. * Interface for units that build, break or mine things.
*/ */
public interface BuilderTrait extends Entity, TeamTrait{ public interface BuilderTrait extends Entity, TeamTrait{
//these are not instance variables! //these are not instance variables!
Vector2[] tmptr = new Vector2[]{new Vector2(), new Vector2(), new Vector2(), new Vector2()};
float placeDistance = 220f; float placeDistance = 220f;
float mineDistance = 70f; 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.*/ /**Returns the queue for storing build requests.*/
Queue<BuildRequest> getPlaceQueue(); Queue<BuildRequest> getPlaceQueue();
@@ -197,9 +202,9 @@ public interface BuilderTrait extends Entity, TeamTrait{
if(!(tile.block() instanceof BuildBlock)){ if(!(tile.block() instanceof BuildBlock)){
if(canCreateBlocks() && !current.breaking && Build.validPlace(getTeam(), current.x, current.y, current.block, current.rotation)){ 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)){ }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{ }else{
getPlaceQueue().removeFirst(); getPlaceQueue().removeFirst();
return; return;
@@ -208,8 +213,8 @@ public interface BuilderTrait extends Entity, TeamTrait{
TileEntity core = unit.getClosestCore(); TileEntity core = unit.getClosestCore();
//if there is no core to build with, stop building! //if there is no core to build with or no build entity, stop building!
if(core == null){ if(core == null || !(tile.entity instanceof BuildEntity)){
return; return;
} }
@@ -217,7 +222,6 @@ public interface BuilderTrait extends Entity, TeamTrait{
BuildEntity entity = tile.entity(); BuildEntity entity = tile.entity();
if(entity == null){ if(entity == null){
getPlaceQueue().removeFirst();
return; return;
} }
@@ -229,9 +233,9 @@ public interface BuilderTrait extends Entity, TeamTrait{
if(!Net.client()){ if(!Net.client()){
//deconstructing is 2x as fast //deconstructing is 2x as fast
if(current.breaking){ 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{ }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(); current.progress = entity.progress();

View File

@@ -129,7 +129,10 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
} }
public void targetClosest(){ 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(){ public TileEntity getClosestEnemyCore(){
@@ -214,7 +217,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
@Override @Override
public float maxHealth(){ public float maxHealth(){
return type.health; return type.health * Vars.state.rules.unitHealthMultiplier;
} }
@Override @Override
@@ -275,6 +278,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
@Override @Override
public void removed(){ public void removed(){
super.removed();
Tile tile = world.tile(spawner); Tile tile = world.tile(spawner);
if(tile != null){ if(tile != null){
tile.block().unitRemoved(tile, this); tile.block().unitRemoved(tile, this);
@@ -353,6 +357,8 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
interpolator.read(lastx, lasty, x, y, rotation); interpolator.read(lastx, lasty, x, y, rotation);
rotation = lastrot; rotation = lastrot;
x = lastx;
y = lasty;
} }
public void onSuperDeath(){ public void onSuperDeath(){

View File

@@ -47,7 +47,7 @@ public abstract class FlyingUnit extends BaseUnit{
attack(type.attackLength); attack(type.attackLength);
if((Angles.near(angleTo(target), rotation, type.shootCone) || getWeapon().ignoreRotation) //bombers and such don't care about rotation 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; BulletType ammo = getWeapon().bullet;
if(type.rotateWeapon){ if(type.rotateWeapon){
@@ -75,8 +75,9 @@ public abstract class FlyingUnit extends BaseUnit{
targetClosest(); targetClosest();
targetClosestEnemyFlag(BlockFlag.target); targetClosestEnemyFlag(BlockFlag.target);
if(target != null){ if(target != null && !Units.invalidateTarget(target, team, x, y)){
setState(attack); setState(attack);
return;
} }
target = getClosestCore(); target = getClosestCore();

View File

@@ -54,10 +54,11 @@ public abstract class GroundUnit extends BaseUnit{
patrol = new UnitState(){ patrol = new UnitState(){
public void update(){ public void update(){
TileEntity target = getClosestCore(); TileEntity target = getClosestCore();
if(target != null){ if(target != null){
if(dst(target) > 400f){ if(dst(target) > 400f){
moveAwayFromCore(); moveAwayFromCore();
}else{ }else if(!(!Units.invalidateTarget(GroundUnit.this.target, GroundUnit.this) && dst(GroundUnit.this.target) < getWeapon().bullet.range())){
patrol(); patrol();
} }
} }
@@ -210,11 +211,9 @@ public abstract class GroundUnit extends BaseUnit{
if(tile == targetTile) return; if(tile == targetTile) return;
float angle = angleTo(targetTile);
velocity.add(vec.trns(angleTo(targetTile), type.speed*Time.delta())); velocity.add(vec.trns(angleTo(targetTile), type.speed*Time.delta()));
if(Units.invalidateTarget(target, this)){ 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; if(tile == targetTile || core == null || dst(core) < 90f) return;
float angle = angleTo(targetTile);
velocity.add(vec.trns(angleTo(targetTile), type.speed*Time.delta())); velocity.add(vec.trns(angleTo(targetTile), type.speed*Time.delta()));
rotation = Mathf.slerpDelta(rotation, angle, type.rotatespeed); rotation = Mathf.slerpDelta(rotation, baseRotation, type.rotatespeed);
} }
} }

View File

@@ -66,7 +66,6 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
public SpawnerTrait spawner, lastSpawner; public SpawnerTrait spawner, lastSpawner;
public NetConnection con; public NetConnection con;
public int playerIndex = 0;
public boolean isLocal = false; public boolean isLocal = false;
public Interval timer = new Interval(4); public Interval timer = new Interval(4);
public TargetTrait target; public TargetTrait target;
@@ -92,6 +91,11 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
player.mech = (player.isMobile ? Mechs.starterMobile : Mechs.starterDesktop); player.mech = (player.isMobile ? Mechs.starterMobile : Mechs.starterDesktop);
} }
@Override
public float getDamageMultipler(){
return status.getDamageMultiplier() * state.rules.playerDamageMultiplier;
}
@Override @Override
public void hitbox(Rectangle rectangle){ public void hitbox(Rectangle rectangle){
rectangle.setSize(mech.hitsize).setCenter(x, y); rectangle.setSize(mech.hitsize).setCenter(x, y);
@@ -279,7 +283,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
if(dead) return; if(dead) return;
if(!movement.isZero() && moved && !state.isPaused()){ 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); baseRotation = Mathf.slerpDelta(baseRotation, movement.angle(), 0.13f);
} }
@@ -585,7 +589,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
movement.x += xa * speed; 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; pointerX = vec.x;
pointerY = vec.y; pointerY = vec.y;
updateShooting(); 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); rotation = Mathf.slerpDelta(rotation, mech.flying ? velocity.angle() : movement.angle(), 0.13f * baseLerp);
} }
}else{ }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); 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()){ }else if(isShooting()){
Vector2 vec = Core.input.mouseWorld(control.input(playerIndex).getMouseX(), Vector2 vec = Core.input.mouseWorld(control.input().getMouseX(),
control.input(playerIndex).getMouseY()); control.input().getMouseY());
pointerX = vec.x; pointerX = vec.x;
pointerY = vec.y; pointerY = vec.y;
@@ -808,7 +812,6 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
if(isLocal){ if(isLocal){
stream.writeByte(mech.id); stream.writeByte(mech.id);
stream.writeByte(playerIndex);
stream.writeInt(lastSpawner == null ? noSpawner : lastSpawner.getTile().pos()); stream.writeInt(lastSpawner == null ? noSpawner : lastSpawner.getTile().pos());
super.writeSave(stream, false); super.writeSave(stream, false);
} }
@@ -820,14 +823,13 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
if(local && !headless){ if(local && !headless){
byte mechid = stream.readByte(); byte mechid = stream.readByte();
int index = stream.readByte();
int spawner = stream.readInt(); int spawner = stream.readInt();
if(world.tile(spawner) != null && world.tile(spawner).entity != null && world.tile(spawner).entity instanceof SpawnerTrait){ if(world.tile(spawner) != null && world.tile(spawner).entity != null && world.tile(spawner).entity instanceof SpawnerTrait){
lastSpawner = (SpawnerTrait)(world.tile(spawner).entity); lastSpawner = (SpawnerTrait)(world.tile(spawner).entity);
} }
players[index].readSaveSuper(stream); player.readSaveSuper(stream);
players[index].mech = content.getByID(ContentType.mech, mechid); player.mech = content.getByID(ContentType.mech, mechid);
players[index].dead = false; player.dead = false;
}else if(local){ }else if(local){
byte mechid = stream.readByte(); byte mechid = stream.readByte();
stream.readByte(); stream.readByte();
@@ -877,10 +879,10 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
interpolator.read(lastx, lasty, x, y, rotation, baseRotation); interpolator.read(lastx, lasty, x, y, rotation, baseRotation);
rotation = lastrot; rotation = lastrot;
if(isLocal){
x = lastx; x = lastx;
y = lasty; y = lasty;
if(isLocal){
velocity.x = lastvx; velocity.x = lastvx;
velocity.y = lastvy; velocity.y = lastvy;
}else{ }else{

View File

@@ -5,17 +5,17 @@ import io.anuke.annotations.Annotations.Remote;
import io.anuke.arc.Events; import io.anuke.arc.Events;
import io.anuke.arc.collection.Array; import io.anuke.arc.collection.Array;
import io.anuke.arc.collection.ObjectSet; import io.anuke.arc.collection.ObjectSet;
import io.anuke.mindustry.entities.Effects;
import io.anuke.mindustry.entities.EntityGroup;
import io.anuke.mindustry.entities.impl.BaseEntity;
import io.anuke.mindustry.entities.traits.HealthTrait;
import io.anuke.arc.math.Mathf; import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Point2; import io.anuke.arc.math.geom.Point2;
import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.util.Interval; import io.anuke.arc.util.Interval;
import io.anuke.arc.util.Time; import io.anuke.arc.util.Time;
import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.content.Fx;
import io.anuke.mindustry.entities.Effects;
import io.anuke.mindustry.entities.EntityGroup;
import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.bullet.Bullet;
import io.anuke.mindustry.entities.impl.BaseEntity;
import io.anuke.mindustry.entities.traits.HealthTrait;
import io.anuke.mindustry.entities.traits.TargetTrait; import io.anuke.mindustry.entities.traits.TargetTrait;
import io.anuke.mindustry.game.EventType.BlockDestroyEvent; import io.anuke.mindustry.game.EventType.BlockDestroyEvent;
import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Team;
@@ -24,7 +24,6 @@ import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Edges; import io.anuke.mindustry.world.Edges;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.defense.Wall; import io.anuke.mindustry.world.blocks.defense.Wall;
import io.anuke.mindustry.world.consumers.Consume;
import io.anuke.mindustry.world.modules.ConsumeModule; import io.anuke.mindustry.world.modules.ConsumeModule;
import io.anuke.mindustry.world.modules.ItemModule; import io.anuke.mindustry.world.modules.ItemModule;
import io.anuke.mindustry.world.modules.LiquidModule; import io.anuke.mindustry.world.modules.LiquidModule;
@@ -44,6 +43,7 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
public static int sleepingEntities = 0; public static int sleepingEntities = 0;
public Tile tile; public Tile tile;
public Block block;
public Interval timer; public Interval timer;
public float health; public float health;
public float timeScale = 1f, timeScaleDuration; public float timeScale = 1f, timeScaleDuration;
@@ -63,6 +63,10 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
public static void onTileDamage(Tile tile, float health){ public static void onTileDamage(Tile tile, float health){
if(tile.entity != null){ if(tile.entity != null){
tile.entity.health = health; tile.entity.health = health;
if(tile.entity.damaged()){
world.indexer.notifyTileDamaged(tile.entity);
}
} }
} }
@@ -77,10 +81,10 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
this.tile = tile; this.tile = tile;
x = tile.drawx(); x = tile.drawx();
y = tile.drawy(); y = tile.drawy();
block = tile.block();
health = tile.block().health; health = block.health;
timer = new Interval(block.timers);
timer = new Interval(tile.block().timers);
if(shouldAdd){ if(shouldAdd){
add(); add();
@@ -135,7 +139,7 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
} }
public void collision(Bullet other){ public void collision(Bullet other){
tile.block().handleBulletHit(this, other); block.handleBulletHit(this, other);
} }
public void kill(){ public void kill(){
@@ -147,11 +151,13 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
float preHealth = health; float preHealth = health;
Call.onTileDamage(tile, health - tile.block().handleDamage(tile, damage)); Call.onTileDamage(tile, health - block.handleDamage(tile, damage));
if(health <= 0){ if(health <= 0){
Call.onTileDestroyed(tile); Call.onTileDestroyed(tile);
}else if(preHealth >= maxHealth() - 0.00001f && health < maxHealth() && world != null){ //when just damaged }
if(preHealth >= maxHealth() - 0.00001f && health < maxHealth() && world != null){ //when just damaged
world.indexer.notifyTileDamaged(this); world.indexer.notifyTileDamaged(this);
} }
} }
@@ -164,14 +170,10 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
return tile; return tile;
} }
public boolean consumed(Class<? extends Consume> type){
return tile.block().consumes.get(type).valid(tile.block(), this);
}
public void removeFromProximity(){ public void removeFromProximity(){
tile.block().onProximityRemoved(tile); block.onProximityRemoved(tile);
Point2[] nearby = Edges.getEdges(tile.block().size); Point2[] nearby = Edges.getEdges(block.size);
for(Point2 point : nearby){ for(Point2 point : nearby){
Tile other = world.tile(tile.x + point.x, tile.y + point.y); Tile other = world.tile(tile.x + point.x, tile.y + point.y);
//remove this tile from all nearby tile's proximities //remove this tile from all nearby tile's proximities
@@ -189,7 +191,7 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
tmpTiles.clear(); tmpTiles.clear();
proximity.clear(); proximity.clear();
Point2[] nearby = Edges.getEdges(tile.block().size); Point2[] nearby = Edges.getEdges(block.size);
for(Point2 point : nearby){ for(Point2 point : nearby){
Tile other = world.tile(tile.x + point.x, tile.y + point.y); Tile other = world.tile(tile.x + point.x, tile.y + point.y);
@@ -212,8 +214,8 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
proximity.add(tile); proximity.add(tile);
} }
tile.block().onProximityAdded(tile); block.onProximityAdded(tile);
tile.block().onProximityUpdate(tile); block.onProximityUpdate(tile);
} }
public Array<Tile> proximity(){ public Array<Tile> proximity(){
@@ -232,7 +234,7 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
@Override @Override
public float maxHealth(){ public float maxHealth(){
return tile.block().health; return block.health;
} }
@Override @Override
@@ -244,7 +246,6 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
public void onDeath(){ public void onDeath(){
if(!dead){ if(!dead){
dead = true; dead = true;
Block block = tile.block();
Events.fire(new BlockDestroyEvent(tile)); Events.fire(new BlockDestroyEvent(tile));
block.onDestroyed(tile); block.onDestroyed(tile);
@@ -267,22 +268,24 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
@Override @Override
public void update(){ public void update(){
//TODO better smoke effect, this one is awful //TODO better smoke effect, this one is awful
if(health != 0 && health < tile.block().health && !(tile.block() instanceof Wall) && if(health != 0 && health < block.health && !(block instanceof Wall) &&
Mathf.chance(0.009f * Time.delta() * (1f - health / tile.block().health))){ Mathf.chance(0.009f * Time.delta() * (1f - health / block.health))){
Effects.effect(Fx.smoke, x + Mathf.range(4), y + Mathf.range(4)); Effects.effect(Fx.smoke, x + Mathf.range(4), y + Mathf.range(4));
} }
timeScaleDuration -= Time.delta(); timeScaleDuration -= Time.delta();
if(timeScaleDuration <= 0f || !tile.block().canOverdrive){ if(timeScaleDuration <= 0f || !block.canOverdrive){
timeScale = 1f; timeScale = 1f;
} }
if(health <= 0){ if(health <= 0){
onDeath(); onDeath();
return; //no need to update anymore
} }
Block previous = tile.block();
tile.block().update(tile); Block previous = block;
if(tile.block() == previous && cons != null){ block.update(tile);
if(block == previous && cons != null){
cons.update(); cons.update();
} }
} }

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