Compare commits
269 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
afbac48a45 | ||
|
|
e7d9cddbae | ||
|
|
a6fe1275c7 | ||
|
|
2f3fd9de3b | ||
|
|
8b2e78ab1e | ||
|
|
d04eaa81e0 | ||
|
|
b71d5837e9 | ||
|
|
332b1ce100 | ||
|
|
c17040b1ab | ||
|
|
a3bd7ba3ad | ||
|
|
2a7525cdf1 | ||
|
|
43602caab2 | ||
|
|
793e957d0d | ||
|
|
66594a2b32 | ||
|
|
e81219dd3e | ||
|
|
d11a26c568 | ||
|
|
cf3543ec07 | ||
|
|
886d8752b7 | ||
|
|
496d6b139e | ||
|
|
3ce064ca11 | ||
|
|
1be7f3b36c | ||
|
|
3fddd6eea7 | ||
|
|
339fc8113b | ||
|
|
025bf5ffc3 | ||
|
|
1dc2906343 | ||
|
|
eea276118f | ||
|
|
36aa9d5696 | ||
|
|
1fc1efc410 | ||
|
|
7924d9b9ef | ||
|
|
3336e6cdde | ||
|
|
4ec81b0669 | ||
|
|
d10123295c | ||
|
|
0929593efc | ||
|
|
ace6eed653 | ||
|
|
a40731624a | ||
|
|
268672adb8 | ||
|
|
af20db4cf7 | ||
|
|
8a76e7ea25 | ||
|
|
d72db58b3f | ||
|
|
975043d439 | ||
|
|
40b5ee391d | ||
|
|
e87e678d0f | ||
|
|
d098a9ddc2 | ||
|
|
7145ffaf28 | ||
|
|
d4afc3ecde | ||
|
|
1ecc49f9b7 | ||
|
|
7ffd46aee9 | ||
|
|
afd6570ced | ||
|
|
49c099a03c | ||
|
|
851fa09e0c | ||
|
|
b0c8426d0f | ||
|
|
9384d661c1 | ||
|
|
a06e0a325b | ||
|
|
a8c31d838f | ||
|
|
46cf48e012 | ||
|
|
bfa9d65314 | ||
|
|
aa7936100e | ||
|
|
b20ef104b9 | ||
|
|
53b99a650c | ||
|
|
2025d6ad2d | ||
|
|
c7cbe50876 | ||
|
|
267d822771 | ||
|
|
786d638ad0 | ||
|
|
89997ad8d4 | ||
|
|
036ab282e0 | ||
|
|
e9df213d0a | ||
|
|
150aab3530 | ||
|
|
96607ef753 | ||
|
|
075ddf104b | ||
|
|
671ca5c94f | ||
|
|
e7ed7c0765 | ||
|
|
92db8349dc | ||
|
|
ea3f6cf4a0 | ||
|
|
dd191493c0 | ||
|
|
2c08b82fef | ||
|
|
f7c5315599 | ||
|
|
ad6e458636 | ||
|
|
f04e763667 | ||
|
|
d545dc0d02 | ||
|
|
f895dfe341 | ||
|
|
c5bea40e7d | ||
|
|
e08052d7d6 | ||
|
|
78a7d15f3e | ||
|
|
b2e2cfb48d | ||
|
|
f694e42c78 | ||
|
|
8e52d8a272 | ||
|
|
1a6843ef2c | ||
|
|
4b9fa9a79e | ||
|
|
c15a8b52d2 | ||
|
|
bd36ca821d | ||
|
|
d4e6817232 | ||
|
|
096b54305d | ||
|
|
8b52561a31 | ||
|
|
b1e8001ae8 | ||
|
|
8aba480148 | ||
|
|
429ff738f9 | ||
|
|
ae2736d393 | ||
|
|
fc28fbc662 | ||
|
|
4f37f29ae8 | ||
|
|
c4da670a7c | ||
|
|
57dca33c2b | ||
|
|
4a1419af0e | ||
|
|
25c61590d1 | ||
|
|
f6925953ad | ||
|
|
e1b0e07f3c | ||
|
|
b2d16f69da | ||
|
|
a60772a81e | ||
|
|
6151ebf716 | ||
|
|
cccb8d6d19 | ||
|
|
a2c7c38a3e | ||
|
|
b51d34e893 | ||
|
|
79a62cd74c | ||
|
|
18c669ae3e | ||
|
|
8474c921ec | ||
|
|
7c7c57c64e | ||
|
|
f7e8412b4b | ||
|
|
0d3be917b2 | ||
|
|
5c85ba84db | ||
|
|
07d11f02d8 | ||
|
|
fce30e6ae5 | ||
|
|
24195dac81 | ||
|
|
830fe03898 | ||
|
|
4690aae197 | ||
|
|
b82dca89b3 | ||
|
|
dce79a621a | ||
|
|
d6f00a5d2d | ||
|
|
545b75a091 | ||
|
|
979daca221 | ||
|
|
fb2fed7c28 | ||
|
|
0ec71750b7 | ||
|
|
51f7858b78 | ||
|
|
ab83b872a2 | ||
|
|
879adb7458 | ||
|
|
39cbd607ef | ||
|
|
7478cdf4a4 | ||
|
|
b75a8d5260 | ||
|
|
120c694a42 | ||
|
|
569293e577 | ||
|
|
4f0f2499be | ||
|
|
d34dd0c603 | ||
|
|
b6c645b701 | ||
|
|
0c28bb7dcf | ||
|
|
2bb303e709 | ||
|
|
cc65feb392 | ||
|
|
c12b9ee3e3 | ||
|
|
d863c971c2 | ||
|
|
3ccdf45ed1 | ||
|
|
efa5c5db7b | ||
|
|
d73cf9fcff | ||
|
|
93dafc82eb | ||
|
|
87142b06c3 | ||
|
|
3075616b03 | ||
|
|
019898dfc3 | ||
|
|
ae838b9392 | ||
|
|
4d9a30b7c7 | ||
|
|
ea82773157 | ||
|
|
8289da1415 | ||
|
|
19eb6334b7 | ||
|
|
e992be1bfb | ||
|
|
7e216d198e | ||
|
|
a89d50e74d | ||
|
|
05dc13c922 | ||
|
|
1de4dd1bfe | ||
|
|
72aa87128e | ||
|
|
8f91576f85 | ||
|
|
4019c49fff | ||
|
|
5f83c92829 | ||
|
|
4c9cda7e40 | ||
|
|
01f7b1c9a6 | ||
|
|
1a30edc55f | ||
|
|
49bccffd7c | ||
|
|
526157a514 | ||
|
|
d025ba63e1 | ||
|
|
662515ce2e | ||
|
|
c55ff4ad5e | ||
|
|
666c0f3582 | ||
|
|
0c00760ae0 | ||
|
|
2146b35e5a | ||
|
|
44d10a355e | ||
|
|
5037c4e00e | ||
|
|
e4ecfc4ee7 | ||
|
|
ae6be1db3b | ||
|
|
d06eee99ba | ||
|
|
8349c8a5b8 | ||
|
|
2df7484649 | ||
|
|
1bb97cae39 | ||
|
|
f5ac3ff7b0 | ||
|
|
f6eba3edae | ||
|
|
781410ea04 | ||
|
|
c0d9712beb | ||
|
|
0672878920 | ||
|
|
b0cdac59f0 | ||
|
|
4b6a83dd82 | ||
|
|
25ae7b97aa | ||
|
|
afbde49fa2 | ||
|
|
befda9baaa | ||
|
|
502c7eb388 | ||
|
|
ad2a18f929 | ||
|
|
830eb86a0f | ||
|
|
e5413cebdc | ||
|
|
1a75951840 | ||
|
|
08e36aca98 | ||
|
|
aabbfd624a | ||
|
|
2f836d779a | ||
|
|
d7f848f8cd | ||
|
|
6f7f980563 | ||
|
|
e2515fc4bf | ||
|
|
d06a7bb7a2 | ||
|
|
dbdfdac94b | ||
|
|
3b2a0cfd66 | ||
|
|
5b652ae51f | ||
|
|
9e8a2b8296 | ||
|
|
e6787c5146 | ||
|
|
d8552915f7 | ||
|
|
61d9dea487 | ||
|
|
02d8f679b5 | ||
|
|
544828d9fb | ||
|
|
ca726d579e | ||
|
|
8257fb5e11 | ||
|
|
0d287e6d59 | ||
|
|
4d9dc66a96 | ||
|
|
868d4e05f7 | ||
|
|
a3bf39d86b | ||
|
|
d76795e0ae | ||
|
|
a2e075ee54 | ||
|
|
2df2a0971a | ||
|
|
158e23bd5e | ||
|
|
467402ef73 | ||
|
|
f78719afc0 | ||
|
|
e6513702d6 | ||
|
|
aeddf7014c | ||
|
|
1613f49c16 | ||
|
|
57a833c2fb | ||
|
|
6de53343a4 | ||
|
|
7bb4b09308 | ||
|
|
68020fa7d4 | ||
|
|
b94aba0301 | ||
|
|
0316009a9c | ||
|
|
820f7f0ef2 | ||
|
|
6d105ad3e7 | ||
|
|
f043a5f340 | ||
|
|
73d6f95d2e | ||
|
|
fb48070388 | ||
|
|
fa7697fc40 | ||
|
|
b46a5c0bda | ||
|
|
1072c310ad | ||
|
|
d5448b59a2 | ||
|
|
78317e6126 | ||
|
|
5a58f9c71a | ||
|
|
06b8dd61c7 | ||
|
|
a81b5778a0 | ||
|
|
a7188c4884 | ||
|
|
0bf0d48a02 | ||
|
|
dc5cd196ed | ||
|
|
f8f9bf228b | ||
|
|
d0dc1ea132 | ||
|
|
ff9fad6a2c | ||
|
|
76dbdb59ce | ||
|
|
0013402962 | ||
|
|
1ef7ae7079 | ||
|
|
07a39d0da8 | ||
|
|
b8bfb30c56 | ||
|
|
00342ddaae | ||
|
|
fb40c0b9de | ||
|
|
5d9506eb12 | ||
|
|
080fe8c3c4 | ||
|
|
48745d7380 | ||
|
|
315cbaec47 | ||
|
|
68535bfcaa |
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -17,7 +17,7 @@ assignees: ''
|
|||||||
|
|
||||||
**Link(s) to mod(s) used**: *The mod repositories or zip files that are related to the issue, if applicable.*
|
**Link(s) to mod(s) used**: *The mod repositories or zip files that are related to the issue, if applicable.*
|
||||||
|
|
||||||
**Save file**: *The (zipped) save file you were playing on when the bug happened. THIS IS REQUIRED FOR ANY ISSUE HAPPENING IN-GAME OR IN MULTIPLAYER, REGARDLESS OF WHETHER YOU THINK IT HAPPENS EVERYWHERE. DO NOT DELETE OR OMIT THIS LINE UNLESS YOU ARE SURE THAT THE ISSUE DOES NOT HAPPEN IN-GAME.*
|
**Save file**: *The (zipped) save file you were playing on when the bug happened. THIS IS REQUIRED FOR ANY ISSUE HAPPENING IN-GAME OR IN MULTIPLAYER, REGARDLESS OF WHETHER YOU THINK IT HAPPENS EVERYWHERE. DO NOT DELETE OR OMIT THIS LINE UNLESS YOU ARE SURE THAT THE ISSUE DOES NOT HAPPEN IN-GAME. IF YOU DO NOT HAVE A SAVE, DON'T WASTE TIME OPENING THIS ISSUE.*
|
||||||
|
|
||||||
If you remove the line above without reading it properly and understanding what it means, I will reap your soul. Even if you're playing on someone's server, you can still save the game to a slot.
|
If you remove the line above without reading it properly and understanding what it means, I will reap your soul. Even if you're playing on someone's server, you can still save the game to a slot.
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||

|

|
||||||
|
|
||||||
[](https://travis-ci.org/Anuken/Mindustry)
|
[](https://github.com/Anuken/Mindustry/actions)
|
||||||
[](https://discord.gg/mindustry)
|
[](https://discord.gg/mindustry)
|
||||||
|
|
||||||
A sandbox tower defense game written in Java.
|
A sandbox tower defense game written in Java.
|
||||||
|
|
||||||
|
|||||||
@@ -8,14 +8,15 @@ You may want to add your server to this list. The steps for getting this done ar
|
|||||||
1. **Ensure your server is properly moderated.** For the most part, this applies to survival servers, but PvP servers can be affected as well.
|
1. **Ensure your server is properly moderated.** For the most part, this applies to survival servers, but PvP servers can be affected as well.
|
||||||
You'll need to either hire some moderators, or make use of (currently non-existent) anti-grief and anti-curse plugins.
|
You'll need to either hire some moderators, or make use of (currently non-existent) anti-grief and anti-curse plugins.
|
||||||
*Consider enabling a rate limit:* `config messageRateLimit 2` will make it so that players can only send messages every 2 seconds, for example.
|
*Consider enabling a rate limit:* `config messageRateLimit 2` will make it so that players can only send messages every 2 seconds, for example.
|
||||||
2. **Set an appropriate MOTD, name and description.** This is set with `config <name/desc/motd> <value>`. "Appropriate" means that:
|
2. Make sure that your server is able to handle inappropriate content - this includes NSFW display/sorter art and abusive messages. **Servers that allow such content will be removed immediately.** Consider banning display blocks if it is a problem for your server: `rules add bannedBlocks ["logic-display", "large-logic-display"]`.
|
||||||
|
3. **Set an appropriate MOTD, name and description.** This is set with `config <name/desc/motd> <value>`. "Appropriate" means that:
|
||||||
- Your name or description must reflect the type of server you're hosting.
|
- Your name or description must reflect the type of server you're hosting.
|
||||||
Since new players may be exposed to the server list early on, put in a phrase like "Co-op survival" or "PvP" so players know what they're getting into. Yes, this is also displayed in the server mode info text, but having extra info in the name doesn't hurt.
|
Since new players may be exposed to the server list early on, put in a phrase like "Co-op survival" or "PvP" so players know what they're getting into. Yes, this is also displayed in the server mode info text, but having extra info in the name doesn't hurt.
|
||||||
- Make sure players know where to refer to for server support. It should be fairly clear that the server owner is not me, but you.
|
- Make sure players know where to refer to for server support. It should be fairly clear that the server owner is not me, but you.
|
||||||
- Try to be professional in your text; use common sense.
|
- Try to be professional in your text; use common sense.
|
||||||
3. **Get some good maps.** *(optional, but highly recommended)*. Add some maps to your server and set the map rotation to custom-only. You can get maps from the Steam workshop by subscribing and exporting them; using the `#maps` channel on Discord is also an option.
|
4. **Get some good maps.** *(optional, but highly recommended)*. Add some maps to your server and set the map rotation to custom-only. You can get maps from the Steam workshop by subscribing and exporting them; using the `#maps` channel on Discord is also an option.
|
||||||
4. **Check your server configuration.** *(optional)* I would recommend adding a message rate limit of 1 second (`config messageRateLimit 1`), and disabling connect/disconnect messages to reduce spam (`config showConnectMessages false`).
|
5. **Check your server configuration.** *(optional)* I would recommend adding a message rate limit of 1 second (`config messageRateLimit 1`), and disabling connect/disconnect messages to reduce spam (`config showConnectMessages false`).
|
||||||
5. Finally, **submit a pull request** to add your server's IP to the list.
|
6. Finally, **submit a pull request** to add your server's IP to the list.
|
||||||
This should be fairly straightforward: Press the edit button on the [server file](https://github.com/Anuken/Mindustry/blob/master/servers_v6.json), then add a JSON object with a single key, indicating your server address.
|
This should be fairly straightforward: Press the edit button on the [server file](https://github.com/Anuken/Mindustry/blob/master/servers_v6.json), then add a JSON object with a single key, indicating your server address.
|
||||||
For example, if your server address is `google.com`, you would add a comma after the last entry and insert:
|
For example, if your server address is `google.com`, you would add a comma after the last entry and insert:
|
||||||
```json
|
```json
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
if(handler != null){
|
if(handler != null){
|
||||||
handler.uncaughtException(thread, error);
|
handler.uncaughtException(thread, error);
|
||||||
}else{
|
}else{
|
||||||
error.printStackTrace();
|
|
||||||
Log.err(error);
|
Log.err(error);
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
@@ -72,9 +71,8 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Class<?> loadJar(Fi jar, String mainClass) throws Exception{
|
public ClassLoader loadJar(Fi jar, String mainClass) throws Exception{
|
||||||
DexClassLoader loader = new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, getClassLoader());
|
return new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, getClassLoader());
|
||||||
return Class.forName(mainClass, true, loader);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -117,7 +117,6 @@ public class AssetsProcess extends BaseProcessor{
|
|||||||
|
|
||||||
void processSounds(String classname, String path, String rtype) throws Exception{
|
void processSounds(String classname, String path, String rtype) throws Exception{
|
||||||
TypeSpec.Builder type = TypeSpec.classBuilder(classname).addModifiers(Modifier.PUBLIC);
|
TypeSpec.Builder type = TypeSpec.classBuilder(classname).addModifiers(Modifier.PUBLIC);
|
||||||
MethodSpec.Builder dispose = MethodSpec.methodBuilder("dispose").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
|
|
||||||
MethodSpec.Builder loadBegin = MethodSpec.methodBuilder("load").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
|
MethodSpec.Builder loadBegin = MethodSpec.methodBuilder("load").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
|
||||||
|
|
||||||
HashSet<String> names = new HashSet<>();
|
HashSet<String> names = new HashSet<>();
|
||||||
@@ -137,8 +136,6 @@ public class AssetsProcess extends BaseProcessor{
|
|||||||
String filename = "\"" + filepath + "\"";
|
String filename = "\"" + filepath + "\"";
|
||||||
loadBegin.addStatement("arc.Core.assets.load(" + filename + ", " + rtype + ".class).loaded = a -> " + name + " = (" + rtype + ")a", filepath, filepath.replace(".ogg", ".mp3"));
|
loadBegin.addStatement("arc.Core.assets.load(" + filename + ", " + rtype + ".class).loaded = a -> " + name + " = (" + rtype + ")a", filepath, filepath.replace(".ogg", ".mp3"));
|
||||||
|
|
||||||
dispose.addStatement("arc.Core.assets.unload(" + filename + ")");
|
|
||||||
dispose.addStatement(name + " = null");
|
|
||||||
type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), name, Modifier.STATIC, Modifier.PUBLIC).initializer("new arc.audio." + rtype.substring(rtype.lastIndexOf(".") + 1) + "()").build());
|
type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), name, Modifier.STATIC, Modifier.PUBLIC).initializer("new arc.audio." + rtype.substring(rtype.lastIndexOf(".") + 1) + "()").build());
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -147,7 +144,6 @@ public class AssetsProcess extends BaseProcessor{
|
|||||||
}
|
}
|
||||||
|
|
||||||
type.addMethod(loadBegin.build());
|
type.addMethod(loadBegin.build());
|
||||||
type.addMethod(dispose.build());
|
|
||||||
JavaFile.builder(packageName, type.build()).build().writeTo(BaseProcessor.filer);
|
JavaFile.builder(packageName, type.build()).build().writeTo(BaseProcessor.filer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ public class LogicStatementProcessor extends BaseProcessor{
|
|||||||
MethodSpec.Builder reader = MethodSpec.methodBuilder("read")
|
MethodSpec.Builder reader = MethodSpec.methodBuilder("read")
|
||||||
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
|
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
|
||||||
.returns(tname("mindustry.logic.LStatement"))
|
.returns(tname("mindustry.logic.LStatement"))
|
||||||
.addParameter(String[].class, "tokens");
|
.addParameter(String[].class, "tokens")
|
||||||
|
.addParameter(int.class, "length");
|
||||||
|
|
||||||
Seq<Stype> types = types(RegisterStatement.class);
|
Seq<Stype> types = types(RegisterStatement.class);
|
||||||
|
|
||||||
@@ -76,7 +77,7 @@ public class LogicStatementProcessor extends BaseProcessor{
|
|||||||
"");
|
"");
|
||||||
|
|
||||||
//reading primitives, strings and enums is supported; nothing else is
|
//reading primitives, strings and enums is supported; nothing else is
|
||||||
reader.addStatement("if(tokens.length > $L) result.$L = $L(tokens[$L])",
|
reader.addStatement("if(length > $L) result.$L = $L(tokens[$L])",
|
||||||
index + 1,
|
index + 1,
|
||||||
field.name(),
|
field.name(),
|
||||||
field.mirror().toString().equals("java.lang.String") ?
|
field.mirror().toString().equals("java.lang.String") ?
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class RemoteProcess extends BaseProcessor{
|
|||||||
classes = new Seq<>();
|
classes = new Seq<>();
|
||||||
|
|
||||||
Seq<Smethod> orderedElements = elements.copy();
|
Seq<Smethod> orderedElements = elements.copy();
|
||||||
orderedElements.sortComparing(Object::toString);
|
orderedElements.sort((a, b) -> -a.toString().compareTo(b.toString()));
|
||||||
|
|
||||||
//create methods
|
//create methods
|
||||||
for(Smethod element : orderedElements){
|
for(Smethod element : orderedElements){
|
||||||
@@ -71,12 +71,12 @@ public class RemoteProcess extends BaseProcessor{
|
|||||||
|
|
||||||
//check for static
|
//check for static
|
||||||
if(!element.is(Modifier.STATIC) || !element.is(Modifier.PUBLIC)){
|
if(!element.is(Modifier.STATIC) || !element.is(Modifier.PUBLIC)){
|
||||||
err("All @Remote methods must be public and static: ", element);
|
err("All @Remote methods must be public and static", element);
|
||||||
}
|
}
|
||||||
|
|
||||||
//can't generate none methods
|
//can't generate none methods
|
||||||
if(annotation.targets() == Loc.none){
|
if(annotation.targets() == Loc.none){
|
||||||
err("A @Remote method's targets() cannot be equal to 'none':", element);
|
err("A @Remote method's targets() cannot be equal to 'none'", element);
|
||||||
}
|
}
|
||||||
|
|
||||||
//get and create class entry if needed
|
//get and create class entry if needed
|
||||||
|
|||||||
19
build.gradle
@@ -35,7 +35,7 @@ allprojects{
|
|||||||
if(!project.hasProperty("versionType")) versionType = 'official'
|
if(!project.hasProperty("versionType")) versionType = 'official'
|
||||||
appName = 'Mindustry'
|
appName = 'Mindustry'
|
||||||
steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256'
|
steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256'
|
||||||
rhinoVersion = '2617981f706e50b8753155d8e15e326308be3b22'
|
rhinoVersion = '378626d8abc552bba57864358358045d2f2dbe9b'
|
||||||
|
|
||||||
loadVersionProps = {
|
loadVersionProps = {
|
||||||
return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p }
|
return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p }
|
||||||
@@ -319,12 +319,27 @@ project(":core"){
|
|||||||
}
|
}
|
||||||
|
|
||||||
task sourcesJar(type: Jar, dependsOn: classes){
|
task sourcesJar(type: Jar, dependsOn: classes){
|
||||||
classifier = 'sources'
|
archiveClassifier = 'sources'
|
||||||
from sourceSets.main.allSource
|
from sourceSets.main.allSource
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task assetsJar(type: Jar, dependsOn: ":tools:pack"){
|
||||||
|
archiveClassifier = 'assets'
|
||||||
|
from files("assets"){
|
||||||
|
exclude "config", "cache", "music", "sounds"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task musicJar(type: Jar){
|
||||||
|
archiveClassifier = 'music'
|
||||||
|
from files("assets"){
|
||||||
|
include "music/*", "sounds/*"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
artifacts{
|
artifacts{
|
||||||
archives sourcesJar
|
archives sourcesJar
|
||||||
|
archives assetsJar
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies{
|
dependencies{
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 338 B After Width: | Height: | Size: 514 B |
|
Before Width: | Height: | Size: 359 B After Width: | Height: | Size: 536 B |
|
Before Width: | Height: | Size: 290 B After Width: | Height: | Size: 430 B |
|
Before Width: | Height: | Size: 178 B After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 420 B After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 405 B After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 382 B After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 353 B After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 339 B After Width: | Height: | Size: 2.2 KiB |
BIN
core/assets-raw/sprites/statuses/status-blasted.png
Normal file
|
After Width: | Height: | Size: 298 B |
BIN
core/assets-raw/sprites/statuses/status-burning.png
Normal file
|
After Width: | Height: | Size: 276 B |
BIN
core/assets-raw/sprites/statuses/status-corroded.png
Normal file
|
After Width: | Height: | Size: 324 B |
BIN
core/assets-raw/sprites/statuses/status-disarmed.png
Normal file
|
After Width: | Height: | Size: 343 B |
BIN
core/assets-raw/sprites/statuses/status-freezing.png
Normal file
|
After Width: | Height: | Size: 329 B |
BIN
core/assets-raw/sprites/statuses/status-melting.png
Normal file
|
After Width: | Height: | Size: 304 B |
BIN
core/assets-raw/sprites/statuses/status-muddy.png
Normal file
|
After Width: | Height: | Size: 286 B |
BIN
core/assets-raw/sprites/statuses/status-overclock.png
Normal file
|
After Width: | Height: | Size: 387 B |
BIN
core/assets-raw/sprites/statuses/status-overdrive.png
Normal file
|
After Width: | Height: | Size: 387 B |
BIN
core/assets-raw/sprites/statuses/status-sapped.png
Normal file
|
After Width: | Height: | Size: 274 B |
BIN
core/assets-raw/sprites/statuses/status-shocked.png
Normal file
|
After Width: | Height: | Size: 232 B |
BIN
core/assets-raw/sprites/statuses/status-slow.png
Normal file
|
After Width: | Height: | Size: 274 B |
BIN
core/assets-raw/sprites/statuses/status-spore-slowed.png
Normal file
|
After Width: | Height: | Size: 322 B |
BIN
core/assets-raw/sprites/statuses/status-tarred.png
Normal file
|
After Width: | Height: | Size: 286 B |
BIN
core/assets-raw/sprites/statuses/status-unmoving.png
Normal file
|
After Width: | Height: | Size: 197 B |
BIN
core/assets-raw/sprites/statuses/status-wet.png
Normal file
|
After Width: | Height: | Size: 283 B |
@@ -113,7 +113,7 @@ committingchanges = Committing Changes
|
|||||||
done = Done
|
done = Done
|
||||||
feature.unsupported = Your device does not support this feature.
|
feature.unsupported = Your device does not support this feature.
|
||||||
|
|
||||||
mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry GitHub.
|
mods.initfailed = [red]⚠[] The previous Mindustry instance failed to initialize. This was likely caused by misbehaving mods.\n\nTo prevent a crash loop, [red]all mods have been disabled.[]\n\nTo disable this feature, turn it off in [accent]Settings->Game->Disable Mods On Startup Crash[].
|
||||||
mods = Mods
|
mods = Mods
|
||||||
mods.none = [lightgray]No mods found!
|
mods.none = [lightgray]No mods found!
|
||||||
mods.guide = Modding Guide
|
mods.guide = Modding Guide
|
||||||
@@ -126,6 +126,7 @@ mod.installed = [[Installed]
|
|||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Enabled
|
mod.enabled = [lightgray]Enabled
|
||||||
mod.disabled = [scarlet]Disabled
|
mod.disabled = [scarlet]Disabled
|
||||||
|
mod.multiplayer.compatible = [gray]Multiplayer Compatible
|
||||||
mod.disable = Disable
|
mod.disable = Disable
|
||||||
mod.content = Content:
|
mod.content = Content:
|
||||||
mod.delete.error = Unable to delete mod. File may be in use.
|
mod.delete.error = Unable to delete mod. File may be in use.
|
||||||
@@ -216,9 +217,11 @@ server.hidden = Hidden
|
|||||||
trace = Trace Player
|
trace = Trace Player
|
||||||
trace.playername = Player name: [accent]{0}
|
trace.playername = Player name: [accent]{0}
|
||||||
trace.ip = IP: [accent]{0}
|
trace.ip = IP: [accent]{0}
|
||||||
trace.id = Unique ID: [accent]{0}
|
trace.id = ID: [accent]{0}
|
||||||
trace.mobile = Mobile Client: [accent]{0}
|
trace.mobile = Mobile Client: [accent]{0}
|
||||||
trace.modclient = Custom Client: [accent]{0}
|
trace.modclient = Custom Client: [accent]{0}
|
||||||
|
trace.times.joined = Times Joined: [accent]{0}
|
||||||
|
trace.times.kicked = Times Kicked: [accent]{0}
|
||||||
invalidid = Invalid client ID! Submit a bug report.
|
invalidid = Invalid client ID! Submit a bug report.
|
||||||
server.bans = Bans
|
server.bans = Bans
|
||||||
server.bans.none = No banned players found!
|
server.bans.none = No banned players found!
|
||||||
@@ -617,6 +620,19 @@ sector.extractionOutpost.description = A remote outpost, constructed by the enem
|
|||||||
sector.impact0078.description = Here lie remnants of the interstellar transport vessel that first entered this system.\n\nSalvage as much as possible from the wreckage. Research any intact technology.
|
sector.impact0078.description = Here lie remnants of the interstellar transport vessel that first entered this system.\n\nSalvage as much as possible from the wreckage. Research any intact technology.
|
||||||
sector.planetaryTerminal.description = The final target.\n\nThis coastal base contains a structure capable of launching Cores to local planets. It is extremely well guarded.\n\nProduce naval units. Eliminate the enemy as quickly as possible. Research the launch structure.
|
sector.planetaryTerminal.description = The final target.\n\nThis coastal base contains a structure capable of launching Cores to local planets. It is extremely well guarded.\n\nProduce naval units. Eliminate the enemy as quickly as possible. Research the launch structure.
|
||||||
|
|
||||||
|
status.burning.name = Burning
|
||||||
|
status.freezing.name = Freezing
|
||||||
|
status.wet.name = Wet
|
||||||
|
status.muddy.name = Muddy
|
||||||
|
status.melting.name = Melting
|
||||||
|
status.sapped.name = Sapped
|
||||||
|
status.spore-slowed.name = Spore Slowed
|
||||||
|
status.tarred.name = Tarred
|
||||||
|
status.overclock.name = Overclock
|
||||||
|
status.shocked.name = Shocked
|
||||||
|
status.blasted.name = Blasted
|
||||||
|
status.unmoving.name = Unmoving
|
||||||
|
|
||||||
settings.language = Language
|
settings.language = Language
|
||||||
settings.data = Game Data
|
settings.data = Game Data
|
||||||
settings.reset = Reset to Defaults
|
settings.reset = Reset to Defaults
|
||||||
@@ -653,6 +669,7 @@ stat.output = Output
|
|||||||
stat.booster = Booster
|
stat.booster = Booster
|
||||||
stat.tiles = Required Tiles
|
stat.tiles = Required Tiles
|
||||||
stat.affinities = Affinities
|
stat.affinities = Affinities
|
||||||
|
stat.opposites = Opposites
|
||||||
stat.powercapacity = Power Capacity
|
stat.powercapacity = Power Capacity
|
||||||
stat.powershot = Power/Shot
|
stat.powershot = Power/Shot
|
||||||
stat.damage = Damage
|
stat.damage = Damage
|
||||||
@@ -714,6 +731,12 @@ stat.abilities = Abilities
|
|||||||
stat.canboost = Can Boost
|
stat.canboost = Can Boost
|
||||||
stat.flying = Flying
|
stat.flying = Flying
|
||||||
stat.ammouse = Ammo Use
|
stat.ammouse = Ammo Use
|
||||||
|
stat.damagemultiplier = Damage Multiplier
|
||||||
|
stat.healthmultiplier = Health Multiplier
|
||||||
|
stat.speedmultiplier = Speed Multiplier
|
||||||
|
stat.reloadmultiplier = Reload Multiplier
|
||||||
|
stat.buildspeedmultiplier = Build Speed Multiplier
|
||||||
|
stat.reactive = Reacts
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
ability.forcefield = Force Field
|
||||||
ability.repairfield = Repair Field
|
ability.repairfield = Repair Field
|
||||||
@@ -749,17 +772,14 @@ units.processorcontrol = [lightgray]Processor Controlled
|
|||||||
bullet.damage = [stat]{0}[lightgray] damage
|
bullet.damage = [stat]{0}[lightgray] damage
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
bullet.incendiary = [stat]incendiary
|
bullet.incendiary = [stat]incendiary
|
||||||
bullet.sapping = [stat]sapping
|
|
||||||
bullet.homing = [stat]homing
|
bullet.homing = [stat]homing
|
||||||
bullet.shock = [stat]shock
|
|
||||||
bullet.frag = [stat]frag
|
bullet.frag = [stat]frag
|
||||||
|
bullet.lightning = [stat]{0}[lightgray]x lightning ~[stat]{1}[lightgray] damage
|
||||||
bullet.buildingdamage = [stat]{0}%[lightgray] building damage
|
bullet.buildingdamage = [stat]{0}%[lightgray] building damage
|
||||||
bullet.knockback = [stat]{0}[lightgray] knockback
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
bullet.pierce = [stat]{0}[lightgray]x pierce
|
bullet.pierce = [stat]{0}[lightgray]x pierce
|
||||||
bullet.infinitepierce = [stat]pierce
|
bullet.infinitepierce = [stat]pierce
|
||||||
bullet.healpercent = [stat]{0}[lightgray]% healing
|
bullet.healpercent = [stat]{0}[lightgray]% healing
|
||||||
bullet.freezing = [stat]freezing
|
|
||||||
bullet.tarred = [stat]tarred
|
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
bullet.reload = [stat]{0}[lightgray]x fire rate
|
bullet.reload = [stat]{0}[lightgray]x fire rate
|
||||||
|
|
||||||
@@ -800,6 +820,8 @@ setting.logichints.name = Logic Hints
|
|||||||
setting.flow.name = Display Resource Flow Rate
|
setting.flow.name = Display Resource Flow Rate
|
||||||
setting.backgroundpause.name = Pause In Background
|
setting.backgroundpause.name = Pause In Background
|
||||||
setting.buildautopause.name = Auto-Pause Building
|
setting.buildautopause.name = Auto-Pause Building
|
||||||
|
setting.doubletapmine.name = Double-Tap to Mine
|
||||||
|
setting.modcrashdisable.name = Disable Mods On Startup Crash
|
||||||
setting.animatedwater.name = Animated Surfaces
|
setting.animatedwater.name = Animated Surfaces
|
||||||
setting.animatedshields.name = Animated Shields
|
setting.animatedshields.name = Animated Shields
|
||||||
setting.antialias.name = Antialias[lightgray] (requires restart)[]
|
setting.antialias.name = Antialias[lightgray] (requires restart)[]
|
||||||
@@ -919,6 +941,7 @@ keybind.pause_building.name = Pause/Resume Building
|
|||||||
keybind.minimap.name = Minimap
|
keybind.minimap.name = Minimap
|
||||||
keybind.planet_map.name = Planet Map
|
keybind.planet_map.name = Planet Map
|
||||||
keybind.research.name = Research
|
keybind.research.name = Research
|
||||||
|
keybind.block_info.name = Block Info
|
||||||
keybind.chat.name = Chat
|
keybind.chat.name = Chat
|
||||||
keybind.player_list.name = Player List
|
keybind.player_list.name = Player List
|
||||||
keybind.console.name = Console
|
keybind.console.name = Console
|
||||||
@@ -987,6 +1010,7 @@ content.item.name = Items
|
|||||||
content.liquid.name = Liquids
|
content.liquid.name = Liquids
|
||||||
content.unit.name = Units
|
content.unit.name = Units
|
||||||
content.block.name = Blocks
|
content.block.name = Blocks
|
||||||
|
content.status.name = Status Effects
|
||||||
content.sector.name = Sectors
|
content.sector.name = Sectors
|
||||||
|
|
||||||
item.copper.name = Copper
|
item.copper.name = Copper
|
||||||
@@ -1455,7 +1479,7 @@ block.ripple.description = Shoots clusters of shells at ground enemies over long
|
|||||||
block.cyclone.description = Fires explosive clumps of flak at nearby enemies.
|
block.cyclone.description = Fires explosive clumps of flak at nearby enemies.
|
||||||
block.spectre.description = Fires large armor-piercing bullets at air and ground targets.
|
block.spectre.description = Fires large armor-piercing bullets at air and ground targets.
|
||||||
block.meltdown.description = Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate.
|
block.meltdown.description = Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate.
|
||||||
block.foreshadow.description = Fires a large single-target bolt over long distances.
|
block.foreshadow.description = Fires a large single-target bolt over long distances. Prioritizes enemies with higher max health.
|
||||||
block.repair-point.description = Continuously repairs the closest damaged unit in its vicinity.
|
block.repair-point.description = Continuously repairs the closest damaged unit in its vicinity.
|
||||||
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.
|
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.
|
||||||
block.parallax.description = Fires a tractor beam that pulls in air targets, damaging them in the process.
|
block.parallax.description = Fires a tractor beam that pulls in air targets, damaging them in the process.
|
||||||
@@ -1536,12 +1560,30 @@ lst.unitcontrol = Control the currently bound unit.
|
|||||||
lst.unitradar = Locate units around the currently bound unit.
|
lst.unitradar = Locate units around the currently bound unit.
|
||||||
lst.unitlocate = Locate a specific type of position/building anywhere on the map.\nRequires a bound unit.
|
lst.unitlocate = Locate a specific type of position/building anywhere on the map.\nRequires a bound unit.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||||
|
|
||||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
lenum.shoot = Shoot at a position.
|
||||||
lenum.shootp = Shoot at a unit/building with velocity prediction.
|
lenum.shootp = Shoot at a unit/building with velocity prediction.
|
||||||
lenum.configure = Building configuration, e.g. sorter item.
|
lenum.configure = Building configuration, e.g. sorter item.
|
||||||
lenum.enabled = Whether the block is enabled.
|
lenum.enabled = Whether the block is enabled.
|
||||||
lenum.color = Illuminator color.
|
|
||||||
|
laccess.color = Illuminator color.
|
||||||
|
laccess.controller = Unit controller. If processor controlled, returns processor.\nIf in a formation, returns leader.\nOtherwise, returns the unit itself.
|
||||||
|
laccess.dead = Whether a unit/building is dead or no longer valid.
|
||||||
|
laccess.controlled = Returns:\n[accent]@ctrlProcessor[] if unit controller is processor\n[accent]@ctrlPlayer[] if unit/building controller is player\n[accent]@ctrlFormation[] if unit is in formation\nOtherwise, 0.
|
||||||
|
laccess.commanded = [red]Deprecated. Will be removed![]\nUse [accent]controlled[] instead.
|
||||||
|
|
||||||
|
graphicstype.clear = Fill the display with a color.
|
||||||
|
graphicstype.color = Set color for next drawing operations.
|
||||||
|
graphicstype.stroke = Set line width.
|
||||||
|
graphicstype.line = Draw line segment.
|
||||||
|
graphicstype.rect = Fill a rectangle.
|
||||||
|
graphicstype.linerect = Draw a rectangle outline.
|
||||||
|
graphicstype.poly = Fill a regular polygon.
|
||||||
|
graphicstype.linepoly = Draw a regular polygon outline.
|
||||||
|
graphicstype.triangle = Fill a triangle.
|
||||||
|
graphicstype.image = Draw an image of some content.\nex: [accent]@router[] or [accent]@dagger[].
|
||||||
|
|
||||||
lenum.always = Always true.
|
lenum.always = Always true.
|
||||||
lenum.idiv = Integer division.
|
lenum.idiv = Integer division.
|
||||||
@@ -1566,7 +1608,7 @@ lenum.sin = Sine, in degrees.
|
|||||||
lenum.cos = Cosine, in degrees.
|
lenum.cos = Cosine, in degrees.
|
||||||
lenum.tan = Tangent, in degrees.
|
lenum.tan = Tangent, in degrees.
|
||||||
#not a typo, look up 'range notation'
|
#not a typo, look up 'range notation'
|
||||||
lenum.rand = Random number in range [0, value).
|
lenum.rand = Random decimal in range [0, value).
|
||||||
lenum.log = Natural logarithm (ln).
|
lenum.log = Natural logarithm (ln).
|
||||||
lenum.log10 = Base 10 logarithm.
|
lenum.log10 = Base 10 logarithm.
|
||||||
lenum.noise = 2D simplex noise.
|
lenum.noise = 2D simplex noise.
|
||||||
@@ -1624,6 +1666,7 @@ unitlocate.outx = Output X coordinate.
|
|||||||
unitlocate.outy = Output Y coordinate.
|
unitlocate.outy = Output Y coordinate.
|
||||||
unitlocate.group = Building group to look for.
|
unitlocate.group = Building group to look for.
|
||||||
|
|
||||||
|
lenum.idle = Don't move, but keep building/mining.\nThe default state.
|
||||||
lenum.stop = Stop moving/mining/building.
|
lenum.stop = Stop moving/mining/building.
|
||||||
lenum.move = Move to exact position.
|
lenum.move = Move to exact position.
|
||||||
lenum.approach = Approach a position with a radius.
|
lenum.approach = Approach a position with a radius.
|
||||||
|
|||||||
1685
core/assets/bundles/bundle_bg.properties
Normal file
@@ -113,7 +113,7 @@ committingchanges = Veränderungen werden übernommen
|
|||||||
done = Fertig
|
done = Fertig
|
||||||
feature.unsupported = Dein System unterstützt dieses Feature nicht.
|
feature.unsupported = Dein System unterstützt dieses Feature nicht.
|
||||||
|
|
||||||
mods.alphainfo = Vergiss nicht, dass Mods in der Alpha sind und[scarlet] sehr fehlerhaft sein können[].\nMelde alle Probleme auf GitHub oder Discord.
|
mods.initfailed = [red]⚠[] Die vorherige Mindustry-Instanz konnte nicht starten. Dies lag wahrscheinlich an fehlerhaften Mods.\n\nDamit das Spiel starten kann, [red]wurden alle Mods deaktiviert.[]\n\nWenn du nicht willst, dass das passiert, kannst du es unter [accent]Einstellungen->Spiel->Mods bei Absturz deaktivieren[] ändern.
|
||||||
mods = Mods
|
mods = Mods
|
||||||
mods.none = [lightgray]Keine Mods gefunden!
|
mods.none = [lightgray]Keine Mods gefunden!
|
||||||
mods.guide = Modding-Anleitung
|
mods.guide = Modding-Anleitung
|
||||||
@@ -126,6 +126,7 @@ mod.installed = [[Installiert]
|
|||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Aktiviert
|
mod.enabled = [lightgray]Aktiviert
|
||||||
mod.disabled = [scarlet]Deaktiviert
|
mod.disabled = [scarlet]Deaktiviert
|
||||||
|
mod.multiplayer.compatible = [gray]Mehrspieler-kompatibel
|
||||||
mod.disable = Deaktivieren
|
mod.disable = Deaktivieren
|
||||||
mod.content = Inhalt:
|
mod.content = Inhalt:
|
||||||
mod.delete.error = Unfähig Mod zu löschen. Datei könnte in Benutzung sein.
|
mod.delete.error = Unfähig Mod zu löschen. Datei könnte in Benutzung sein.
|
||||||
@@ -216,9 +217,11 @@ server.hidden = Versteckt
|
|||||||
trace = Spieler verfolgen
|
trace = Spieler verfolgen
|
||||||
trace.playername = Spielername: [accent]{0}
|
trace.playername = Spielername: [accent]{0}
|
||||||
trace.ip = IP: [accent]{0}
|
trace.ip = IP: [accent]{0}
|
||||||
trace.id = Eindeutige ID: [accent]{0}
|
trace.id = ID: [accent]{0}
|
||||||
trace.mobile = Mobiler Client: [accent]{0}
|
trace.mobile = Mobiler Client: [accent]{0}
|
||||||
trace.modclient = Gemoddeter Client: [accent]{0}
|
trace.modclient = Gemoddeter Client: [accent]{0}
|
||||||
|
trace.times.joined = Beigetreten: [accent]{0}[] Mal
|
||||||
|
trace.times.kicked = Rausgeworfen: [accent]{0}[] Mal
|
||||||
invalidid = Ungültige Client-ID! Berichte den Fehler.
|
invalidid = Ungültige Client-ID! Berichte den Fehler.
|
||||||
server.bans = Verbannungen
|
server.bans = Verbannungen
|
||||||
server.bans.none = Keine verbannten Spieler gefunden!
|
server.bans.none = Keine verbannten Spieler gefunden!
|
||||||
@@ -617,6 +620,19 @@ sector.extractionOutpost.description = Ein Außenposten, der vom Gegner erstellt
|
|||||||
sector.impact0078.description = Hier liegen Reste der interplanetarischen Transporteinheit, die dieses Sonnensystem zuerst betreten hat.\n\nRette so viel wie möglich von den Ruinen. Erforsche jede intakte Technologie.
|
sector.impact0078.description = Hier liegen Reste der interplanetarischen Transporteinheit, die dieses Sonnensystem zuerst betreten hat.\n\nRette so viel wie möglich von den Ruinen. Erforsche jede intakte Technologie.
|
||||||
sector.planetaryTerminal.description = Das Endziel.\n\nDiese Uferbasis besitzt ein Gerät, mit dem es möglich ist, Kerne auf andere Planeten zu schicken. Es ist [accent]sehr[] gut beschützt.\n\nStelle Wassereinheiten her. Eliminiere den Gegner so schnell wie möglich. Erforsche das Launchgerät.
|
sector.planetaryTerminal.description = Das Endziel.\n\nDiese Uferbasis besitzt ein Gerät, mit dem es möglich ist, Kerne auf andere Planeten zu schicken. Es ist [accent]sehr[] gut beschützt.\n\nStelle Wassereinheiten her. Eliminiere den Gegner so schnell wie möglich. Erforsche das Launchgerät.
|
||||||
|
|
||||||
|
status.burning.name = Brennend
|
||||||
|
status.freezing.name = Frierend
|
||||||
|
status.wet.name = Nass
|
||||||
|
status.muddy.name = Schlammig
|
||||||
|
status.melting.name = Schmelzend
|
||||||
|
status.sapped.name = Schwächend
|
||||||
|
status.spore-slowed.name = Sporen-verlangsamt
|
||||||
|
status.tarred.name = Teerend
|
||||||
|
status.overclock.name = Übertaktend
|
||||||
|
status.shocked.name = Schockend
|
||||||
|
status.blasted.name = Sprengend
|
||||||
|
status.unmoving.name = Unbeweglich
|
||||||
|
|
||||||
settings.language = Sprache
|
settings.language = Sprache
|
||||||
settings.data = Spieldaten
|
settings.data = Spieldaten
|
||||||
settings.reset = Auf Standard zurücksetzen
|
settings.reset = Auf Standard zurücksetzen
|
||||||
@@ -653,6 +669,7 @@ stat.output = Ausgang
|
|||||||
stat.booster = Verstärkung
|
stat.booster = Verstärkung
|
||||||
stat.tiles = Erforderte Untergründe
|
stat.tiles = Erforderte Untergründe
|
||||||
stat.affinities = Affinitäten
|
stat.affinities = Affinitäten
|
||||||
|
stat.opposites = Gegenteile
|
||||||
stat.powercapacity = Kapazität
|
stat.powercapacity = Kapazität
|
||||||
stat.powershot = Stromverbrauch/Schuss
|
stat.powershot = Stromverbrauch/Schuss
|
||||||
stat.damage = Schaden
|
stat.damage = Schaden
|
||||||
@@ -714,6 +731,12 @@ stat.abilities = Fähigkeiten
|
|||||||
stat.canboost = Kann boosten
|
stat.canboost = Kann boosten
|
||||||
stat.flying = Flug
|
stat.flying = Flug
|
||||||
stat.ammouse = Muntionsverbrauch
|
stat.ammouse = Muntionsverbrauch
|
||||||
|
stat.damagemultiplier = Schaden-Multiplikator
|
||||||
|
stat.healthmultiplier = Lebenspunkte-Multiplikator
|
||||||
|
stat.speedmultiplier = Geschwindigkeit-Multiplikator
|
||||||
|
stat.reloadmultiplier = Nachlade-Multiplikator
|
||||||
|
stat.buildspeedmultiplier = Baugeschwindigkeit-Multiplikator
|
||||||
|
stat.reactive = Reagiert mit
|
||||||
|
|
||||||
ability.forcefield = Kraftfeld
|
ability.forcefield = Kraftfeld
|
||||||
ability.repairfield = Heilungsfeld
|
ability.repairfield = Heilungsfeld
|
||||||
@@ -750,16 +773,13 @@ bullet.damage = [stat]{0}[lightgray] Schaden
|
|||||||
bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray] Kacheln
|
bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray] Kacheln
|
||||||
bullet.incendiary = [stat]entzündend
|
bullet.incendiary = [stat]entzündend
|
||||||
bullet.homing = [stat]zielsuchend
|
bullet.homing = [stat]zielsuchend
|
||||||
bullet.sapping = [stat]entzieht Lebenspunkte
|
|
||||||
bullet.shock = [stat]schockend
|
|
||||||
bullet.frag = [stat]explosiv
|
bullet.frag = [stat]explosiv
|
||||||
|
bullet.lightning = [stat]{0}[lightgray]x Blitz ~[stat]{1}[lightgray] Schaden
|
||||||
bullet.buildingdamage = [stat]{0}%[lightgray]Blockschaden
|
bullet.buildingdamage = [stat]{0}%[lightgray]Blockschaden
|
||||||
bullet.knockback = [stat]{0}[lightgray] zurückstoßend
|
bullet.knockback = [stat]{0}[lightgray] zurückstoßend
|
||||||
bullet.pierce = [stat]{0}[lightgray]x Durchstechkraft
|
bullet.pierce = [stat]{0}[lightgray]x Durchstechkraft
|
||||||
bullet.infinitepierce = [stat]Durchstechkraft
|
bullet.infinitepierce = [stat]Durchstechkraft
|
||||||
bullet.freezing = [stat]frierend
|
|
||||||
bullet.healpercent = [stat]{0}[lightgray]% Heilung
|
bullet.healpercent = [stat]{0}[lightgray]% Heilung
|
||||||
bullet.tarred = [stat]teerend
|
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x Munition Multiplikator
|
bullet.multiplier = [stat]{0}[lightgray]x Munition Multiplikator
|
||||||
bullet.reload = [stat]{0}[lightgray]x Feuerrate
|
bullet.reload = [stat]{0}[lightgray]x Feuerrate
|
||||||
|
|
||||||
@@ -800,6 +820,8 @@ setting.logichints.name = Logiktipps
|
|||||||
setting.flow.name = Ressourcen-Fluss anzeigen
|
setting.flow.name = Ressourcen-Fluss anzeigen
|
||||||
setting.backgroundpause.name = Im Hintergrund pausieren
|
setting.backgroundpause.name = Im Hintergrund pausieren
|
||||||
setting.buildautopause.name = Bauen automatisch pausieren
|
setting.buildautopause.name = Bauen automatisch pausieren
|
||||||
|
setting.doubletapmine.name = Doppeltippen zum Abbauen
|
||||||
|
setting.modcrashdisable.name = Mods bei Absturz deaktivieren
|
||||||
setting.animatedwater.name = Animiertes Wasser
|
setting.animatedwater.name = Animiertes Wasser
|
||||||
setting.animatedshields.name = Animierte Schilde
|
setting.animatedshields.name = Animierte Schilde
|
||||||
setting.antialias.name = Antialias[lightgray] (Neustart erforderlich)[]
|
setting.antialias.name = Antialias[lightgray] (Neustart erforderlich)[]
|
||||||
@@ -919,6 +941,7 @@ keybind.pause_building.name = Pausieren/Fortsetzen des Bauens
|
|||||||
keybind.minimap.name = Minimap
|
keybind.minimap.name = Minimap
|
||||||
keybind.planet_map.name = Planetenkarte
|
keybind.planet_map.name = Planetenkarte
|
||||||
keybind.research.name = Forschen
|
keybind.research.name = Forschen
|
||||||
|
keybind.block_info.name = Blockinformationen anzeigen
|
||||||
keybind.chat.name = Chat
|
keybind.chat.name = Chat
|
||||||
keybind.player_list.name = Spielerliste
|
keybind.player_list.name = Spielerliste
|
||||||
keybind.console.name = Konsole
|
keybind.console.name = Konsole
|
||||||
@@ -957,6 +980,8 @@ rules.blockdamagemultiplier = Block-Schaden-Multiplikator
|
|||||||
rules.unitbuildspeedmultiplier = Baugeschwindigkeit-Einheit Multiplikator
|
rules.unitbuildspeedmultiplier = Baugeschwindigkeit-Einheit Multiplikator
|
||||||
rules.unithealthmultiplier = Lebenspunkte-Einheit Multiplikator
|
rules.unithealthmultiplier = Lebenspunkte-Einheit Multiplikator
|
||||||
rules.unitdamagemultiplier = Schaden-Einheit Multiplikator
|
rules.unitdamagemultiplier = Schaden-Einheit Multiplikator
|
||||||
|
rules.unitcapvariable = Kerne zählen zum Einheiten-Limit dazu
|
||||||
|
rules.unitcap = Einheiten-Limit
|
||||||
rules.enemycorebuildradius = Bauverbot-Radius durch feindlichen Kern:[lightgray] (Kacheln)
|
rules.enemycorebuildradius = Bauverbot-Radius durch feindlichen Kern:[lightgray] (Kacheln)
|
||||||
rules.wavespacing = Wellen-Abstand:[lightgray] (Sek)
|
rules.wavespacing = Wellen-Abstand:[lightgray] (Sek)
|
||||||
rules.buildcostmultiplier = Bau-Kosten Multiplikator
|
rules.buildcostmultiplier = Bau-Kosten Multiplikator
|
||||||
@@ -985,6 +1010,7 @@ content.item.name = Materialien
|
|||||||
content.liquid.name = Flüssigkeiten
|
content.liquid.name = Flüssigkeiten
|
||||||
content.unit.name = Einheiten
|
content.unit.name = Einheiten
|
||||||
content.block.name = Blöcke
|
content.block.name = Blöcke
|
||||||
|
content.status.name = Effekte
|
||||||
content.sector.name = Sektoren
|
content.sector.name = Sektoren
|
||||||
|
|
||||||
item.copper.name = Kupfer
|
item.copper.name = Kupfer
|
||||||
@@ -1042,7 +1068,7 @@ unit.reign.name = Reign
|
|||||||
unit.vela.name = Vela
|
unit.vela.name = Vela
|
||||||
unit.corvus.name = Korvus
|
unit.corvus.name = Korvus
|
||||||
|
|
||||||
block.resupply-point.name = Nachlade-Punkt
|
block.resupply-point.name = Munitionsvorrat
|
||||||
block.parallax.name = Parallax
|
block.parallax.name = Parallax
|
||||||
block.cliff.name = Klippe
|
block.cliff.name = Klippe
|
||||||
block.sand-boulder.name = Sandbrocken
|
block.sand-boulder.name = Sandbrocken
|
||||||
@@ -1453,7 +1479,7 @@ block.ripple.description = Schießt mehrere Schüsse gleichzeitig auf weit entfe
|
|||||||
block.cyclone.description = Schießt explodierende Geschosse auf Gegner.
|
block.cyclone.description = Schießt explodierende Geschosse auf Gegner.
|
||||||
block.spectre.description = Schießt große, panzerbrechende Kugeln auf Luft- und Bodenziele.
|
block.spectre.description = Schießt große, panzerbrechende Kugeln auf Luft- und Bodenziele.
|
||||||
block.meltdown.description = Lädt sich auf und schießt einen starken, durchgängigen Laser auf Gegner. Braucht Kühlung.
|
block.meltdown.description = Lädt sich auf und schießt einen starken, durchgängigen Laser auf Gegner. Braucht Kühlung.
|
||||||
block.foreshadow.description = Schießt einen einzigen Schuss mit einem einzigen Ziel über eine erstaunlich große Distanz.
|
block.foreshadow.description = Schießt einen starken Schuss auf ein einziges Ziel über hohe Distanzen. Zielt auf Gegner mit den meisten Lebenspunkten.
|
||||||
block.repair-point.description = Heilt durchgehend die nächste befreundete, beschädigte Einheit in der Umgebung.
|
block.repair-point.description = Heilt durchgehend die nächste befreundete, beschädigte Einheit in der Umgebung.
|
||||||
block.segment.description = Beschädigt und zerstört gegnerische Projektile. Laser werden nicht anvisiert.
|
block.segment.description = Beschädigt und zerstört gegnerische Projektile. Laser werden nicht anvisiert.
|
||||||
block.parallax.description = Benutzt einen Traktorstrahl, um Gegner heranzuziehen und sie dabei anzugreifen.
|
block.parallax.description = Benutzt einen Traktorstrahl, um Gegner heranzuziehen und sie dabei anzugreifen.
|
||||||
@@ -1534,12 +1560,30 @@ lst.unitcontrol = Steuert [accent]@unit[].
|
|||||||
lst.unitradar = Findet Einheiten in der Nähe von [accent]@unit[].
|
lst.unitradar = Findet Einheiten in der Nähe von [accent]@unit[].
|
||||||
lst.unitlocate = Findet mit [accent]@unit[] bestimmte Positionen / Blöcke auf der ganzen Karte.
|
lst.unitlocate = Findet mit [accent]@unit[] bestimmte Positionen / Blöcke auf der ganzen Karte.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Logik, die Blöcke baut, ist hier nicht erlaubt.
|
||||||
|
|
||||||
lenum.type = Englischer Name eines Blocks / einer Einheit. Ein Verteiler gibt [accent]@router[] wieder.\nKein string.
|
lenum.type = Englischer Name eines Blocks / einer Einheit. Ein Verteiler gibt [accent]@router[] wieder.\nKein string.
|
||||||
lenum.shoot = Schießt auf eine Position.
|
lenum.shoot = Schießt auf eine Position.
|
||||||
lenum.shootp = Schießt auf eine Einheit / einen Block und sagt deren Position voraus.
|
lenum.shootp = Schießt auf eine Einheit / einen Block und sagt deren Position voraus.
|
||||||
lenum.configure = Blockkonfiguration, z.B. das ausgewählte Item in einem Sortierer.
|
lenum.configure = Blockkonfiguration, z.B. das ausgewählte Item in einem Sortierer.
|
||||||
lenum.enabled = Ob der Block an oder aus ist.
|
lenum.enabled = Ob der Block an oder aus ist.
|
||||||
lenum.color = Illuminiererfarbe.
|
|
||||||
|
laccess.color = Illuminiererfarbe.
|
||||||
|
laccess.controller = Einheitensteurer. Gibt "processor" zurück, wenn die Einheit prozessorgesteuert ist,.\nGibt den Steuerer zurück, wenn die Einheit Teil einer Formation ist.\nSonst wird einfach die Einheit zurückgegeben.
|
||||||
|
laccess.dead = Ob ein Block / eine Einheit tot oder nicht mehr gültig ist.
|
||||||
|
laccess.controlled = Gibt zurück:\n[accent]@ctrlProcessor[] wenn die Einheit prozessorgesteuert ist\n[accent]@ctrlPlayer[] wenn die Einheit / der Block von einem Spieler gesteuert wird\n[accent]@ctrlFormation[] wenn die Einheit Teil einer Formation ist\nSonst 0.
|
||||||
|
laccess.commanded = [red]Veraltet. Wird bald entfernt![]\nBenutze stattdessen [accent]controlled[].
|
||||||
|
|
||||||
|
graphicstype.stroke = Setzt die Linienbreite fest.
|
||||||
|
graphicstype.line = Zeichnet eine Linie.
|
||||||
|
graphicstype.clear = Füllt den Bildschirm mit einer Farbe.
|
||||||
|
graphicstype.color = Wählt eine Farbe aus.
|
||||||
|
graphicstype.rect = Zeichnet ein Rechteck.
|
||||||
|
graphicstype.linerect = Zeichnet den Umriss eines Rechtecks.
|
||||||
|
graphicstype.poly = Füllt ein gleichmäßiges Polygon.
|
||||||
|
graphicstype.linepoly = Zeichnet den Umriss eines gleichmäßigen Polygons.
|
||||||
|
graphicstype.triangle = Zeichnet ein Dreieck.
|
||||||
|
graphicstype.image = Zeichnet ein Bild von einem englischen Namen.\nz.B. [accent]@router[] oder [accent]@dagger[].
|
||||||
|
|
||||||
lenum.always = Immer.
|
lenum.always = Immer.
|
||||||
lenum.idiv = Division mit ganzen Zahlen.
|
lenum.idiv = Division mit ganzen Zahlen.
|
||||||
@@ -1563,6 +1607,7 @@ lenum.len = Length of vector.
|
|||||||
lenum.sin = Sinus in Grad.
|
lenum.sin = Sinus in Grad.
|
||||||
lenum.cos = Cosinus in Grad.
|
lenum.cos = Cosinus in Grad.
|
||||||
lenum.tan = Tangens in Grad.
|
lenum.tan = Tangens in Grad.
|
||||||
|
#not a typo, look up 'range notation'
|
||||||
lenum.rand = Zufällige Zahl zwischen [0, <wert>).
|
lenum.rand = Zufällige Zahl zwischen [0, <wert>).
|
||||||
lenum.log = Logarithmus (ln).
|
lenum.log = Logarithmus (ln).
|
||||||
lenum.log10 = Logarithmus zur Basis 10.
|
lenum.log10 = Logarithmus zur Basis 10.
|
||||||
@@ -1586,6 +1631,14 @@ lenum.building = Ein Block einer bestimmten Sorte.
|
|||||||
|
|
||||||
lenum.core = Irgendein Kern.
|
lenum.core = Irgendein Kern.
|
||||||
lenum.storage = Speicherblock, z.B. ein Tresor.
|
lenum.storage = Speicherblock, z.B. ein Tresor.
|
||||||
|
lenum.generator = Blöcke, die Strom generieren.
|
||||||
|
lenum.factory = Blöcke, die Ressourcen verarbeiten.
|
||||||
|
lenum.repair = Reperaturpunkt.
|
||||||
|
lenum.rally = Kommandozentrale
|
||||||
|
lenum.battery = Irgendeine Batterie.
|
||||||
|
lenum.resupply = Munitionsvorrat.\nNur wichtig, wenn [accent]"Einheiten benötigen Munition"[] an ist.
|
||||||
|
lenum.reactor = Schlag- / Thoriumreaktor.
|
||||||
|
lenum.turret = Irgendein Geschütz.
|
||||||
|
|
||||||
sensor.in = Der Block / die Einheit.
|
sensor.in = Der Block / die Einheit.
|
||||||
|
|
||||||
@@ -1613,6 +1666,7 @@ unitlocate.outx = Variable für die X-Koordinate.
|
|||||||
unitlocate.outy = Variable für die Y-Koordinate.
|
unitlocate.outy = Variable für die Y-Koordinate.
|
||||||
unitlocate.group = Gesuchter Blocktyp.
|
unitlocate.group = Gesuchter Blocktyp.
|
||||||
|
|
||||||
|
lenum.idle = Bewegt sich nicht, baut aber weiter ab.\nDer normale Zustand.
|
||||||
lenum.stop = Bewegung / Abbau / Bau abbrechen.
|
lenum.stop = Bewegung / Abbau / Bau abbrechen.
|
||||||
lenum.move = Geht zu diese Position.
|
lenum.move = Geht zu diese Position.
|
||||||
lenum.approach = Geht auf einen Punkt mit einem bestimmten Radius zu.
|
lenum.approach = Geht auf einen Punkt mit einem bestimmten Radius zu.
|
||||||
|
|||||||
@@ -678,6 +678,7 @@ stat.drillspeed = Velocidad del Taladro
|
|||||||
stat.boosteffect = Efecto de Potenciador
|
stat.boosteffect = Efecto de Potenciador
|
||||||
stat.maxunits = Máximo de Unidades Activas
|
stat.maxunits = Máximo de Unidades Activas
|
||||||
stat.health = Vida
|
stat.health = Vida
|
||||||
|
stat.armor = Armadura
|
||||||
stat.buildtime = Tiempo de construcción
|
stat.buildtime = Tiempo de construcción
|
||||||
stat.maxconsecutive = Máximo consecutivo
|
stat.maxconsecutive = Máximo consecutivo
|
||||||
stat.buildcost = Coste de construcción
|
stat.buildcost = Coste de construcción
|
||||||
@@ -693,7 +694,8 @@ stat.lightningchance = Probabilidad de descarga
|
|||||||
stat.lightningdamage = Daño por rayo
|
stat.lightningdamage = Daño por rayo
|
||||||
stat.flammability = Inflamabilidad
|
stat.flammability = Inflamabilidad
|
||||||
stat.radioactivity = Radioactividad
|
stat.radioactivity = Radioactividad
|
||||||
stat.heatcapacity = Resistencia temperatura
|
stat.charge = Carga eléctrica
|
||||||
|
stat.heatcapacity = Resistencia a la temperatura
|
||||||
stat.viscosity = Viscosidad
|
stat.viscosity = Viscosidad
|
||||||
stat.temperature = Temperatura
|
stat.temperature = Temperatura
|
||||||
stat.speed = Velocidad
|
stat.speed = Velocidad
|
||||||
@@ -744,6 +746,7 @@ bullet.sapping = [stat]Oxidante
|
|||||||
bullet.homing = [stat]Rastreadora
|
bullet.homing = [stat]Rastreadora
|
||||||
bullet.shock = [stat]Electrizante
|
bullet.shock = [stat]Electrizante
|
||||||
bullet.frag = [stat]De fragmentación
|
bullet.frag = [stat]De fragmentación
|
||||||
|
bullet.buildingdamage = [stat]{0}%[lightgray]daño a estructuras
|
||||||
bullet.knockback = [stat]{0}[lightgray] Empuje
|
bullet.knockback = [stat]{0}[lightgray] Empuje
|
||||||
bullet.pierce = [stat]{0}[lightgray]x penetración
|
bullet.pierce = [stat]{0}[lightgray]x penetración
|
||||||
bullet.infinitepierce = [stat]Penetrante
|
bullet.infinitepierce = [stat]Penetrante
|
||||||
@@ -1116,7 +1119,7 @@ block.plastanium-wall.name = Muro de Plastanio
|
|||||||
block.plastanium-wall-large.name = Muro de Plastanio grande
|
block.plastanium-wall-large.name = Muro de Plastanio grande
|
||||||
block.phase-wall.name = Muro de Fase grande
|
block.phase-wall.name = Muro de Fase grande
|
||||||
block.phase-wall-large.name = Muro de Fase grande
|
block.phase-wall-large.name = Muro de Fase grande
|
||||||
block.thorium-wall.name = Pared de Torio
|
block.thorium-wall.name = Muro de Torio
|
||||||
block.thorium-wall-large.name = Muro de Torio grande
|
block.thorium-wall-large.name = Muro de Torio grande
|
||||||
block.door.name = Puerta
|
block.door.name = Puerta
|
||||||
block.door-large.name = Puerta Grande
|
block.door-large.name = Puerta Grande
|
||||||
@@ -1329,16 +1332,16 @@ block.graphite-press.description = Comprime carbón en piezas de grafito puro.
|
|||||||
block.multi-press.description = Una versión mejorada de la prensa de grafito. Utiliza agua y energía para procesar carbón rápida y eficientemente.
|
block.multi-press.description = Una versión mejorada de la prensa de grafito. Utiliza agua y energía para procesar carbón rápida y eficientemente.
|
||||||
block.silicon-smelter.description = Reduce la arena con carbón puro. Produce silicio.
|
block.silicon-smelter.description = Reduce la arena con carbón puro. Produce silicio.
|
||||||
block.kiln.description = Funde arena y plomo en metacristal. Requiere cantidades pequeñas de energía para funcionar.
|
block.kiln.description = Funde arena y plomo en metacristal. Requiere cantidades pequeñas de energía para funcionar.
|
||||||
block.plastanium-compressor.description = Produce plastanio con aceite y titanio.
|
block.plastanium-compressor.description = Produce plastanio con petróleo y titanio.
|
||||||
block.phase-weaver.description = Produce tejido de fase del torio radioactivo y altas cantidades de arena.
|
block.phase-weaver.description = Produce tejido de fase del torio radioactivo y altas cantidades de arena.
|
||||||
block.alloy-smelter.description = Produce aleación eléctrica con titanio, plomo, silicio y cobre.
|
block.alloy-smelter.description = Produce aleación eléctrica con titanio, plomo, silicio y cobre.
|
||||||
block.cryofluid-mixer.description = Combina agua y titanio en líquido criogénico, que es mucho más eficiente para enfriar.
|
block.cryofluid-mixer.description = Combina agua y titanio en líquido criogénico, que es mucho más eficiente para enfriar.
|
||||||
block.blast-mixer.description = Usa aceite para transformar pirotita en un objeto menos inflamable pero más explosivo: el compuesto explosivo.
|
block.blast-mixer.description = Usa esporas para transformar pirotita en un objeto menos inflamable pero más explosivo: el compuesto explosivo.
|
||||||
block.pyratite-mixer.description = Mezcla carbón, plomo y arena en pirotita altamente inflamable.
|
block.pyratite-mixer.description = Mezcla carbón, plomo y arena en pirotita altamente inflamable.
|
||||||
block.melter.description = Calienta piedra a temperaturas muy altas para obtener lava.
|
block.melter.description = Calienta chatarra a temperaturas muy altas para obtener magma.
|
||||||
block.separator.description = Expone piedra a la presión del agua para obtener diversos minerales contenidos en la piedra.
|
block.separator.description = Separa el magma en sus componentes minerales.
|
||||||
block.spore-press.description = Comprime esporas en petróleo.
|
block.spore-press.description = Comprime esporas en petróleo.
|
||||||
block.pulverizer.description = Despedaza la piedra en arena. Útil cuando no hay arena natural.
|
block.pulverizer.description = Despedaza la chatarra en arena. Útil cuando no hay arena natural.
|
||||||
block.coal-centrifuge.description = Solidifica petróleo en piezas de carbón.
|
block.coal-centrifuge.description = Solidifica petróleo en piezas de carbón.
|
||||||
block.incinerator.description = Se deshace de cualquier líquido o material producido en exceso.
|
block.incinerator.description = Se deshace de cualquier líquido o material producido en exceso.
|
||||||
block.power-void.description = Elimina toda la energía que se le da. Solo en disponible en el modo Libre.
|
block.power-void.description = Elimina toda la energía que se le da. Solo en disponible en el modo Libre.
|
||||||
@@ -1351,7 +1354,7 @@ block.copper-wall.description = Un bloque defensivo barato.\nÚtil para defender
|
|||||||
block.copper-wall-large.description = Un bloque defensivo barato.\nÚtil para defender el núcleo y las torres en las primeras oleadas.\nOcupa múltiples casillas.
|
block.copper-wall-large.description = Un bloque defensivo barato.\nÚtil para defender el núcleo y las torres en las primeras oleadas.\nOcupa múltiples casillas.
|
||||||
block.titanium-wall.description = Un bloque defensivo moderadamente fuerte.\nProporciona protección moderada contra los enemigos.
|
block.titanium-wall.description = Un bloque defensivo moderadamente fuerte.\nProporciona protección moderada contra los enemigos.
|
||||||
block.titanium-wall-large.description = Un bloque defensivo moderadamente fuerte.\nProporciona protección moderada contra los enemigos.\nOcupa múltiples casillas.
|
block.titanium-wall-large.description = Un bloque defensivo moderadamente fuerte.\nProporciona protección moderada contra los enemigos.\nOcupa múltiples casillas.
|
||||||
block.plastanium-wall.description = Un tipo especial de pared que absorbe los arcos eléctricos y bloquea las conexiones automáticas de los nodos de potencia..
|
block.plastanium-wall.description = Un tipo especial de pared que absorbe los arcos eléctricos y bloquea las conexiones automáticas de los nodos de potencia.
|
||||||
block.plastanium-wall-large.description = Un tipo especial de pared que absorbe los arcos eléctricos y bloquea las conexiones automáticas de los nodos de potencia.\nOcupa múltiples casillas.
|
block.plastanium-wall-large.description = Un tipo especial de pared que absorbe los arcos eléctricos y bloquea las conexiones automáticas de los nodos de potencia.\nOcupa múltiples casillas.
|
||||||
block.thorium-wall.description = Un bloque defensivo fuerte.\nBuena protección contra enemigos.
|
block.thorium-wall.description = Un bloque defensivo fuerte.\nBuena protección contra enemigos.
|
||||||
block.thorium-wall-large.description = Un bloque defensivo fuerte.\nBuena protección contra enemigos.\nOcupa múltiples casillas.
|
block.thorium-wall-large.description = Un bloque defensivo fuerte.\nBuena protección contra enemigos.\nOcupa múltiples casillas.
|
||||||
@@ -1359,8 +1362,8 @@ block.phase-wall.description = No es tan fuerte como un muro de torio pero hace
|
|||||||
block.phase-wall-large.description = No es tan fuerte como un muro de torio pero rebota balas al enemigo si no son demasiado fuertes.\nOcupa múltiples casillas.
|
block.phase-wall-large.description = No es tan fuerte como un muro de torio pero rebota balas al enemigo si no son demasiado fuertes.\nOcupa múltiples casillas.
|
||||||
block.surge-wall.description = El bloque defensivo más fuerte.\nTiene una pequeña probabilidad de disparar rayos al atacante.
|
block.surge-wall.description = El bloque defensivo más fuerte.\nTiene una pequeña probabilidad de disparar rayos al atacante.
|
||||||
block.surge-wall-large.description = El bloque defensivo más fuerte.\nTiene una pequeña probabilidad de disparar rayos al atacante.\nOcupa múltiplies casillas.
|
block.surge-wall-large.description = El bloque defensivo más fuerte.\nTiene una pequeña probabilidad de disparar rayos al atacante.\nOcupa múltiplies casillas.
|
||||||
block.door.description = Una puerta pequeña que puede ser abierta y cerrada tocándola.\nSi está abirta, los enemigos pueden moverse y disparar a través de ella.
|
block.door.description = Una puerta pequeña que puede ser abierta y cerrada tocándola.\nSi está abierta, los enemigos pueden moverse y disparar a través de ella.
|
||||||
block.door-large.description = Una puerta grande que puede ser abierta y cerrada tocándola.\nSi está abirta, los enemigos pueden moverse y disparar a través de ella.\nOcupa múltiples casillas.
|
block.door-large.description = Una puerta grande que puede ser abierta y cerrada tocándola.\nSi está abierta, los enemigos pueden moverse y disparar a través de ella.\nOcupa múltiples casillas.
|
||||||
block.mender.description = Repara bloques cercanos de forma constante. Mantiene a las defensas reparadas entre oleadas. Puede usar silicio opcionalmente para mejorar el alcance y la eficiencia.
|
block.mender.description = Repara bloques cercanos de forma constante. Mantiene a las defensas reparadas entre oleadas. Puede usar silicio opcionalmente para mejorar el alcance y la eficiencia.
|
||||||
block.mend-projector.description = Regenera edificios cercanos de forma constante. Ocupa multiples casillas.
|
block.mend-projector.description = Regenera edificios cercanos de forma constante. Ocupa multiples casillas.
|
||||||
block.overdrive-projector.description = Aumenta la velocidad de edificios cercanos como taladros y transportadores.
|
block.overdrive-projector.description = Aumenta la velocidad de edificios cercanos como taladros y transportadores.
|
||||||
@@ -1388,7 +1391,7 @@ block.pulse-conduit.description = Bloque de transporte de líquidos avanzado. Tr
|
|||||||
block.plated-conduit.description = Mueve líquidos a la misma velocidad que los conductos de pulso, pero posee más armadura. No acepta líquidos de los lados por otra cosa que no sean conductos.\nGotea menos.
|
block.plated-conduit.description = Mueve líquidos a la misma velocidad que los conductos de pulso, pero posee más armadura. No acepta líquidos de los lados por otra cosa que no sean conductos.\nGotea menos.
|
||||||
block.liquid-router.description = Acepta líquidos de una dirección y los deja en hasta 3 direcciones equitativamente. También puede almacenar cierta capacidad de líquido. Útil para dividir los líquidos de una fuente a varios objetivos.
|
block.liquid-router.description = Acepta líquidos de una dirección y los deja en hasta 3 direcciones equitativamente. También puede almacenar cierta capacidad de líquido. Útil para dividir los líquidos de una fuente a varios objetivos.
|
||||||
block.liquid-tank.description = Almacena una gran cantidad de líquidos. Úsalo para crear almacenes cuando no hay una demanda constante de materiales o para asegurarse de enfriar bloques vitales.
|
block.liquid-tank.description = Almacena una gran cantidad de líquidos. Úsalo para crear almacenes cuando no hay una demanda constante de materiales o para asegurarse de enfriar bloques vitales.
|
||||||
block.liquid-junction.description = Actúa como un puente para dos condusctos que se cruzan. Útil en situaciones en las que hay dos conductos con líquidos diferentes a diferentes lugares.
|
block.liquid-junction.description = Actúa como un puente para dos conductos que se cruzan. Útil en situaciones en las que hay dos conductos con líquidos diferentes a diferentes lugares.
|
||||||
block.bridge-conduit.description = Bloque avanzado de transporte de líquidos. Permite transportar líquidos por encima de hasta 3 casillas de cualquier terreno o construcción.
|
block.bridge-conduit.description = Bloque avanzado de transporte de líquidos. Permite transportar líquidos por encima de hasta 3 casillas de cualquier terreno o construcción.
|
||||||
block.phase-conduit.description = Bloque de transporte de líquidos avanzado. Usa energía para transportar líquidos a otro conducto de fase conectado a través de varias casillas.
|
block.phase-conduit.description = Bloque de transporte de líquidos avanzado. Usa energía para transportar líquidos a otro conducto de fase conectado a través de varias casillas.
|
||||||
block.power-node.description = Transmite energía a nodos conectados, conecta hasta diez fuentes de energía, edificios que usan energía o nodos. El nodo obtendrá o transmitirá energía de cualquier bloque adyacente.
|
block.power-node.description = Transmite energía a nodos conectados, conecta hasta diez fuentes de energía, edificios que usan energía o nodos. El nodo obtendrá o transmitirá energía de cualquier bloque adyacente.
|
||||||
@@ -1398,7 +1401,7 @@ block.diode.description = La energía de la batería puede fluir a través de es
|
|||||||
block.battery.description = Guarda energía cuando hay abundancia y proporciona energía cuando hay escasez de energía mientras la batería tenga energía.
|
block.battery.description = Guarda energía cuando hay abundancia y proporciona energía cuando hay escasez de energía mientras la batería tenga energía.
|
||||||
block.battery-large.description = Almacena mucha más energía que una batería normal.
|
block.battery-large.description = Almacena mucha más energía que una batería normal.
|
||||||
block.combustion-generator.description = Genera energía quemando materiales inflamables o petróleo.
|
block.combustion-generator.description = Genera energía quemando materiales inflamables o petróleo.
|
||||||
block.thermal-generator.description = Genera una gran cantidad de energía con la lava.
|
block.thermal-generator.description = Genera una gran cantidad de energía con el magma.
|
||||||
block.steam-generator.description = Más eficiente que un generador de combustión, pero requiere agua adicional.
|
block.steam-generator.description = Más eficiente que un generador de combustión, pero requiere agua adicional.
|
||||||
block.differential-generator.description = Genera grandes cantidades de energía. Utiliza la diferencia de temperatura entre el fluído criogenico y la quema de pirotita.
|
block.differential-generator.description = Genera grandes cantidades de energía. Utiliza la diferencia de temperatura entre el fluído criogenico y la quema de pirotita.
|
||||||
block.rtg-generator.description = Un generador radioisótropo termoeléctrico que no necesita enfriamiento, pero proporciona menos energía que un reactor de torio.
|
block.rtg-generator.description = Un generador radioisótropo termoeléctrico que no necesita enfriamiento, pero proporciona menos energía que un reactor de torio.
|
||||||
@@ -1444,7 +1447,7 @@ block.segment.description = Daña y destruye proyectiles que se acerquen. No afe
|
|||||||
block.parallax.description = Dispara un rayo tractor que atrae enemigos aéreos, dañándolos en el proceso.
|
block.parallax.description = Dispara un rayo tractor que atrae enemigos aéreos, dañándolos en el proceso.
|
||||||
block.tsunami.description = Dispara poderosos torrentes de líquido a los enemigos. También apaga fuegos automáticamente si se lo abastece con agua.
|
block.tsunami.description = Dispara poderosos torrentes de líquido a los enemigos. También apaga fuegos automáticamente si se lo abastece con agua.
|
||||||
block.silicon-crucible.description = Refina silicio a partir de arena y carbón, usando pirotita como una fuente de calor adicional. Es más eficiente en lugares cálidos.
|
block.silicon-crucible.description = Refina silicio a partir de arena y carbón, usando pirotita como una fuente de calor adicional. Es más eficiente en lugares cálidos.
|
||||||
block.disassembler.description = Separa magma cantidades moderadas de componentes minerales exóticos con baja eficiencia. Puede producir Torio.
|
block.disassembler.description = Separa magma en cantidades moderadas de componentes minerales exóticos con baja eficiencia. Puede producir Torio.
|
||||||
block.overdrive-dome.description = Incrementa la velocidad de estructuras cercanas. Requiere Tejido de Fase y Silicio para operar.
|
block.overdrive-dome.description = Incrementa la velocidad de estructuras cercanas. Requiere Tejido de Fase y Silicio para operar.
|
||||||
block.payload-conveyor.description = Mueve tanto grandes cargas, como unidades recién ensambladas de sus fábricas.
|
block.payload-conveyor.description = Mueve tanto grandes cargas, como unidades recién ensambladas de sus fábricas.
|
||||||
block.payload-router.description = Divide las cargas entrantes en 3 direcciones de salida.
|
block.payload-router.description = Divide las cargas entrantes en 3 direcciones de salida.
|
||||||
@@ -1487,7 +1490,7 @@ unit.zenith.description = Dispara ráfagas de misiles a enemigos cercanos.
|
|||||||
unit.antumbra.description = Dispara un enjambre de balas a cualquer enemigo cercano.
|
unit.antumbra.description = Dispara un enjambre de balas a cualquer enemigo cercano.
|
||||||
unit.eclipse.description = Dispara dos láseres perforantes y un enjambre de balas de fragmentación.
|
unit.eclipse.description = Dispara dos láseres perforantes y un enjambre de balas de fragmentación.
|
||||||
unit.mono.description = Extrae cobre y plomo, y los deposita en el núcleo.
|
unit.mono.description = Extrae cobre y plomo, y los deposita en el núcleo.
|
||||||
unit.poly.description = Recosntruye automáticamente estructuras dañadas y asiste a otras unidades en la construcción.
|
unit.poly.description = Reconstruye automáticamente estructuras dañadas y asiste a otras unidades en la construcción.
|
||||||
unit.mega.description = Repara automáticamente estructuras dañadas. Puede llevar estructuras y unidades terrestres pequeñas.
|
unit.mega.description = Repara automáticamente estructuras dañadas. Puede llevar estructuras y unidades terrestres pequeñas.
|
||||||
unit.quad.description = Suelta grandes bombas sobre objetivos terrestres, repara estructuras aliadas y daña enemigos. Puede cargar con unidades terrestres de tamaño medio.
|
unit.quad.description = Suelta grandes bombas sobre objetivos terrestres, repara estructuras aliadas y daña enemigos. Puede cargar con unidades terrestres de tamaño medio.
|
||||||
unit.oct.description = Protege aliados con su escudo. Puede cargar con la mayoría de unidades terrestres.
|
unit.oct.description = Protege aliados con su escudo. Puede cargar con la mayoría de unidades terrestres.
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ link.changelog.description = 업데이트 내용 목록
|
|||||||
link.dev-builds.description = 불안정한 개발 버전
|
link.dev-builds.description = 불안정한 개발 버전
|
||||||
link.trello.description = 출시 예정 기능 계획을 게시한 공식 Trello 보드
|
link.trello.description = 출시 예정 기능 계획을 게시한 공식 Trello 보드
|
||||||
link.itch.io.description = PC 다운로드가 있는 itch.io 페이지
|
link.itch.io.description = PC 다운로드가 있는 itch.io 페이지
|
||||||
link.google-play.description = Google Play 스토어 목록
|
link.google-play.description = oogle Play 스토어 목록
|
||||||
link.f-droid.description = F-Droid 카탈로그 목록
|
link.f-droid.description = F-Droid 카탈로그 목록
|
||||||
link.wiki.description = 공식 Mindustry 위키
|
link.wiki.description = 공식 Mindustry 위키
|
||||||
link.suggestions.description = 새 기능 제안하기
|
link.suggestions.description = 새 기능 제안하기
|
||||||
@@ -113,7 +113,7 @@ committingchanges = 바뀐 점 적용
|
|||||||
done = 완료
|
done = 완료
|
||||||
feature.unsupported = 기기가 이 기능을 지원하지 않습니다.
|
feature.unsupported = 기기가 이 기능을 지원하지 않습니다.
|
||||||
|
|
||||||
mods.alphainfo = 현재 모드는 정식 출시 버전이 아니며, [scarlet]오류가 많을 수 있습니다[].\n발견한 문제는 Mindustry Github 또는 Discord에 보고하세요.
|
mods.initfailed = [red]⚠[]이전 Mindustry 인스턴스를 초기화하지 못했습니다. 잘못된 모드로 인해 발생한 것일 수 있습니다.\n\n 게임 충돌 무한반복을 막기 위해, [red]모든 모드가 비활성화되었습니다.[]\n\n이 시스템을 비활성화할려면, [accent]설정->게임->로딩 중 충돌 시 모드 비활성화[]설정을 끄세요.
|
||||||
mods = 모드
|
mods = 모드
|
||||||
mods.none = [lightgray]모드를 찾을 수 없습니다!
|
mods.none = [lightgray]모드를 찾을 수 없습니다!
|
||||||
mods.guide = 모드 제작 가이드
|
mods.guide = 모드 제작 가이드
|
||||||
@@ -126,6 +126,7 @@ mod.installed = [[설치됨]
|
|||||||
mod.display = [gray]모드:[orange] {0}
|
mod.display = [gray]모드:[orange] {0}
|
||||||
mod.enabled = [lightgray]활성화됨
|
mod.enabled = [lightgray]활성화됨
|
||||||
mod.disabled = [scarlet]비활성화됨
|
mod.disabled = [scarlet]비활성화됨
|
||||||
|
mod.multiplayer.compatible = [gray]멀티플레이어 호환 가능
|
||||||
mod.disable = 비활성화
|
mod.disable = 비활성화
|
||||||
mod.content = 콘텐츠:
|
mod.content = 콘텐츠:
|
||||||
mod.delete.error = 모드를 삭제할 수 없습니다. 파일이 사용 중일 수 있습니다.
|
mod.delete.error = 모드를 삭제할 수 없습니다. 파일이 사용 중일 수 있습니다.
|
||||||
@@ -219,6 +220,8 @@ trace.ip = IP: [accent]{0}
|
|||||||
trace.id = UUID: [accent]{0}
|
trace.id = UUID: [accent]{0}
|
||||||
trace.mobile = 모바일 클라이언트: [accent]{0}
|
trace.mobile = 모바일 클라이언트: [accent]{0}
|
||||||
trace.modclient = 사용자 지정 클라이언트: [accent]{0}
|
trace.modclient = 사용자 지정 클라이언트: [accent]{0}
|
||||||
|
trace.times.joined = 입장 횟수: [accent]{0}
|
||||||
|
trace.times.kicked = 추방 횟수: [accent]{0}
|
||||||
invalidid = 잘못된 클라이언트 ID입니다! 버그 보고서를 보내주세요.
|
invalidid = 잘못된 클라이언트 ID입니다! 버그 보고서를 보내주세요.
|
||||||
server.bans = 차단 목록
|
server.bans = 차단 목록
|
||||||
server.bans.none = 차단된 플레이어를 찾을 수 없습니다!
|
server.bans.none = 차단된 플레이어를 찾을 수 없습니다!
|
||||||
@@ -617,6 +620,19 @@ sector.extractionOutpost.description = 적이 다른 지역에 자원을 보내
|
|||||||
sector.impact0078.description = 이곳에는 시스템에 처음 진입한 우주 수송선의 잔해가 있습니다.\n\n우주선이 파괴된 잔해에서 최대한 많은 자원을 회수하고, 손상되지 않은 그들의 기술을 획득하세요.
|
sector.impact0078.description = 이곳에는 시스템에 처음 진입한 우주 수송선의 잔해가 있습니다.\n\n우주선이 파괴된 잔해에서 최대한 많은 자원을 회수하고, 손상되지 않은 그들의 기술을 획득하세요.
|
||||||
sector.planetaryTerminal.description = 이 행성에서의 마지막 전투를 준비하세요.\n\n적이 필사의 각오로 지키고 있는 이 해안 기지엔 우주에 코어를 발사할 수 있는 시설이 있습니다.\n\n해군을 생산하여 적을 신속하게 제거하고, 그들의 코어 발사 기술을 약탈하십시오.\n\n[royal] 건투를 빕니다.[]
|
sector.planetaryTerminal.description = 이 행성에서의 마지막 전투를 준비하세요.\n\n적이 필사의 각오로 지키고 있는 이 해안 기지엔 우주에 코어를 발사할 수 있는 시설이 있습니다.\n\n해군을 생산하여 적을 신속하게 제거하고, 그들의 코어 발사 기술을 약탈하십시오.\n\n[royal] 건투를 빕니다.[]
|
||||||
|
|
||||||
|
status.burning.name = 방화
|
||||||
|
status.freezing.name = 빙결
|
||||||
|
status.wet.name = 젖음
|
||||||
|
status.muddy.name = 질척해짐
|
||||||
|
status.melting.name = 융해
|
||||||
|
status.sapped.name = 흡혈됨
|
||||||
|
status.spore-slowed.name = 포자 느려짐
|
||||||
|
status.tarred.name = Tarred
|
||||||
|
status.overclock.name = 과부하
|
||||||
|
status.shocked.name = 충격
|
||||||
|
status.blasted.name = 폭파됨
|
||||||
|
status.unmoving.name = 멈춤
|
||||||
|
|
||||||
settings.language = 언어
|
settings.language = 언어
|
||||||
settings.data = 게임 데이터
|
settings.data = 게임 데이터
|
||||||
settings.reset = 기본값으로 초기화
|
settings.reset = 기본값으로 초기화
|
||||||
@@ -653,6 +669,7 @@ stat.output = 출력
|
|||||||
stat.booster = 가속
|
stat.booster = 가속
|
||||||
stat.tiles = 필요한 타일
|
stat.tiles = 필요한 타일
|
||||||
stat.affinities = 친화력
|
stat.affinities = 친화력
|
||||||
|
stat.opposites = 상성
|
||||||
stat.powercapacity = 전력 용량
|
stat.powercapacity = 전력 용량
|
||||||
stat.powershot = 전력/발
|
stat.powershot = 전력/발
|
||||||
stat.damage = 피해량
|
stat.damage = 피해량
|
||||||
@@ -714,6 +731,12 @@ stat.abilities = 능력
|
|||||||
stat.canboost = 이륙 가능
|
stat.canboost = 이륙 가능
|
||||||
stat.flying = 비행
|
stat.flying = 비행
|
||||||
stat.ammouse = 탄약 사용
|
stat.ammouse = 탄약 사용
|
||||||
|
stat.damagemultiplier = 피해량 배수
|
||||||
|
stat.healthmultiplier = 체력 배수
|
||||||
|
stat.speedmultiplier = 이동속도 배수
|
||||||
|
stat.reloadmultiplier = 재장전 배수
|
||||||
|
stat.buildspeedmultiplier = 건설속도 배수
|
||||||
|
stat.reactive = 반응성
|
||||||
|
|
||||||
ability.forcefield = 보호막 필드
|
ability.forcefield = 보호막 필드
|
||||||
ability.repairfield = 수리 필드
|
ability.repairfield = 수리 필드
|
||||||
@@ -749,17 +772,14 @@ units.processorcontrol = [lightgray]프로세서 제어됨
|
|||||||
bullet.damage = [stat]{0}[lightgray] 피해량
|
bullet.damage = [stat]{0}[lightgray] 피해량
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] 범위 피해량 ~ [stat] {1}[lightgray] 타일
|
bullet.splashdamage = [stat]{0}[lightgray] 범위 피해량 ~ [stat] {1}[lightgray] 타일
|
||||||
bullet.incendiary = [stat]방화
|
bullet.incendiary = [stat]방화
|
||||||
bullet.sapping = [stat]흡혈
|
|
||||||
bullet.homing = [stat]유도
|
bullet.homing = [stat]유도
|
||||||
bullet.shock = [stat]전격
|
|
||||||
bullet.frag = [stat]파편
|
bullet.frag = [stat]파편
|
||||||
|
bullet.lightning = [stat]{0}[lightgray]x 전격 ~[stat]{1}[lightgray] 피해량
|
||||||
bullet.buildingdamage = [stat]{0}%[lightgray] 건물 피해량
|
bullet.buildingdamage = [stat]{0}%[lightgray] 건물 피해량
|
||||||
bullet.knockback = [stat]{0}[lightgray] 넉백
|
bullet.knockback = [stat]{0}[lightgray] 넉백
|
||||||
bullet.pierce = [stat]{0}[lightgray]번 관통
|
bullet.pierce = [stat]{0}[lightgray]번 관통
|
||||||
bullet.infinitepierce = [stat]관통
|
bullet.infinitepierce = [stat]관통
|
||||||
bullet.healpercent = [stat]{0}[lightgray]% 회복
|
bullet.healpercent = [stat]{0}[lightgray]% 회복
|
||||||
bullet.freezing = [stat]빙결
|
|
||||||
bullet.tarred = [stat]타르
|
|
||||||
bullet.multiplier = [stat]{0}[lightgray]배 탄약 배수
|
bullet.multiplier = [stat]{0}[lightgray]배 탄약 배수
|
||||||
bullet.reload = [stat]{0}[lightgray]배 발사 속도
|
bullet.reload = [stat]{0}[lightgray]배 발사 속도
|
||||||
|
|
||||||
@@ -800,6 +820,8 @@ setting.logichints.name = 로직 힌트 표시
|
|||||||
setting.flow.name = 자원 흐름량 표시
|
setting.flow.name = 자원 흐름량 표시
|
||||||
setting.backgroundpause.name = 백그라운드에서 일시정지
|
setting.backgroundpause.name = 백그라운드에서 일시정지
|
||||||
setting.buildautopause.name = 건설 자동 일시정지
|
setting.buildautopause.name = 건설 자동 일시정지
|
||||||
|
setting.doubletapmine.name = 연속 터치로 채광
|
||||||
|
setting.modcrashdisable.name = 로딩 중 충돌 시 모드 비활성화
|
||||||
setting.animatedwater.name = 액체 애니메이션 효과
|
setting.animatedwater.name = 액체 애니메이션 효과
|
||||||
setting.animatedshields.name = 보호막 애니메이션 효과
|
setting.animatedshields.name = 보호막 애니메이션 효과
|
||||||
setting.antialias.name = 위신호 제거 필터[lightgray] (재시작 필요)[]
|
setting.antialias.name = 위신호 제거 필터[lightgray] (재시작 필요)[]
|
||||||
@@ -919,6 +941,7 @@ keybind.pause_building.name = 건설 일시정지/재개
|
|||||||
keybind.minimap.name = 미니맵
|
keybind.minimap.name = 미니맵
|
||||||
keybind.planet_map.name = 행성 지도
|
keybind.planet_map.name = 행성 지도
|
||||||
keybind.research.name = 연구
|
keybind.research.name = 연구
|
||||||
|
keybind.block_info.name = 블록 정보
|
||||||
keybind.chat.name = 채팅
|
keybind.chat.name = 채팅
|
||||||
keybind.player_list.name = 플레이어 목록
|
keybind.player_list.name = 플레이어 목록
|
||||||
keybind.console.name = 콘솔
|
keybind.console.name = 콘솔
|
||||||
@@ -987,6 +1010,7 @@ content.item.name = 자원
|
|||||||
content.liquid.name = 액체
|
content.liquid.name = 액체
|
||||||
content.unit.name = 유닛
|
content.unit.name = 유닛
|
||||||
content.block.name = 블록
|
content.block.name = 블록
|
||||||
|
content.status.name = 상태 이상
|
||||||
content.sector.name = 지역
|
content.sector.name = 지역
|
||||||
|
|
||||||
item.copper.name = 구리
|
item.copper.name = 구리
|
||||||
@@ -1455,7 +1479,7 @@ block.ripple.description = 장거리에 걸쳐 지상 적에게 포탄 무리를
|
|||||||
block.cyclone.description = 근처 적에게 폭발 파편 덩어리를 발사합니다.
|
block.cyclone.description = 근처 적에게 폭발 파편 덩어리를 발사합니다.
|
||||||
block.spectre.description = 공중 및 지상 목표물에 큰 관통 철갑탄을 발사합니다.
|
block.spectre.description = 공중 및 지상 목표물에 큰 관통 철갑탄을 발사합니다.
|
||||||
block.meltdown.description = 주변 적에게 지속적인 레이저 빔을 충전하여 발사합니다. 냉각 액체가 있어야 작동합니다.
|
block.meltdown.description = 주변 적에게 지속적인 레이저 빔을 충전하여 발사합니다. 냉각 액체가 있어야 작동합니다.
|
||||||
block.foreshadow.description = 장거리에 걸친 거대한 단일 목표 저격탄을 발사합니다.
|
block.foreshadow.description = 장거리에 걸친 거대한 단일 목표 저격탄을 발사합니다. 최대 체력이 높은 적을 먼저 조준합니다.
|
||||||
block.repair-point.description = 인근에 가장 가까운 유닛을 지속해서 치료합니다.
|
block.repair-point.description = 인근에 가장 가까운 유닛을 지속해서 치료합니다.
|
||||||
block.segment.description = 날아오는 발사체를 요격합니다. 큰 발사체엔 조준하지 않습니다.
|
block.segment.description = 날아오는 발사체를 요격합니다. 큰 발사체엔 조준하지 않습니다.
|
||||||
block.parallax.description = 공중 목표물을 끌어오는 견인 광선을 발사하며, 견인 과정에서 데미지를 줍니다.
|
block.parallax.description = 공중 목표물을 끌어오는 견인 광선을 발사하며, 견인 과정에서 데미지를 줍니다.
|
||||||
@@ -1528,7 +1552,7 @@ lst.control = 건물 조종하기
|
|||||||
lst.radar = 건물 주변의 유닛 검색하기
|
lst.radar = 건물 주변의 유닛 검색하기
|
||||||
lst.sensor = 건물 또는 유닛의 정보 얻기
|
lst.sensor = 건물 또는 유닛의 정보 얻기
|
||||||
lst.set = 변수 선언/할당하기
|
lst.set = 변수 선언/할당하기
|
||||||
lst.operation = 1~2개의 변수로 연산자하기
|
lst.operation = 1~2개의 변수로 연산하기
|
||||||
lst.end = 실행줄의 가장 위로 점프하기
|
lst.end = 실행줄의 가장 위로 점프하기
|
||||||
lst.jump = 조건부로 다른 실행문으로 점프하기
|
lst.jump = 조건부로 다른 실행문으로 점프하기
|
||||||
lst.unitbind = type 옆에 있는 유닛을 지정하고, [accent]@unit[]에 저장하기
|
lst.unitbind = type 옆에 있는 유닛을 지정하고, [accent]@unit[]에 저장하기
|
||||||
@@ -1536,12 +1560,30 @@ lst.unitcontrol = 현재 지정된 유닛을 조종하기
|
|||||||
lst.unitradar = 현재 지정된 유닛 주변의 유닛 검색하기
|
lst.unitradar = 현재 지정된 유닛 주변의 유닛 검색하기
|
||||||
lst.unitlocate = 특정 유형의 위치/건물을 지도상에서 찾기\n지정된 유닛이 필요합니다.
|
lst.unitlocate = 특정 유형의 위치/건물을 지도상에서 찾기\n지정된 유닛이 필요합니다.
|
||||||
|
|
||||||
lenum.type = 건물/유닛의 타입\n예로 분배기는 [accent]@router[]를 반환할 것입니다.\n문자열이 아니라.
|
logic.nounitbuild = [red]유닛의 건물 로직은 여기서 허용되지 않습니다.
|
||||||
|
|
||||||
|
lenum.type = 건물/유닛의 타입\n예로 분배기는 문자열이 아니라 [accent]@router[]를 반환합니다.
|
||||||
lenum.shoot = 특정 위치에 발사
|
lenum.shoot = 특정 위치에 발사
|
||||||
lenum.shootp = 목표물 속도를 예측하여 발사
|
lenum.shootp = 목표물 속도를 예측하여 발사
|
||||||
lenum.configure = 필터의 아이템같은 건물의 설정
|
lenum.configure = 필터의 아이템같은 건물의 설정
|
||||||
lenum.enabled = 블록의 활성 여부
|
lenum.enabled = 블록의 활성 여부
|
||||||
|
|
||||||
lenum.color = 조명 색 설정
|
lenum.color = 조명 색 설정
|
||||||
|
laccess.controller = 유닛 제어자. 프로세서가 제어하면, 프로세서를 반환합니다.\n다른 유닛에 의해 지휘되면(G키), 지휘하는 유닛을 반환합니다.\n그 외에는 자신을 반환합니다.
|
||||||
|
laccess.dead = 유닛 또는 건물 사망/무효 여부
|
||||||
|
laccess.controlled = 만약 유닛 제어자가 프로세서라면 [accent]@ctrlProcessor[]를 반환합니다.\n만약 유닛/건물 제어자가 플레이어라면 [accent]@ctrlPlayer[]를 반환합니다.\n만약 유닛이 다른 유닛에 의해 지휘되면(G키)[accent]@ctrlFormation[]를 반환합니다.\n그 외에는 0을 반환합니다.
|
||||||
|
laccess.commanded = [red]이제 사용되지 않으며, 곧 제거될 예정입니다![]\n대신 [accent]controlled[]를 사용하세요.
|
||||||
|
|
||||||
|
graphicstype.clear = 이 색으로 화면을 채우기
|
||||||
|
graphicstype.color = 아래 그래픽 실행문들의 색 설정하기
|
||||||
|
graphicstype.stroke = 선 굵기 설정하기
|
||||||
|
graphicstype.line = 선분 그리기
|
||||||
|
graphicstype.rect = 직사각형 채우기
|
||||||
|
graphicstype.linerect = 직사각형 외곽선 그리기
|
||||||
|
graphicstype.poly = 정다각형 채우기
|
||||||
|
graphicstype.linepoly = 정다각형 외곽선 그리기
|
||||||
|
graphicstype.triangle = 삼각형 채우기
|
||||||
|
graphicstype.image = 일부 콘텐츠의 이미지 그리기\n예: [accent]@router[] 또는 [accent]@dagger[].
|
||||||
|
|
||||||
lenum.always = 항상 참
|
lenum.always = 항상 참
|
||||||
lenum.idiv = 정수 나누기
|
lenum.idiv = 정수 나누기
|
||||||
@@ -1566,7 +1608,7 @@ lenum.sin = 사인(도)
|
|||||||
lenum.cos = 코사인(도)
|
lenum.cos = 코사인(도)
|
||||||
lenum.tan = 탄젠트(도)
|
lenum.tan = 탄젠트(도)
|
||||||
#not a typo, look up 'range notation'
|
#not a typo, look up 'range notation'
|
||||||
lenum.rand = 범위 내 난수[0 ~ 값)
|
lenum.rand = 범위 내 십진법 난수[0 ~ 값)
|
||||||
lenum.log = 자연 로그(진수)
|
lenum.log = 자연 로그(진수)
|
||||||
lenum.log10 = 상수 로그
|
lenum.log10 = 상수 로그
|
||||||
lenum.noise = 2D 심플렉스 노이즈
|
lenum.noise = 2D 심플렉스 노이즈
|
||||||
@@ -1596,7 +1638,7 @@ lenum.rally = 지휘소
|
|||||||
lenum.battery = 배터리
|
lenum.battery = 배터리
|
||||||
lenum.resupply = 보급 지점.\n[accent]"유닛 탄약 필요"[]가 활성화되었을 때만 유의미합니다.
|
lenum.resupply = 보급 지점.\n[accent]"유닛 탄약 필요"[]가 활성화되었을 때만 유의미합니다.
|
||||||
lenum.reactor = 핵융합로/토륨 원자로
|
lenum.reactor = 핵융합로/토륨 원자로
|
||||||
lenum.turret = 포탑ㅁ
|
lenum.turret = 포탑
|
||||||
|
|
||||||
sensor.in = 감지할 건물/유닛
|
sensor.in = 감지할 건물/유닛
|
||||||
|
|
||||||
@@ -1624,6 +1666,7 @@ unitlocate.outx = X좌표
|
|||||||
unitlocate.outy = Y좌표
|
unitlocate.outy = Y좌표
|
||||||
unitlocate.group = 찾을 건물 집단
|
unitlocate.group = 찾을 건물 집단
|
||||||
|
|
||||||
|
lenum.idle = 채광/건설 제외 이동만 중단\n기본 상태입니다.
|
||||||
lenum.stop = 이동/채광/건설 중단
|
lenum.stop = 이동/채광/건설 중단
|
||||||
lenum.move = 특정 위치로 이동
|
lenum.move = 특정 위치로 이동
|
||||||
lenum.approach = 특정 위치로 반지름만큼 접근
|
lenum.approach = 특정 위치로 반지름만큼 접근
|
||||||
@@ -1640,3 +1683,205 @@ lenum.build = 구조물 건설
|
|||||||
lenum.getblock = 특정 좌표의 빌딩과 블록을 반환합니다.\n위치는 유닛의 인지 범위 내여야 합니다.\n자연 지형은 [accent]@solid[]의 타입을 가집니다.
|
lenum.getblock = 특정 좌표의 빌딩과 블록을 반환합니다.\n위치는 유닛의 인지 범위 내여야 합니다.\n자연 지형은 [accent]@solid[]의 타입을 가집니다.
|
||||||
lenum.within = 좌표 주변 유닛 발견 여부
|
lenum.within = 좌표 주변 유닛 발견 여부
|
||||||
lenum.boost = 이륙 시작/중단
|
lenum.boost = 이륙 시작/중단
|
||||||
|
#1665 줄 매칭
|
||||||
|
|
||||||
|
#-------------비공식 번역주-------------
|
||||||
|
#팁, 패치 기록, 약간의 관련 드립을 넣는 곳입니다. 이미 쓰여진 줄이 있다면 \n\n를 입력한 다음 작성하고 끝에 깃허브 작성자 닉네임(또는 디스코드)을 적어주세요.
|
||||||
|
#심각한 노잼, 뇌절, 무례한 말들을 적지 말아주세요, 이는 목적이 어떠하든 공통적으로 적용됩니다(친근함 유도를 위한 평어 x). 다음 패치에 업데이트되어 그 언어를 쓰는 모든 유저가 보게 됩니다.
|
||||||
|
#양이 너무 많으면 사족을 더 붙이는걸 추천하지 않습니다.
|
||||||
|
#이 비공식 번역주는 공식 디테일이 추가되면 언제든지 삭제될 수 있습니다.
|
||||||
|
#비어있는 디테일은 아래 details가 전부이므로 추가 또는 삭제를 따로 안하셔도 됩니다.
|
||||||
|
#유색코드가 아닌, 흑백 색코드만 사용 가능합니다. 되도록이면 그냥 안쓰시는걸 추천.
|
||||||
|
#관련 문의는 공식 디스코드에서 절 불러주세요. Sharlotte#0018
|
||||||
|
|
||||||
|
#아이템
|
||||||
|
item.metaglass.details = 쓰임세가 가장 적은 아이템
|
||||||
|
item.graphite.details =
|
||||||
|
item.sand.details =
|
||||||
|
item.titanium.details =
|
||||||
|
item.thorium.details =
|
||||||
|
item.silicon.details =
|
||||||
|
item.plastanium.details =
|
||||||
|
item.phase-fabric.details =
|
||||||
|
item.surge-alloy.details =
|
||||||
|
item.blast-compound.details = 화력 발전기에 넣어보세요.
|
||||||
|
item.pyratite.details =
|
||||||
|
|
||||||
|
#액체
|
||||||
|
liquid.water.details =
|
||||||
|
liquid.slag.details =
|
||||||
|
liquid.oil.details =
|
||||||
|
liquid.cryofluid.details = 티타늄을 갈아서 물에 희석했다는 소문이 있다.
|
||||||
|
|
||||||
|
#블록
|
||||||
|
block.resupply-point.details =
|
||||||
|
block.armored-conveyor.details =
|
||||||
|
block.illuminator.details =
|
||||||
|
block.message.details =
|
||||||
|
block.graphite-press.details =
|
||||||
|
block.multi-press.details =
|
||||||
|
block.silicon-smelter.details =
|
||||||
|
block.kiln.details =
|
||||||
|
block.plastanium-compressor.details = 석유를 정말 많이 먹는다.
|
||||||
|
block.phase-weaver.details =
|
||||||
|
block.alloy-smelter.details =
|
||||||
|
block.cryofluid-mixer.details =
|
||||||
|
block.blast-mixer.details =
|
||||||
|
block.pyratite-mixer.details =
|
||||||
|
block.melter.details =
|
||||||
|
block.separator.details =
|
||||||
|
block.spore-press.details =
|
||||||
|
block.pulverizer.details =
|
||||||
|
block.coal-centrifuge.details = 가성비가 매우 뛰어나다.
|
||||||
|
block.incinerator.details =
|
||||||
|
block.power-void.details =
|
||||||
|
block.power-source.details =
|
||||||
|
block.item-source.details =
|
||||||
|
block.item-void.details =
|
||||||
|
block.liquid-source.details =
|
||||||
|
block.liquid-void.details =
|
||||||
|
block.copper-wall.details =
|
||||||
|
block.copper-wall-large.details =
|
||||||
|
block.titanium-wall.details =
|
||||||
|
block.titanium-wall-large.details =
|
||||||
|
block.plastanium-wall.details =
|
||||||
|
block.plastanium-wall-large.details =
|
||||||
|
block.thorium-wall.details =
|
||||||
|
block.thorium-wall-large.details =
|
||||||
|
block.phase-wall.details =
|
||||||
|
block.phase-wall-large.details =
|
||||||
|
block.surge-wall.details =
|
||||||
|
block.surge-wall-large.details =
|
||||||
|
block.door.details =
|
||||||
|
block.door-large.details =
|
||||||
|
block.mender.details =
|
||||||
|
block.mend-projector.details =
|
||||||
|
block.overdrive-projector.details =
|
||||||
|
block.force-projector.details =
|
||||||
|
block.shock-mine.details =
|
||||||
|
block.conveyor.details =
|
||||||
|
block.titanium-conveyor.details =
|
||||||
|
block.plastanium-conveyor.details =
|
||||||
|
block.junction.details =
|
||||||
|
block.bridge-conveyor.details = 티타늄 컨베이어보다 빠르다.
|
||||||
|
block.phase-conveyor.details =
|
||||||
|
block.sorter.details = 자원을 분류하여 주변 블록에 건내는 과정이 거의 한순간에 일어난다.
|
||||||
|
block.inverted-sorter.details =
|
||||||
|
block.distributor.details =
|
||||||
|
block.overflow-gate.details =
|
||||||
|
block.underflow-gate.details =
|
||||||
|
block.mass-driver.details = 발사할려면 최소 아이템 10개가 필요하다.
|
||||||
|
block.mechanical-pump.details =
|
||||||
|
block.rotary-pump.details =
|
||||||
|
block.thermal-pump.details =
|
||||||
|
block.conduit.details =
|
||||||
|
block.pulse-conduit.details =
|
||||||
|
block.plated-conduit.details =
|
||||||
|
block.liquid-router.details =
|
||||||
|
block.liquid-tank.details =
|
||||||
|
block.liquid-junction.details =
|
||||||
|
block.bridge-conduit.details =
|
||||||
|
block.phase-conduit.details =
|
||||||
|
block.power-node.details =
|
||||||
|
block.power-node-large.details =
|
||||||
|
block.surge-tower.details =
|
||||||
|
block.diode.details =
|
||||||
|
block.battery.details =
|
||||||
|
block.battery-large.details =
|
||||||
|
block.combustion-generator.details =
|
||||||
|
block.thermal-generator.details =
|
||||||
|
block.steam-generator.details =
|
||||||
|
block.differential-generator.details =
|
||||||
|
block.rtg-generator.details =
|
||||||
|
block.solar-panel.details =
|
||||||
|
block.solar-panel-large.details =
|
||||||
|
block.thorium-reactor.details =
|
||||||
|
block.impact-reactor.details =
|
||||||
|
block.mechanical-drill.details =
|
||||||
|
block.pneumatic-drill.details =
|
||||||
|
block.laser-drill.details =
|
||||||
|
block.blast-drill.details =
|
||||||
|
block.water-extractor.details =
|
||||||
|
block.cultivator.details =
|
||||||
|
block.cultivator.details =
|
||||||
|
block.oil-extractor.details =
|
||||||
|
block.vault.details =
|
||||||
|
block.container.details =
|
||||||
|
block.unloader.details =
|
||||||
|
block.launch-pad.details =
|
||||||
|
block.duo.details =
|
||||||
|
block.scatter.details =
|
||||||
|
block.scorch.details =
|
||||||
|
block.hail.details = 일점사하면 립플보다 더 뛰어난 정확도와 연사력을 보여준다.
|
||||||
|
block.wave.details =
|
||||||
|
block.lancer.details =
|
||||||
|
block.arc.details =
|
||||||
|
block.swarmer.details =
|
||||||
|
block.salvo.details =
|
||||||
|
block.fuse.details =
|
||||||
|
block.ripple.details =
|
||||||
|
block.cyclone.details =
|
||||||
|
block.spectre.details =
|
||||||
|
block.meltdown.details =
|
||||||
|
block.foreshadow.details =
|
||||||
|
block.repair-point.details =
|
||||||
|
block.segment.details =
|
||||||
|
block.parallax.details =
|
||||||
|
block.tsunami.details =
|
||||||
|
block.silicon-crucible.details =
|
||||||
|
block.disassembler.details =
|
||||||
|
block.overdrive-dome.details =
|
||||||
|
block.payload-conveyor.details =
|
||||||
|
block.payload-router.details =
|
||||||
|
block.command-center.details =
|
||||||
|
block.ground-factory.details =
|
||||||
|
block.air-factory.details = 건설&연구 재료는 구리와 납뿐이지만, 정작 유닛을 생산할 땐 실리콘이 필요하다.
|
||||||
|
block.naval-factory.details =
|
||||||
|
block.additive-reconstructor.details =
|
||||||
|
block.multiplicative-reconstructor.details =
|
||||||
|
block.exponential-reconstructor.details =
|
||||||
|
block.tetrative-reconstructor.details =
|
||||||
|
block.switch.details =
|
||||||
|
block.micro-processor.details =
|
||||||
|
block.logic-processor.details =
|
||||||
|
block.hyper-processor.details =
|
||||||
|
block.memory-cell.details =
|
||||||
|
block.memory-bank.details =
|
||||||
|
block.logic-display.details =
|
||||||
|
block.large-logic-display.details =
|
||||||
|
block.interplanetary-accelerator.details =
|
||||||
|
|
||||||
|
#유닛
|
||||||
|
unit.dagger.details = 이전에 디거란 이명으로 종교가 생겼었다.
|
||||||
|
unit.mace.details =
|
||||||
|
unit.fortress.details =
|
||||||
|
unit.scepter.details =
|
||||||
|
unit.reign.details =
|
||||||
|
unit.nova.details =
|
||||||
|
unit.pulsar.details =
|
||||||
|
unit.quasar.details =
|
||||||
|
unit.vela.details =
|
||||||
|
unit.corvus.details = 정말 느리다.
|
||||||
|
unit.crawler.details = 최근에 자폭 AI가 향상되면서 컨베이어로 자폭을 유도할 수 없게 되었다.
|
||||||
|
unit.atrax.details =
|
||||||
|
unit.spiroct.details =
|
||||||
|
unit.arkyid.details =
|
||||||
|
unit.toxopid.details =
|
||||||
|
unit.flare.details =
|
||||||
|
unit.horizon.details =
|
||||||
|
unit.zenith.details =
|
||||||
|
unit.antumbra.details =
|
||||||
|
unit.eclipse.details =
|
||||||
|
unit.mono.details =
|
||||||
|
unit.poly.details =
|
||||||
|
unit.mega.details =
|
||||||
|
unit.quad.details =
|
||||||
|
unit.oct.details =
|
||||||
|
unit.risso.details = 뭉치면 연사력이 무시무시하다.
|
||||||
|
unit.minke.details =
|
||||||
|
unit.bryde.details =
|
||||||
|
unit.sei.details =
|
||||||
|
unit.omura.details =
|
||||||
|
unit.alpha.details =
|
||||||
|
unit.beta.details =
|
||||||
|
unit.gamma.details =
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ link.dev-builds.description = Niestabilne wersje gry
|
|||||||
link.trello.description = Oficjalna tablica Trello z planowanym funkcjami
|
link.trello.description = Oficjalna tablica Trello z planowanym funkcjami
|
||||||
link.itch.io.description = Strona itch.io z oficjanymi wersjami do pobrania
|
link.itch.io.description = Strona itch.io z oficjanymi wersjami do pobrania
|
||||||
link.google-play.description = Strona w sklepie Google Play
|
link.google-play.description = Strona w sklepie Google Play
|
||||||
link.f-droid.description = Wykaz Katalogu F-Droid
|
link.f-droid.description = Pozycja w F-Droid
|
||||||
link.wiki.description = Oficjalna Wiki Mindustry
|
link.wiki.description = Oficjalna Wiki Mindustry
|
||||||
link.suggestions.description = Zaproponuj nowe funkcje
|
link.suggestions.description = Zaproponuj nowe funkcje
|
||||||
link.bug.description = Znalazłeś błąd? Zgłoś go tutaj
|
link.bug.description = Znalazłeś błąd? Zgłoś go tutaj
|
||||||
@@ -20,11 +20,11 @@ screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje mi
|
|||||||
gameover = Koniec Gry
|
gameover = Koniec Gry
|
||||||
gameover.disconnect = Odłącz
|
gameover.disconnect = Odłącz
|
||||||
gameover.pvp = Zwyciężyła drużyna [accent]{0}[]!
|
gameover.pvp = Zwyciężyła drużyna [accent]{0}[]!
|
||||||
gameover.waiting =[accent]Czekanie na następną mapę...
|
gameover.waiting = [accent]Oczekiwanie na następną mapę...
|
||||||
highscore = [accent]Nowy rekord!
|
highscore = [accent]Nowy rekord!
|
||||||
copied = Skopiowano.
|
copied = Skopiowano.
|
||||||
indev.notready = Ta część gry nie jest jeszcze ukończona
|
indev.notready = Ta część gry nie jest jeszcze ukończona
|
||||||
indev.campaign = [accent]Udało ci się zakończyć kampanie![]\n\nZawartość kończy się na tym. Podróż międzyplanetarna zostanie dodana w przyszłych aktualizacjach.
|
indev.campaign = [accent]Udało ci się zakończyć kampanię![]\n\nZawartość kończy się na tym. Podróż międzyplanetarna zostanie dodana w przyszłych aktualizacjach.
|
||||||
|
|
||||||
load.sound = Dźwięki
|
load.sound = Dźwięki
|
||||||
load.map = Mapy
|
load.map = Mapy
|
||||||
@@ -41,10 +41,13 @@ be.ignore = Zignoruj
|
|||||||
be.noupdates = Nie znaleziono aktualizacji.
|
be.noupdates = Nie znaleziono aktualizacji.
|
||||||
be.check = Sprawdź aktualizacje
|
be.check = Sprawdź aktualizacje
|
||||||
|
|
||||||
mod.featured.dialog.title = Wyszukiwarka Modów
|
mod.featured.dialog.title = Przeglądarka Modów
|
||||||
mods.browser.selected = Wybrany Mod
|
mods.browser.selected = Wybrany Mod
|
||||||
mods.browser.add = Zainstaluj Moda
|
mods.browser.add = Zainsta-\nluj Moda
|
||||||
|
mods.browser.reinstall = Przeins-\ntaluj
|
||||||
mods.github.open = Otwórz w GitHub'ie
|
mods.github.open = Otwórz w GitHub'ie
|
||||||
|
mods.browser.sortdate = Sortuj wg ostatnich
|
||||||
|
mods.browser.sortstars = Sortuj wg gwiazdek
|
||||||
|
|
||||||
schematic = Schemat
|
schematic = Schemat
|
||||||
schematic.add = Zapisz schemat...
|
schematic.add = Zapisz schemat...
|
||||||
@@ -75,7 +78,7 @@ stat.delivered = Surowce wystrzelone:
|
|||||||
stat.playtime = Czas Gry:[accent] {0}
|
stat.playtime = Czas Gry:[accent] {0}
|
||||||
stat.rank = Ocena: [accent]{0}
|
stat.rank = Ocena: [accent]{0}
|
||||||
|
|
||||||
globalitems = [accent]Global Items
|
globalitems = [accent]Wszystkie przedmioty
|
||||||
map.delete = Jesteś pewny, że chcesz usunąć "[accent]{0}[]"?
|
map.delete = Jesteś pewny, że chcesz usunąć "[accent]{0}[]"?
|
||||||
level.highscore = Rekord: [accent]{0}
|
level.highscore = Rekord: [accent]{0}
|
||||||
level.select = Wybrany poziom
|
level.select = Wybrany poziom
|
||||||
@@ -110,17 +113,20 @@ committingchanges = Zatwierdzanie Zmian
|
|||||||
done = Gotowe
|
done = Gotowe
|
||||||
feature.unsupported = Twoje urządzenie nie wspiera tej funkcji.
|
feature.unsupported = Twoje urządzenie nie wspiera tej funkcji.
|
||||||
|
|
||||||
mods.alphainfo = Pamiętaj, że mody są wersji alpha, i[scarlet] mogą być pełne błędów[].\nZgłaszaj wszystkie znalezione problemy na Mindustry GitHub lub Discord.
|
mods.initfailed = [red]⚠[] Inicjalizacja poprzedniej instancji Mindustry nie powiodła się. Najprawdopodobniej było to spowodowane niewłaściwym działaniem modów.\n\nAby zapobiec pętli awarii, [red]wszystkie mody zostały wyłączone.[]\n\nAby wyłączyć tę funkcję, należy wyłączyć ją w ustawieniach [accent]Ustawienia->Gra->Wyłącz mody w przypadku awarii podczas uruchamiania[].
|
||||||
mods = Mody
|
mods = Mody
|
||||||
mods.none = [lightgray]Nie znaleziono modów!
|
mods.none = [lightgray]Nie znaleziono modów!
|
||||||
mods.guide = Poradnik do modów
|
mods.guide = Poradnik do modów
|
||||||
mods.report = Zgłoś Błąd
|
mods.report = Zgłoś Błąd
|
||||||
mods.openfolder = Otwórz folder z modami
|
mods.openfolder = Otwórz folder z modami
|
||||||
|
mods.viewcontent = View Content
|
||||||
mods.reload = Przeładuj
|
mods.reload = Przeładuj
|
||||||
mods.reloadexit = Gra zostanie teraz zamknięta, aby ponownie załadować mody.
|
mods.reloadexit = Gra zostanie teraz zamknięta, aby ponownie załadować mody.
|
||||||
|
mod.installed = [[Installed]
|
||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Włączony
|
mod.enabled = [lightgray]Włączony
|
||||||
mod.disabled = [scarlet]Wyłączony
|
mod.disabled = [scarlet]Wyłączony
|
||||||
|
mod.multiplayer.compatible = [gray]Kompatybilny z trybem wieloosobowym
|
||||||
mod.disable = Wyłącz
|
mod.disable = Wyłącz
|
||||||
mod.content = Zawartość:
|
mod.content = Zawartość:
|
||||||
mod.delete.error = Nie udało się usunąć moda. Plik może być w użyciu.
|
mod.delete.error = Nie udało się usunąć moda. Plik może być w użyciu.
|
||||||
@@ -155,12 +161,12 @@ filename = Nazwa Pliku:
|
|||||||
unlocked = Odblokowano nową zawartość!
|
unlocked = Odblokowano nową zawartość!
|
||||||
available =Nowe Odkrycie dostępne
|
available =Nowe Odkrycie dostępne
|
||||||
completed = [accent]Ukończony
|
completed = [accent]Ukończony
|
||||||
techtree = Drzewo Technologiczne
|
techtree = Drzewo Techno-\nlogiczne
|
||||||
research.legacy = Znaleziono badania z wersji [accent]5.0[].\nCzy chcesz [accent]załadować je[], albo [accent]usunąć[] dane z drzewa technologiczno (rekomendowane)?
|
research.legacy = Znaleziono badania z wersji [accent]5.0[].\nChcesz [accent]załadować je[], czy [accent]usunąć[] dane z drzewa technologicznego w nowej kampanii (zalecane)?
|
||||||
research.load = Załaduj
|
research.load = Załaduj
|
||||||
research.discard = Odrzuć
|
research.discard = Odrzuć
|
||||||
research.list = [lightgray]Badania:
|
research.list = [lightgray]Badania:
|
||||||
research = Badaj
|
research = Badania
|
||||||
researched = [lightgray]{0} zbadane.
|
researched = [lightgray]{0} zbadane.
|
||||||
research.progress = {0}% ukończone
|
research.progress = {0}% ukończone
|
||||||
players = {0} graczy
|
players = {0} graczy
|
||||||
@@ -169,7 +175,7 @@ players.search = wyszukaj
|
|||||||
players.notfound = [gray]nie znaleziono graczy
|
players.notfound = [gray]nie znaleziono graczy
|
||||||
server.closing = [accent]Zamykanie serwera...
|
server.closing = [accent]Zamykanie serwera...
|
||||||
server.kicked.kick = Zostałeś wyrzucony z serwera!
|
server.kicked.kick = Zostałeś wyrzucony z serwera!
|
||||||
server.kicked.whitelist = Nie ma cię tu na białej liście.
|
server.kicked.whitelist = Nie jesteś na białej liście.
|
||||||
server.kicked.serverClose = Serwer został zamknięty.
|
server.kicked.serverClose = Serwer został zamknięty.
|
||||||
server.kicked.vote = Zostałeś wyrzucony z gry. Żegnaj.
|
server.kicked.vote = Zostałeś wyrzucony z gry. Żegnaj.
|
||||||
server.kicked.clientOutdated = Nieaktualna gra! Zaktualizują ją!
|
server.kicked.clientOutdated = Nieaktualna gra! Zaktualizują ją!
|
||||||
@@ -214,7 +220,9 @@ trace.ip = IP: [accent]{0}
|
|||||||
trace.id = Wyjątkowe ID: [accent]{0}
|
trace.id = Wyjątkowe ID: [accent]{0}
|
||||||
trace.mobile = Klient Mobilny: [accent]{0}
|
trace.mobile = Klient Mobilny: [accent]{0}
|
||||||
trace.modclient = Zmodowany klient: [accent]{0}
|
trace.modclient = Zmodowany klient: [accent]{0}
|
||||||
invalidid = Złe ID klienta! Udostępnij raport błędu.
|
trace.times.joined = Dołączył: [accent]{0}[] razy
|
||||||
|
trace.times.kicked = Wyrzucony: [accent]{0}[] razy
|
||||||
|
invalidid = Złe ID klienta! Wyślij raport błędu.
|
||||||
server.bans = Bany
|
server.bans = Bany
|
||||||
server.bans.none = Nie znaleziono zbanowanych osób!
|
server.bans.none = Nie znaleziono zbanowanych osób!
|
||||||
server.admins = Admini
|
server.admins = Admini
|
||||||
@@ -230,8 +238,8 @@ confirmban = Jesteś pewny, że chcesz zbanować "{0}[white]"?
|
|||||||
confirmkick = Jesteś pewny, że chcesz wyrzucić "{0}[white]"?
|
confirmkick = Jesteś pewny, że chcesz wyrzucić "{0}[white]"?
|
||||||
confirmvotekick = Jesteś pewny, że chcesz głosować za wyrzuceniem "{0}[white]"?
|
confirmvotekick = Jesteś pewny, że chcesz głosować za wyrzuceniem "{0}[white]"?
|
||||||
confirmunban = Jesteś pewny, że chcesz odbanować tego gracza?
|
confirmunban = Jesteś pewny, że chcesz odbanować tego gracza?
|
||||||
confirmadmin = Jesteś pewny, że chcesz dać rangę admina "{0}[white]"?
|
confirmadmin = Jesteś pewny, że chcesz dać rangę administratora "{0}[white]"?
|
||||||
confirmunadmin = Jesteś pewny, że chcesz zabrać rangę admina "{0}[white]"?
|
confirmunadmin = Jesteś pewny, że chcesz zabrać rangę administratora "{0}[white]"?
|
||||||
joingame.title = Dołącz do gry
|
joingame.title = Dołącz do gry
|
||||||
joingame.ip = IP:
|
joingame.ip = IP:
|
||||||
disconnect = Rozłączono.
|
disconnect = Rozłączono.
|
||||||
@@ -258,7 +266,7 @@ save.export = Eksportuj
|
|||||||
save.import.invalid = [accent]Zapis gry jest niepoprawny!
|
save.import.invalid = [accent]Zapis gry jest niepoprawny!
|
||||||
save.import.fail = [crimson]Nie udało się zaimportować zapisu: [accent]{0}
|
save.import.fail = [crimson]Nie udało się zaimportować zapisu: [accent]{0}
|
||||||
save.export.fail = [crimson]Nie udało się wyeksportować zapisu: [accent]{0}
|
save.export.fail = [crimson]Nie udało się wyeksportować zapisu: [accent]{0}
|
||||||
save.import = Importuj Zapis
|
save.import = Importuj zapis
|
||||||
save.newslot = Zapisz nazwę:
|
save.newslot = Zapisz nazwę:
|
||||||
save.rename = Zmień nazwę
|
save.rename = Zmień nazwę
|
||||||
save.rename.text = Nowa nazwa:
|
save.rename.text = Nowa nazwa:
|
||||||
@@ -272,8 +280,8 @@ off = Wyłączone
|
|||||||
save.autosave = Autozapis: {0}
|
save.autosave = Autozapis: {0}
|
||||||
save.map = Mapa: {0}
|
save.map = Mapa: {0}
|
||||||
save.wave = Fala {0}
|
save.wave = Fala {0}
|
||||||
save.mode = Tryb Gry: {0}
|
save.mode = Tryb gry: {0}
|
||||||
save.date = Ostatnio Zapisane: {0}
|
save.date = Ostatnio zapisane: {0}
|
||||||
save.playtime = Czas gry: {0}
|
save.playtime = Czas gry: {0}
|
||||||
warning = Uwaga.
|
warning = Uwaga.
|
||||||
confirm = Potwierdź
|
confirm = Potwierdź
|
||||||
@@ -288,25 +296,26 @@ openlink = Otwórz Link
|
|||||||
copylink = Kopiuj Link
|
copylink = Kopiuj Link
|
||||||
back = Wróć
|
back = Wróć
|
||||||
max = Max
|
max = Max
|
||||||
crash.export = Eksportuj logi błędów.
|
crash.export = Eksportuj Logi Błędów
|
||||||
crash.none = Nie znaleziono logów błędów.
|
crash.none = Nie znaleziono logów błędów.
|
||||||
crash.exported = Logi zostały przeniesione.
|
crash.exported = Logi zostały wyeksportowane.
|
||||||
data.export = Eksportuj Dane
|
data.export = Eksportuj Dane
|
||||||
data.import = Importuj Dane
|
data.import = Importuj Dane
|
||||||
data.openfolder = Otwórz folder danych
|
data.openfolder = Otwórz Folder Danych
|
||||||
data.exported = Dane wyeksportowane.
|
data.exported = Dane wyeksportowane.
|
||||||
data.invalid = Nieprawidłowe dane gry.
|
data.invalid = Nieprawidłowe dane gry.
|
||||||
data.import.confirm = Zaimportowanie zewnętrznych danych nadpisze[scarlet] wszystkie[] obecne dane gry.\n[accent]Nie można tego cofnąć![]\n\nGdy dane zostaną zaimportowane, gra automatycznie się wyłączy.
|
data.import.confirm = Zaimportowanie zewnętrznych danych nadpisze[scarlet] wszystkie[] obecne dane gry.\n[accent]Nie można tego cofnąć![]\n\nGdy dane zostaną zaimportowane, gra automatycznie się wyłączy.
|
||||||
quit.confirm = Czy na pewno chcesz wyjść?
|
quit.confirm = Czy na pewno chcesz wyjść?
|
||||||
quit.confirm.tutorial = Jesteś pewien?\nSamouczek może zostać powtórzony w[accent] Ustawienia->Gra->Ponów samouczek.[]
|
quit.confirm.tutorial = Jesteś pewien?\nSamouczek może zostać powtórzony w[accent] Ustawienia->Gra->Ponów samouczek.[]
|
||||||
loading = [accent]Ładowanie...
|
loading = [accent]Ładowanie...
|
||||||
reloading = [accent]Przeładowywanie Modów...
|
reloading = [accent]Przeładowywanie modów...
|
||||||
saving = [accent]Zapisywanie...
|
saving = [accent]Zapisywanie...
|
||||||
respawn = [accent][[{0}][] by odrodzić się w rdzeniu
|
respawn = [accent][[{0}][] by odrodzić się w rdzeniu
|
||||||
cancelbuilding = [accent][[{0}][] by wyczyścić plan
|
cancelbuilding = [accent][[{0}][] by wyczyścić plan
|
||||||
selectschematic = [accent][[{0}][] by wybrać+skopiować
|
selectschematic = [accent][[{0}][] by wybrać+skopiować
|
||||||
pausebuilding = [accent][[{0}][] by wstrzymać budowę
|
pausebuilding = [accent][[{0}][] by wstrzymać budowę
|
||||||
resumebuilding = [scarlet][[{0}][] by kontynuować budowę
|
resumebuilding = [scarlet][[{0}][] by kontynuować budowę
|
||||||
|
enablebuilding = [scarlet][[{0}][] wznów budowę
|
||||||
showui = Interfejs ukryty.\nNaciśnij [accent][[{0}][] by go pokazać.
|
showui = Interfejs ukryty.\nNaciśnij [accent][[{0}][] by go pokazać.
|
||||||
wave = [accent]Fala {0}
|
wave = [accent]Fala {0}
|
||||||
wave.cap = [accent]Fala {0}/{1}
|
wave.cap = [accent]Fala {0}/{1}
|
||||||
@@ -358,7 +367,7 @@ editor.generation = Generacja:
|
|||||||
editor.ingame = Edytuj w Grze
|
editor.ingame = Edytuj w Grze
|
||||||
editor.publish.workshop = Opublikuj w Warsztacie
|
editor.publish.workshop = Opublikuj w Warsztacie
|
||||||
editor.newmap = Nowa Mapa
|
editor.newmap = Nowa Mapa
|
||||||
editor.center = Center
|
editor.center = Wyśrodkuj
|
||||||
workshop = Warsztat
|
workshop = Warsztat
|
||||||
waves.title = Fale
|
waves.title = Fale
|
||||||
waves.remove = Usuń
|
waves.remove = Usuń
|
||||||
@@ -472,7 +481,7 @@ filter.option.amount = Ilość
|
|||||||
filter.option.block = Blok
|
filter.option.block = Blok
|
||||||
filter.option.floor = Podłoga
|
filter.option.floor = Podłoga
|
||||||
filter.option.flooronto = Podłoga Docelowa
|
filter.option.flooronto = Podłoga Docelowa
|
||||||
filter.option.target = Target
|
filter.option.target = Cel
|
||||||
filter.option.wall = Ściana
|
filter.option.wall = Ściana
|
||||||
filter.option.ore = Ruda
|
filter.option.ore = Ruda
|
||||||
filter.option.floor2 = Druga Podłoga
|
filter.option.floor2 = Druga Podłoga
|
||||||
@@ -499,11 +508,11 @@ editor = Edytor
|
|||||||
mapeditor = Edytor Map
|
mapeditor = Edytor Map
|
||||||
|
|
||||||
abandon = Opuść
|
abandon = Opuść
|
||||||
abandon.text = Ta strefa i wszystkie jej surowce będą przejęte przez przeciwników.
|
abandon.text = Ta strefa i wszystkie jej surowce zostaną przejęte przez przeciwników.
|
||||||
locked = Zablokowane
|
locked = Zablokowane
|
||||||
complete = [lightgray]Ukończone:
|
complete = [lightgray]Ukończone:
|
||||||
requirement.wave = Osiągnij falę {0} w {1}
|
requirement.wave = Osiągnij falę {0} w {1}
|
||||||
requirement.core = Zniszcz Rdzeń wroga w {0}
|
requirement.core = Zniszcz rdzeń wroga w {0}
|
||||||
requirement.research = Zbadaj {0}
|
requirement.research = Zbadaj {0}
|
||||||
requirement.produce = Produkcja {0}
|
requirement.produce = Produkcja {0}
|
||||||
requirement.capture = Zdobądź {0}
|
requirement.capture = Zdobądź {0}
|
||||||
@@ -513,18 +522,18 @@ map.multiplayer = Tylko host może widzieć sektory
|
|||||||
uncover = Odkryj
|
uncover = Odkryj
|
||||||
configure = Skonfiguruj Ładunek
|
configure = Skonfiguruj Ładunek
|
||||||
|
|
||||||
loadout = Loadout
|
loadout = Ładunek
|
||||||
resources = Zasoby
|
resources = Zasoby
|
||||||
bannedblocks = Zabronione bloki
|
bannedblocks = Zabronione bloki
|
||||||
addall = Dodaj wszystkie
|
addall = Dodaj wszystkie
|
||||||
launch.from = Wstrzelony Z: [accent]{0}
|
launch.from = Wystrzelony z: [accent]{0}
|
||||||
launch.destination = Cel: {0}
|
launch.destination = Cel: {0}
|
||||||
configure.invalid = Ilość musi być liczbą pomiędzy 0 a {0}.
|
configure.invalid = Ilość musi być liczbą pomiędzy 0 a {0}.
|
||||||
add = Dodaj...
|
add = Dodaj...
|
||||||
boss.health = Zdrowie Strażnika
|
boss.health = Zdrowie Strażnika
|
||||||
|
|
||||||
connectfail = [crimson]Nie można połączyć się z serwerem:\n\n[accent]{0}
|
connectfail = [crimson]Nie można połączyć się z serwerem:\n\n[accent]{0}
|
||||||
error.unreachable = Serwer niedostępny.\nCzy adres jest wpisany poprawnie?
|
error.unreachable = Serwer niedostępny.\nSprawdź, czy adres jest wpisany poprawnie.
|
||||||
error.invalidaddress = Niepoprawny adres.
|
error.invalidaddress = Niepoprawny adres.
|
||||||
error.timedout = Przekroczono limit czasu!\nUpewnij się, że host ma ustawione przekierowanie portu oraz sprawdź poprawność wpisanego adresu!
|
error.timedout = Przekroczono limit czasu!\nUpewnij się, że host ma ustawione przekierowanie portu oraz sprawdź poprawność wpisanego adresu!
|
||||||
error.mismatch = Błąd pakietu:\nprawdopodobne niedopasowanie klienta/serwera.\nUpewnij się, że ty i host macie najnowszą wersję Mindustry!
|
error.mismatch = Błąd pakietu:\nprawdopodobne niedopasowanie klienta/serwera.\nUpewnij się, że ty i host macie najnowszą wersję Mindustry!
|
||||||
@@ -599,14 +608,14 @@ sector.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki rozprzest
|
|||||||
sector.saltFlats.description = Na obrzeżach pustyni spoczywają Solne Równiny. Można tu znaleźć niewiele surowców.\n\nWrogowie zbudowali tu bazę składującą surowce. Zniszcz ich rdzeń. Zniszcz wszystko co stanie ci na drodze.
|
sector.saltFlats.description = Na obrzeżach pustyni spoczywają Solne Równiny. Można tu znaleźć niewiele surowców.\n\nWrogowie zbudowali tu bazę składującą surowce. Zniszcz ich rdzeń. Zniszcz wszystko co stanie ci na drodze.
|
||||||
sector.craters.description = W tym kraterze zebrała się woda. Pozostałość dawnych wojen. Odzyskaj ten teren. Wykop piasek. Wytop metaszkło. Pompuj wodę do działek obronnych i wierteł by je schłodzić
|
sector.craters.description = W tym kraterze zebrała się woda. Pozostałość dawnych wojen. Odzyskaj ten teren. Wykop piasek. Wytop metaszkło. Pompuj wodę do działek obronnych i wierteł by je schłodzić
|
||||||
sector.ruinousShores.description = Za pustkowiami ciągnie się linia brzegowa. Kiedyś znajdowała się tu przybrzeżna linia obronna. Niewiele z niej zostało. Ostały się tylko podstawowe struktury obronne, z reszty został tylko złom.\nKontynuuj eksploracje. Odkryj pozostawioną tu technologię.
|
sector.ruinousShores.description = Za pustkowiami ciągnie się linia brzegowa. Kiedyś znajdowała się tu przybrzeżna linia obronna. Niewiele z niej zostało. Ostały się tylko podstawowe struktury obronne, z reszty został tylko złom.\nKontynuuj eksploracje. Odkryj pozostawioną tu technologię.
|
||||||
sector.stainedMountains.description = W głębi lądu leżą góry, jeszcze nieskażone przez zarodniki.\nWydobądź obfity tytan w tym obszarze. Dowiedz się, jak z niego korzystać.\n\nObecność wroga jest tutaj większa. Nie daj im czasu na wysłanie swoich najsilniejszych jednostek.
|
sector.stainedMountains.description = W głębi lądu leżą góry, jeszcze nieskażone przez zarodniki.\nWydobądź bogate złoża tytanu w tym obszarze. Dowiedz się, jak z niego korzystać.\n\nObecność wroga jest tutaj większa. Nie daj im czasu na wysłanie swoich najsilniejszych jednostek.
|
||||||
sector.overgrowth.description = Obszar ten jest zarośnięty, bliżej źródła zarodników.\nWróg założył tu placówkę. Zbuduj jednostki Nóż. Zniszcz to. Odzyskaj to, co nam odebrano.
|
sector.overgrowth.description = Obszar ten jest zarośnięty, bliżej źródła zarodników.\nWróg założył tu placówkę. Zbuduj jednostki Nóż. Zniszcz to. Odzyskaj to, co nam odebrano.
|
||||||
sector.tarFields.description = Obrzeża strefy produkcji ropy, między górami a pustynią. Jeden z niewielu obszarów z rezerwami użytecznej smoły.\nMimo że ta strefa jest opuszczona, w pobliżu znajdują się niebezpieczne siły wroga. Nie lekceważ ich.\n\n[lightgray]Jeśli to możliwe, zbadaj technologię przetwarzania oleju.
|
sector.tarFields.description = Obrzeża strefy produkcji ropy, między górami a pustynią. Jeden z niewielu obszarów z rezerwami użytecznej smoły.\nMimo że ta strefa jest opuszczona, w pobliżu znajdują się niebezpieczne siły wroga. Nie lekceważ ich.\n\n[lightgray]Jeśli to możliwe, zbadaj technologię przetwarzania oleju.
|
||||||
sector.desolateRift.description = Strefa wyjątkowo niebezpieczna. Obfita w zasoby ale mało miejsca. Wysokie ryzyko zniszczenia. Opuść tę strefe jak najszybciej. Nie daj się zwieść długiemu odstępowi między atakami wroga.
|
sector.desolateRift.description = Strefa wyjątkowo niebezpieczna. Obfita w zasoby ale mało miejsca. Wysokie ryzyko zniszczenia. Opuść tę strefe jak najszybciej. Nie daj się zwieść długiemu odstępowi między atakami wroga.
|
||||||
sector.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru, zredukowny do ruin.\n[lightgray]Zbadaj tor i jego zastosowania.\n\nWróg jest tutaj obecny w dużej ilości, nieustannie poszukuje napastników.
|
sector.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru, zredukowny do ruin.\n[lightgray]Zbadaj tor i jego zastosowania.\n\nWróg jest tutaj obecny w dużej ilości, nieustannie poszukuje napastników.
|
||||||
sector.fungalPass.description = Przejściowy obszar pomiędzy wysokimi górami a nisko znajdującymi się, ogarniętymi przez zarodniki równinami. Znajduje się tu mała postawiona przez wrogów baza zwiadowcza.\nZniszcz ją.\nUżyj jednostek Nóż i Pełzak. Zniszcz oba rdzenie.
|
sector.fungalPass.description = Przejściowy obszar pomiędzy wysokimi górami a nisko znajdującymi się, ogarniętymi przez zarodniki, równinami. Znajduje się tu mała, postawiona przez wrogów, baza zwiadowcza.\nZniszcz ją.\nUżyj jednostek Nóż i Pełzak. Zniszcz oba rdzenie.
|
||||||
sector.biomassFacility.description = Miejsce powstania zarodników. Tutał były badane i początkowo produkowane.\nZbadaj zawartą w nim technologię. Hoduj zarodniki dla paliwa i tworzyw sztucznych.\n\n[lightgray]Po upadku tej placówki zarodniki zostały uwolnione. Nic w lokalnym ekosystemie nie mogło konkurować z tak inwazyjnym organizmem.
|
sector.biomassFacility.description = Miejsce powstania zarodników. Tutał były badane i początkowo produkowane.\nZbadaj zawartą w nim technologię. Hoduj zarodniki dla paliwa i tworzyw sztucznych.\n\n[lightgray]Po upadku tej placówki zarodniki zostały uwolnione. Nic w lokalnym ekosystemie nie mogło konkurować z tak inwazyjnym organizmem.
|
||||||
sector.windsweptIslands.description = Dalej za linią brzegową znajduje się ten odległy łańcuch wysp. Zapisy wyakzują ze były tu struktury produkujące [accent]Plastan[].\n\nOdeprzyj morskie jednostki wroga. Załóż bazę na wyspach. Odkryj te fabryki.
|
sector.windsweptIslands.description = Dalej za linią brzegową znajduje się ten odległy łańcuch wysp. Zapisy wykazują, że były tu struktury produkujące [accent]Plastan[].\n\nOdeprzyj morskie jednostki wroga. Załóż bazę na wyspach. Odkryj te fabryki.
|
||||||
sector.extractionOutpost.description = Odległa placówka zbudowana przez wroga w celu wystrzeliwania zasobów do innych sektorów.\n\nDo dalszych podbojów niezbędna jest międzysektorowa technologia transportu. Zniszcz bazę. Zbadaj ich Wyrzutnie.
|
sector.extractionOutpost.description = Odległa placówka zbudowana przez wroga w celu wystrzeliwania zasobów do innych sektorów.\n\nDo dalszych podbojów niezbędna jest międzysektorowa technologia transportu. Zniszcz bazę. Zbadaj ich Wyrzutnie.
|
||||||
sector.impact0078.description = Tutaj leżą pozostałości międzygwiezdnego statku transportowego, który jako pierwszy wszedł do tego układu.\n\nWydobądź jak najwięcej z wraku. Zbadaj każdą nienaruszoną technologię.
|
sector.impact0078.description = Tutaj leżą pozostałości międzygwiezdnego statku transportowego, który jako pierwszy wszedł do tego układu.\n\nWydobądź jak najwięcej z wraku. Zbadaj każdą nienaruszoną technologię.
|
||||||
sector.planetaryTerminal.description = Ostatni cel.\n\nTa baza przybrzeżna zawiera strukturę zdolną do wyrzucania rdzeni na lokalne planety. Jest wyjątkowo dobrze strzeżona.\n\nProdukuj jednostki morskie. Jak najszybciej wyeliminuj wroga. Zbadaj tą strukturę.
|
sector.planetaryTerminal.description = Ostatni cel.\n\nTa baza przybrzeżna zawiera strukturę zdolną do wyrzucania rdzeni na lokalne planety. Jest wyjątkowo dobrze strzeżona.\n\nProdukuj jednostki morskie. Jak najszybciej wyeliminuj wroga. Zbadaj tą strukturę.
|
||||||
@@ -622,7 +631,7 @@ settings.sound = Dźwięk
|
|||||||
settings.graphics = Grafika
|
settings.graphics = Grafika
|
||||||
settings.cleardata = Wyczyść Dane Gry...
|
settings.cleardata = Wyczyść Dane Gry...
|
||||||
settings.clear.confirm = Czy jesteś pewien że chcesz usunąć te dane?\nPo tym nie ma powrotu!
|
settings.clear.confirm = Czy jesteś pewien że chcesz usunąć te dane?\nPo tym nie ma powrotu!
|
||||||
settings.clearall.confirm = [scarlet]UWAGA![]\nTo wykasuje wszystkie dane, włącznie z zapisanymi grami i mapami, ustawienami, i znanymi technologiami.\nKiedy naciśniesz 'ok', gra usunie wszystkie swoje dane i automatycznie wyłączy się.
|
settings.clearall.confirm = [scarlet]UWAGA![]\nTo wykasuje wszystkie dane, włącznie z zapisami, drzewem technologicznym, mapami, ustawieniami i przypisanymi klawiszami.\nKiedy naciśniesz 'ok', gra usunie wszystkie swoje dane i automatycznie wyłączy się.
|
||||||
settings.clearsaves.confirm = Jesteś pewny że chcesz usunąć wszystkie zapisy?
|
settings.clearsaves.confirm = Jesteś pewny że chcesz usunąć wszystkie zapisy?
|
||||||
settings.clearsaves = Usuń Zapisy
|
settings.clearsaves = Usuń Zapisy
|
||||||
settings.clearresearch = Usuń Postęp Drzewa Tech.
|
settings.clearresearch = Usuń Postęp Drzewa Tech.
|
||||||
@@ -638,7 +647,7 @@ info.title = Informacje
|
|||||||
error.title = [crimson]Wystąpił błąd
|
error.title = [crimson]Wystąpił błąd
|
||||||
error.crashtitle = Wystąpił błąd
|
error.crashtitle = Wystąpił błąd
|
||||||
unit.nobuild = [scarlet]Jednostka nie może budować
|
unit.nobuild = [scarlet]Jednostka nie może budować
|
||||||
lastaccessed = [lightgray]Osatino wpłynął: {0}
|
lastaccessed = [lightgray]Ostatnia interakcja: {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
|
|
||||||
stat.description = Opis
|
stat.description = Opis
|
||||||
@@ -678,10 +687,11 @@ stat.drillspeed = Podstawowa szybkość kopania
|
|||||||
stat.boosteffect = Efekt wzmocnienia
|
stat.boosteffect = Efekt wzmocnienia
|
||||||
stat.maxunits = Maksymalna ilość jednostek
|
stat.maxunits = Maksymalna ilość jednostek
|
||||||
stat.health = Zdrowie
|
stat.health = Zdrowie
|
||||||
|
stat.armor = Pancerz
|
||||||
stat.buildtime = Czas budowy
|
stat.buildtime = Czas budowy
|
||||||
stat.maxconsecutive = Maksymalnie Kolejny
|
stat.maxconsecutive = Maksymalnie Kolejny
|
||||||
stat.buildcost = Koszt budowy
|
stat.buildcost = Koszt budowy
|
||||||
stat.inaccuracy = Niecelność
|
stat.inaccuracy = Niedokładność
|
||||||
stat.shots = Strzały
|
stat.shots = Strzały
|
||||||
stat.reload = Strzałów/Sekundę
|
stat.reload = Strzałów/Sekundę
|
||||||
stat.ammo = Amunicja
|
stat.ammo = Amunicja
|
||||||
@@ -693,18 +703,19 @@ stat.lightningchance = Szansa Na Błyskawicę
|
|||||||
stat.lightningdamage = Obrażenia Błyskawic
|
stat.lightningdamage = Obrażenia Błyskawic
|
||||||
stat.flammability = Palność
|
stat.flammability = Palność
|
||||||
stat.radioactivity = Radioaktywność
|
stat.radioactivity = Radioaktywność
|
||||||
|
stat.charge = Charge
|
||||||
stat.heatcapacity = Pojemność Cieplna
|
stat.heatcapacity = Pojemność Cieplna
|
||||||
stat.viscosity = Lepkość
|
stat.viscosity = Lepkość
|
||||||
stat.temperature = Temperatura
|
stat.temperature = Temperatura
|
||||||
stat.speed = Prędość
|
stat.speed = Prędkość
|
||||||
stat.buildspeed = Prędkość Budowy
|
stat.buildspeed = Prędkość Budowy
|
||||||
stat.minespeed = Prędkość Wydobycia
|
stat.minespeed = Prędkość Wydobycia
|
||||||
stat.minetier = Stopień Wydobycia
|
stat.minetier = Stopień Wydobycia
|
||||||
stat.payloadcapacity = Ładowność
|
stat.payloadcapacity = Ładowność
|
||||||
stat.commandlimit = Limit Jednostek Zarządanych
|
stat.commandlimit = Limit Zarządanych Jednostek
|
||||||
stat.abilities = Umiejętności
|
stat.abilities = Umiejętności
|
||||||
stat.canboost = Może przyspieszyć
|
stat.canboost = Może przyspieszyć
|
||||||
stat.flying = Latanie
|
stat.flying = Może latać
|
||||||
stat.ammouse = Zużycie Amunicji
|
stat.ammouse = Zużycie Amunicji
|
||||||
|
|
||||||
ability.forcefield = Pole Mocy
|
ability.forcefield = Pole Mocy
|
||||||
@@ -736,7 +747,7 @@ bar.progress = Postęp Budowy
|
|||||||
bar.input = Wejście
|
bar.input = Wejście
|
||||||
bar.output = Wyjście
|
bar.output = Wyjście
|
||||||
|
|
||||||
units.processorcontrol = [lightgray]Kontrolowany Procesorem
|
units.processorcontrol = [lightgray]Kontrolowany przez procesor
|
||||||
|
|
||||||
bullet.damage = [stat]{0}[lightgray] Obrażenia
|
bullet.damage = [stat]{0}[lightgray] Obrażenia
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[lightgray] kratki
|
bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[lightgray] kratki
|
||||||
@@ -773,8 +784,8 @@ unit.shieldhealth = życie tarczy
|
|||||||
unit.items = przedmioty
|
unit.items = przedmioty
|
||||||
unit.thousands = tys.
|
unit.thousands = tys.
|
||||||
unit.millions = mln
|
unit.millions = mln
|
||||||
unit.billions = b
|
unit.billions = mld
|
||||||
unit.pershot = /szczał
|
unit.pershot = /strzał
|
||||||
category.purpose = Opis
|
category.purpose = Opis
|
||||||
category.general = Główne
|
category.general = Główne
|
||||||
category.power = Prąd
|
category.power = Prąd
|
||||||
@@ -786,23 +797,26 @@ category.optional = Dodatkowe ulepszenia
|
|||||||
setting.landscape.name = Zablokuj tryb panoramiczny
|
setting.landscape.name = Zablokuj tryb panoramiczny
|
||||||
setting.shadows.name = Cienie
|
setting.shadows.name = Cienie
|
||||||
setting.blockreplace.name = Automatyczne sugestie bloków
|
setting.blockreplace.name = Automatyczne sugestie bloków
|
||||||
setting.linear.name = Filtrowanie Liniowe
|
setting.linear.name = Filtrowanie liniowe
|
||||||
setting.hints.name = Podpowiedzi
|
setting.hints.name = Podpowiedzi
|
||||||
setting.flow.name = Wyświetl szybkość przepływu zasobów[scarlet] (eksperymentalne)
|
setting.logichints.name = Wskazówki dot. logiki
|
||||||
|
setting.flow.name = Wyświetl szybkość przepływu zasobów
|
||||||
setting.backgroundpause.name = Wstrzymaj w tle
|
setting.backgroundpause.name = Wstrzymaj w tle
|
||||||
setting.buildautopause.name = Automatycznie zatrzymaj budowanie
|
setting.buildautopause.name = Automatycznie zatrzymaj budowanie
|
||||||
|
setting.doubletapmine.name = Kliknij podwójnie, aby wydobywać
|
||||||
|
setting.modcrashdisable.name = Wyłącz mody w przypadku awarii podczas uruchamiania
|
||||||
setting.animatedwater.name = Animowana woda
|
setting.animatedwater.name = Animowana woda
|
||||||
setting.animatedshields.name = Animowana tarcza
|
setting.animatedshields.name = Animowana tarcza
|
||||||
setting.antialias.name = Antyaliasing[lightgray] (wymaga restartu)[]
|
setting.antialias.name = Antyaliasing[lightgray] (wymaga restartu)[]
|
||||||
setting.playerindicators.name = Znaczniki Graczy
|
setting.playerindicators.name = Znaczniki graczy
|
||||||
setting.indicators.name = Znaczniki Przyjaciół
|
setting.indicators.name = Znaczniki przyjaciół
|
||||||
setting.autotarget.name = Automatyczne Celowanie
|
setting.autotarget.name = Automatyczne celowanie
|
||||||
setting.keyboard.name = Sterowanie - Myszka+Klawiatura
|
setting.keyboard.name = Sterowanie - Myszka+Klawiatura
|
||||||
setting.touchscreen.name = Sterowanie - Ekran Dotykowy
|
setting.touchscreen.name = Sterowanie - Ekran Dotykowy
|
||||||
setting.fpscap.name = Maksymalny FPS
|
setting.fpscap.name = Maksymalny FPS
|
||||||
setting.fpscap.none = Nieograniczone
|
setting.fpscap.none = Nieograniczone
|
||||||
setting.fpscap.text = {0} FPS
|
setting.fpscap.text = {0} FPS
|
||||||
setting.uiscale.name = Skalowanie Interfejsu[lightgray] (wymaga restartu)[]
|
setting.uiscale.name = Skalowanie interfejsu[lightgray] (wymaga restartu)[]
|
||||||
setting.swapdiagonal.name = Pozwala na ukośną budowę
|
setting.swapdiagonal.name = Pozwala na ukośną budowę
|
||||||
setting.difficulty.training = Treningowy
|
setting.difficulty.training = Treningowy
|
||||||
setting.difficulty.easy = Łatwy
|
setting.difficulty.easy = Łatwy
|
||||||
@@ -822,11 +836,11 @@ setting.milliseconds = {0} milisekund
|
|||||||
setting.fullscreen.name = Pełny ekran
|
setting.fullscreen.name = Pełny ekran
|
||||||
setting.borderlesswindow.name = Bezramkowe okno[lightgray] (może wymagać restartu)
|
setting.borderlesswindow.name = Bezramkowe okno[lightgray] (może wymagać restartu)
|
||||||
setting.fps.name = Pokazuj FPS oraz ping
|
setting.fps.name = Pokazuj FPS oraz ping
|
||||||
setting.smoothcamera.name = Gładka Kamera
|
setting.smoothcamera.name = Płynna kamera
|
||||||
setting.vsync.name = Synchronizacja pionowa
|
setting.vsync.name = Synchronizacja pionowa
|
||||||
setting.pixelate.name = Pikselacja [lightgray](wyłącza animacje)
|
setting.pixelate.name = Pikselacja [lightgray](wyłącza animacje)
|
||||||
setting.minimap.name = Pokaż Minimapę
|
setting.minimap.name = Pokaż minimapę
|
||||||
setting.coreitems.name = Poazuj Przedmoty W Rdzeniu (WIP)
|
setting.coreitems.name = Pokazuj przedmoty w rdzeniu
|
||||||
setting.position.name = Pokazuj położenie gracza
|
setting.position.name = Pokazuj położenie gracza
|
||||||
setting.musicvol.name = Głośność muzyki
|
setting.musicvol.name = Głośność muzyki
|
||||||
setting.atmosphere.name = Pokazuj atmosferę planety
|
setting.atmosphere.name = Pokazuj atmosferę planety
|
||||||
@@ -835,19 +849,19 @@ setting.mutemusic.name = Wycisz muzykę
|
|||||||
setting.sfxvol.name = Głośność dźwięków
|
setting.sfxvol.name = Głośność dźwięków
|
||||||
setting.mutesound.name = Wycisz dźwięki
|
setting.mutesound.name = Wycisz dźwięki
|
||||||
setting.crashreport.name = Wysyłaj anonimowo dane o crashu gry
|
setting.crashreport.name = Wysyłaj anonimowo dane o crashu gry
|
||||||
setting.savecreate.name = Automatyczne tworzenie zapisu
|
setting.savecreate.name = Automatyczne tworzenie zapisów
|
||||||
setting.publichost.name = Widoczność Gry Publicznej
|
setting.publichost.name = Widoczność gry publicznej
|
||||||
setting.playerlimit.name = Limit Graczy
|
setting.playerlimit.name = Limit graczy
|
||||||
setting.chatopacity.name = Przezroczystość czatu
|
setting.chatopacity.name = Przezroczystość czatu
|
||||||
setting.lasersopacity.name = Przezroczystość laserów zasilających
|
setting.lasersopacity.name = Przezroczystość laserów zasilających
|
||||||
setting.bridgeopacity.name = Przezroczystość mostów
|
setting.bridgeopacity.name = Przezroczystość mostów
|
||||||
setting.playerchat.name = Wyświetlaj czat w grze
|
setting.playerchat.name = Wyświetlaj dymek czatu w grze
|
||||||
setting.showweather.name = Pokaż pogodę
|
setting.showweather.name = Pokaż pogodę
|
||||||
public.confirm = Czy chcesz ustawić swoją grę jako publiczną?\n[accent]Każdy będzie mógł dołączyć do Twojej gry.\n[lightgray]Można to później zmienić w Ustawienia->Gra->Widoczność Gry Publicznej.
|
public.confirm = Czy chcesz ustawić swoją grę jako publiczną?\n[accent]Każdy będzie mógł dołączyć do Twojej gry.\n[lightgray]Można to później zmienić w Ustawienia->Gra->Widoczność Gry Publicznej.
|
||||||
public.confirm.really = Jeśli chcesz grać z przyjaciółmi, użyj [green]Zaproś Przyjaciela[] zamiast [scarlet]Punliczny serwer[]!\nJesteś pewny że chcesz rozpocząć grę [scarlet]publiczą[]?
|
public.confirm.really = Jeśli chcesz zagrać ze znajomymi, użyj opcji [green]Zaproś Znajomych[] zamiast [scarlet]Publiczny serwer[]!\nJesteś pewny że chcesz rozpocząć grę [scarlet]publiczną[]?
|
||||||
public.beta = Wersje beta gry nie mogą tworzyć publicznych pokoi.
|
public.beta = Wersje beta gry nie mogą tworzyć publicznych pokoi.
|
||||||
uiscale.reset = Skala interfejsu uległa zmianie.\nNaciśnij "OK" by potwierdzić zmiany.\n[scarlet]Cofanie zmian i wyjście z gry za[accent] {0}[]
|
uiscale.reset = Skala interfejsu uległa zmianie.\nNaciśnij "OK" by potwierdzić zmiany.\n[scarlet]Cofanie zmian i wyjście z gry za[accent] {0}[]
|
||||||
uiscale.cancel = Anuluj i Wyjdź
|
uiscale.cancel = Anuluj i wyjdź
|
||||||
setting.bloom.name = Efekt Bloom
|
setting.bloom.name = Efekt Bloom
|
||||||
keybind.title = Zmień
|
keybind.title = Zmień
|
||||||
keybinds.mobile = [scarlet]Większość skrótów klawiszowych nie funkcjonuje w wersji mobilnej. Tylko podstawowe poruszanie się jest wspierane.
|
keybinds.mobile = [scarlet]Większość skrótów klawiszowych nie funkcjonuje w wersji mobilnej. Tylko podstawowe poruszanie się jest wspierane.
|
||||||
@@ -860,8 +874,8 @@ command.rally = Zbierz
|
|||||||
command.retreat = Wycofaj
|
command.retreat = Wycofaj
|
||||||
command.idle = Nieaktywny
|
command.idle = Nieaktywny
|
||||||
placement.blockselectkeys = \n[lightgray]Klawisz: [{0},
|
placement.blockselectkeys = \n[lightgray]Klawisz: [{0},
|
||||||
keybind.respawn.name = Respawn
|
keybind.respawn.name = Odrodzenie
|
||||||
keybind.control.name = Control Unit
|
keybind.control.name = Kontroluj jednostkę
|
||||||
keybind.clear_building.name = Wyczyść budynek
|
keybind.clear_building.name = Wyczyść budynek
|
||||||
keybind.press = Naciśnij wybrany klawisz...
|
keybind.press = Naciśnij wybrany klawisz...
|
||||||
keybind.press.axis = Naciśnij oś lub klawisz...
|
keybind.press.axis = Naciśnij oś lub klawisz...
|
||||||
@@ -901,7 +915,7 @@ keybind.break_block.name = Zniszcz Blok
|
|||||||
keybind.deselect.name = Odznacz
|
keybind.deselect.name = Odznacz
|
||||||
keybind.pickupCargo.name = Podnieś Ładunek
|
keybind.pickupCargo.name = Podnieś Ładunek
|
||||||
keybind.dropCargo.name = Opuść Ładunek
|
keybind.dropCargo.name = Opuść Ładunek
|
||||||
keybind.command.name = Command
|
keybind.command.name = Rozkazuj
|
||||||
keybind.shoot.name = Strzelanie
|
keybind.shoot.name = Strzelanie
|
||||||
keybind.zoom.name = Przybliżanie
|
keybind.zoom.name = Przybliżanie
|
||||||
keybind.menu.name = Menu
|
keybind.menu.name = Menu
|
||||||
@@ -914,7 +928,7 @@ keybind.chat.name = Czat
|
|||||||
keybind.player_list.name = Lista graczy
|
keybind.player_list.name = Lista graczy
|
||||||
keybind.console.name = Konsola
|
keybind.console.name = Konsola
|
||||||
keybind.rotate.name = Obracanie
|
keybind.rotate.name = Obracanie
|
||||||
keybind.rotateplaced.name = Rotate Existing (Hold)
|
keybind.rotateplaced.name = Obracanie bloku pod kursorem (przytrzymaj)
|
||||||
keybind.toggle_menus.name = Zmiana widoczności menu
|
keybind.toggle_menus.name = Zmiana widoczności menu
|
||||||
keybind.chat_history_prev.name = Przewiń wiadomości w górę
|
keybind.chat_history_prev.name = Przewiń wiadomości w górę
|
||||||
keybind.chat_history_next.name = Przewiń wiadomości w dół
|
keybind.chat_history_next.name = Przewiń wiadomości w dół
|
||||||
@@ -936,8 +950,8 @@ mode.custom = Własny Tryb
|
|||||||
|
|
||||||
rules.infiniteresources = Nieskończone Zasoby
|
rules.infiniteresources = Nieskończone Zasoby
|
||||||
rules.reactorexplosions = Eksplozje Reaktorów
|
rules.reactorexplosions = Eksplozje Reaktorów
|
||||||
rules.coreincinerates = Rdzeń Spala Przepełnienie
|
rules.coreincinerates = Rdzeń Spala Nadmarowe Przedmioty
|
||||||
rules.schematic = Schematy Są Dozwolone
|
rules.schematic = Zezwalaj na schematy
|
||||||
rules.wavetimer = Zegar Fal
|
rules.wavetimer = Zegar Fal
|
||||||
rules.waves = Fale
|
rules.waves = Fale
|
||||||
rules.attack = Tryb Ataku
|
rules.attack = Tryb Ataku
|
||||||
@@ -948,6 +962,8 @@ rules.blockdamagemultiplier = Mnożnik Uszkodzeń Bloków
|
|||||||
rules.unitbuildspeedmultiplier = Mnożnik Prędkości Tworzenia Jednostek
|
rules.unitbuildspeedmultiplier = Mnożnik Prędkości Tworzenia Jednostek
|
||||||
rules.unithealthmultiplier = Mnożnik Życia Jednostek
|
rules.unithealthmultiplier = Mnożnik Życia Jednostek
|
||||||
rules.unitdamagemultiplier = Mnożnik Obrażeń jednostek
|
rules.unitdamagemultiplier = Mnożnik Obrażeń jednostek
|
||||||
|
rules.unitcapvariable = Rdzenie mają wpływ na limit jednostek
|
||||||
|
rules.unitcap = Podstawowy limit jednostek
|
||||||
rules.enemycorebuildradius = Zasięg Blokady Budowy Przy Rdzeniu Wroga:[lightgray] (kratki)
|
rules.enemycorebuildradius = Zasięg Blokady Budowy Przy Rdzeniu Wroga:[lightgray] (kratki)
|
||||||
rules.wavespacing = Odstępy Między Falami:[lightgray] (sek)
|
rules.wavespacing = Odstępy Między Falami:[lightgray] (sek)
|
||||||
rules.buildcostmultiplier = Mnożnik Kosztów Budowania
|
rules.buildcostmultiplier = Mnożnik Kosztów Budowania
|
||||||
@@ -961,12 +977,12 @@ rules.title.resourcesbuilding = Zasoby i Budowanie
|
|||||||
rules.title.enemy = Przeciwnicy
|
rules.title.enemy = Przeciwnicy
|
||||||
rules.title.unit = Jednostki
|
rules.title.unit = Jednostki
|
||||||
rules.title.experimental = Eksperymentalne
|
rules.title.experimental = Eksperymentalne
|
||||||
rules.title.environment = Environment
|
rules.title.environment = Otoczenie
|
||||||
rules.lighting = Oświetlenie
|
rules.lighting = Oświetlenie
|
||||||
rules.enemyLights = Wrogowie Emitują Światło
|
rules.enemyLights = Wrogowie Emitują Światło
|
||||||
rules.fire = Ogień
|
rules.fire = Ogień
|
||||||
rules.explosions = Uszkodzenia Wybuchu Klocka/Jednostki
|
rules.explosions = Uszkodzenia Wybuchu Bloku/Jednostki
|
||||||
rules.ambientlight = Otaczające Światło
|
rules.ambientlight = Otaczające\nŚwiatło
|
||||||
rules.weather = Pogoda
|
rules.weather = Pogoda
|
||||||
rules.weather.frequency = Częstotliwość:
|
rules.weather.frequency = Częstotliwość:
|
||||||
rules.weather.always = Zawsze
|
rules.weather.always = Zawsze
|
||||||
@@ -999,22 +1015,22 @@ liquid.slag.name = Żużel
|
|||||||
liquid.oil.name = Ropa
|
liquid.oil.name = Ropa
|
||||||
liquid.cryofluid.name = Lodociecz
|
liquid.cryofluid.name = Lodociecz
|
||||||
|
|
||||||
unit.dagger.name = Nóż
|
unit.dagger.name = Dagger
|
||||||
unit.mace.name = Mace
|
unit.mace.name = Mace
|
||||||
unit.fortress.name = Forteca
|
unit.fortress.name = Fortress
|
||||||
unit.nova.name = Nova
|
unit.nova.name = Nova
|
||||||
unit.pulsar.name = Pulsar
|
unit.pulsar.name = Pulsar
|
||||||
unit.quasar.name = Quasar
|
unit.quasar.name = Quasar
|
||||||
unit.crawler.name = Pełzak
|
unit.crawler.name = Crawler
|
||||||
unit.atrax.name = Atrax
|
unit.atrax.name = Atrax
|
||||||
unit.spiroct.name = Spiroct
|
unit.spiroct.name = Spiroct
|
||||||
unit.arkyid.name = Arkyid
|
unit.arkyid.name = Arkyid
|
||||||
unit.toxopid.name = Toxopid
|
unit.toxopid.name = Toxopid
|
||||||
unit.flare.name = Błysk
|
unit.flare.name = Flare
|
||||||
unit.horizon.name = Horyzont
|
unit.horizon.name = Horizon
|
||||||
unit.zenith.name = Zenit
|
unit.zenith.name = Zenith
|
||||||
unit.antumbra.name = Antumbra
|
unit.antumbra.name = Antumbra
|
||||||
unit.eclipse.name = Zaćmienie
|
unit.eclipse.name = Eclipse
|
||||||
unit.mono.name = Mono
|
unit.mono.name = Mono
|
||||||
unit.poly.name = Poly
|
unit.poly.name = Poly
|
||||||
unit.mega.name = Mega
|
unit.mega.name = Mega
|
||||||
@@ -1040,11 +1056,11 @@ block.sand-boulder.name = Piaskowy Głaz
|
|||||||
block.basalt-boulder.name = Bazaltowy Głaz
|
block.basalt-boulder.name = Bazaltowy Głaz
|
||||||
block.grass.name = Trawa
|
block.grass.name = Trawa
|
||||||
block.slag.name = Żużel
|
block.slag.name = Żużel
|
||||||
block.space.name = Space
|
block.space.name = Kosmos
|
||||||
block.salt.name = Sól
|
block.salt.name = Sól
|
||||||
block.salt-wall.name = Solna Ściana
|
block.salt-wall.name = Ściana Solna
|
||||||
block.pebbles.name = Kamyki
|
block.pebbles.name = Kamyki
|
||||||
block.tendrils.name = Wić
|
block.tendrils.name = Pnącza
|
||||||
block.sand-wall.name = Piaskowa Ściana
|
block.sand-wall.name = Piaskowa Ściana
|
||||||
block.spore-pine.name = Sosna Zarodnikowa
|
block.spore-pine.name = Sosna Zarodnikowa
|
||||||
block.spore-wall.name = Zarodinkowa Ściana
|
block.spore-wall.name = Zarodinkowa Ściana
|
||||||
@@ -1056,7 +1072,7 @@ block.shale-boulder.name = Głaz Łupkowy
|
|||||||
block.moss.name = Mech
|
block.moss.name = Mech
|
||||||
block.shrubs.name = Krzewy
|
block.shrubs.name = Krzewy
|
||||||
block.spore-moss.name = Mech Zarodnikowy
|
block.spore-moss.name = Mech Zarodnikowy
|
||||||
block.shale-wall.name = Ściana Z Łupku
|
block.shale-wall.name = Ściana z Łupku
|
||||||
block.scrap-wall.name = Ściana ze Złomu
|
block.scrap-wall.name = Ściana ze Złomu
|
||||||
block.scrap-wall-large.name = Duża Ściana ze Złomu
|
block.scrap-wall-large.name = Duża Ściana ze Złomu
|
||||||
block.scrap-wall-huge.name = Ogromna Ściana ze Złomu
|
block.scrap-wall-huge.name = Ogromna Ściana ze Złomu
|
||||||
@@ -1102,7 +1118,7 @@ block.spore-cluster.name = Skupisko Zarodników
|
|||||||
block.metal-floor.name = Metalowa Podłoga
|
block.metal-floor.name = Metalowa Podłoga
|
||||||
block.metal-floor-2.name = Metalowa Podłoga 2
|
block.metal-floor-2.name = Metalowa Podłoga 2
|
||||||
block.metal-floor-3.name = Metalowa Podłoga 3
|
block.metal-floor-3.name = Metalowa Podłoga 3
|
||||||
block.metal-floor-5.name = Metalowa Podłoga 5
|
block.metal-floor-5.name = Metalowa Podłoga 4
|
||||||
block.metal-floor-damaged.name = Uszkodzona Metalowa Podłoga
|
block.metal-floor-damaged.name = Uszkodzona Metalowa Podłoga
|
||||||
block.dark-panel-1.name = Ciemny Panel 1
|
block.dark-panel-1.name = Ciemny Panel 1
|
||||||
block.dark-panel-2.name = Ciemny Panel 2
|
block.dark-panel-2.name = Ciemny Panel 2
|
||||||
@@ -1113,7 +1129,7 @@ block.dark-panel-6.name = Ciemny Panel 6
|
|||||||
block.dark-metal.name = Ciemny Metal
|
block.dark-metal.name = Ciemny Metal
|
||||||
block.basalt.name = Bazalt
|
block.basalt.name = Bazalt
|
||||||
block.hotrock.name = Gorący Kamień
|
block.hotrock.name = Gorący Kamień
|
||||||
block.magmarock.name = Skała magmowa
|
block.magmarock.name = Skała Magmowa
|
||||||
block.copper-wall.name = Miedziana Ściana
|
block.copper-wall.name = Miedziana Ściana
|
||||||
block.copper-wall-large.name = Duża Miedziana Ściana
|
block.copper-wall-large.name = Duża Miedziana Ściana
|
||||||
block.titanium-wall.name = Tytanowa Ściana
|
block.titanium-wall.name = Tytanowa Ściana
|
||||||
@@ -1241,12 +1257,12 @@ block.overdrive-dome.name = Kopuła Pola Overdrive
|
|||||||
block.block-forge.name = Piec Bloków
|
block.block-forge.name = Piec Bloków
|
||||||
block.block-loader.name = Ładownik Bloków
|
block.block-loader.name = Ładownik Bloków
|
||||||
block.block-unloader.name = Opróżniacz Bloków
|
block.block-unloader.name = Opróżniacz Bloków
|
||||||
block.interplanetary-accelerator.name = Przspieszacz Międzyplanetarny
|
block.interplanetary-accelerator.name = Przyspieszacz Międzyplanetarny
|
||||||
|
|
||||||
block.switch.name = Przełącznik
|
block.switch.name = Przełącznik
|
||||||
block.micro-processor.name = Micro Procesor
|
block.micro-processor.name = Mikroprocesor
|
||||||
block.logic-processor.name = Logiczny Procesor
|
block.logic-processor.name = Procesor Logiczny
|
||||||
block.hyper-processor.name = Hyper Procesor
|
block.hyper-processor.name = Hiperprocesor
|
||||||
block.logic-display.name = Wyświetlacz Logiczny
|
block.logic-display.name = Wyświetlacz Logiczny
|
||||||
block.large-logic-display.name = Duży Wyświetlacz Logiczny
|
block.large-logic-display.name = Duży Wyświetlacz Logiczny
|
||||||
block.memory-cell.name = Komórka Pamięci
|
block.memory-cell.name = Komórka Pamięci
|
||||||
@@ -1262,12 +1278,12 @@ team.purple.name = fioletowy
|
|||||||
|
|
||||||
hint.skip = Pomiń
|
hint.skip = Pomiń
|
||||||
hint.desktopMove = Użyj [accent][[WASD][] by się poruszać.
|
hint.desktopMove = Użyj [accent][[WASD][] by się poruszać.
|
||||||
hint.zoom = [accent]Przewiń[] by przybliżać lub oddlać obraz.
|
hint.zoom = [accent]Użyj[] by przybliżać lub oddalać obraz.
|
||||||
hint.mine = Zbliż się do \uf8c4 rudy miedzi i [accent]kliknij[] by kopać manualnie.
|
hint.mine = Zbliż się do \uf8c4 rudy miedzi i [accent]kliknij[] by kopać manualnie.
|
||||||
hint.desktopShoot = Kliknij [accent][[Lewy przycisk myszy][] by strzelać.
|
hint.desktopShoot = Kliknij [accent][[Lewy przycisk myszy][] by strzelać.
|
||||||
hint.depositItems = By przenosić przedmoty, przeciągij je ze swojego statku do rdzenia.
|
hint.depositItems = By przenosić przedmoty, przeciągij je ze swojego statku do rdzenia.
|
||||||
hint.respawn = By się odrodzić jako statek, kliknij [accent][[V][].
|
hint.respawn = By się odrodzić jako statek, kliknij [accent][[V][].
|
||||||
hint.respawn.mobile = Przełączyłeś się na inną jednoskę/strukturę. By odrodzić się jako statek, [accent]kliknij w awatar w górnym lewym rogu.[]
|
hint.respawn.mobile = Przełączyłeś się na inną jednoskę/strukturę. By odrodzić się jako statek, [accent]kliknij w awatar w lewym górnym rogu.[]
|
||||||
hint.desktopPause = Naciśnij [accent][[Spację][] by zatrzymać lub wznowić grę.
|
hint.desktopPause = Naciśnij [accent][[Spację][] by zatrzymać lub wznowić grę.
|
||||||
hint.placeDrill = Wybierz \ue85e [accent]Wiertło[] w menu w prawym dolnym rogu, i wybierz wtedy \uf870 [accent]Wiertło[] i kliknij na miedzi by je postawić.
|
hint.placeDrill = Wybierz \ue85e [accent]Wiertło[] w menu w prawym dolnym rogu, i wybierz wtedy \uf870 [accent]Wiertło[] i kliknij na miedzi by je postawić.
|
||||||
hint.placeDrill.mobile = Wybierz zakładkę z \ue85e[accent]Wiertłem[] w menu w prawym dolnym rogu, i wtedy wybierz \uf870 [accent]Wietło[] i kliknij na miedzi by je postawić.\n\nNaciśnij \ue800 [accent]znak potwierdzenia[] w dolnym prawym rogu by potwierdzić.
|
hint.placeDrill.mobile = Wybierz zakładkę z \ue85e[accent]Wiertłem[] w menu w prawym dolnym rogu, i wtedy wybierz \uf870 [accent]Wietło[] i kliknij na miedzi by je postawić.\n\nNaciśnij \ue800 [accent]znak potwierdzenia[] w dolnym prawym rogu by potwierdzić.
|
||||||
@@ -1278,7 +1294,7 @@ hint.breaking = Użyj [accent]Prawego przycisku myszy[] i przeciągnij by zniszc
|
|||||||
hint.breaking.mobile = Aktywuj \ue817 [accent]ikonę młota[] w dolnym prawym rogu by zniszczyć bloki.\n\nPrzytrymaj swój palec i przeciągij by wybrać wiele bloków do zniszczenia.
|
hint.breaking.mobile = Aktywuj \ue817 [accent]ikonę młota[] w dolnym prawym rogu by zniszczyć bloki.\n\nPrzytrymaj swój palec i przeciągij by wybrać wiele bloków do zniszczenia.
|
||||||
hint.research = Klikij przycisk \ue875 [accent]Badań[] by odkrwyać nowe technologie.
|
hint.research = Klikij przycisk \ue875 [accent]Badań[] by odkrwyać nowe technologie.
|
||||||
hint.research.mobile = Użyj przycisku \ue875 [accent]Badań[] w \ue88c [accent]Menu[] by odkrywać nowe technologie.
|
hint.research.mobile = Użyj przycisku \ue875 [accent]Badań[] w \ue88c [accent]Menu[] by odkrywać nowe technologie.
|
||||||
hint.unitControl = Przytrzymaj [accent][[Lewy CTRL][] i [accent]kliknij[] by kontrolować sojusznicze jednostki i działka.
|
hint.unitControl = Przytrzymaj [accent][[Lewy CTRL][] i [accent]kliknij[], by kontrolować sojusznicze jednostki i działka.
|
||||||
hint.unitControl.mobile = [accent][Kliknij dwukrotnie[] by kontrolować sojusznicze jednostki i działka.
|
hint.unitControl.mobile = [accent][Kliknij dwukrotnie[] by kontrolować sojusznicze jednostki i działka.
|
||||||
hint.launch = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] wybierając \ue827 [accent]Mapę[] w dolnym prawym rogu.
|
hint.launch = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] wybierając \ue827 [accent]Mapę[] w dolnym prawym rogu.
|
||||||
hint.launch.mobile = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] do pobliskich sektorów klikając w \ue827 [accent]Mape[] w \ue88c [accent]Menu[].
|
hint.launch.mobile = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] do pobliskich sektorów klikając w \ue827 [accent]Mape[] w \ue88c [accent]Menu[].
|
||||||
@@ -1294,7 +1310,7 @@ hint.payloadDrop = Kliknij [accent]][] by opuścić podniesiony towar.
|
|||||||
hint.payloadDrop.mobile = [accent]Kliknij i przytrzymaj[] w puste miejsce by opuścić podniesiony towar.
|
hint.payloadDrop.mobile = [accent]Kliknij i przytrzymaj[] w puste miejsce by opuścić podniesiony towar.
|
||||||
hint.waveFire = [accent]Strumień[] wypełniony wodą będzie gasić pobiskie pożary.
|
hint.waveFire = [accent]Strumień[] wypełniony wodą będzie gasić pobiskie pożary.
|
||||||
hint.generator = \uf879 [accent]Generatory Spalinowe[] spalają węgiel i przekazują moc do pobliskich bloków.\n\nMożesz powiększyć odległość transmitowanej mocy używająć \uf87f [accent]Węzły Prądu[].
|
hint.generator = \uf879 [accent]Generatory Spalinowe[] spalają węgiel i przekazują moc do pobliskich bloków.\n\nMożesz powiększyć odległość transmitowanej mocy używająć \uf87f [accent]Węzły Prądu[].
|
||||||
hint.guardian = Jednostki [accent]Strażnicze[] są uzbrojone. Słaba amunicja - taka jak [accent]Miedź[] oraz [accent]Ołów[] [scarlet]nie jest efektywna[].\n\nUżyj lepszych działek takich jak \uf835 [accent]Naładowane Grafitem[] \uf861Duo/\uf859Salwa by pozbyć się strażników.
|
hint.guardian = Jednostki [accent]Strażnicze[] są uzbrojone. Słaba amunicja - taka jak [accent]Miedź[] czy [accent]Ołów[] [scarlet]nie jest efektywna[].\n\nUżyj lepszych działek takich jak \uf835 [accent]Naładowane Grafitem[] \uf861Duo/\uf859Salwa by pozbyć się strażników.
|
||||||
hint.coreUpgrade = Rdzenie mogą być ulepszone poprzez [accent]płożenie na nich rdzeń wyższego poziomu[].\n\nPołóż rdzeń [accent]Fundacji[] na rdzeń:[accent]Odłamek[] core. Żadna przeszkoda ani blok nie może stać na miejscu rdzenia.
|
hint.coreUpgrade = Rdzenie mogą być ulepszone poprzez [accent]płożenie na nich rdzeń wyższego poziomu[].\n\nPołóż rdzeń [accent]Fundacji[] na rdzeń:[accent]Odłamek[] core. Żadna przeszkoda ani blok nie może stać na miejscu rdzenia.
|
||||||
hint.presetLaunch = Szare [accent]sektory[], takie jak [accent]Zamrożony Las[], to sektory do których możesz dotrzeć z każdego miejsca. Nie wymagają podbicia pobliskiego terenu.\n\n[accent]Ponumerowane sektory[], takie jak ten, [accent]są dodatkowe[].
|
hint.presetLaunch = Szare [accent]sektory[], takie jak [accent]Zamrożony Las[], to sektory do których możesz dotrzeć z każdego miejsca. Nie wymagają podbicia pobliskiego terenu.\n\n[accent]Ponumerowane sektory[], takie jak ten, [accent]są dodatkowe[].
|
||||||
hint.coreIncinerate = Jak rdzeń zostanie w pełni wypełniony danym przedmiotem, reszta przedmiotów tego typu zostanie [accent]spalona[].
|
hint.coreIncinerate = Jak rdzeń zostanie w pełni wypełniony danym przedmiotem, reszta przedmiotów tego typu zostanie [accent]spalona[].
|
||||||
@@ -1303,7 +1319,7 @@ hint.coopCampaign = Gdy grasz [accent]kooperacyjną kampanię[], przedmioty któ
|
|||||||
item.copper.description = Przydatny materiał budowlany. Szeroko używany w prawie każdej konstrukcji.
|
item.copper.description = Przydatny materiał budowlany. Szeroko używany w prawie każdej konstrukcji.
|
||||||
item.copper.details = Miedź. Nienormalnie obfity metal na Serpulo. Strukturalnie słaba, chyba że zostanie wzmocniona.
|
item.copper.details = Miedź. Nienormalnie obfity metal na Serpulo. Strukturalnie słaba, chyba że zostanie wzmocniona.
|
||||||
item.lead.description = Podstawowy materiał. Używany w przesyle przemiotów i płynów. Nie jest on przypadkiem szkodliwy?
|
item.lead.description = Podstawowy materiał. Używany w przesyle przemiotów i płynów. Nie jest on przypadkiem szkodliwy?
|
||||||
item.lead.details = Gęsty. Obojętny. Intensywnie używany w bateriach. \nUwaga: prawdopodobnie toksyczny dla biologicznych form życia. Nie żeby zostało tu wiele.
|
item.lead.details = Gęsty. Obojętny. Intensywnie używany w bateriach. \nUwaga: prawdopodobnie toksyczny dla biologicznych form życia... nie żeby zostało ich tu wiele...
|
||||||
item.metaglass.description = Wyjątkowo wytrzymały stop szkła. Szeroko używany w transporcie i przechowywaniu płynów.
|
item.metaglass.description = Wyjątkowo wytrzymały stop szkła. Szeroko używany w transporcie i przechowywaniu płynów.
|
||||||
item.graphite.description = Zmineralizowany węgiel, wykorzystywany do amunicji i izolacji elektrycznej.
|
item.graphite.description = Zmineralizowany węgiel, wykorzystywany do amunicji i izolacji elektrycznej.
|
||||||
item.sand.description = Zwykły materiał używany pospolicie w przepalaniu, stopach i jako topnik. Dostanie piaskiem po oczach nie jest przyjemne.
|
item.sand.description = Zwykły materiał używany pospolicie w przepalaniu, stopach i jako topnik. Dostanie piaskiem po oczach nie jest przyjemne.
|
||||||
@@ -1323,8 +1339,8 @@ item.blast-compound.description = Niestabilny związek używany w materiałach w
|
|||||||
item.pyratite.description = Niesamowicie palny związek używany w zbrojeniu. Nielegalny w 9 państwach.
|
item.pyratite.description = Niesamowicie palny związek używany w zbrojeniu. Nielegalny w 9 państwach.
|
||||||
|
|
||||||
liquid.water.description = Powszechnie używana do schładzania budowli i przetwarzania odpadów.
|
liquid.water.description = Powszechnie używana do schładzania budowli i przetwarzania odpadów.
|
||||||
liquid.slag.description = Wiele różnych metali stopionych i zmieszanych razem. Może zostać rozdzielony na jego metale składowe, albo wystrzelony w wrogie jednostki i użyty jako broń.
|
liquid.slag.description = Wiele różnych metali stopionych i zmieszanych razem. Może zostać rozdzielony na jego metale składowe, albo wystrzelony we wrogie jednostki i użyty jako broń.
|
||||||
liquid.oil.description = Używany w do produkcji złożonych materiałów. Może zostać przetworzony na węgiel, lub wystrzelony w wrogów przez wieżyczke.
|
liquid.oil.description = Używany w do produkcji złożonych materiałów. Może zostać przetworzony na węgiel, lub wystrzelony we wrogów przez wieżyczke.
|
||||||
liquid.cryofluid.description = Obojętna, niekorozyjna ciecz utworzona z wody i tytanu.
|
liquid.cryofluid.description = Obojętna, niekorozyjna ciecz utworzona z wody i tytanu.
|
||||||
|
|
||||||
block.resupply-point.description = Wypełnia pobliskie jednostki amunicją z miedzi. Nie jest kompatybilny z jednostkami, które wykorzystują energię z baterii.
|
block.resupply-point.description = Wypełnia pobliskie jednostki amunicją z miedzi. Nie jest kompatybilny z jednostkami, które wykorzystują energię z baterii.
|
||||||
@@ -1334,7 +1350,7 @@ block.message.description = Przechowuje wiadomość. Wykorzystywane do komunikac
|
|||||||
block.graphite-press.description = Kompresuje kawałki węgla w czyste blaszki grafitu.
|
block.graphite-press.description = Kompresuje kawałki węgla w czyste blaszki grafitu.
|
||||||
block.multi-press.description = Ulepszona wersja prasy grafitowej. Używa wody i prądu do kompresowania węgla szybko i efektywnie.
|
block.multi-press.description = Ulepszona wersja prasy grafitowej. Używa wody i prądu do kompresowania węgla szybko i efektywnie.
|
||||||
block.silicon-smelter.description = Redukuje piasek za pomocą wysoce czystego węgla w celu wytworzenia krzemu.
|
block.silicon-smelter.description = Redukuje piasek za pomocą wysoce czystego węgla w celu wytworzenia krzemu.
|
||||||
block.kiln.description = Stapia ołów i piasek na metaszkło. Wymaga małej ilości energii.
|
block.kiln.description = Stapia ołów i piasek na metaszkło.
|
||||||
block.plastanium-compressor.description = Wytwarza plastan z oleju i tytanu.
|
block.plastanium-compressor.description = Wytwarza plastan z oleju i tytanu.
|
||||||
block.phase-weaver.description = Produkuje Włókna Fazowe z radioaktywnego toru i dużych ilości piasku.
|
block.phase-weaver.description = Produkuje Włókna Fazowe z radioaktywnego toru i dużych ilości piasku.
|
||||||
block.alloy-smelter.description = Produkuje stop Elektrum z tytanu, ołowiu, krzemu i miedzi.
|
block.alloy-smelter.description = Produkuje stop Elektrum z tytanu, ołowiu, krzemu i miedzi.
|
||||||
@@ -1350,7 +1366,7 @@ block.incinerator.description = Pozbywa się nadmiaru przedmiotów lub płynu
|
|||||||
block.power-void.description = Niszczy całą energię wprowadzoną do tego bloku. Dostępny tylko w trybie sandbox.
|
block.power-void.description = Niszczy całą energię wprowadzoną do tego bloku. Dostępny tylko w trybie sandbox.
|
||||||
block.power-source.description = Wydziela prąd w nieskończoność. Dostępny tylko w trybie sandbox.
|
block.power-source.description = Wydziela prąd w nieskończoność. Dostępny tylko w trybie sandbox.
|
||||||
block.item-source.description = Wydziela przedmioty w nieskończoność. Dostępny tylko w trybie sandbox.
|
block.item-source.description = Wydziela przedmioty w nieskończoność. Dostępny tylko w trybie sandbox.
|
||||||
block.item-void.description = Niszczy wszystkie przedmioty, które idą do tego bloku, który nie wymaga prądu. Dostępny tylko w trybie sandbox.
|
block.item-void.description = Niszczy wszystkie przedmioty, które idą do tego bloku. Nie wymaga prądu. Dostępny tylko w trybie sandbox.
|
||||||
block.liquid-source.description = Wydziela ciecz w nieskończoność. Dostępny tylko w trybie sandbox.
|
block.liquid-source.description = Wydziela ciecz w nieskończoność. Dostępny tylko w trybie sandbox.
|
||||||
block.liquid-void.description = Usuwa każdą ciecz. Dostępny tylko w trybie sandbox.
|
block.liquid-void.description = Usuwa każdą ciecz. Dostępny tylko w trybie sandbox.
|
||||||
block.copper-wall.description = Tani blok obronny.\nPrzydatny do ochrony rdzenia i wieżyczek w pierwszych kilku falach.
|
block.copper-wall.description = Tani blok obronny.\nPrzydatny do ochrony rdzenia i wieżyczek w pierwszych kilku falach.
|
||||||
@@ -1371,10 +1387,10 @@ block.mender.description = Co jakiś czas naprawia bloki w zasięgu. Utrzymuje s
|
|||||||
block.mend-projector.description = Ulepszona wersja Naprawiacza. Naprawia bloki w jego otoczeniu.\nMoże wykorzystywać włókno fazowe, aby zwiększyć efektywność budowli.
|
block.mend-projector.description = Ulepszona wersja Naprawiacza. Naprawia bloki w jego otoczeniu.\nMoże wykorzystywać włókno fazowe, aby zwiększyć efektywność budowli.
|
||||||
block.overdrive-projector.description = Zwiększa szybkość budynków w zasięgu takich jak wiertła czy przenośniki. Może wykorzystywać włókno fazowe, aby zwiększyć zasięg i efektywność budowli.
|
block.overdrive-projector.description = Zwiększa szybkość budynków w zasięgu takich jak wiertła czy przenośniki. Może wykorzystywać włókno fazowe, aby zwiększyć zasięg i efektywność budowli.
|
||||||
block.force-projector.description = Wytwarza pole siłowe w kształcie sześciokąta wokół siebie, chroniąc budynki i jednostki wewnątrz od obrażeń zadanych przez pociski.
|
block.force-projector.description = Wytwarza pole siłowe w kształcie sześciokąta wokół siebie, chroniąc budynki i jednostki wewnątrz od obrażeń zadanych przez pociski.
|
||||||
block.shock-mine.description = Zadaje obrażenia jednostkom wroga którzy na nią wejdą. Ledwo widoczne dla wrogów.
|
block.shock-mine.description = Zadaje obrażenia jednostkom wroga, które wejdą na nią. Ledwo widoczne dla wrogów.
|
||||||
block.conveyor.description = Podstawowy blok transportowy dla przedmiotów. Automatycznie przesyła przedmioty naprzód do działek oraz maszyn. Można obrócić.
|
block.conveyor.description = Podstawowy blok transportowy dla przedmiotów. Automatycznie przesyła przedmioty naprzód do działek oraz maszyn. Można obrócić.
|
||||||
block.titanium-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Przesyła przedmioty szybciej od zwykłego przenośnika.
|
block.titanium-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Przesyła przedmioty szybciej od zwykłego przenośnika.
|
||||||
block.plastanium-conveyor.description = Przenosi przedmity partiami. Przyjmuje przedmioty z tyłu i rozładowuje je w trzech kierunkach z przodu. Wymaga wielu punktów ładujących i rozładowujących w celu osiągnięcia maksymalnej przepustowości.
|
block.plastanium-conveyor.description = Przenosi przedmioty partiami. Przyjmuje przedmioty z tyłu i rozładowuje je w trzech kierunkach z przodu. Wymaga wielu punktów ładujących i rozładowujących w celu osiągnięcia maksymalnej przepustowości.
|
||||||
block.junction.description = Używany jako most dla dwóch krzyżujących się przenośników. Przydatne w sytuacjach kiedy dwa różne przenośniki transportują różne surowce do różnych miejsc.
|
block.junction.description = Używany jako most dla dwóch krzyżujących się przenośników. Przydatne w sytuacjach kiedy dwa różne przenośniki transportują różne surowce do różnych miejsc.
|
||||||
block.bridge-conveyor.description = Zaawansowany blok transportujący. Pozwala na przenoszenie przedmiotów nawet do 3 bloków na każdym terenie, przez każdy budynek.
|
block.bridge-conveyor.description = Zaawansowany blok transportujący. Pozwala na przenoszenie przedmiotów nawet do 3 bloków na każdym terenie, przez każdy budynek.
|
||||||
block.phase-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Używa energii do teleportacji przedmiotów do połączonego transportera fazowego na spore odległości.
|
block.phase-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Używa energii do teleportacji przedmiotów do połączonego transportera fazowego na spore odległości.
|
||||||
@@ -1388,7 +1404,7 @@ block.underflow-gate.description = Odwrotność bramy przepełnieniowej, który
|
|||||||
block.mass-driver.description = Najlepszy blok do transportu przedmiotów. Zbiera wiele przedmiotów naraz a potem wystrzeliwuje je do kolejnej katapulty masy na bardzo duże odległości.
|
block.mass-driver.description = Najlepszy blok do transportu przedmiotów. Zbiera wiele przedmiotów naraz a potem wystrzeliwuje je do kolejnej katapulty masy na bardzo duże odległości.
|
||||||
block.mechanical-pump.description = Tania pompa o niskiej wydajności. Nie wymaga prądu.
|
block.mechanical-pump.description = Tania pompa o niskiej wydajności. Nie wymaga prądu.
|
||||||
block.rotary-pump.description = Zaawansowana pompa. Pompuje więcej cieczy, ale wymaga zasilania.
|
block.rotary-pump.description = Zaawansowana pompa. Pompuje więcej cieczy, ale wymaga zasilania.
|
||||||
block.thermal-pump.description = Najlepsza pompa. Pompuje ogromne ilości cieczy, ale wymaga zasilaina.
|
block.thermal-pump.description = Najlepsza pompa. Pompuje ogromne ilości cieczy, ale wymaga zasilania.
|
||||||
block.conduit.description = Podstawowy blok do transportowania cieczy. Używany w połączeniu z pompami i innymi rurami.
|
block.conduit.description = Podstawowy blok do transportowania cieczy. Używany w połączeniu z pompami i innymi rurami.
|
||||||
block.pulse-conduit.description = Zaawansowany blok do transportowania cieczy. Transportuje je szybciej i magazynuje więcej niż standardowe rury.
|
block.pulse-conduit.description = Zaawansowany blok do transportowania cieczy. Transportuje je szybciej i magazynuje więcej niż standardowe rury.
|
||||||
block.plated-conduit.description = Przesyła ciecze z taką samą szybkością co rura tytanowa, ale jest bardziej odporna. Wejściami bocznymi mogą być tylko inne rury.\nWycieka z niej mniej cieczy.
|
block.plated-conduit.description = Przesyła ciecze z taką samą szybkością co rura tytanowa, ale jest bardziej odporna. Wejściami bocznymi mogą być tylko inne rury.\nWycieka z niej mniej cieczy.
|
||||||
@@ -1410,7 +1426,7 @@ block.differential-generator.description = Generuje duże ilości prądu. Wykorz
|
|||||||
block.rtg-generator.description = Prosty, niezawodny generator. Wykorzystuje ciepło powstałe z rozpadu izotopów promieniotwórczych. Nie wymaga chłodzenia, ale produkuje mniej energii od reaktora torowego.
|
block.rtg-generator.description = Prosty, niezawodny generator. Wykorzystuje ciepło powstałe z rozpadu izotopów promieniotwórczych. Nie wymaga chłodzenia, ale produkuje mniej energii od reaktora torowego.
|
||||||
block.solar-panel.description = Wytwarza małe ilości prądu wykorzystując energię słoneczną.
|
block.solar-panel.description = Wytwarza małe ilości prądu wykorzystując energię słoneczną.
|
||||||
block.solar-panel-large.description = Wytwarza o wiele więcej prądu niż zwykły panel słoneczny.
|
block.solar-panel-large.description = Wytwarza o wiele więcej prądu niż zwykły panel słoneczny.
|
||||||
block.thorium-reactor.description = Produkuje bardzo duże ilości prądu z wysoce radioaktywnego toru. Wymaga ciągłego chłodzenia. Silnie eksploduje jeśli nie zostanie dostarczona wystarczająca ilość chłodziwa. Produkcja energii zależy od zapełnienia, produkując bazową ilość energii przy całkowitym zapełnieniu.
|
block.thorium-reactor.description = Produkuje bardzo duże ilości prądu z wysoce radioaktywnego toru. Wymaga ciągłego chłodzenia. Silnie eksploduje, jeśli nie zostanie dostarczona wystarczająca ilość chłodziwa. Produkcja energii zależy od zapełnienia, produkując bazową ilość energii przy całkowitym zapełnieniu.
|
||||||
block.impact-reactor.description = Zaawansowany generator, zdolny do produkcji ogromnych ilości prądu u szczytu swoich możliwości. Wymaga znacznych ilości energii do rozpoczęcia procesu.
|
block.impact-reactor.description = Zaawansowany generator, zdolny do produkcji ogromnych ilości prądu u szczytu swoich możliwości. Wymaga znacznych ilości energii do rozpoczęcia procesu.
|
||||||
block.mechanical-drill.description = Tanie wiertło. Kiedy zostanie zbudowane na odpowiednich polach, wydobywa surowce w wolnym tempie. Może wydobywać tylko podstawowe rudy.
|
block.mechanical-drill.description = Tanie wiertło. Kiedy zostanie zbudowane na odpowiednich polach, wydobywa surowce w wolnym tempie. Może wydobywać tylko podstawowe rudy.
|
||||||
block.pneumatic-drill.description = Ulepszone wiertło, zdolne do wydobywania tytanu. Wydobywa w szybszym tempie niż wiertło mechaniczne.
|
block.pneumatic-drill.description = Ulepszone wiertło, zdolne do wydobywania tytanu. Wydobywa w szybszym tempie niż wiertło mechaniczne.
|
||||||
@@ -1426,8 +1442,8 @@ block.core-foundation.description = Druga wersja rdzenia. Lepiej opancerzony. Pr
|
|||||||
block.core-foundation.details = Druga generacja.
|
block.core-foundation.details = Druga generacja.
|
||||||
block.core-nucleus.description = Trzecia i ostatnia wersja rdzenia. Bardzo dobrze opancerzony. Przechowuje ogromne ilości surowców.
|
block.core-nucleus.description = Trzecia i ostatnia wersja rdzenia. Bardzo dobrze opancerzony. Przechowuje ogromne ilości surowców.
|
||||||
block.core-nucleus.details = Trzecia i ostatnia generacja.
|
block.core-nucleus.details = Trzecia i ostatnia generacja.
|
||||||
block.vault.description = Przechowuje duże ilości przedmiotów każdego rodzaju. Użyj ekstraktora, aby rozładować magazyn.
|
block.vault.description = Przechowuje duże ilości przedmiotów każdego rodzaju. Zawartość magazynu można wyciągnąć za pomocą ekstraktorów.
|
||||||
block.container.description = Przechowuje małe ilości przedmiotów każdego rodzaju. Użyj ekstraktora, aby rozładować kontener.
|
block.container.description = Przechowuje małe ilości przedmiotów każdego rodzaju. Zawartość kontenera można wyciągnąć za pomocą ekstraktorów.
|
||||||
block.unloader.description = Wyciąga przedmioty z przyległych bloków. Typ przedmiotu jaki zostanie wyciągniety może zostać zmieniony poprzez kliknięcie.
|
block.unloader.description = Wyciąga przedmioty z przyległych bloków. Typ przedmiotu jaki zostanie wyciągniety może zostać zmieniony poprzez kliknięcie.
|
||||||
block.launch-pad.description = Wysyła pakiety przedmiotów bez potrzeby wystrzeliwania rdżenia.
|
block.launch-pad.description = Wysyła pakiety przedmiotów bez potrzeby wystrzeliwania rdżenia.
|
||||||
block.duo.description = Mała, tania wieża. Przydatna przeciwko jednostkom naziemnym.
|
block.duo.description = Mała, tania wieża. Przydatna przeciwko jednostkom naziemnym.
|
||||||
@@ -1447,13 +1463,13 @@ block.meltdown.description = Duże działo laserowe, które strzela potężnymi
|
|||||||
block.foreshadow.description = Strzela potężnym pociskiem z daleka we wrogów.
|
block.foreshadow.description = Strzela potężnym pociskiem z daleka we wrogów.
|
||||||
block.repair-point.description = Bez przerw naprawia najbliższą uszkodzoną jednostkę w jego zasięgu.
|
block.repair-point.description = Bez przerw naprawia najbliższą uszkodzoną jednostkę w jego zasięgu.
|
||||||
block.segment.description = Uszkadza i niszczy wrogie pociskiski poza laserami.
|
block.segment.description = Uszkadza i niszczy wrogie pociskiski poza laserami.
|
||||||
block.parallax.description = Wykorzystuje laser, który przyciąga do siebie wrogów, zadając im obrażenia.
|
block.parallax.description = Wykorzystuje laser przyciągający do siebie wrogów, zadając im obrażenia.
|
||||||
block.tsunami.description = Strzela wielkim strumieniem cieczy we wrogów. Automatycznie gasi ogień, gdy jest podłączony do wody.
|
block.tsunami.description = Strzela wielkim strumieniem cieczy we wrogów. Automatycznie gasi ogień, gdy jest podłączony do wody.
|
||||||
block.silicon-crucible.description = Oczyszcza krzem z węgla i piasku wykorzystując piratian. Bardziej efektywny w gorących miejscach.
|
block.silicon-crucible.description = Oczyszcza krzem z węgla i piasku wykorzystując piratian. Bardziej efektywny w gorących miejscach.
|
||||||
block.disassembler.description = Oddziela egzotyczne materiały z mieszaniny jaką jest żużel z małą efektywnością. Może wyprodukować tor.
|
block.disassembler.description = Oddziela egzotyczne materiały z mieszaniny jaką jest żużel z małą efektywnością. Może wyprodukować tor.
|
||||||
block.overdrive-dome.description = Zwiększa szybkość budynków w zasięgu. Wymaga włókna fazowego oraz krzemu by działać.
|
block.overdrive-dome.description = Zwiększa szybkość budynków w zasięgu. Wymaga włókna fazowego oraz krzemu by działać.
|
||||||
block.payload-conveyor.description = Przenosi duże ładunki, takie jak jednostki z fabryk.
|
block.payload-conveyor.description = Przenosi duże ładunki, takie jak jednostki z fabryk.
|
||||||
block.payload-router.description = Dzieli wejście z przewoźnika masowego i dzieli je w 3 różne strony.
|
block.payload-router.description = Dzieli wejście z przenośnika masowego w 3 różne strony.
|
||||||
block.command-center.description = Kontroluje zachowanie jednostek paroma różnymi komendami.
|
block.command-center.description = Kontroluje zachowanie jednostek paroma różnymi komendami.
|
||||||
block.ground-factory.description = Produkuje jednostki naziemne. Jednostki mogą być do razu wykorzystane lub przeniesone do rekonstrukota by je ulepszyć.
|
block.ground-factory.description = Produkuje jednostki naziemne. Jednostki mogą być do razu wykorzystane lub przeniesone do rekonstrukota by je ulepszyć.
|
||||||
block.air-factory.description = Produkuje jednostki powietrzne. Jednostki mogą być do razu wykorzystane lub przeniesone do rekonstrukota by je ulepszyć.
|
block.air-factory.description = Produkuje jednostki powietrzne. Jednostki mogą być do razu wykorzystane lub przeniesone do rekonstrukota by je ulepszyć.
|
||||||
@@ -1461,11 +1477,11 @@ block.naval-factory.description = Produkuje jednostki morskie. Jednostki mogą b
|
|||||||
block.additive-reconstructor.description = Ulepsza wsadzone jednostki do stopnia drugiego.
|
block.additive-reconstructor.description = Ulepsza wsadzone jednostki do stopnia drugiego.
|
||||||
block.multiplicative-reconstructor.description = Ulepsza wsadzone jednostki do stopnia trzeciego.
|
block.multiplicative-reconstructor.description = Ulepsza wsadzone jednostki do stopnia trzeciego.
|
||||||
block.exponential-reconstructor.description = Ulepsza wsadzone jednostki do stopnia czwartego.
|
block.exponential-reconstructor.description = Ulepsza wsadzone jednostki do stopnia czwartego.
|
||||||
block.tetrative-reconstructor.description = Ulepsza wsadzone jednostki do stopnia piątego i ostatniego.
|
block.tetrative-reconstructor.description = Ulepsza wsadzone jednostki do piątego, ostatniego stopnia.
|
||||||
block.switch.description = Jest Przełączalny. Stan jego może być odczytywany lub kontrolowany przez procesory.
|
block.switch.description = Jest przełączalny. Stan jego może być odczytywany lub kontrolowany przez procesory.
|
||||||
block.micro-processor.description = Uruchamia sekwencję instrukcji logicznych w pętli. Może być wykorzystany do kontroli bloków lub jednostek.
|
block.micro-processor.description = Uruchamia sekwencję instrukcji logicznych w pętli. Może być wykorzystany do kontroli bloków lub jednostek.
|
||||||
block.logic-processor.description = Uruchamia sekwencję instrukcji logicznych w pętli. Może być wykorzystany do kontroli bloków lub jednostek. Szybszy niż mikro procesor.
|
block.logic-processor.description = Uruchamia sekwencję instrukcji logicznych w pętli. Może być wykorzystany do kontroli bloków lub jednostek. Szybszy niż mikroprocesor.
|
||||||
block.hyper-processor.description = Uruchamia sekwencję instrukcji logicznych w pętli. Może być wykorzystany do kontroli bloków lub jednostek. Szybszy niż logiczny procesor.
|
block.hyper-processor.description = Uruchamia sekwencję instrukcji logicznych w pętli. Może być wykorzystany do kontroli bloków lub jednostek. Szybszy niż procesor logiczny.
|
||||||
block.memory-cell.description = Przechowuje informacje dla procesora.
|
block.memory-cell.description = Przechowuje informacje dla procesora.
|
||||||
block.memory-bank.description = Przechowuje informacje dla procesora. Duża pojemność.
|
block.memory-bank.description = Przechowuje informacje dla procesora. Duża pojemność.
|
||||||
block.logic-display.description = Wyświetla obraz z procesora.
|
block.logic-display.description = Wyświetla obraz z procesora.
|
||||||
@@ -1479,23 +1495,23 @@ unit.scepter.description = Strzela salwą naładowanych pocisków we wszystkich
|
|||||||
unit.reign.description = Strzela salwą masywnych przebijających pocisków we wszystkich przeciwników.
|
unit.reign.description = Strzela salwą masywnych przebijających pocisków we wszystkich przeciwników.
|
||||||
unit.nova.description = Wystrzeliwuje pioruny, które uszkadzają przeciwników i leczą sojusznicze struktury. Może latać.
|
unit.nova.description = Wystrzeliwuje pioruny, które uszkadzają przeciwników i leczą sojusznicze struktury. Może latać.
|
||||||
unit.pulsar.description = Wystrzeliwuje elektryczne pioruny, które uszkadzają przeciwników i leczą sojusznicze struktury. Może latać.
|
unit.pulsar.description = Wystrzeliwuje elektryczne pioruny, które uszkadzają przeciwników i leczą sojusznicze struktury. Może latać.
|
||||||
unit.quasar.description = Wystrzeliwuje wiązki laserowe, które uszkadzają przeciwników i leczą sojusznicze struktury. Może latać. Posiada tarcze.
|
unit.quasar.description = Wystrzeliwuje przeszywającą wiązkę laserową, uszkadzającą przeciwników i leczącą sojusznicze struktury. Może latać. Posiada tarcze.
|
||||||
unit.vela.description = Wystrzeliwuje masywny ciągły laser, który uszkadza przeciwników i leczy sojusznicze struktury. Może latać.
|
unit.vela.description = Wystrzeliwuje masywny ciągły laser, który uszkadza przeciwników i leczy sojusznicze struktury. Może latać.
|
||||||
unit.corvus.description = Wystrzeliwuje masywny laserowy błysk, który uszkadza przeciwników i leczy sojusznicze struktury. Może przejść po większości terenu.
|
unit.corvus.description = Wystrzeliwuje masywną ciągłą wiązkę laserową, która uszkadza przeciwników i leczy sojusznicze struktury. Może przejść po większości terenu.
|
||||||
unit.crawler.description = Wbiega w przeciwników i dokonuje samozniszczenia powodując dużą eksplozje.
|
unit.crawler.description = Wbiega w przeciwników i dokonuje samozniszczenia powodując dużą eksplozje.
|
||||||
unit.atrax.description = Wystrzeliwuje wyniszczające kule żużlu w cele na ziemi. Może przejść po większości terenu.
|
unit.atrax.description = Wystrzeliwuje wyniszczające kule żużlu w cele na ziemi. Może przejść po większości terenu.
|
||||||
unit.spiroct.description = Strzela wyczerpującymi życie laserami we wrogów, naprawiając siebie. Może przejść po większości terenu.
|
unit.spiroct.description = Strzela wyczerpującymi życie laserami we wrogów, naprawiając siebie. Może przejść po większości terenu.
|
||||||
unit.arkyid.description = Strzela dużymi wyczerpującymi życie laserami we wrogów, naprawiając siebie. Może przejść po większości terenu.
|
unit.arkyid.description = Strzela dużymi wyczerpującymi życie laserami we wrogów, naprawiając siebie. Może przejść po większości terenu.
|
||||||
unit.toxopid.description = Strzela wielkimi elektrycznymi skupionymi kulami i przebijającymi laserami we wrogów. Może przejść po większości terenu.
|
unit.toxopid.description = Strzela wielkimi elektrycznymi skupionymi kulami i przebijającymi laserami we wrogów. Może przejść po większości terenu.
|
||||||
unit.flare.description = Strzela standardowymi pociskami we jednostki naziemne.
|
unit.flare.description = Strzela standardowymi pociskami we jednostki naziemne.
|
||||||
unit.horizon.description = Upuszcza stos bomb na jednostki naziemne.
|
unit.horizon.description = Upuszcza serię bomb na jednostki naziemne.
|
||||||
unit.zenith.description = Strzela salwą rakiet w każdego pobliskiego wroga.
|
unit.zenith.description = Strzela salwą rakiet w każdego pobliskiego wroga.
|
||||||
unit.antumbra.description = Strzela zaporą rakiet w każdego pobliskiego wroga.
|
unit.antumbra.description = Strzela zaporą rakiet w każdego pobliskiego wroga.
|
||||||
unit.eclipse.description = Strzela dwoma przebijającymi laserami i pociskami przeciwlotniczymi we wrogów.
|
unit.eclipse.description = Strzela dwoma przebijającymi laserami i pociskami przeciwlotniczymi we wrogów.
|
||||||
unit.mono.description = Automatycznie wykopuje miedź i ołów i odkłada je do rdzenia.
|
unit.mono.description = Automatycznie wykopuje miedź i ołów i odkłada je do rdzenia.
|
||||||
unit.poly.description = Automatycznie naprawia zniszczone struktury i asystuje w budowie.
|
unit.poly.description = Automatycznie naprawia zniszczone struktury i asystuje w budowie.
|
||||||
unit.mega.description = Automatycznie naprawia zniszczone struktury. Może podnosić małe jednostki i bloki.
|
unit.mega.description = Automatycznie naprawia zniszczone struktury. Może podnosić małe jednostki i bloki.
|
||||||
unit.quad.description = Upuszcza wielkie bomby na cele na ziemi, które uszkadzają przeciwników i leczą sojusznicze struktury. Może podnosić jednostki naziemne średniej wielkości.
|
unit.quad.description = Upuszcza wielkie bomby na cele naziemne, uszkadzając przeciwników i lecząc sojusznicze struktury. Może podnosić jednostki naziemne średniej wielkości.
|
||||||
unit.oct.description = Broni wszystkie jednostki tarczą regeneracyjną. Może podnosić większość jednostek naziemnych.
|
unit.oct.description = Broni wszystkie jednostki tarczą regeneracyjną. Może podnosić większość jednostek naziemnych.
|
||||||
unit.risso.description = Strzela sporą ilością pocisków i rakiet w najbliższych przeciwników.
|
unit.risso.description = Strzela sporą ilością pocisków i rakiet w najbliższych przeciwników.
|
||||||
unit.minke.description = Strzela granatami i standardowymi pociskami w najbliższych przeciwników.
|
unit.minke.description = Strzela granatami i standardowymi pociskami w najbliższych przeciwników.
|
||||||
@@ -1505,3 +1521,146 @@ unit.omura.description = Strzela przebijającym superszybkim pociskiem we wrogó
|
|||||||
unit.alpha.description = Chroni Rdzeń: Odłamek przed wrogami. Buduje struktury.
|
unit.alpha.description = Chroni Rdzeń: Odłamek przed wrogami. Buduje struktury.
|
||||||
unit.beta.description = Chroni Rdzeń: Podstawa przed wrogami. Buduje struktury.
|
unit.beta.description = Chroni Rdzeń: Podstawa przed wrogami. Buduje struktury.
|
||||||
unit.gamma.description = Chroni Rdzeń: Jądro przed wrogami. Buduje struktury.
|
unit.gamma.description = Chroni Rdzeń: Jądro przed wrogami. Buduje struktury.
|
||||||
|
|
||||||
|
lst.read = Read a number from a linked memory cell.
|
||||||
|
lst.write = Write a number to a linked memory cell.
|
||||||
|
lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used.
|
||||||
|
lst.draw = Add an operation to the drawing buffer.\nDoes not display anything until [accent]Draw Flush[] is used.
|
||||||
|
lst.drawflush = Flush queued [accent]Draw[] operations to a display.
|
||||||
|
lst.printflush = Flush queued [accent]Print[] operations to a message block.
|
||||||
|
lst.getlink = Get a processor link by index. Starts at 0.
|
||||||
|
lst.control = Control a building.
|
||||||
|
lst.radar = Locate units around a building with range.
|
||||||
|
lst.sensor = Get data from a building or unit.
|
||||||
|
lst.set = Set a variable.
|
||||||
|
lst.operation = Perform an operation on 1-2 variables.
|
||||||
|
lst.end = Jump to the top of the instruction stack.
|
||||||
|
lst.jump = Conditionally jump to another statement.
|
||||||
|
lst.unitbind = Bind to the next unit of a type, and store it in [accent]@unit[].
|
||||||
|
lst.unitcontrol = Control the currently bound unit.
|
||||||
|
lst.unitradar = Locate units around the currently bound unit.
|
||||||
|
lst.unitlocate = Locate a specific type of position/building anywhere on the map.\nRequires a bound unit.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||||
|
|
||||||
|
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
|
lenum.shoot = Shoot at a position.
|
||||||
|
lenum.shootp = Shoot at a unit/building with velocity prediction.
|
||||||
|
lenum.configure = Building configuration, e.g. sorter item.
|
||||||
|
lenum.enabled = Whether the block is enabled.
|
||||||
|
|
||||||
|
laccess.color = Illuminator color.
|
||||||
|
laccess.controller = Unit controller. If processor controlled, returns processor.\nIf in a formation, returns leader.\nOtherwise, returns the unit itself.
|
||||||
|
laccess.dead = Whether a unit/building is dead or no longer valid.
|
||||||
|
laccess.controlled = Returns:\n[accent]@ctrlProcessor[] if unit controller is processor\n[accent]@ctrlPlayer[] if unit/building controller is player\n[accent]@ctrlFormation[] if unit is in formation\nOtherwise, 0.
|
||||||
|
laccess.commanded = [red]Deprecated. Will be removed![]\nUse [accent]controlled[] instead.
|
||||||
|
|
||||||
|
graphicstype.clear = Fill the display with a color.
|
||||||
|
graphicstype.color = Set color for next drawing operations.
|
||||||
|
graphicstype.stroke = Set line width.
|
||||||
|
graphicstype.line = Draw line segment.
|
||||||
|
graphicstype.rect = Fill a rectangle.
|
||||||
|
graphicstype.linerect = Draw a rectangle outline.
|
||||||
|
graphicstype.poly = Fill a regular polygon.
|
||||||
|
graphicstype.linepoly = Draw a regular polygon outline.
|
||||||
|
graphicstype.triangle = Fill a triangle.
|
||||||
|
graphicstype.image = Draw an image of some content.\nex: [accent]@router[] or [accent]@dagger[].
|
||||||
|
|
||||||
|
lenum.always = Always true.
|
||||||
|
lenum.idiv = Integer division.
|
||||||
|
lenum.div = Division.\nReturns [accent]null[] on divide-by-zero.
|
||||||
|
lenum.mod = Modulo.
|
||||||
|
lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0.
|
||||||
|
lenum.notequal = Not equal. Coerces types.
|
||||||
|
lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[].
|
||||||
|
lenum.shl = Bit-shift left.
|
||||||
|
lenum.shr = Bit-shift right.
|
||||||
|
lenum.or = Bitwise OR.
|
||||||
|
lenum.land = Logical AND.
|
||||||
|
lenum.and = Bitwise AND.
|
||||||
|
lenum.not = Bitwise flip.
|
||||||
|
lenum.xor = Bitwise XOR.
|
||||||
|
|
||||||
|
lenum.min = Minimum of two numbers.
|
||||||
|
lenum.max = Maximum of two numbers.
|
||||||
|
lenum.angle = Angle of vector in degrees.
|
||||||
|
lenum.len = Length of vector.
|
||||||
|
lenum.sin = Sine, in degrees.
|
||||||
|
lenum.cos = Cosine, in degrees.
|
||||||
|
lenum.tan = Tangent, in degrees.
|
||||||
|
#not a typo, look up 'range notation'
|
||||||
|
lenum.rand = Random decimal in range [0, value).
|
||||||
|
lenum.log = Natural logarithm (ln).
|
||||||
|
lenum.log10 = Base 10 logarithm.
|
||||||
|
lenum.noise = 2D simplex noise.
|
||||||
|
lenum.abs = Absolute value.
|
||||||
|
lenum.sqrt = Square root.
|
||||||
|
|
||||||
|
lenum.any = Any unit.
|
||||||
|
lenum.ally = Ally unit.
|
||||||
|
lenum.attacker = Unit with a weapon.
|
||||||
|
lenum.enemy = Enemy unit.
|
||||||
|
lenum.boss = Guardian unit.
|
||||||
|
lenum.flying = Flying unit.
|
||||||
|
lenum.ground = Ground unit.
|
||||||
|
lenum.player = Unit controlled by a player.
|
||||||
|
|
||||||
|
lenum.ore = Ore deposit.
|
||||||
|
lenum.damaged = Damaged ally building.
|
||||||
|
lenum.spawn = Enemy spawn point.\nMay be a core or a position.
|
||||||
|
lenum.building = Building in a specific group.
|
||||||
|
|
||||||
|
lenum.core = Any core.
|
||||||
|
lenum.storage = Storage building, e.g. Vault.
|
||||||
|
lenum.generator = Buildings that generate power.
|
||||||
|
lenum.factory = Buildings that transform resources.
|
||||||
|
lenum.repair = Repair points.
|
||||||
|
lenum.rally = Command center.
|
||||||
|
lenum.battery = Any battery.
|
||||||
|
lenum.resupply = Resupply points.\nOnly relevant when [accent]"Unit Ammo"[] is enabled.
|
||||||
|
lenum.reactor = Impact/Thorium reactor.
|
||||||
|
lenum.turret = Any turret.
|
||||||
|
|
||||||
|
sensor.in = The building/unit to sense.
|
||||||
|
|
||||||
|
radar.from = Building to sense from.\nSensor range is limited by building range.
|
||||||
|
radar.target = Filter for units to sense.
|
||||||
|
radar.and = Additional filters.
|
||||||
|
radar.order = Sorting order. 0 to reverse.
|
||||||
|
radar.sort = Metric to sort results by.
|
||||||
|
radar.output = Variable to write output unit to.
|
||||||
|
|
||||||
|
unitradar.target = Filter for units to sense.
|
||||||
|
unitradar.and = Additional filters.
|
||||||
|
unitradar.order = Sorting order. 0 to reverse.
|
||||||
|
unitradar.sort = Metric to sort results by.
|
||||||
|
unitradar.output = Variable to write output unit to.
|
||||||
|
|
||||||
|
control.of = Building to control.
|
||||||
|
control.unit = Unit/building to aim at.
|
||||||
|
control.shoot = Whether to shoot.
|
||||||
|
|
||||||
|
unitlocate.enemy = Whether to locate enemy buildings.
|
||||||
|
unitlocate.found = Whether the object was found.
|
||||||
|
unitlocate.building = Output variable for located building.
|
||||||
|
unitlocate.outx = Output X coordinate.
|
||||||
|
unitlocate.outy = Output Y coordinate.
|
||||||
|
unitlocate.group = Building group to look for.
|
||||||
|
|
||||||
|
lenum.idle = Don't move, but keep building/mining.\nThe default state.
|
||||||
|
lenum.stop = Stop moving/mining/building.
|
||||||
|
lenum.move = Move to exact position.
|
||||||
|
lenum.approach = Approach a position with a radius.
|
||||||
|
lenum.pathfind = Pathfind to the enemy spawn.
|
||||||
|
lenum.target = Shoot a position.
|
||||||
|
lenum.targetp = Shoot a target with velocity prediction.
|
||||||
|
lenum.itemdrop = Drop an item.
|
||||||
|
lenum.itemtake = Take an item from a building.
|
||||||
|
lenum.paydrop = Drop current payload.
|
||||||
|
lenum.paytake = Pick up payload at current location.
|
||||||
|
lenum.flag = Numeric unit flag.
|
||||||
|
lenum.mine = Mine at a position.
|
||||||
|
lenum.build = Build a structure.
|
||||||
|
lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[].
|
||||||
|
lenum.within = Check if unit is near a position.
|
||||||
|
lenum.boost = Start/stop boosting.
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ committingchanges = Se Încarcă Schimbările
|
|||||||
done = Gata
|
done = Gata
|
||||||
feature.unsupported = Dispozitivul tău nu suportă această funcție.
|
feature.unsupported = Dispozitivul tău nu suportă această funcție.
|
||||||
|
|
||||||
mods.alphainfo = Modurile sunt încă în alpha și[scarlet] pot avea multe buguri[].\nRaportează orice probleme apărute pe Githubul Mindustry.
|
mods.initfailed = [red]⚠[] Instanța Mindustry precedentă a eșuat la inițializare. De obicei se întâmplă din cauza unui mod care nu se acționează cum trebuie.\n\nPt a preveni un lanț de crashuri continue, [red]toate modurile au fost dezactivate.[]\n\nPoți dezactiva asta din [accent]Setări->Joc->Dezactivează Modurile în Cazul unui Crash la Pornire[].
|
||||||
mods = Moduri
|
mods = Moduri
|
||||||
mods.none = [lightgray]Nu s-au găsit moduri!
|
mods.none = [lightgray]Nu s-au găsit moduri!
|
||||||
mods.guide = Ghid de Modding
|
mods.guide = Ghid de Modding
|
||||||
@@ -126,6 +126,7 @@ mod.installed = [[Instalat]
|
|||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Activat
|
mod.enabled = [lightgray]Activat
|
||||||
mod.disabled = [scarlet]Dezactivat
|
mod.disabled = [scarlet]Dezactivat
|
||||||
|
mod.multiplayer.compatible = [gray]Compatibil cu Multiplayer
|
||||||
mod.disable = Dezactivează
|
mod.disable = Dezactivează
|
||||||
mod.content = Conținut:
|
mod.content = Conținut:
|
||||||
mod.delete.error = Nu s-a putut șterge modul. Fișierul ar putea fi în uz.
|
mod.delete.error = Nu s-a putut șterge modul. Fișierul ar putea fi în uz.
|
||||||
@@ -216,9 +217,11 @@ server.hidden = Ascunse
|
|||||||
trace = Urmărește Jucător
|
trace = Urmărește Jucător
|
||||||
trace.playername = Nume jucător: [accent]{0}
|
trace.playername = Nume jucător: [accent]{0}
|
||||||
trace.ip = IP: [accent]{0}
|
trace.ip = IP: [accent]{0}
|
||||||
trace.id = ID unic: [accent]{0}
|
trace.id = ID: [accent]{0}
|
||||||
trace.mobile = Client Mobil: [accent]{0}
|
trace.mobile = Client Mobil: [accent]{0}
|
||||||
trace.modclient = Client Personalizat: [accent]{0}
|
trace.modclient = Client Personalizat: [accent]{0}
|
||||||
|
trace.times.joined = A Intrat: de [accent]{0}[] ori
|
||||||
|
trace.times.kicked = Dat Afară: de [accent]{0}[] ori
|
||||||
invalidid = ID client invalid! Raportează bugul.
|
invalidid = ID client invalid! Raportează bugul.
|
||||||
server.bans = Interziși
|
server.bans = Interziși
|
||||||
server.bans.none = Nu s-au găsit jucători intreziși!
|
server.bans.none = Nu s-au găsit jucători intreziși!
|
||||||
@@ -437,7 +440,7 @@ editor.exists = Există deja o hartă cu același nume.
|
|||||||
editor.selectmap = Selectează o hartă de încărcat:
|
editor.selectmap = Selectează o hartă de încărcat:
|
||||||
|
|
||||||
toolmode.replace = Înlocuiește
|
toolmode.replace = Înlocuiește
|
||||||
toolmode.replace.description = Desenează doar pe blocurile solide.
|
toolmode.replace.description = Desenează doar peste blocurile solide.
|
||||||
toolmode.replaceall = Înlocuiește-le pe toate
|
toolmode.replaceall = Înlocuiește-le pe toate
|
||||||
toolmode.replaceall.description = Înlocuiește toate blocurile solide de pe hartă.
|
toolmode.replaceall.description = Înlocuiește toate blocurile solide de pe hartă.
|
||||||
toolmode.orthogonal = Ortogonal
|
toolmode.orthogonal = Ortogonal
|
||||||
@@ -447,7 +450,7 @@ toolmode.square.description = Pensulă pătrată.
|
|||||||
toolmode.eraseores = Șterge Minereurile
|
toolmode.eraseores = Șterge Minereurile
|
||||||
toolmode.eraseores.description = Șterge doar minereurile.
|
toolmode.eraseores.description = Șterge doar minereurile.
|
||||||
toolmode.fillteams = Umplere Echipe
|
toolmode.fillteams = Umplere Echipe
|
||||||
toolmode.fillteams.description = Umple hartă cu echipe în loc de blocuri.
|
toolmode.fillteams.description = Umple harta cu echipe în loc de blocuri.
|
||||||
toolmode.drawteams = Desenează Echipe
|
toolmode.drawteams = Desenează Echipe
|
||||||
toolmode.drawteams.description = Desenează echipe în loc de blocuri.
|
toolmode.drawteams.description = Desenează echipe în loc de blocuri.
|
||||||
|
|
||||||
@@ -617,6 +620,19 @@ sector.extractionOutpost.description = Un avanpost izolat, construit de inamic c
|
|||||||
sector.impact0078.description = Aici se află rămășițele primei nave de transport interstelar care a intrat în acest sistem stelar.\n\nSalvează cât de mult posibil din epavă. Cercetează orice tehnologie intactă.
|
sector.impact0078.description = Aici se află rămășițele primei nave de transport interstelar care a intrat în acest sistem stelar.\n\nSalvează cât de mult posibil din epavă. Cercetează orice tehnologie intactă.
|
||||||
sector.planetaryTerminal.description = Ținta finală.\n\nAceastă bază de coastă conține o structură capabilă să lanseze nuclee către alte planete locale. Este extrem de bine păzită.\n\nProdu unități navale. Elimină inamicul cât de rapid se poate. Cercetează structura de lansare.
|
sector.planetaryTerminal.description = Ținta finală.\n\nAceastă bază de coastă conține o structură capabilă să lanseze nuclee către alte planete locale. Este extrem de bine păzită.\n\nProdu unități navale. Elimină inamicul cât de rapid se poate. Cercetează structura de lansare.
|
||||||
|
|
||||||
|
status.burning.name = Arde
|
||||||
|
status.freezing.name = Îngheață
|
||||||
|
status.wet.name = Umed
|
||||||
|
status.muddy.name = Noroios
|
||||||
|
status.melting.name = Topește
|
||||||
|
status.sapped.name = Slăbește
|
||||||
|
status.spore-slowed.name = Împiedicat de Spori
|
||||||
|
status.tarred.name = Păcurit
|
||||||
|
status.overclock.name = Suprasolicitat
|
||||||
|
status.shocked.name = Șoc
|
||||||
|
status.blasted.name = Explozie
|
||||||
|
status.unmoving.name = Nemișcat
|
||||||
|
|
||||||
settings.language = Limbă
|
settings.language = Limbă
|
||||||
settings.data = Datele Jocului
|
settings.data = Datele Jocului
|
||||||
settings.reset = Resetează
|
settings.reset = Resetează
|
||||||
@@ -650,9 +666,10 @@ block.unknown = [lightgray]???
|
|||||||
stat.description = Utilizare
|
stat.description = Utilizare
|
||||||
stat.input = Necesită
|
stat.input = Necesită
|
||||||
stat.output = Produce
|
stat.output = Produce
|
||||||
|
stat.opposites = Opuși
|
||||||
stat.booster = Îmbunătățiri
|
stat.booster = Îmbunătățiri
|
||||||
stat.tiles = Teren Necesar
|
stat.tiles = Teren Necesar
|
||||||
stat.affinities = Efecte Teren
|
stat.affinities = Afinități
|
||||||
stat.powercapacity = Capacitate electrică
|
stat.powercapacity = Capacitate electrică
|
||||||
stat.powershot = Electricitate/Glonț
|
stat.powershot = Electricitate/Glonț
|
||||||
stat.damage = Forță
|
stat.damage = Forță
|
||||||
@@ -714,12 +731,18 @@ stat.abilities = Abilități
|
|||||||
stat.canboost = Are Propulsor
|
stat.canboost = Are Propulsor
|
||||||
stat.flying = Zboară
|
stat.flying = Zboară
|
||||||
stat.ammouse = Consum muniție
|
stat.ammouse = Consum muniție
|
||||||
|
stat.damagemultiplier = Multiplicator Forță
|
||||||
|
stat.healthmultiplier = Multiplicator Viață
|
||||||
|
stat.speedmultiplier = Multiplicator Viteză
|
||||||
|
stat.reloadmultiplier = Multiplicator Lovituri/sec
|
||||||
|
stat.buildspeedmultiplier = Multiplicator Viteză Construcție
|
||||||
|
stat.reactive = Reacționează la
|
||||||
|
|
||||||
ability.forcefield = Câmp de Forță
|
ability.forcefield = Câmp de Forță
|
||||||
ability.repairfield = Câmp de Reparare
|
ability.repairfield = Câmp de Reparare
|
||||||
ability.statusfield = Câmp Suprasolicitare Unități
|
ability.statusfield = Câmp Suprasolicitare Unități
|
||||||
ability.unitspawn = Fabrică de {0}
|
ability.unitspawn = Fabrică de {0}
|
||||||
ability.shieldregenfield = Scurt Regenerabil
|
ability.shieldregenfield = Scut Regenerabil
|
||||||
ability.movelightning = Mișcare Fulger
|
ability.movelightning = Mișcare Fulger
|
||||||
|
|
||||||
bar.drilltierreq = Burghiu Mai Bun Necesar
|
bar.drilltierreq = Burghiu Mai Bun Necesar
|
||||||
@@ -747,19 +770,16 @@ bar.output = Produce
|
|||||||
units.processorcontrol = [lightgray]Controlat de Procesor
|
units.processorcontrol = [lightgray]Controlat de Procesor
|
||||||
|
|
||||||
bullet.damage = [stat]{0}[lightgray] forță
|
bullet.damage = [stat]{0}[lightgray] forță
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] forță explozivă ~[stat] {1}[lightgray] pătrate
|
bullet.splashdamage = [stat]{0}[lightgray] forță pe raza ~[stat] {1}[lightgray] pătrate
|
||||||
bullet.incendiary = [stat]incendiar
|
bullet.incendiary = [stat]incendiar
|
||||||
bullet.sapping = [stat]atragere inamici
|
|
||||||
bullet.homing = [stat]cu radar
|
bullet.homing = [stat]cu radar
|
||||||
bullet.shock = [stat]șoc
|
bullet.frag = [stat]se sparge
|
||||||
bullet.frag = [stat]fragil
|
bullet.lightning = [stat]{0}[lightgray]x fulgere ~ [stat]{1}[lightgray] forță
|
||||||
bullet.buildingdamage = [stat]{0}%[lightgray] forță/clădire
|
bullet.buildingdamage = [stat]{0}%[lightgray] forță/clădire
|
||||||
bullet.knockback = [stat]{0} [lightgray]împingere
|
bullet.knockback = [stat]{0} [lightgray]împingere
|
||||||
bullet.pierce = [stat]{0}[lightgray]x penetrare
|
bullet.pierce = [stat]{0}[lightgray]x penetrează
|
||||||
bullet.infinitepierce = [stat]penetrare
|
bullet.infinitepierce = [stat]penetrează
|
||||||
bullet.healpercent = [stat]{0}[lightgray]% reparare
|
bullet.healpercent = [stat]{0}[lightgray]% reparare
|
||||||
bullet.freezing = [stat]înghețat
|
|
||||||
bullet.tarred = [stat]lipicios
|
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x multiplicator muniție
|
bullet.multiplier = [stat]{0}[lightgray]x multiplicator muniție
|
||||||
bullet.reload = [stat]{0}[lightgray]x lovituri
|
bullet.reload = [stat]{0}[lightgray]x lovituri
|
||||||
|
|
||||||
@@ -800,6 +820,8 @@ setting.logichints.name = Indicii Procesoare Logice
|
|||||||
setting.flow.name = Afișează Rata de Curgere a lichidelor
|
setting.flow.name = Afișează Rata de Curgere a lichidelor
|
||||||
setting.buildautopause.name = Autopauză de la Construit
|
setting.buildautopause.name = Autopauză de la Construit
|
||||||
setting.backgroundpause.name = Pune Pauză în Fundal
|
setting.backgroundpause.name = Pune Pauză în Fundal
|
||||||
|
setting.doubletapmine.name = Dublu-Click pt a Mina
|
||||||
|
setting.modcrashdisable.name = Dezactivează Modurile în Cazul unui Crash la Pornire
|
||||||
setting.animatedwater.name = Suprafețe Animate
|
setting.animatedwater.name = Suprafețe Animate
|
||||||
setting.animatedshields.name = Scuturi Animate
|
setting.animatedshields.name = Scuturi Animate
|
||||||
setting.antialias.name = Antialiasing[lightgray] (necesită repornire)[]
|
setting.antialias.name = Antialiasing[lightgray] (necesită repornire)[]
|
||||||
@@ -919,6 +941,7 @@ keybind.pause_building.name = Pauză/Reia Construit
|
|||||||
keybind.minimap.name = Minihartă
|
keybind.minimap.name = Minihartă
|
||||||
keybind.planet_map.name = Harta Planetei
|
keybind.planet_map.name = Harta Planetei
|
||||||
keybind.research.name = Cercetare
|
keybind.research.name = Cercetare
|
||||||
|
keybind.block_info.name = Informațiile Blocului
|
||||||
keybind.chat.name = Chat
|
keybind.chat.name = Chat
|
||||||
keybind.player_list.name = Listă Jucători
|
keybind.player_list.name = Listă Jucători
|
||||||
keybind.console.name = Consolă
|
keybind.console.name = Consolă
|
||||||
@@ -987,6 +1010,7 @@ content.item.name = Materiale
|
|||||||
content.liquid.name = Lichide
|
content.liquid.name = Lichide
|
||||||
content.unit.name = Unități
|
content.unit.name = Unități
|
||||||
content.block.name = Blocuri
|
content.block.name = Blocuri
|
||||||
|
content.status.name = Efecte de Status
|
||||||
content.sector.name = Sectoare
|
content.sector.name = Sectoare
|
||||||
|
|
||||||
item.copper.name = Cupru
|
item.copper.name = Cupru
|
||||||
@@ -1039,7 +1063,7 @@ unit.omura.name = Omura
|
|||||||
unit.alpha.name = Alpha
|
unit.alpha.name = Alpha
|
||||||
unit.beta.name = Beta
|
unit.beta.name = Beta
|
||||||
unit.gamma.name = Gamma
|
unit.gamma.name = Gamma
|
||||||
unit.scepter.name = Septer
|
unit.scepter.name = Scepter
|
||||||
unit.reign.name = Reign
|
unit.reign.name = Reign
|
||||||
unit.vela.name = Vela
|
unit.vela.name = Vela
|
||||||
unit.corvus.name = Corvus
|
unit.corvus.name = Corvus
|
||||||
@@ -1228,7 +1252,7 @@ block.overdrive-projector.name = Proiector de Suprasolicitare
|
|||||||
block.force-projector.name = Proiector de Forță
|
block.force-projector.name = Proiector de Forță
|
||||||
block.arc.name = Arc
|
block.arc.name = Arc
|
||||||
block.rtg-generator.name = Generator RTG
|
block.rtg-generator.name = Generator RTG
|
||||||
block.spectre.name = Specter
|
block.spectre.name = Spectre
|
||||||
block.meltdown.name = Meltdown
|
block.meltdown.name = Meltdown
|
||||||
block.foreshadow.name = Foreshadow
|
block.foreshadow.name = Foreshadow
|
||||||
block.container.name = Container
|
block.container.name = Container
|
||||||
@@ -1335,7 +1359,7 @@ item.pyratite.description = Folosită în armele incendiare și generatoarele pe
|
|||||||
|
|
||||||
liquid.water.description = Folosită pt răcirea mașinăriilor și procesarea deșeurilor.
|
liquid.water.description = Folosită pt răcirea mașinăriilor și procesarea deșeurilor.
|
||||||
liquid.slag.description = Rafinată în separatoare înapoi în materialele constituente, sau pulverizată înspre unitățile inamice ca armă.
|
liquid.slag.description = Rafinată în separatoare înapoi în materialele constituente, sau pulverizată înspre unitățile inamice ca armă.
|
||||||
liquid.oil.description = Folosit în producerea avansată de materialet și ca muniție incendiară.
|
liquid.oil.description = Folosit în producerea avansată de materiale și ca muniție incendiară.
|
||||||
liquid.cryofluid.description = Folosit ca răcitor în reactoare, arme și fabrici.
|
liquid.cryofluid.description = Folosit ca răcitor în reactoare, arme și fabrici.
|
||||||
|
|
||||||
block.resupply-point.description = Realimentează unitățile din apropiere cu muniție de cupru. Nu este compatibil cu unitățile care se încarcă din baterii.
|
block.resupply-point.description = Realimentează unitățile din apropiere cu muniție de cupru. Nu este compatibil cu unitățile care se încarcă din baterii.
|
||||||
@@ -1455,7 +1479,7 @@ block.ripple.description = Lovește cu capsule către inamici pe distanțe mari.
|
|||||||
block.cyclone.description = Trage cu grămezi explozive de material către unitățile inamice din apropiere.
|
block.cyclone.description = Trage cu grămezi explozive de material către unitățile inamice din apropiere.
|
||||||
block.spectre.description = Trage cu gloanțe mari care penetrează scuturile inamicilor din apropiere.
|
block.spectre.description = Trage cu gloanțe mari care penetrează scuturile inamicilor din apropiere.
|
||||||
block.meltdown.description = Se încarcă și trage cu un laser continuu la inamicii din apropiere. Necesită răcitor pt a opera.
|
block.meltdown.description = Se încarcă și trage cu un laser continuu la inamicii din apropiere. Necesită răcitor pt a opera.
|
||||||
block.foreshadow.description = Trage către o țintă cu un glonț imens pe distanțe lungi.
|
block.foreshadow.description = Trage către o țintă cu un glonț imens pe distanțe lungi. Inamicii cu mai multă viață au prioritate.
|
||||||
block.repair-point.description = Repară încontinuu cea mai deteriorată unitate din vecinătate.
|
block.repair-point.description = Repară încontinuu cea mai deteriorată unitate din vecinătate.
|
||||||
block.segment.description = Deteriorează și distruge proiectilele din apropiere. Laserele nu sunt afectate.
|
block.segment.description = Deteriorează și distruge proiectilele din apropiere. Laserele nu sunt afectate.
|
||||||
block.parallax.description = Trage cu o rază tractoare care atrage aeronavele inamice, deteriorându-le.
|
block.parallax.description = Trage cu o rază tractoare care atrage aeronavele inamice, deteriorându-le.
|
||||||
@@ -1495,8 +1519,8 @@ unit.vela.description = Trage cu un laser masiv, continuu, inflamabil care deter
|
|||||||
unit.corvus.description = Trage cu e explozie masivă de lasere care deteriorează inamicii și repară structurile aliate. Poate merge peste majoritatea terenurilor.
|
unit.corvus.description = Trage cu e explozie masivă de lasere care deteriorează inamicii și repară structurile aliate. Poate merge peste majoritatea terenurilor.
|
||||||
unit.crawler.description = Aleargă către inamici și se autodistruge, cauzând o explozie.
|
unit.crawler.description = Aleargă către inamici și se autodistruge, cauzând o explozie.
|
||||||
unit.atrax.description = Trage cu globuri de zgură care slăbesc artileria inamică. Poate merge peste majoritatea terenurilor.
|
unit.atrax.description = Trage cu globuri de zgură care slăbesc artileria inamică. Poate merge peste majoritatea terenurilor.
|
||||||
unit.spiroct.description = Trage cu lasere care apropie inamicii, autoreparându-se în acest proces. Poate merge peste majoritatea terenurilor.
|
unit.spiroct.description = Trage cu lasere care apropie și slăbesc inamicii, autoreparându-se în acest proces. Poate merge peste majoritatea terenurilor.
|
||||||
unit.arkyid.description = Trage cu lasere mari care apropie inamicii, autoreparându-se în acest proces. Poate merge peste majoritatea terenurilor.
|
unit.arkyid.description = Trage cu lasere mari care apropie și slăbesc inamicii, autoreparându-se în acest proces. Poate merge peste majoritatea terenurilor.
|
||||||
unit.toxopid.description = Trage cu capsule electrice mari și lasere care penetrează scuturile inamice. Poate merge peste majoritatea terenurilor.
|
unit.toxopid.description = Trage cu capsule electrice mari și lasere care penetrează scuturile inamice. Poate merge peste majoritatea terenurilor.
|
||||||
unit.flare.description = Trage cu gloanțe standard la artileria inamică din apropiere.
|
unit.flare.description = Trage cu gloanțe standard la artileria inamică din apropiere.
|
||||||
unit.horizon.description = Aruncă grămezi de bombe peste artileria inamică.
|
unit.horizon.description = Aruncă grămezi de bombe peste artileria inamică.
|
||||||
@@ -1536,12 +1560,30 @@ lst.unitcontrol = Controlează unitatea controlată de procesor.
|
|||||||
lst.unitradar = Localizează unitățile din jurul unității controlate de procesor.
|
lst.unitradar = Localizează unitățile din jurul unității controlate de procesor.
|
||||||
lst.unitlocate = Localizează o poziție/clădire specifică oriunde pe hartă.\nNecesită o unitate controlată de procesor.
|
lst.unitlocate = Localizează o poziție/clădire specifică oriunde pe hartă.\nNecesită o unitate controlată de procesor.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Nu ai voie să construiești cu unitățile folosind procesoare.
|
||||||
|
|
||||||
lenum.type = Tipul clădirii/unității.\nde ex.: pt orice Router, va returna [accent]@router[].\nNu e un șir de caractere.
|
lenum.type = Tipul clădirii/unității.\nde ex.: pt orice Router, va returna [accent]@router[].\nNu e un șir de caractere.
|
||||||
lenum.shoot = Lovește către o locație.
|
lenum.shoot = Lovește către o locație.
|
||||||
lenum.shootp = Lovește către o unitate/clădire. Anticipează viteza țintei și a proiectilului.
|
lenum.shootp = Lovește către o unitate/clădire. Anticipează viteza țintei și a proiectilului.
|
||||||
lenum.configure = Configurașia clădirii, de ex. materialul selectat pt Sortator.
|
lenum.configure = Configurația clădirii, de ex. materialul selectat pt Sortator.
|
||||||
lenum.enabled = Specifică dacă clădirea este pornită.
|
lenum.enabled = Specifică dacă clădirea este pornită.
|
||||||
lenum.color = Culoarea Iluminatorului.
|
|
||||||
|
laccess.color = Culoarea iluminatorului.
|
||||||
|
laccess.controller = Controlorul unității. Dacă e controlată de procesor, returnează procesorul.\nDacă e într-o formație, returnează liderul.\nAltfel, returnează unitatea însăși.
|
||||||
|
laccess.dead = Specifică dacă o unitate sau clădire a murit/nu mai e validă.
|
||||||
|
laccess.controlled = Returnează:\n[accent]@ctrlProcessor[] dacă controlorul unității e procesor\n[accent]@ctrlPlayer[] dacă controlorul unității/clădirii e jucător\n[accent]@ctrlFormation[] dacă unitatea e într-o formație\nAltfel dă 0.
|
||||||
|
laccess.commanded = [red]Învechit. Se va șterge![]\nFolosește [accent]controlled[].
|
||||||
|
|
||||||
|
graphicstype.clear = Umple monitorul cu o culoare.
|
||||||
|
graphicstype.color = Setează culoarea pt următoarele instrucțiuni Draw.
|
||||||
|
graphicstype.stroke = Setează grosimea liniei.
|
||||||
|
graphicstype.line = Desenează un segment de linie.
|
||||||
|
graphicstype.rect = Desenează un dreptunghi.
|
||||||
|
graphicstype.linerect = Desenează conturul unui dreptunghi.
|
||||||
|
graphicstype.poly = Desenează un poligon regulat.
|
||||||
|
graphicstype.linepoly = Desenează conturul unui poligon regulat.
|
||||||
|
graphicstype.triangle = Desenează un triunghi.
|
||||||
|
graphicstype.image = Desenează imaginea unui obiect din joc.\nde ex.: [accent]@router[] sau [accent]@dagger[].
|
||||||
|
|
||||||
lenum.always = Mereu adevărat.
|
lenum.always = Mereu adevărat.
|
||||||
lenum.idiv = Împărțirea naturală a numerelor (int).
|
lenum.idiv = Împărțirea naturală a numerelor (int).
|
||||||
@@ -1566,7 +1608,7 @@ lenum.sin = Sinus în grade.
|
|||||||
lenum.cos = Cosinus în grade.
|
lenum.cos = Cosinus în grade.
|
||||||
lenum.tan = Tangentă în grade.
|
lenum.tan = Tangentă în grade.
|
||||||
#cea de mai jos nu-i o greșeală, caută pe net notarea intervalelor în matematică
|
#cea de mai jos nu-i o greșeală, caută pe net notarea intervalelor în matematică
|
||||||
lenum.rand = Număr aleatoriu în intervalul [0, val).
|
lenum.rand = Număr natural aleatoriu în intervalul [0, val).
|
||||||
lenum.log = Logaritm natural (ln).
|
lenum.log = Logaritm natural (ln).
|
||||||
lenum.log10 = Logaritm în baza 10.
|
lenum.log10 = Logaritm în baza 10.
|
||||||
lenum.noise = 2D simplex noise.
|
lenum.noise = 2D simplex noise.
|
||||||
@@ -1624,6 +1666,7 @@ unitlocate.outx = Coordonata X a obiectului detectat.
|
|||||||
unitlocate.outy = Coordonata Y a obiectului detectat.
|
unitlocate.outy = Coordonata Y a obiectului detectat.
|
||||||
unitlocate.group = Grupul clădirilor de detectat.
|
unitlocate.group = Grupul clădirilor de detectat.
|
||||||
|
|
||||||
|
lenum.idle = Nu mișca, dar continuă să construiești/minezi.\nModul prestabilit.
|
||||||
lenum.stop = Oprește acțiunea curentă. Nu mișca/mina/construi.
|
lenum.stop = Oprește acțiunea curentă. Nu mișca/mina/construi.
|
||||||
lenum.move = Mergi la această poziție.
|
lenum.move = Mergi la această poziție.
|
||||||
lenum.approach = Apropie-te la o anumită distanță de poziție.
|
lenum.approach = Apropie-te la o anumită distanță de poziție.
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ committingchanges = Внесение изменений
|
|||||||
done = Готово
|
done = Готово
|
||||||
feature.unsupported = Ваше устройство не поддерживает эту возможность.
|
feature.unsupported = Ваше устройство не поддерживает эту возможность.
|
||||||
|
|
||||||
mods.alphainfo = Имейте в виду, что модификации находятся в альфа-версии и [scarlet]могут содержать много ошибок[]. Докладывайте о любых проблемах, которые вы найдете в Mindustry Github.
|
mods.initfailed = [red]⚠[] Не удалось инициализировать предыдущий запуск Mindustry. Это могло быть вызвано неисправными модификациями.\n\nЧтобы предотвратить зацикленные вылеты игры, [red]все модификации были отключены.[]\n\nЧтобы отключить эту функцию, выключите её в [accent]Настройки->Игра->Отключение модификаций после вылета при запуске[].
|
||||||
mods = Модификации
|
mods = Модификации
|
||||||
mods.none = [lightgray]Модификации не найдены!
|
mods.none = [lightgray]Модификации не найдены!
|
||||||
mods.guide = Руководство по модификациям
|
mods.guide = Руководство по модификациям
|
||||||
@@ -126,6 +126,7 @@ mod.installed = [[Установлено]
|
|||||||
mod.display = [gray]Модификация:[orange] {0}
|
mod.display = [gray]Модификация:[orange] {0}
|
||||||
mod.enabled = [lightgray]Включён
|
mod.enabled = [lightgray]Включён
|
||||||
mod.disabled = [scarlet]Выключен
|
mod.disabled = [scarlet]Выключен
|
||||||
|
mod.multiplayer.compatible = [gray]Доступна в игре по сети
|
||||||
mod.disable = Выкл.
|
mod.disable = Выкл.
|
||||||
mod.content = Содержимое:
|
mod.content = Содержимое:
|
||||||
mod.delete.error = Невозможно удалить модификацию. Возможно, файл используется.
|
mod.delete.error = Невозможно удалить модификацию. Возможно, файл используется.
|
||||||
@@ -217,6 +218,8 @@ 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.times.joined = Присоединялся раз: [accent]{0}
|
||||||
|
trace.times.kicked = Был выгнан раз: [accent]{0}
|
||||||
trace.mobile = Мобильный клиент: [accent]{0}
|
trace.mobile = Мобильный клиент: [accent]{0}
|
||||||
trace.modclient = Пользовательский клиент: [accent]{0}
|
trace.modclient = Пользовательский клиент: [accent]{0}
|
||||||
invalidid = Недопустимый ID клиента! Отправьте отчёт об ошибке.
|
invalidid = Недопустимый ID клиента! Отправьте отчёт об ошибке.
|
||||||
@@ -385,7 +388,7 @@ waves.none = Враги не были определены.\nОбратите в
|
|||||||
#these are intentionally in lower case
|
#these are intentionally in lower case
|
||||||
wavemode.counts = количество единиц
|
wavemode.counts = количество единиц
|
||||||
wavemode.totals = всего единиц
|
wavemode.totals = всего единиц
|
||||||
wavemode.health = всего здоровья
|
wavemode.health = всего прочности
|
||||||
|
|
||||||
editor.default = [lightgray]<По умолчанию>
|
editor.default = [lightgray]<По умолчанию>
|
||||||
details = Подробности…
|
details = Подробности…
|
||||||
@@ -527,7 +530,7 @@ launch.from = Запуск из: [accent]{0}
|
|||||||
launch.destination = Место назначения: {0}
|
launch.destination = Место назначения: {0}
|
||||||
configure.invalid = Количество должно быть числом между 0 и {0}.
|
configure.invalid = Количество должно быть числом между 0 и {0}.
|
||||||
add = Добавить…
|
add = Добавить…
|
||||||
boss.health = Здоровье стража
|
boss.health = Прочность стража
|
||||||
|
|
||||||
connectfail = [scarlet]Ошибка подключения:\n\n[accent]{0}
|
connectfail = [scarlet]Ошибка подключения:\n\n[accent]{0}
|
||||||
error.unreachable = Сервер недоступен.\nВы уверены, что адрес введён корректно?
|
error.unreachable = Сервер недоступен.\nВы уверены, что адрес введён корректно?
|
||||||
@@ -617,6 +620,19 @@ sector.extractionOutpost.description = Отдаленный аванпост, п
|
|||||||
sector.impact0078.description = Здесь лежат остатки межзвездного транспортного судна, первым вошедшего в эту систему.\n\nИзвлеките как можно больше из обломков. Изучите любую уцелевшую технологию.
|
sector.impact0078.description = Здесь лежат остатки межзвездного транспортного судна, первым вошедшего в эту систему.\n\nИзвлеките как можно больше из обломков. Изучите любую уцелевшую технологию.
|
||||||
sector.planetaryTerminal.description = Конечная цель.\n\nЭта береговая база содержит сооружение, способное запускать ядра к окрестным планетам. Оно крайне хорошо охраняется.\n\nПроизведите морские единицы. Уничтожьте врага как можно скорее. Изучите пусковую конструкцию.
|
sector.planetaryTerminal.description = Конечная цель.\n\nЭта береговая база содержит сооружение, способное запускать ядра к окрестным планетам. Оно крайне хорошо охраняется.\n\nПроизведите морские единицы. Уничтожьте врага как можно скорее. Изучите пусковую конструкцию.
|
||||||
|
|
||||||
|
status.burning.name = Горит
|
||||||
|
status.freezing.name = Замерзает
|
||||||
|
status.wet.name = Влажный
|
||||||
|
status.muddy.name = В грязи
|
||||||
|
status.melting.name = Плавится
|
||||||
|
status.sapped.name = Истощён
|
||||||
|
status.spore-slowed.name = Замедлен спорами
|
||||||
|
status.tarred.name = Покрыт нефтью
|
||||||
|
status.overclock.name = Ускорен
|
||||||
|
status.shocked.name = Шокирован
|
||||||
|
status.blasted.name = Подорван
|
||||||
|
status.unmoving.name = Неподвижен
|
||||||
|
|
||||||
settings.language = Язык
|
settings.language = Язык
|
||||||
settings.data = Игровые данные
|
settings.data = Игровые данные
|
||||||
settings.reset = Сбросить по умолчанию
|
settings.reset = Сбросить по умолчанию
|
||||||
@@ -653,6 +669,7 @@ stat.output = Выход
|
|||||||
stat.booster = Ускоритель
|
stat.booster = Ускоритель
|
||||||
stat.tiles = Необходимые плитки
|
stat.tiles = Необходимые плитки
|
||||||
stat.affinities = Увеличение эффективности
|
stat.affinities = Увеличение эффективности
|
||||||
|
stat.opposites = Уменьшение эффективности
|
||||||
stat.powercapacity = Вместимость энергии
|
stat.powercapacity = Вместимость энергии
|
||||||
stat.powershot = Энергия/выстрел
|
stat.powershot = Энергия/выстрел
|
||||||
stat.damage = Урон
|
stat.damage = Урон
|
||||||
@@ -714,6 +731,12 @@ stat.abilities = Способности
|
|||||||
stat.canboost = Может взлететь
|
stat.canboost = Может взлететь
|
||||||
stat.flying = Летающий
|
stat.flying = Летающий
|
||||||
stat.ammouse = Использование боеприпасов
|
stat.ammouse = Использование боеприпасов
|
||||||
|
stat.damagemultiplier = Множитель урона
|
||||||
|
stat.healthmultiplier = Множитель прочности
|
||||||
|
stat.speedmultiplier = Множитель скорости
|
||||||
|
stat.reloadmultiplier = Множитель перезарядки
|
||||||
|
stat.buildspeedmultiplier = Множитель скорости строительства
|
||||||
|
stat.reactive = Реактивен
|
||||||
|
|
||||||
ability.forcefield = Силовое поле
|
ability.forcefield = Силовое поле
|
||||||
ability.repairfield = Ремонтирующее поле
|
ability.repairfield = Ремонтирующее поле
|
||||||
@@ -749,17 +772,14 @@ units.processorcontrol = [lightgray]Управляется процессоро
|
|||||||
bullet.damage = [stat]{0}[lightgray] урона
|
bullet.damage = [stat]{0}[lightgray] урона
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] урона в радиусе ~[stat] {1}[lightgray] блоков
|
bullet.splashdamage = [stat]{0}[lightgray] урона в радиусе ~[stat] {1}[lightgray] блоков
|
||||||
bullet.incendiary = [stat]зажигательный
|
bullet.incendiary = [stat]зажигательный
|
||||||
bullet.sapping = [stat]истощающий
|
|
||||||
bullet.homing = [stat]самонаводящийся
|
bullet.homing = [stat]самонаводящийся
|
||||||
bullet.shock = [stat]шоковый
|
|
||||||
bullet.frag = [stat]осколочный
|
bullet.frag = [stat]осколочный
|
||||||
|
bullet.lightning = [stat]{0}[lightgray]x молнии ~[stat]{1}[lightgray] урона
|
||||||
bullet.buildingdamage = [stat]{0}%[lightgray] урона по постройкам
|
bullet.buildingdamage = [stat]{0}%[lightgray] урона по постройкам
|
||||||
bullet.knockback = [stat]{0}[lightgray] отбрасывания
|
bullet.knockback = [stat]{0}[lightgray] отбрасывания
|
||||||
bullet.pierce = [stat]{0}[lightgray]x пробитие
|
bullet.pierce = [stat]{0}[lightgray]x пробитие
|
||||||
bullet.infinitepierce = [stat]бесконечное пробитие
|
bullet.infinitepierce = [stat]бесконечное пробитие
|
||||||
bullet.healpercent = [stat]{0}[lightgray]% лечения
|
bullet.healpercent = [stat]{0}[lightgray]% лечения
|
||||||
bullet.freezing = [stat]замораживающий
|
|
||||||
bullet.tarred = [stat]замедляющий, горючий
|
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x множитель боеприпасов
|
bullet.multiplier = [stat]{0}[lightgray]x множитель боеприпасов
|
||||||
bullet.reload = [stat]{0}[lightgray]x скорость стрельбы
|
bullet.reload = [stat]{0}[lightgray]x скорость стрельбы
|
||||||
|
|
||||||
@@ -771,8 +791,8 @@ unit.itemssecond = предметов/секунду
|
|||||||
unit.liquidunits = жидкостных единиц
|
unit.liquidunits = жидкостных единиц
|
||||||
unit.powerunits = энерг. единиц
|
unit.powerunits = энерг. единиц
|
||||||
unit.degrees = °
|
unit.degrees = °
|
||||||
unit.seconds = сек.
|
unit.seconds = сек
|
||||||
unit.minutes = мин.
|
unit.minutes = мин
|
||||||
unit.persecond = /сек
|
unit.persecond = /сек
|
||||||
unit.perminute = /мин
|
unit.perminute = /мин
|
||||||
unit.timesspeed = x скорость
|
unit.timesspeed = x скорость
|
||||||
@@ -800,6 +820,8 @@ setting.logichints.name = Подсказки для логики
|
|||||||
setting.flow.name = Показывать скорость потока ресурсов
|
setting.flow.name = Показывать скорость потока ресурсов
|
||||||
setting.backgroundpause.name = Фоновая пауза
|
setting.backgroundpause.name = Фоновая пауза
|
||||||
setting.buildautopause.name = Автоматическая приостановка строительства
|
setting.buildautopause.name = Автоматическая приостановка строительства
|
||||||
|
setting.doubletapmine.name = Добыча руды двойным нажатием
|
||||||
|
setting.modcrashdisable.name = Отключение модификаций после вылета при запуске
|
||||||
setting.animatedwater.name = Анимированные поверхности
|
setting.animatedwater.name = Анимированные поверхности
|
||||||
setting.animatedshields.name = Анимированные щиты
|
setting.animatedshields.name = Анимированные щиты
|
||||||
setting.antialias.name = Сглаживание[lightgray] (требует перезапуска)[]
|
setting.antialias.name = Сглаживание[lightgray] (требует перезапуска)[]
|
||||||
@@ -919,6 +941,7 @@ keybind.pause_building.name = Приостановить/возобновить
|
|||||||
keybind.minimap.name = Мини-карта
|
keybind.minimap.name = Мини-карта
|
||||||
keybind.planet_map.name = Карта планеты
|
keybind.planet_map.name = Карта планеты
|
||||||
keybind.research.name = Исследования
|
keybind.research.name = Исследования
|
||||||
|
keybind.block_info.name = Информация о блоке
|
||||||
keybind.chat.name = Чат
|
keybind.chat.name = Чат
|
||||||
keybind.player_list.name = Список игроков
|
keybind.player_list.name = Список игроков
|
||||||
keybind.console.name = Консоль
|
keybind.console.name = Консоль
|
||||||
@@ -952,11 +975,13 @@ rules.waves = Волны
|
|||||||
rules.attack = Режим атаки
|
rules.attack = Режим атаки
|
||||||
rules.buildai = Строительство ИИ
|
rules.buildai = Строительство ИИ
|
||||||
rules.enemyCheat = Бесконечные ресурсы ИИ (красная команда)
|
rules.enemyCheat = Бесконечные ресурсы ИИ (красная команда)
|
||||||
rules.blockhealthmultiplier = Множитель здоровья блоков
|
rules.blockhealthmultiplier = Множитель прочности блоков
|
||||||
rules.blockdamagemultiplier = Множитель урона блоков
|
rules.blockdamagemultiplier = Множитель урона блоков
|
||||||
rules.unitbuildspeedmultiplier = Множитель скорости производства боев. ед.
|
rules.unitbuildspeedmultiplier = Множитель скорости производства боев. ед.
|
||||||
rules.unithealthmultiplier = Множитель здоровья боев. ед.
|
rules.unithealthmultiplier = Множитель прочности боев. ед.
|
||||||
rules.unitdamagemultiplier = Множитель урона боев. ед.
|
rules.unitdamagemultiplier = Множитель урона боев. ед.
|
||||||
|
rules.unitcapvariable = Ядра увеличивают лимит единиц
|
||||||
|
rules.unitcap = Начальный лимит единиц
|
||||||
rules.enemycorebuildradius = Радиус защиты враж. ядер:[lightgray] (блок.)
|
rules.enemycorebuildradius = Радиус защиты враж. ядер:[lightgray] (блок.)
|
||||||
rules.wavespacing = Интервал волн:[lightgray] (сек)
|
rules.wavespacing = Интервал волн:[lightgray] (сек)
|
||||||
rules.buildcostmultiplier = Множитель затрат на строительство
|
rules.buildcostmultiplier = Множитель затрат на строительство
|
||||||
@@ -985,6 +1010,7 @@ content.item.name = Предметы
|
|||||||
content.liquid.name = Жидкости
|
content.liquid.name = Жидкости
|
||||||
content.unit.name = Боевые единицы
|
content.unit.name = Боевые единицы
|
||||||
content.block.name = Блоки
|
content.block.name = Блоки
|
||||||
|
content.status.name = Эффекты статуса
|
||||||
content.sector.name = Секторы
|
content.sector.name = Секторы
|
||||||
|
|
||||||
item.copper.name = Медь
|
item.copper.name = Медь
|
||||||
@@ -1534,12 +1560,30 @@ lst.unitcontrol = Управляет привязанной в данный мо
|
|||||||
lst.unitradar = Обнаруживает единицы вокруг привязанной в данный момент единицы.
|
lst.unitradar = Обнаруживает единицы вокруг привязанной в данный момент единицы.
|
||||||
lst.unitlocate = Обнаруживает позицию/постройку определённого типа где-либо на карте. Требует привязанную единицу.
|
lst.unitlocate = Обнаруживает позицию/постройку определённого типа где-либо на карте. Требует привязанную единицу.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Строительство с помощью процессоров здесь запрещено.
|
||||||
|
|
||||||
lenum.type = Тип постройки/единицы. \nНапример, для маршрутизатора это будет [accent]@router[].\nНе строка.
|
lenum.type = Тип постройки/единицы. \nНапример, для маршрутизатора это будет [accent]@router[].\nНе строка.
|
||||||
lenum.shoot = Стрельба в определённую позицию.
|
lenum.shoot = Стрельба в определённую позицию.
|
||||||
lenum.shootp = Стрельба в единицу/постройку с расчётом скорости.
|
lenum.shootp = Стрельба в единицу/постройку с расчётом скорости.
|
||||||
lenum.configure = Конфигурация постройки, например, предмет сортировки.
|
lenum.configure = Конфигурация постройки, например, предмет сортировки.
|
||||||
lenum.enabled = Включён ли блок.
|
lenum.enabled = Включён ли блок.
|
||||||
lenum.color = Цвет осветителя.
|
|
||||||
|
laccess.color = Цвет осветителя.
|
||||||
|
laccess.controller = Командующий единицей. Если единица управляется процессором, возвращает процессор. Если в строю, возращает командуещего.\nВ противном случае возвращает саму единицу.
|
||||||
|
laccess.dead = Является ли единица/постройка неработающей или несуществующей.
|
||||||
|
laccess.controlled = Возвращает:\n[accent]@ctrlProcessor[] если единица управляется процессором\n[accent]@ctrlPlayer[] если единица/постройка управляется игроком\n[accent]@ctrlFormation[] если единица в строю\nВ противном случае — 0.
|
||||||
|
laccess.commanded = [red]Устарело. Будет удалено![]\nВместо этого, используйте [accent]controlled[].
|
||||||
|
|
||||||
|
graphicstype.clear = Заливка дисплея цветом.
|
||||||
|
graphicstype.color = Установка цвета для следующих операций отрисовки.
|
||||||
|
graphicstype.stroke = Установка толщины линии.
|
||||||
|
graphicstype.line = Отрисовка отрезка.
|
||||||
|
graphicstype.rect = Отрисовка закрашенного прямоугольника.
|
||||||
|
graphicstype.linerect = Отрисовка контура прямоугольника.
|
||||||
|
graphicstype.poly = Отрисовка закрашенного правильного многоугольника.
|
||||||
|
graphicstype.linepoly = Отрисовка контура правильного многоугольника.
|
||||||
|
graphicstype.triangle = Отрисовка закрашенного треугольника.
|
||||||
|
graphicstype.image = Отрисовка внутриигровых спрайтов.\nНапример: [accent]@router[] или [accent]@dagger[].
|
||||||
|
|
||||||
lenum.always = Всегда истина.
|
lenum.always = Всегда истина.
|
||||||
lenum.idiv = Целочисленное деление.
|
lenum.idiv = Целочисленное деление.
|
||||||
@@ -1622,7 +1666,8 @@ unitlocate.outx = Вывод X координаты.
|
|||||||
unitlocate.outy = Вывод Y координаты.
|
unitlocate.outy = Вывод Y координаты.
|
||||||
unitlocate.group = Группа построек для поиска.
|
unitlocate.group = Группа построек для поиска.
|
||||||
|
|
||||||
lenum.stop = Остановка передвижения/копания/стротельства.
|
lenum.idle = Остановка движения, но продолжение строительства/копания.\nСостояние по умолчанию.
|
||||||
|
lenum.stop = Остановка передвижения/копания/строительства.
|
||||||
lenum.move = Перемещение в определённую позицию.
|
lenum.move = Перемещение в определённую позицию.
|
||||||
lenum.approach = Приближение к позиции с указанным радиусом.
|
lenum.approach = Приближение к позиции с указанным радиусом.
|
||||||
lenum.pathfind = Перемещение к точке появления врагов.
|
lenum.pathfind = Перемещение к точке появления врагов.
|
||||||
|
|||||||
@@ -57,9 +57,10 @@ schematic.info = {0}x{1}, блоків: {2}
|
|||||||
schematic.disabled = [scarlet]Схеми вимкнені[]\nВам не дозволяється використовувати схеми на цій [accent]мапі[] чи [accent]сервері.
|
schematic.disabled = [scarlet]Схеми вимкнені[]\nВам не дозволяється використовувати схеми на цій [accent]мапі[] чи [accent]сервері.
|
||||||
|
|
||||||
mod.featured.title = Переглядач модифікацій
|
mod.featured.title = Переглядач модифікацій
|
||||||
mod.featured.dialog.title = Переглядач модифікацій
|
mods.browser = Переглядач модифікацій
|
||||||
mods.browser.selected = Обрана модифікація
|
mods.browser.selected = Обрана модифікація
|
||||||
mods.browser.add = Установити
|
mods.browser.add = Установити
|
||||||
|
mods.browser.reinstall = Перевстановити
|
||||||
mods.github.open = Відкрити
|
mods.github.open = Відкрити
|
||||||
mods.browser.sortdate = Сортувати за давністю
|
mods.browser.sortdate = Сортувати за давністю
|
||||||
mods.browser.sortstars = Сортувати за кількостю зірок
|
mods.browser.sortstars = Сортувати за кількостю зірок
|
||||||
@@ -107,17 +108,20 @@ uploadingpreviewfile = Вивантаження файлу попередньо
|
|||||||
committingchanges = Здійснення змін
|
committingchanges = Здійснення змін
|
||||||
done = Зроблено
|
done = Зроблено
|
||||||
feature.unsupported = Ваш пристрій не підтримує цю функцію
|
feature.unsupported = Ваш пристрій не підтримує цю функцію
|
||||||
mods.alphainfo = Майте на увазі, що модифікації перебувають в альфі, і [scarlet]можуть бути дуже несправними[].\nПовідомте про будь-які проблеми, які ви знайдете до Mindustry Github або Discord.
|
mods.initfailed = [red]⚠[] Попереднього разу не вдалося ініціалізувати Mindustry. Це, ймовірно, було спричинено неправильними поведінкою модифікацій.\n\nДля запобігання нескінченним аварійним циклам [red]треба вимкнути всі модифікації.[]\n\nДля вимкнення цієї функції перейдіть до [accent]Налаштування→Гра→Вимикати модифікації після аварійного запуску[].
|
||||||
mods = Модифікації
|
mods = Модифікації
|
||||||
mods.none = [lightgray]Модифікацій не знайдено!
|
mods.none = [lightgray]Модифікацій не знайдено!
|
||||||
mods.guide = Посібник із модифікацій
|
mods.guide = Посібник із модифікацій
|
||||||
mods.report = Повідомити про ваду
|
mods.report = Повідомити про ваду
|
||||||
mods.openfolder = Відкрити теку
|
mods.openfolder = Відкрити теку
|
||||||
|
mods.viewcontent = Подивитися вміст
|
||||||
mods.reload = Перезавантажити
|
mods.reload = Перезавантажити
|
||||||
mods.reloadexit = Гра зараз закриється, щоби перезавантажити модифікації
|
mods.reloadexit = Гра зараз закриється, щоби перезавантажити модифікації
|
||||||
|
mod.installed = [[Установлено]
|
||||||
mod.display = [gray]Модифікація:[orange] {0}
|
mod.display = [gray]Модифікація:[orange] {0}
|
||||||
mod.enabled = [lightgray]Увімкнено
|
mod.enabled = [lightgray]Увімкнено
|
||||||
mod.disabled = [scarlet]Вимкнено
|
mod.disabled = [scarlet]Вимкнено
|
||||||
|
mod.multiplayer.compatable = [gray]Доступна в мережевій грі
|
||||||
mod.disable = Вимкнути
|
mod.disable = Вимкнути
|
||||||
mod.content = Зміст:
|
mod.content = Зміст:
|
||||||
mod.delete.error = Неможливо видалити модифікацію. Файл, можливо, використовується.
|
mod.delete.error = Неможливо видалити модифікацію. Файл, можливо, використовується.
|
||||||
@@ -205,9 +209,11 @@ server.hidden = Приховано
|
|||||||
trace = Стежити за гравцем
|
trace = Стежити за гравцем
|
||||||
trace.playername = Ім’я гравця: [accent]{0}
|
trace.playername = Ім’я гравця: [accent]{0}
|
||||||
trace.ip = IP: [accent]{0}
|
trace.ip = IP: [accent]{0}
|
||||||
trace.id = Унікальний ідентифікатор: [accent]{0}
|
trace.id = Ідентифікатор: [accent]{0}
|
||||||
trace.mobile = Мобільний клієнт: [accent]{0}
|
trace.mobile = Мобільний клієнт: [accent]{0}
|
||||||
trace.modclient = Користувацький клієнт: [accent]{0}
|
trace.modclient = Користувацький клієнт: [accent]{0}
|
||||||
|
trace.times.joined = Кількість приєднань: [accent]{0}
|
||||||
|
trace.times.kicked = Кількість вигнань: [accent]{0}
|
||||||
invalidid = Невірний ідентифікатор клієнта! Надішліть звіт про помилку.
|
invalidid = Невірний ідентифікатор клієнта! Надішліть звіт про помилку.
|
||||||
server.bans = Блокування
|
server.bans = Блокування
|
||||||
server.bans.none = Заблокованих гравців немає!
|
server.bans.none = Заблокованих гравців немає!
|
||||||
@@ -297,10 +303,11 @@ loading = [accent]Завантаження…
|
|||||||
reloading = [accent]Перезавантаження модифікацій…
|
reloading = [accent]Перезавантаження модифікацій…
|
||||||
saving = [accent]Збереження…
|
saving = [accent]Збереження…
|
||||||
respawn = [accent][[{0}][], щоби відродитися в ядрі
|
respawn = [accent][[{0}][], щоби відродитися в ядрі
|
||||||
cancelbuilding = [accent][[{0}][], щоб очистити план
|
cancelbuilding = [accent][[{0}][] для очищення плану
|
||||||
selectschematic = [accent][[{0}][], щоби вибрати та скопіювати
|
selectschematic = [accent][[{0}][], щоби вибрати та скопіювати
|
||||||
pausebuilding = [accent][[{0}][], щоби призупинити будування
|
pausebuilding = [accent][[{0}][] для призупинення будування
|
||||||
resumebuilding = [scarlet][[{0}][], щоби продовжити будування
|
resumebuilding = [scarlet][[{0}][] для продовження будування
|
||||||
|
enablebuilding = [scarlet][[{0}][] для увімкнення будування
|
||||||
showui = Користувацький інтерфейс приховано.\nНатисніть [accent][[{0}][], щоби показати його знову.
|
showui = Користувацький інтерфейс приховано.\nНатисніть [accent][[{0}][], щоби показати його знову.
|
||||||
wave = [accent]Хвиля {0}
|
wave = [accent]Хвиля {0}
|
||||||
wave.cap = [accent]Хвиля {0}/{1}
|
wave.cap = [accent]Хвиля {0}/{1}
|
||||||
@@ -586,6 +593,20 @@ sector.windsweptIslands.description = Далі, за береговою ліні
|
|||||||
sector.extractionOutpost.description = Віддалений форпост, побудований ворогом для запуску ресурсів в інші сектори. \n\nМіжсекторна транспортна технологія має важливе значення для подальшого завоювання. Знищте базу. Дослідіть їхні пускові майданчики.
|
sector.extractionOutpost.description = Віддалений форпост, побудований ворогом для запуску ресурсів в інші сектори. \n\nМіжсекторна транспортна технологія має важливе значення для подальшого завоювання. Знищте базу. Дослідіть їхні пускові майданчики.
|
||||||
sector.impact0078.description = Тут лежать залишки міжзоряного транспортного судна, яке вперше потрапило в цю систему. \n\nВилучіть якомога більше корисного з уламків. Дослідіть будь-яку вцілілу технологію.
|
sector.impact0078.description = Тут лежать залишки міжзоряного транспортного судна, яке вперше потрапило в цю систему. \n\nВилучіть якомога більше корисного з уламків. Дослідіть будь-яку вцілілу технологію.
|
||||||
sector.planetaryTerminal.description = Кінцева мета.\n\nЦя прибережна база містить структуру, здатну запускати ядра на навколишні планети. Надзвичайно добре охороняється.\n\nВиробляє військово-морські підрозділи. Усуньте ворога якомога швидше. Дослідіть структуру запуску.
|
sector.planetaryTerminal.description = Кінцева мета.\n\nЦя прибережна база містить структуру, здатну запускати ядра на навколишні планети. Надзвичайно добре охороняється.\n\nВиробляє військово-морські підрозділи. Усуньте ворога якомога швидше. Дослідіть структуру запуску.
|
||||||
|
|
||||||
|
status.burning.name = Палає
|
||||||
|
status.freezing.name = Замерзає
|
||||||
|
status.wet.name = Вологий
|
||||||
|
status.muddy.name = Забризканий гряззю
|
||||||
|
status.melting.name = Плавиться
|
||||||
|
status.sapped.name = Виснажений
|
||||||
|
status.spore-slowed.name = Сповільнений спорами
|
||||||
|
status.tarred.name = Покритий нафтою
|
||||||
|
status.overclock.name = Прискорений
|
||||||
|
status.shocked.name = Шокований
|
||||||
|
status.blasted.name = Підірваний
|
||||||
|
status.unmoving.name = Незворушний
|
||||||
|
|
||||||
settings.language = Мова
|
settings.language = Мова
|
||||||
settings.data = Ігрові дані
|
settings.data = Ігрові дані
|
||||||
settings.reset = За замовчуванням
|
settings.reset = За замовчуванням
|
||||||
@@ -621,6 +642,7 @@ stat.output = Вивід
|
|||||||
stat.booster = Прискорювач
|
stat.booster = Прискорювач
|
||||||
stat.tiles = Необхідні плитки
|
stat.tiles = Необхідні плитки
|
||||||
stat.affinities = Збільшення ефективності
|
stat.affinities = Збільшення ефективності
|
||||||
|
stat.opposites = Зменшення ефективності
|
||||||
stat.powercapacity = Місткість енергії
|
stat.powercapacity = Місткість енергії
|
||||||
stat.powershot = Енергія за постріл
|
stat.powershot = Енергія за постріл
|
||||||
stat.damage = Шкода
|
stat.damage = Шкода
|
||||||
@@ -634,7 +656,7 @@ stat.displaysize = Розмір дисплею
|
|||||||
stat.liquidcapacity = Рідинна місткість
|
stat.liquidcapacity = Рідинна місткість
|
||||||
stat.powerrange = Радіус передачі енергії
|
stat.powerrange = Радіус передачі енергії
|
||||||
stat.linkrange = Радіус з’єднання
|
stat.linkrange = Радіус з’єднання
|
||||||
stat.instructions = Інструкції
|
stat.instructions = Операції
|
||||||
stat.powerconnections = Максимальна кількість з’єднань
|
stat.powerconnections = Максимальна кількість з’єднань
|
||||||
stat.poweruse = Енергії використовує
|
stat.poweruse = Енергії використовує
|
||||||
stat.powerdamage = Енергії за од. шкоди
|
stat.powerdamage = Енергії за од. шкоди
|
||||||
@@ -652,6 +674,7 @@ stat.drillspeed = Базова швидкість буріння
|
|||||||
stat.boosteffect = Прискорювальний ефект
|
stat.boosteffect = Прискорювальний ефект
|
||||||
stat.maxunits = Максимальна кількість активних одиниць
|
stat.maxunits = Максимальна кількість активних одиниць
|
||||||
stat.health = Здоров’я
|
stat.health = Здоров’я
|
||||||
|
stat.armor = Броня
|
||||||
stat.buildtime = Час будування
|
stat.buildtime = Час будування
|
||||||
stat.maxconsecutive = Максимальна послідовність
|
stat.maxconsecutive = Максимальна послідовність
|
||||||
stat.buildcost = Вартість будування
|
stat.buildcost = Вартість будування
|
||||||
@@ -667,6 +690,7 @@ stat.lightningchance = Шанс удару блискавки
|
|||||||
stat.lightningdamage = Шкода від удару блискавки
|
stat.lightningdamage = Шкода від удару блискавки
|
||||||
stat.flammability = Займистість
|
stat.flammability = Займистість
|
||||||
stat.radioactivity = Радіоактивність
|
stat.radioactivity = Радіоактивність
|
||||||
|
stat.charge = Заряд
|
||||||
stat.heatcapacity = Тепломісткість
|
stat.heatcapacity = Тепломісткість
|
||||||
stat.viscosity = В’язкість
|
stat.viscosity = В’язкість
|
||||||
stat.temperature = Температура
|
stat.temperature = Температура
|
||||||
@@ -680,6 +704,13 @@ stat.abilities = Здібності
|
|||||||
stat.canboost = Можна прискорити
|
stat.canboost = Можна прискорити
|
||||||
stat.flying = Літає
|
stat.flying = Літає
|
||||||
stat.ammouse = Патронів використовує
|
stat.ammouse = Патронів використовує
|
||||||
|
stat.damagemultiplier = Множник шкоди
|
||||||
|
stat.healthmultiplier = Множник здоров’я
|
||||||
|
stat.speedmultiplier = Множник швидкості
|
||||||
|
stat.reloadmultiplier = Множник перезарядки
|
||||||
|
stat.buildspeedmultiplier = Множник швидкості будування
|
||||||
|
stat.reactive = Реактивний
|
||||||
|
|
||||||
ability.forcefield = Щитове поле
|
ability.forcefield = Щитове поле
|
||||||
ability.repairfield = Ремонтувальне поле
|
ability.repairfield = Ремонтувальне поле
|
||||||
ability.statusfield = Поле підсилення
|
ability.statusfield = Поле підсилення
|
||||||
@@ -711,17 +742,14 @@ units.processorcontrol = [lightgray]Керується процесором
|
|||||||
bullet.damage = [stat]{0}[lightgray] шкода
|
bullet.damage = [stat]{0}[lightgray] шкода
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat] {1}[lightgray] плиток
|
bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat] {1}[lightgray] плиток
|
||||||
bullet.incendiary = [stat]запальний
|
bullet.incendiary = [stat]запальний
|
||||||
bullet.sapping = [stat]виснажує
|
|
||||||
bullet.homing = [stat]самонаведення
|
bullet.homing = [stat]самонаведення
|
||||||
bullet.shock = [stat]шок
|
|
||||||
bullet.frag = [stat]шкода по ділянці
|
bullet.frag = [stat]шкода по ділянці
|
||||||
|
bullet.lightning = [stat]{0}[lightgray]x блискавки ~[stat]{1}[lightgray] шкоди
|
||||||
bullet.buildingdamage = [stat]{0}%[lightgray] шкода по будівлям
|
bullet.buildingdamage = [stat]{0}%[lightgray] шкода по будівлям
|
||||||
bullet.knockback = [stat]{0}[lightgray] відкидання
|
bullet.knockback = [stat]{0}[lightgray] відкидання
|
||||||
bullet.pierce = [stat]{0}[lightgray]x пробиття
|
bullet.pierce = [stat]{0}[lightgray]x пробиття
|
||||||
bullet.infinitepierce = [stat]пробиття
|
bullet.infinitepierce = [stat]пробиття
|
||||||
bullet.healpercent = [stat]{0}[lightgray]% лікування
|
bullet.healpercent = [stat]{0}[lightgray]% лікування
|
||||||
bullet.freezing = [stat]заморожування
|
|
||||||
bullet.tarred = [stat]дьогтьовий
|
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x патронів
|
bullet.multiplier = [stat]{0}[lightgray]x патронів
|
||||||
bullet.reload = [stat]{0}[lightgray]x швидкість перезаряджання
|
bullet.reload = [stat]{0}[lightgray]x швидкість перезаряджання
|
||||||
unit.blocks = блоки
|
unit.blocks = блоки
|
||||||
@@ -760,6 +788,8 @@ setting.hints.name = Підказки
|
|||||||
setting.flow.name = Показувати темп швидкості ресурсів
|
setting.flow.name = Показувати темп швидкості ресурсів
|
||||||
setting.backgroundpause.name = Пауза в разі згортанні
|
setting.backgroundpause.name = Пауза в разі згортанні
|
||||||
setting.buildautopause.name = Автоматичне призупинення будування
|
setting.buildautopause.name = Автоматичне призупинення будування
|
||||||
|
setting.doubletapmine.name = Подвійне торкання для початку видобування
|
||||||
|
setting.modcrashdisable.name = Вимикати модифікації після аварійного запуску
|
||||||
setting.animatedwater.name = Анімаційні рідини
|
setting.animatedwater.name = Анімаційні рідини
|
||||||
setting.animatedshields.name = Анімаційні щити
|
setting.animatedshields.name = Анімаційні щити
|
||||||
setting.antialias.name = Згладжування[lightgray] (потребує перезапуску)[]
|
setting.antialias.name = Згладжування[lightgray] (потребує перезапуску)[]
|
||||||
@@ -915,6 +945,9 @@ rules.blockdamagemultiplier = Множник шкоди блоків
|
|||||||
rules.unitbuildspeedmultiplier = Множник швидкості виробництва бойових одиниць
|
rules.unitbuildspeedmultiplier = Множник швидкості виробництва бойових одиниць
|
||||||
rules.unithealthmultiplier = Множник здоров’я бойових одиниць
|
rules.unithealthmultiplier = Множник здоров’я бойових одиниць
|
||||||
rules.unitdamagemultiplier = Множник шкоди бойових одиниць
|
rules.unitdamagemultiplier = Множник шкоди бойових одиниць
|
||||||
|
rules.unitcapvariable = Ядра збільшують обмеження на кількість одиниць
|
||||||
|
rules.unitcap = Початкове обмеження одиниць
|
||||||
|
|
||||||
rules.enemycorebuildradius = Радіус оборони для ворожого ядра:[lightgray] (плитки)
|
rules.enemycorebuildradius = Радіус оборони для ворожого ядра:[lightgray] (плитки)
|
||||||
rules.wavespacing = Інтервал хвиль:[lightgray] (секунди)
|
rules.wavespacing = Інтервал хвиль:[lightgray] (секунди)
|
||||||
rules.buildcostmultiplier = Множник затрат на будування
|
rules.buildcostmultiplier = Множник затрат на будування
|
||||||
@@ -941,6 +974,7 @@ content.item.name = Предмети
|
|||||||
content.liquid.name = Рідини
|
content.liquid.name = Рідини
|
||||||
content.unit.name = Бойові одиниці
|
content.unit.name = Бойові одиниці
|
||||||
content.block.name = Блоки
|
content.block.name = Блоки
|
||||||
|
content.status.name = Ефекти стану
|
||||||
content.sector.name = Cектори
|
content.sector.name = Cектори
|
||||||
item.copper.name = Мідь
|
item.copper.name = Мідь
|
||||||
item.lead.name = Свинець
|
item.lead.name = Свинець
|
||||||
@@ -994,7 +1028,7 @@ unit.gamma.name = Гамма
|
|||||||
unit.scepter.name = Верховна влада
|
unit.scepter.name = Верховна влада
|
||||||
unit.reign.name = Верховний Порядок
|
unit.reign.name = Верховний Порядок
|
||||||
unit.vela.name = Пульсар Вітрил
|
unit.vela.name = Пульсар Вітрил
|
||||||
unit.corvus.name = Ворон
|
unit.corvus.name = Ґава
|
||||||
block.resupply-point.name = Пункт постачання
|
block.resupply-point.name = Пункт постачання
|
||||||
block.parallax.name = Паралакс
|
block.parallax.name = Паралакс
|
||||||
block.cliff.name = Скеля
|
block.cliff.name = Скеля
|
||||||
@@ -1128,7 +1162,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.conduit.name = Трубопровід
|
block.conduit.name = Трубопровід
|
||||||
block.mechanical-pump.name = Механічна помпа
|
block.mechanical-pump.name = Механічна помпа
|
||||||
@@ -1359,7 +1393,7 @@ block.diode.description = Живлення акумулятора може пр
|
|||||||
block.battery.description = Зберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту.
|
block.battery.description = Зберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту.
|
||||||
block.battery-large.description = Зберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту. Більша ємність ніж у звичайного акумулятора.
|
block.battery-large.description = Зберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту. Більша ємність ніж у звичайного акумулятора.
|
||||||
block.combustion-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали, як-от вугілля.
|
block.combustion-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали, як-от вугілля.
|
||||||
block.thermal-generator.description = Виробляє енергію в разі розміщення в спекотних місцях.
|
block.thermal-generator.description = Виробляє енергію в разі розміщення в гарячих місцях.
|
||||||
block.steam-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали й перетворює воду в пару.
|
block.steam-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали й перетворює воду в пару.
|
||||||
block.differential-generator.description = Виробляє велику кількість енергії. Використовує різницю температур між кріогенною рідиною й пиротитом, що горить.
|
block.differential-generator.description = Виробляє велику кількість енергії. Використовує різницю температур між кріогенною рідиною й пиротитом, що горить.
|
||||||
block.rtg-generator.description = Використовує тепло радіоактивних сполук, які розкладаються, для отримання енергії з повільною швидкістю.
|
block.rtg-generator.description = Використовує тепло радіоактивних сполук, які розкладаються, для отримання енергії з повільною швидкістю.
|
||||||
@@ -1399,8 +1433,8 @@ block.ripple.description = Вистрілює скупченням снаряд
|
|||||||
block.cyclone.description = Підпалює вибухові грудки скупчення противників.
|
block.cyclone.description = Підпалює вибухові грудки скупчення противників.
|
||||||
block.spectre.description = Вистрілює великі бронебійні кулі в повітряні та наземні цілі.
|
block.spectre.description = Вистрілює великі бронебійні кулі в повітряні та наземні цілі.
|
||||||
block.meltdown.description = Заряджає і вистрілює лазерним променем у найближчих противників. Для роботи потрібен теплоносій.
|
block.meltdown.description = Заряджає і вистрілює лазерним променем у найближчих противників. Для роботи потрібен теплоносій.
|
||||||
block.foreshadow.description = Вистрілює великим болтом в одну ціль на велику дистанцію
|
block.foreshadow.description = Вистрілює великим болтом в одну ціль на велику дистанцію.
|
||||||
block.repair-point.description = Безперервно ремонтує найближчу пошкоджену бойову одиницю у своєму радіусі дії.
|
block.repair-point.description = Безперервно ремонтує найближчу пошкоджену бойову одиницю у своєму радіусі дії. Пріоритетні вороги з вищим максимальним здоров’ям.
|
||||||
block.segment.description = Пошкоджує та руйнує вхідні снаряди. Окрім лазерних.
|
block.segment.description = Пошкоджує та руйнує вхідні снаряди. Окрім лазерних.
|
||||||
block.parallax.description = Притягає ворожі повітряні одиниці, пошкоджуючи їх у процесі.
|
block.parallax.description = Притягає ворожі повітряні одиниці, пошкоджуючи їх у процесі.
|
||||||
block.tsunami.description = Вистрілює потужними потоками рідини у ворогів. Автоматично гасить пожежі в разі постачання води.
|
block.tsunami.description = Вистрілює потужними потоками рідини у ворогів. Автоматично гасить пожежі в разі постачання води.
|
||||||
@@ -1418,9 +1452,9 @@ block.multiplicative-reconstructor.description = Поліпшує введени
|
|||||||
block.exponential-reconstructor.description = Поліпшує введених одиниць до четвертого рівня.
|
block.exponential-reconstructor.description = Поліпшує введених одиниць до четвертого рівня.
|
||||||
block.tetrative-reconstructor.description = Поліпшує введених одиниць до п’ятого і фінального рівня.
|
block.tetrative-reconstructor.description = Поліпшує введених одиниць до п’ятого і фінального рівня.
|
||||||
block.switch.description = Перемикач. Стан можна читати й контролювати за допомогою логічних процесорів.
|
block.switch.description = Перемикач. Стан можна читати й контролювати за допомогою логічних процесорів.
|
||||||
block.micro-processor.description = Запускає послідовність логічних вказівок (інструкцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель.
|
block.micro-processor.description = Запускає послідовність логічних вказівок (операцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель.
|
||||||
block.logic-processor.description = Запускає послідовність логічних вказівок (інструкцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Мікропроцесор.
|
block.logic-processor.description = Запускає послідовність логічних вказівок (операцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Мікропроцесор.
|
||||||
block.hyper-processor.description = Запускає послідовність логічних вказівок (інструкцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Логічний процесор
|
block.hyper-processor.description = Запускає послідовність логічних вказівок (операцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Логічний процесор
|
||||||
block.memory-cell.description = Зберігає інформацію для логічного процесора.
|
block.memory-cell.description = Зберігає інформацію для логічного процесора.
|
||||||
block.memory-bank.description = Зберігає інформацію для логічного процесора. Висока місткість.
|
block.memory-bank.description = Зберігає інформацію для логічного процесора. Висока місткість.
|
||||||
block.logic-display.description = Показує довільну графіку з логічного процесора.
|
block.logic-display.description = Показує довільну графіку з логічного процесора.
|
||||||
@@ -1459,3 +1493,146 @@ unit.omura.description = Вистрілює у ворогів далекобій
|
|||||||
unit.alpha.description = Захищає ядро «Уламок» від противників. Будує споруди.
|
unit.alpha.description = Захищає ядро «Уламок» від противників. Будує споруди.
|
||||||
unit.beta.description = Захищає ядро «Штаб» від противників. Будує споруди.
|
unit.beta.description = Захищає ядро «Штаб» від противників. Будує споруди.
|
||||||
unit.gamma.description = Захищає ядро «Атом» від противників. Будує споруди.
|
unit.gamma.description = Захищає ядро «Атом» від противників. Будує споруди.
|
||||||
|
|
||||||
|
lst.read = Зчитує число із з’єднаної комірки пам’яті.
|
||||||
|
lst.write = Записує числу у з’єднану комірки пам’яті.
|
||||||
|
lst.print = Додайте текст до буфера друку.\nНічого не відображає, поки [accent]Print Flush[] використовується.
|
||||||
|
lst.draw = Додає операцію до буфера рисунка.\nНічого не відображає, поки [accent]Draw Flush[] використовується.
|
||||||
|
lst.drawflush = Скидає буфер операцій [accent]Draw[] на дисплей.
|
||||||
|
lst.printflush = Скидає буфер операцій [accent]Print[] у блок «Повідомлення».
|
||||||
|
lst.getlink = Отримати посилання на процесор за допомогою індекса. Починається з 0.
|
||||||
|
lst.control = Контролює будівлю.
|
||||||
|
lst.radar = Знаходження одиниць навколо будівлі у радіусі дії.
|
||||||
|
lst.sensor = Отримати дані з певної будівлі чи одиниці.
|
||||||
|
lst.set = Установити значення змінної.
|
||||||
|
lst.operation = Виконує операцію над 1-2 змінними.
|
||||||
|
lst.end = Перейти до верхньої частини стеку операцій.
|
||||||
|
lst.jump = Умовне переходження до іншої операції.
|
||||||
|
lst.unitbind = Прив’язка до одиниці певного типу та його зберігання в [accent]@unit[].
|
||||||
|
lst.unitcontrol = Контролювати поточну прив’язану одиницю.
|
||||||
|
lst.unitradar = Знайти одиницю біля поточної прив’язаної одиниці.
|
||||||
|
lst.unitlocate = Виявляє позицію чи будівлю певного типу де завгодно на мапі.\nПотрібна прив’язана одиниця.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Будування за допомогою процесорів заборено.
|
||||||
|
|
||||||
|
lenum.type = Тип будівлі чи одиниці.\nНаприклад, для будь-якого маршрутизатора (англ. router), функція вертатиме [accent]@router[].\nНе є рядком.
|
||||||
|
lenum.shoot = Стріляти в зазначену позицію.
|
||||||
|
lenum.shootp = Стріляти в одиницю чи будівлю із передбаченням швидкості.
|
||||||
|
lenum.configure = Конфігурація будівлі, як-от в сортувальника.
|
||||||
|
lenum.enabled = Чи блок увімкнено.
|
||||||
|
|
||||||
|
laccess.color = Колір освітлювача.
|
||||||
|
laccess.controller = Керувач одиницями. Якщо процесор керує одиницею, повертає процесор.\nЯкщо у формуванні, повертається лідер.\nІнакше повертає саму одиницю.
|
||||||
|
laccess.dead = Чи є одиниця або будівля мертвою або недійсною.
|
||||||
|
laccess.controlled = Повертає \n[accent]@ctrlProcessor[] якщо одиниця контролюється процесором;\n[accent]@ctrlPlayer[] якщо одиниця чи будівля контролюєть гравцем\n[accent]@ctrlFormation[] якщо одиниця у загоні (формуванні)\nІнакше — 0.
|
||||||
|
laccess.commanded = [red]Застаріле. Буде видалено![]\nВикористовуйте натомість [accent]controlled[].
|
||||||
|
|
||||||
|
graphicstype.clear = Залити дисплей вказаним кольором.
|
||||||
|
graphicstype.color = Установити колір для подальшої операції малювання.
|
||||||
|
graphicstype.stroke = Установити ширину ліній.
|
||||||
|
graphicstype.line = Накреслити відрізок лінії.
|
||||||
|
graphicstype.rect = Залити кольором прямокутник.
|
||||||
|
graphicstype.linerect = Намалювати контур прямокутника.
|
||||||
|
graphicstype.poly = Залити кольором правильний багатокутник.
|
||||||
|
graphicstype.linepoly = Намалювати контур правильного багатокутника.
|
||||||
|
graphicstype.triangle = Залити кольором трикутник.
|
||||||
|
graphicstype.image = Намалювати зображення із деяким вмістом.\nНаприклад: [accent]@router[] чи [accent]@dagger[].
|
||||||
|
|
||||||
|
lenum.always = Завжди істинне.
|
||||||
|
lenum.idiv = Ціле ділення.
|
||||||
|
lenum.div = Ділення.\nПовертає [accent]null[] при діленні на нуль.
|
||||||
|
lenum.mod = Залишок від ділення.
|
||||||
|
lenum.equal = Рівно. Примусове приведення типів.\nНе-null об’єкти порівняно з числами стають 1, інакше — 0.
|
||||||
|
lenum.notequal = Не рівно. Примусове приведення типів.
|
||||||
|
lenum.strictequal = Сувора рівність. Примусового приведення типів немає.\nМожна використати для перевірки на [accent]null[].
|
||||||
|
lenum.shl = Зсув бітів ліворуч.
|
||||||
|
lenum.shr = Зсув бітів праворуч.
|
||||||
|
lenum.or = Побітове АБО (OR).
|
||||||
|
lenum.land = Побітове логічне І.
|
||||||
|
lenum.and = Побітове І.
|
||||||
|
lenum.not = Побітове заперечення.
|
||||||
|
lenum.xor = Виключне АБО (XOR).
|
||||||
|
|
||||||
|
lenum.min = Мінімум з двух чисел.
|
||||||
|
lenum.max = Максимум з двух чисел.
|
||||||
|
lenum.angle = Кут вектора у градусах.
|
||||||
|
lenum.len = Довжина вектора.
|
||||||
|
lenum.sin = Синус, у градусах.
|
||||||
|
lenum.cos = Косинус, у градусах.
|
||||||
|
lenum.tan = Тангенс, у градусах.
|
||||||
|
#це не одруківка, пошукайте 'позначення діапазону'
|
||||||
|
lenum.rand = Випадкове десяткове число у діапазоні [0, значення).
|
||||||
|
lenum.log = Натуральний логарифм (ln).
|
||||||
|
lenum.log10 = Десятковий логарифм.
|
||||||
|
lenum.noise = Двовимірний симлекс-шум.
|
||||||
|
lenum.abs = Абсолютне значення.
|
||||||
|
lenum.sqrt = Квадратний корінь.
|
||||||
|
|
||||||
|
lenum.any = Будь-яка одиниця.
|
||||||
|
lenum.ally = Союзна одиниця.
|
||||||
|
lenum.attacker = Одиниця зі зброєю.
|
||||||
|
lenum.enemy = Ворожа одиниця.
|
||||||
|
lenum.boss = Одиниця «Вартовий».
|
||||||
|
lenum.flying = Одиниця, що літає.
|
||||||
|
lenum.ground = Наземна одиниця.
|
||||||
|
lenum.player = Одиниця, керована гравцем.
|
||||||
|
|
||||||
|
lenum.ore = Родовище руди.
|
||||||
|
lenum.damaged = Пошкоджені союзні будівлі.
|
||||||
|
lenum.spawn = Точка появи ворогів.\nМоже бути ядром чи позицією.
|
||||||
|
lenum.building = Будування певної групи.
|
||||||
|
|
||||||
|
lenum.core = Будь-яке ядро.
|
||||||
|
lenum.storage = Складське приміщення, як-от Сховище.
|
||||||
|
lenum.generator = Будівлі, що виробляють енергію.
|
||||||
|
lenum.factory = Будівлі, що видозмінюють ресурси.
|
||||||
|
lenum.repair = Ремонтні пункти.
|
||||||
|
lenum.rally = Командний центр.
|
||||||
|
lenum.battery = Будь-який акумулятор.
|
||||||
|
lenum.resupply = Пункти постачання.\nДоречні лише коли кор. правило [accent]«Бойові одиниці потребують боєприпасів»[] увімкнено.
|
||||||
|
lenum.reactor = Імпульсний чи Торієвий реактор.
|
||||||
|
lenum.turret = Будь-яка башта.
|
||||||
|
|
||||||
|
sensor.in = Будівля чи одиниця для розпізнавання.
|
||||||
|
|
||||||
|
radar.from = Від якої будівлі треба розпізнавати.\nРадіус розпізнавання обмежено радіусом будівництва.
|
||||||
|
radar.target = Фільтр для розпізнавання одиниць.
|
||||||
|
radar.and = Додаткові фільтри.
|
||||||
|
radar.order = Порядок сортування. 0 — сортування у зворотньому порядку.
|
||||||
|
radar.sort = Показник для сортування результатів.
|
||||||
|
radar.output = Змінна для записув вихідної одиниці.
|
||||||
|
|
||||||
|
unitradar.target = Фільтр для розпізнавання одиниць.
|
||||||
|
unitradar.and = Додаткові фільтри.
|
||||||
|
unitradar.order = Порядок сортування. 0 — сортування у зворотньому порядку.
|
||||||
|
unitradar.sort = Показник для сортування результатів.
|
||||||
|
unitradar.output = Змінна для записув вихідної одиниці.
|
||||||
|
|
||||||
|
control.of = Будівля для контролювання.
|
||||||
|
control.unit = Одиниця чи будівля для прицілювання.
|
||||||
|
control.shoot = Чи стріляє.
|
||||||
|
|
||||||
|
unitlocate.enemy = Чи знаходити ворожі будівлі.
|
||||||
|
unitlocate.found = Чи був об’єкт знайдений.
|
||||||
|
unitlocate.building = Змінна для запису знайденої будівлі
|
||||||
|
unitlocate.outx = Виводить координату X.
|
||||||
|
unitlocate.outy = Виводить координату Y.
|
||||||
|
unitlocate.group = Група будівль для пошуку.
|
||||||
|
|
||||||
|
lenum.idle = Зупиняти рух, проте продовжути будувати чи видобувати.\nСтан за замовчуванням.
|
||||||
|
lenum.stop = Зупинити або рух, або видобуток, або будівництво.
|
||||||
|
lenum.move = Перемістити в точне положення.
|
||||||
|
lenum.approach = Наближення до позиції із зазначеним радіусом.
|
||||||
|
lenum.pathfind = Знайдення шляху до точки появи ворогів.
|
||||||
|
lenum.target = Стрільба в задану позицію.
|
||||||
|
lenum.targetp = Стріляти в ціль із передбаченням швидкості.
|
||||||
|
lenum.itemdrop = Викинути предмет.
|
||||||
|
lenum.itemtake = Взяти предмет з будівлі.
|
||||||
|
lenum.paydrop = Скинути поточний вантаж.
|
||||||
|
lenum.paytake = Підібрати вантаж у поточному місцерозташуванні.
|
||||||
|
lenum.flag = Числовий флаг одиниці.
|
||||||
|
lenum.mine = Видобувати у заданій позиції.
|
||||||
|
lenum.build = Побудувати будівлю.
|
||||||
|
lenum.getblock = Розпізнавання блока та його типа за координатами.\nОдиниця повинна знаходитися в межах досяжності.\nСуцільні не-будівлі матимуть тип [accent]@solid[].
|
||||||
|
lenum.within = Чи знаходиться одиниця біля позиції.
|
||||||
|
lenum.boost = Почати чи зупинити політ.
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ link.google-play.description = Google Play store listing
|
|||||||
link.f-droid.description = F-Droid listing
|
link.f-droid.description = F-Droid listing
|
||||||
link.wiki.description = Mindustry wiki chính thức
|
link.wiki.description = Mindustry wiki chính thức
|
||||||
link.suggestions.description = Đề xuất các tính năng mới
|
link.suggestions.description = Đề xuất các tính năng mới
|
||||||
|
link.bug.description = Tìm thấy lỗi? Báo cáo nó ở đây
|
||||||
linkfail = Không mở được liên kết!\nURL đã được sao chép vào bộ nhớ tạm.
|
linkfail = Không mở được liên kết!\nURL đã được sao chép vào bộ nhớ tạm.
|
||||||
screenshot = Ảnh chụp màn hình được lưu vào {0}
|
screenshot = Ảnh chụp màn hình được lưu vào {0}
|
||||||
screenshot.invalid = Bản đồ quá lớn, có khả năng không đủ bộ nhớ để chụp ảnh màn hình.
|
screenshot.invalid = Bản đồ quá lớn, có khả năng không đủ bộ nhớ để chụp ảnh màn hình.
|
||||||
@@ -40,24 +41,32 @@ be.ignore = Bỏ qua
|
|||||||
be.noupdates = Không tìm thấy bản cập nhật mới.
|
be.noupdates = Không tìm thấy bản cập nhật mới.
|
||||||
be.check = Kiểm tra các bản cập nhật.
|
be.check = Kiểm tra các bản cập nhật.
|
||||||
|
|
||||||
schematic = Schematic
|
mods.browser = Duyệt mod
|
||||||
schematic.add = Lưu Schematic...
|
mods.browser.selected = Mod Đã chọn
|
||||||
schematics = Schematics
|
mods.browser.add = Cài đặt
|
||||||
schematic.replace = Schematics có tên đó đã tồn tại. Thay thế nó?
|
mods.browser.reinstall = Cài đặt lại
|
||||||
schematic.exists = Schematics có tên đó đã tồn tại.
|
mods.github.open = Repo
|
||||||
schematic.import = Nhập Schematic...
|
mods.browser.sortdate = Sắp xếp theo gần đây
|
||||||
|
mods.browser.sortstars = Sắp xếp theo sao
|
||||||
|
|
||||||
|
schematic = Bản thiết kế
|
||||||
|
schematic.add = Lưu bản thiết kế...
|
||||||
|
schematics = Các bản thiết kế
|
||||||
|
schematic.replace = Bản thiết kế có tên đó đã tồn tại. Thay thế nó?
|
||||||
|
schematic.exists = Bản thiết kế có tên đó đã tồn tại.
|
||||||
|
schematic.import = Nhập Bản thiết kế...
|
||||||
schematic.exportfile = Xuất tệp
|
schematic.exportfile = Xuất tệp
|
||||||
schematic.importfile = Nhập tệp
|
schematic.importfile = Nhập tệp
|
||||||
schematic.browseworkshop = Duyệt qua Workshop
|
schematic.browseworkshop = Duyệt qua Workshop
|
||||||
schematic.copy = Sao chép vào bộ nhớ tạm
|
schematic.copy = Sao chép vào bộ nhớ tạm
|
||||||
schematic.copy.import = Nhập từ bộ nhớ tạm
|
schematic.copy.import = Thêm từ bộ nhớ tạm
|
||||||
schematic.shareworkshop = Chia sẻ từ Workshop
|
schematic.shareworkshop = Chia sẻ từ Workshop
|
||||||
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Lật Schematic
|
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Lật bản thiết kế
|
||||||
schematic.saved = Đã lưu Schematic.
|
schematic.saved = Đã lưu bản thiết kế.
|
||||||
schematic.delete.confirm = Schematic này sẽ bị xóa hoàn toàn.
|
schematic.delete.confirm = Bản thiết kế này sẽ bị xóa hoàn toàn.
|
||||||
schematic.rename = Đổi tên Schematic
|
schematic.rename = Đổi tên bản thiết kế
|
||||||
schematic.info = {0}x{1}, {2} khối
|
schematic.info = {0}x{1}, {2} khối
|
||||||
schematic.disabled = [scarlet]Tính năng Schematics đã bị tắt[]\nBạn không được sử dụng schematic trong [accent]bản đồ[] hoặc [accent]máy chủ.
|
schematic.disabled = [scarlet]Tính năng bản thiết kế đã bị tắt[]\nBạn không được sử dụng bản thiết kế trong [accent]bản đồ[] hoặc [accent]máy chủ.
|
||||||
|
|
||||||
stats = Thống kê
|
stats = Thống kê
|
||||||
stat.wave = Đợt đã vượt qua:[accent] {0}
|
stat.wave = Đợt đã vượt qua:[accent] {0}
|
||||||
@@ -75,14 +84,15 @@ level.highscore = Điểm cao nhất: [accent]{0}
|
|||||||
level.select = Chọn cấp độ
|
level.select = Chọn cấp độ
|
||||||
level.mode = Chế độ:
|
level.mode = Chế độ:
|
||||||
coreattack = < Căn cứ đang bị tấn công! >
|
coreattack = < Căn cứ đang bị tấn công! >
|
||||||
nearpoint = [[ [scarlet]RỜI KHỎI ĐIỂM THẢ NGAY LẬP TỨC[] ]\nsự hủy diệt sắp xảy ra
|
nearpoint = [[ [scarlet]RỜI KHỎI KHU VỰC ĐÁP NGAY LẬP TỨC[] ]\nsự hủy diệt sắp xảy ra
|
||||||
database = Cơ sở dữ liệu căn cứ
|
database = Cơ sở dữ liệu
|
||||||
savegame = Lưu trò chơi
|
savegame = Lưu trò chơi
|
||||||
loadgame = Tải trò chơi
|
loadgame = Tải lại màn chơi
|
||||||
joingame = Tham gia trò chơi
|
joingame = Tham gia trò chơi
|
||||||
customgame = Tùy chỉnh
|
customgame = Tùy chỉnh
|
||||||
newgame = Trò chơi mới
|
newgame = Trò chơi mới
|
||||||
none = <trống>
|
none = <trống>
|
||||||
|
none.found = [lightgray]<không tìm thấy>
|
||||||
minimap = Bản đồ nhỏ
|
minimap = Bản đồ nhỏ
|
||||||
position = Vị trí
|
position = Vị trí
|
||||||
close = Đóng
|
close = Đóng
|
||||||
@@ -90,9 +100,9 @@ website = Website
|
|||||||
quit = Thoát
|
quit = Thoát
|
||||||
save.quit = Lưu & Thoát
|
save.quit = Lưu & Thoát
|
||||||
maps = Bản đồ
|
maps = Bản đồ
|
||||||
maps.browse = Duyệt bản đồ
|
maps.browse = Chọn bản đồ
|
||||||
continue = Tiếp tục
|
continue = Tiếp tục
|
||||||
maps.none = [lightgray]Không có bản đồ nào được tìm thấy!
|
maps.none = [lightgray]Không tìm thấy bản đồ!
|
||||||
invalid = Không hợp lệ
|
invalid = Không hợp lệ
|
||||||
pickcolor = Chọn màu
|
pickcolor = Chọn màu
|
||||||
preparingconfig = Đang chuẩn bị cấu hình
|
preparingconfig = Đang chuẩn bị cấu hình
|
||||||
@@ -103,14 +113,16 @@ committingchanges = Đang cập nhật các thay đổi
|
|||||||
done = Hoàn tất
|
done = Hoàn tất
|
||||||
feature.unsupported = Thiết bị của bạn không hỗ trợ tính năng này.
|
feature.unsupported = Thiết bị của bạn không hỗ trợ tính năng này.
|
||||||
|
|
||||||
mods.alphainfo = Hãy nhớ rằng các bản mod đang ở giai đoạn alpha, và[scarlet] có thể chứa rất rất lỗi[].\nBáo cáo bất kỳ vấn đề nào bạn gặp phải tại Mindustry GitHub.
|
mods.initfailed = [red]⚠[] Mindustry không khởi chạy được. Điều này có thể do các mod bị lỗi.\n\nĐể tránh gặp sự cố liên tiếp, [red]tất cả các mod đã bị tắt.[]\n\nĐể tắt tính năng này, vào [accent]Cài đặt->Trò chơi->Tắt các mod khi gặp sự cố trong khởi động[].
|
||||||
mods = Mods
|
mods = Mods
|
||||||
mods.none = [lightgray]Không có mod nào được tìm thấy!
|
mods.none = [lightgray]Không tìm thấy mod!
|
||||||
mods.guide = Hướng dẫn mod
|
mods.guide = Hướng dẫn mod
|
||||||
mods.report = Báo lỗi
|
mods.report = Báo lỗi
|
||||||
mods.openfolder = Mở thư mục
|
mods.openfolder = Mở thư mục
|
||||||
|
mods.viewcontent = Xem nội dung
|
||||||
mods.reload = Tải lại
|
mods.reload = Tải lại
|
||||||
mods.reloadexit = Trò chơi sẽ đóng để tải lại mod.
|
mods.reloadexit = Trò chơi sẽ đóng để mod được tải.
|
||||||
|
mod.installed = [[Đã cài đặt]
|
||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Đã Bật
|
mod.enabled = [lightgray]Đã Bật
|
||||||
mod.disabled = [scarlet]Đã Tắt
|
mod.disabled = [scarlet]Đã Tắt
|
||||||
@@ -122,21 +134,21 @@ mod.outdated = [scarlet]Không tương thích với V6 (no minGameVersion: 105)
|
|||||||
mod.missingdependencies = [scarlet]Thiếu phụ thuộc: {0}
|
mod.missingdependencies = [scarlet]Thiếu phụ thuộc: {0}
|
||||||
mod.erroredcontent = [scarlet]Lỗi nội dung
|
mod.erroredcontent = [scarlet]Lỗi nội dung
|
||||||
mod.errors = Đã xảy ra lỗi khi tải nội dung.
|
mod.errors = Đã xảy ra lỗi khi tải nội dung.
|
||||||
mod.noerrorplay = [scarlet]Bạn có mod bị lỗi.[]Tắt các mod bị ảnh hưởng hoặc sửa chữa các lỗi trước khi chơi.
|
mod.noerrorplay = [scarlet]Bạn có mod bị lỗi.[]Tắt các mod bị lỗi hoặc sửa các lỗi trước khi chơi.
|
||||||
mod.nowdisabled = [scarlet]Mod '{0}' cần mod này để chạy:[accent] {1}\n[lightgray]Trước tiên bạn cần tải các mod này xuống.\nBản mod này sẽ tự động tắt.
|
mod.nowdisabled = [scarlet]Mod '{0}' cần mod này để chạy:[accent] {1}\n[lightgray]Trước tiên bạn cần tải các mod này xuống.\nBản mod này sẽ tự động tắt.
|
||||||
mod.enable = Bật
|
mod.enable = Bật
|
||||||
mod.requiresrestart = Trò chơi sẽ đóng để áp dụng các thay đổi của mod.
|
mod.requiresrestart = Trò chơi sẽ đóng để áp dụng các thay đổi của mod.
|
||||||
mod.reloadrequired = [scarlet]Yêu cầu khởi động lại
|
mod.reloadrequired = [scarlet]Yêu cầu khởi động lại
|
||||||
mod.import = Nhập Mod
|
mod.import = Thêm Mod
|
||||||
mod.import.file = Nhập tệp
|
mod.import.file = Thêm từ tệp
|
||||||
mod.import.github = Nhập từ GitHub
|
mod.import.github = Thêm từ GitHub
|
||||||
mod.jarwarn = [scarlet]JAR mod vốn dĩ không an toàn.[]\nĐảm bảo rằng bạn đang nhập bản mod này từ một nguồn đáng tin cậy!
|
mod.jarwarn = [scarlet]Các JAR mod vốn dĩ không an toàn.[]\nĐảm bảo rằng bạn đang thêm mod này từ một nguồn đáng tin cậy!
|
||||||
mod.item.remove = Mục này là một phần của[accent] '{0}'[] mod. Để xóa nó, hãy gỡ cài đặt mod này.
|
mod.item.remove = Mục này là một phần của[accent] '{0}'[] mod. Để xóa nó, hãy gỡ cài đặt mod này.
|
||||||
mod.remove.confirm = Mod này sẽ bị xóa.
|
mod.remove.confirm = Mod này sẽ bị xóa.
|
||||||
mod.author = [lightgray]Tác giả:[] {0}
|
mod.author = [lightgray]Tác giả:[] {0}
|
||||||
mod.missing = Bản lưu này chứa các mod mà bạn đã cập nhật gần đây hoặc không còn cài đặt nữa. Có thể gây ra lỗi khi mở. Bạn có chắc muốn mở nó?\n[lightgray]Mods:\n{0}
|
mod.missing = Bản lưu này chứa các mod mà bạn đã cập nhật gần đây hoặc không được cài đặt. Có thể gây ra lỗi khi mở. Bạn có chắc muốn mở nó?\n[lightgray]Mods:\n{0}
|
||||||
mod.preview.missing = Trước khi xuất bản bản mod này lên workshop, bạn phải thêm hình ảnh xem trước.\nĐặt một hình ảnh có tên[accent] preview.png[] vào thư mục của mod và thử lại.
|
mod.preview.missing = Trước khi đăng bản mod này lên workshop, bạn phải thêm hình ảnh xem trước.\nĐặt một hình ảnh có tên[accent] preview.png[] vào thư mục của mod và thử lại.
|
||||||
mod.folder.missing = Chỉ có thể xuất bản các mod ở dạng thư mục lên workshop.\nĐể chuyển đổi bất kỳ mod nào thành một thư mục, chỉ cần giải nén tệp của nó vào một thư mục và xóa tệp nén cũ, sau đó khởi động lại trò chơi của bạn hoặc tải lại các bản mod của bạn.
|
mod.folder.missing = Chỉ có thể đăng các mod ở dạng thư mục lên workshop.\nĐể chuyển đổi bất kỳ mod nào thành một thư mục, chỉ cần giải nén tệp của nó vào một thư mục và xóa tệp nén cũ, sau đó khởi động lại trò chơi của bạn hoặc tải lại các bản mod của bạn.
|
||||||
mod.scripts.disable = Thiết bị của bạn không hổ trợ mod chứa scripts này. Bạn phải tắt các mod này để chơi trò chơi.
|
mod.scripts.disable = Thiết bị của bạn không hổ trợ mod chứa scripts này. Bạn phải tắt các mod này để chơi trò chơi.
|
||||||
|
|
||||||
about.button = Thông tin
|
about.button = Thông tin
|
||||||
@@ -196,6 +208,7 @@ servers.local = Máy chủ cục bộ
|
|||||||
servers.remote = Máy chủ tùy chỉnh
|
servers.remote = Máy chủ tùy chỉnh
|
||||||
servers.global = Máy chủ từ cộng đồng
|
servers.global = Máy chủ từ cộng đồng
|
||||||
|
|
||||||
|
servers.disclaimer = Nhà phát triển [accent]không[] sở hữu và kiểm soát máy chủ cộng đồng.\n\nMáy chủ có thể chứa nội dung do người dùng tạo và không phù hợp với mọi lứa tuổi.
|
||||||
servers.showhidden = Hiển thị Máy chủ Ẩn
|
servers.showhidden = Hiển thị Máy chủ Ẩn
|
||||||
server.shown = Hiện
|
server.shown = Hiện
|
||||||
server.hidden = Ẩn
|
server.hidden = Ẩn
|
||||||
@@ -279,6 +292,7 @@ cancel = Hủy
|
|||||||
openlink = Mở link
|
openlink = Mở link
|
||||||
copylink = Sao chép link
|
copylink = Sao chép link
|
||||||
back = Quay lại
|
back = Quay lại
|
||||||
|
max = Tối đa
|
||||||
crash.export = Xuất Crash Logs
|
crash.export = Xuất Crash Logs
|
||||||
crash.none = Không có Crash Logs nào được tìm thấy.
|
crash.none = Không có Crash Logs nào được tìm thấy.
|
||||||
crash.exported = Crash logs đã được xuất.
|
crash.exported = Crash logs đã được xuất.
|
||||||
@@ -298,6 +312,7 @@ cancelbuilding = [accent][[{0}][] để hủy xây
|
|||||||
selectschematic = [accent][[{0}][] to để chọn+sao chép
|
selectschematic = [accent][[{0}][] to để chọn+sao chép
|
||||||
pausebuilding = [accent][[{0}][] để tạm dừng xây dựng
|
pausebuilding = [accent][[{0}][] để tạm dừng xây dựng
|
||||||
resumebuilding = [scarlet][[{0}][] để tiếp tục xây dựng
|
resumebuilding = [scarlet][[{0}][] để tiếp tục xây dựng
|
||||||
|
enablebuilding = [scarlet][[{0}][] để bật xây dựng
|
||||||
showui = UI hidden.\nPress [accent][[{0}][] để hiện UI.
|
showui = UI hidden.\nPress [accent][[{0}][] để hiện UI.
|
||||||
wave = [accent]Đợt {0}
|
wave = [accent]Đợt {0}
|
||||||
wave.cap = [accent]Đợt {0}/{1}
|
wave.cap = [accent]Đợt {0}/{1}
|
||||||
@@ -353,7 +368,6 @@ editor.center = Trung tâm
|
|||||||
workshop = Workshop
|
workshop = Workshop
|
||||||
waves.title = Đợt
|
waves.title = Đợt
|
||||||
waves.remove = Xóa
|
waves.remove = Xóa
|
||||||
waves.never = <vô hạn>
|
|
||||||
waves.every = mỗi
|
waves.every = mỗi
|
||||||
waves.waves = đợt
|
waves.waves = đợt
|
||||||
waves.perspawn = mỗi lần xuất hiện
|
waves.perspawn = mỗi lần xuất hiện
|
||||||
@@ -382,7 +396,7 @@ editor.removeunit = Xóa kẻ địch
|
|||||||
editor.teams = Đội
|
editor.teams = Đội
|
||||||
editor.errorload = Lỗi khi tải tệp.
|
editor.errorload = Lỗi khi tải tệp.
|
||||||
editor.errorsave = Lỗi khi lưu tệp.
|
editor.errorsave = Lỗi khi lưu tệp.
|
||||||
editor.errorimage = Đó là một hình ảnh, không phải bản đồ.\n\nNếu bạn muốn nhập một bản đồ 3.5/build 40, sử dụng nút 'Nhập bản đồ thay thế' trong trình chỉnh sửa.
|
editor.errorimage = Đó là một hình ảnh, không phải bản đồ.
|
||||||
editor.errorlegacy = Bản đồ này quá cũ, và sử dụng định dạng bản đồ cũ không còn được hỗ trợ.
|
editor.errorlegacy = Bản đồ này quá cũ, và sử dụng định dạng bản đồ cũ không còn được hỗ trợ.
|
||||||
editor.errornot = Đây không phải là tệp bản đồ.
|
editor.errornot = Đây không phải là tệp bản đồ.
|
||||||
editor.errorheader = Tệp bản đồ này không hợp lệ hoặc bị hỏng.
|
editor.errorheader = Tệp bản đồ này không hợp lệ hoặc bị hỏng.
|
||||||
@@ -672,9 +686,10 @@ stat.drillspeed = Tốc độ khoang cơ bản
|
|||||||
stat.boosteffect = Hiệu ứng tăng cường
|
stat.boosteffect = Hiệu ứng tăng cường
|
||||||
stat.maxunits = Số quân lính hoạt động tối đa
|
stat.maxunits = Số quân lính hoạt động tối đa
|
||||||
stat.health = Độ bền
|
stat.health = Độ bền
|
||||||
|
stat.armor = Giáp
|
||||||
stat.buildtime = Thời gian xây
|
stat.buildtime = Thời gian xây
|
||||||
stat.maxconsecutive = Đầu ra tối đa
|
stat.maxconsecutive = Đầu ra tối đa
|
||||||
stat.buildcost = Chi phí
|
stat.buildcost = Yêu cầu
|
||||||
stat.inaccuracy = Độ lệch
|
stat.inaccuracy = Độ lệch
|
||||||
stat.shots = Phát bắn
|
stat.shots = Phát bắn
|
||||||
stat.reload = Phát bắn/Giây
|
stat.reload = Phát bắn/Giây
|
||||||
@@ -687,6 +702,7 @@ stat.lightningchance = Tỷ lệ phóng điện
|
|||||||
stat.lightningdamage = Sát thương tia điện
|
stat.lightningdamage = Sát thương tia điện
|
||||||
stat.flammability = Dễ cháy
|
stat.flammability = Dễ cháy
|
||||||
stat.radioactivity = Phóng xạ
|
stat.radioactivity = Phóng xạ
|
||||||
|
stat.charge = Phóng điện
|
||||||
stat.heatcapacity = Nhiệt dung
|
stat.heatcapacity = Nhiệt dung
|
||||||
stat.viscosity = Độ nhớt
|
stat.viscosity = Độ nhớt
|
||||||
stat.temperature = Nhiệt độ
|
stat.temperature = Nhiệt độ
|
||||||
@@ -699,12 +715,13 @@ stat.commandlimit = Giới hạn lệnh
|
|||||||
stat.abilities = Khả năng
|
stat.abilities = Khả năng
|
||||||
stat.canboost = Nâng cấp
|
stat.canboost = Nâng cấp
|
||||||
stat.flying = Bay
|
stat.flying = Bay
|
||||||
|
stat.ammouse = Sử dụng đạn
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
ability.forcefield = Tạo khiên
|
||||||
ability.repairfield = Repair Field
|
ability.repairfield = Sửa chữa/Xây dựng
|
||||||
ability.statusfield = Status Field
|
ability.statusfield = Status Field
|
||||||
ability.unitspawn = {0} Factory
|
ability.unitspawn = Sản xuất {0}
|
||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Tạo khiên nhỏ
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
|
|
||||||
bar.drilltierreq = Cần máy khoan tốt hơn
|
bar.drilltierreq = Cần máy khoan tốt hơn
|
||||||
@@ -713,6 +730,7 @@ bar.corereq = Yêu cầu căn cứ
|
|||||||
bar.drillspeed = Tốc độ khoan: {0}/giây
|
bar.drillspeed = Tốc độ khoan: {0}/giây
|
||||||
bar.pumpspeed = Tốc độ bơm: {0}/giây
|
bar.pumpspeed = Tốc độ bơm: {0}/giây
|
||||||
bar.efficiency = Hiệu suất: {0}%
|
bar.efficiency = Hiệu suất: {0}%
|
||||||
|
bar.boost = Tăng tốc: {0}%
|
||||||
bar.powerbalance = Năng lượng: {0}/giây
|
bar.powerbalance = Năng lượng: {0}/giây
|
||||||
bar.powerstored = Lưu trữ: {0}/{1}
|
bar.powerstored = Lưu trữ: {0}/{1}
|
||||||
bar.poweramount = Năng lượng: {0}
|
bar.poweramount = Năng lượng: {0}
|
||||||
@@ -721,7 +739,6 @@ bar.powerlines = Số lượng kết nối: {0}/{1}
|
|||||||
bar.items = Vật phẩm: {0}
|
bar.items = Vật phẩm: {0}
|
||||||
bar.capacity = Sức chứa: {0}
|
bar.capacity = Sức chứa: {0}
|
||||||
bar.unitcap = {0} {1}/{2}
|
bar.unitcap = {0} {1}/{2}
|
||||||
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[quân lính bị vô hiệu hóa]
|
|
||||||
bar.liquid = Chất lỏng
|
bar.liquid = Chất lỏng
|
||||||
bar.heat = Nhiệt độ
|
bar.heat = Nhiệt độ
|
||||||
bar.power = Năng lượng
|
bar.power = Năng lượng
|
||||||
@@ -735,12 +752,13 @@ bullet.damage = [stat]{0}[lightgray] sát thương
|
|||||||
bullet.splashdamage = [stat]{0}[lightgray] sát thương diện rộng ~[stat] {1}[lightgray] ô
|
bullet.splashdamage = [stat]{0}[lightgray] sát thương diện rộng ~[stat] {1}[lightgray] ô
|
||||||
bullet.incendiary = [stat]cháy
|
bullet.incendiary = [stat]cháy
|
||||||
bullet.sapping = [stat]sapping
|
bullet.sapping = [stat]sapping
|
||||||
bullet.homing = [stat]homing
|
bullet.homing = [stat]truy đuổi
|
||||||
bullet.shock = [stat]sốc
|
bullet.shock = [stat]sốc
|
||||||
bullet.frag = [stat]frag
|
bullet.buildingdamage = [stat]{0}%[lightgray] sát thương khối
|
||||||
|
bullet.frag = [stat]phá mảnh
|
||||||
bullet.knockback = [stat]{0}[lightgray] bật lùi
|
bullet.knockback = [stat]{0}[lightgray] bật lùi
|
||||||
bullet.pierce = [stat]{0}[lightgray]x xuyên giáp
|
bullet.pierce = [stat]{0}[lightgray]x xuyên giáp
|
||||||
bullet.infinitepierce = [stat]pierce
|
bullet.infinitepierce = [stat]xuyên thấu
|
||||||
bullet.healpercent = [stat]{0}[lightgray]% sửa chửa
|
bullet.healpercent = [stat]{0}[lightgray]% sửa chửa
|
||||||
bullet.freezing = [stat]đóng băng
|
bullet.freezing = [stat]đóng băng
|
||||||
bullet.tarred = [stat]tarred
|
bullet.tarred = [stat]tarred
|
||||||
@@ -763,9 +781,10 @@ unit.timesspeed = x tốc độ
|
|||||||
unit.percent = %
|
unit.percent = %
|
||||||
unit.shieldhealth = độ bền khiên
|
unit.shieldhealth = độ bền khiên
|
||||||
unit.items = vật phẩm
|
unit.items = vật phẩm
|
||||||
unit.thousands = nghìn
|
unit.thousands = k
|
||||||
unit.millions = triệu
|
unit.millions = mil
|
||||||
unit.billions = tỷ
|
unit.billions = b
|
||||||
|
unit.pershot = /shot
|
||||||
category.purpose = Mô tả
|
category.purpose = Mô tả
|
||||||
category.general = Chung
|
category.general = Chung
|
||||||
category.power = Năng lượng
|
category.power = Năng lượng
|
||||||
@@ -782,14 +801,15 @@ setting.hints.name = Gợi ý
|
|||||||
setting.flow.name = Hiện thị tốc độ chuyền tài nguyên
|
setting.flow.name = Hiện thị tốc độ chuyền tài nguyên
|
||||||
setting.backgroundpause.name = Tạm dừng trong nền
|
setting.backgroundpause.name = Tạm dừng trong nền
|
||||||
setting.buildautopause.name = Tự động dừng xây dựng
|
setting.buildautopause.name = Tự động dừng xây dựng
|
||||||
|
setting.modcrashdisable.name = Tắt các mod khi gặp sự cố trong khởi động
|
||||||
setting.animatedwater.name = Hiệu ứng nước
|
setting.animatedwater.name = Hiệu ứng nước
|
||||||
setting.animatedshields.name = Hiệu ứng khiên
|
setting.animatedshields.name = Hiệu ứng khiên
|
||||||
setting.antialias.name = Khử răng cưa[lightgray] (yêu cầu khởi động lại)[]
|
setting.antialias.name = Khử răng cưa[lightgray] (yêu cầu khởi động lại)[]
|
||||||
setting.playerindicators.name = Hướng người chơi
|
setting.playerindicators.name = Hướng người chơi
|
||||||
setting.indicators.name = Hướng kẻ địch
|
setting.indicators.name = Hướng kẻ địch
|
||||||
setting.autotarget.name = Tự động nhắm mục tiêu
|
setting.autotarget.name = Tự động nhắm mục tiêu
|
||||||
setting.keyboard.name = Điều khiển bằng chuột+bàn phím
|
setting.keyboard.name = Điều khiển bằng chuột + bàn phím
|
||||||
setting.touchscreen.name = Điều khiển bằng màng hình cảm ứng
|
setting.touchscreen.name = Điều khiển bằng màn hình cảm ứng
|
||||||
setting.fpscap.name = FPS tối đa
|
setting.fpscap.name = FPS tối đa
|
||||||
setting.fpscap.none = Không giới hạn
|
setting.fpscap.none = Không giới hạn
|
||||||
setting.fpscap.text = {0} FPS
|
setting.fpscap.text = {0} FPS
|
||||||
@@ -810,13 +830,13 @@ setting.sensitivity.name = Độ nhạy điều khiển
|
|||||||
setting.saveinterval.name = Khoảng thời gian lưu
|
setting.saveinterval.name = Khoảng thời gian lưu
|
||||||
setting.seconds = {0} giây
|
setting.seconds = {0} giây
|
||||||
setting.milliseconds = {0} mili giây
|
setting.milliseconds = {0} mili giây
|
||||||
setting.fullscreen.name = Toàn màng hình
|
setting.fullscreen.name = Toàn màn hình
|
||||||
setting.borderlesswindow.name = Không viền[lightgray] (yêu cầu khởi động lại)
|
setting.borderlesswindow.name = Không viền[lightgray] (yêu cầu khởi động lại)
|
||||||
setting.fps.name = Hiển thị FPS & Ping
|
setting.fps.name = Hiển thị FPS & Ping
|
||||||
setting.smoothcamera.name = Chế độ mượt mà
|
setting.smoothcamera.name = Chế độ mượt mà
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.pixelate.name = Đồ họa pixel
|
setting.pixelate.name = Đồ họa pixel
|
||||||
setting.minimap.name = Hiển thị bảng đồ mini
|
setting.minimap.name = Hiển thị bản đồ mini
|
||||||
setting.coreitems.name = Hiển thị vật phẩm trong căn cứ
|
setting.coreitems.name = Hiển thị vật phẩm trong căn cứ
|
||||||
setting.position.name = Hiển thị vị trí người chơi
|
setting.position.name = Hiển thị vị trí người chơi
|
||||||
setting.musicvol.name = Âm lượng nhạc
|
setting.musicvol.name = Âm lượng nhạc
|
||||||
@@ -833,7 +853,9 @@ setting.chatopacity.name = Độ mờ trò chuyện
|
|||||||
setting.lasersopacity.name = Độ mờ kết nối năng lượng
|
setting.lasersopacity.name = Độ mờ kết nối năng lượng
|
||||||
setting.bridgeopacity.name = Độ mờ cầu
|
setting.bridgeopacity.name = Độ mờ cầu
|
||||||
setting.playerchat.name = Hiển thị bong bóng trò chuyện của người chơi
|
setting.playerchat.name = Hiển thị bong bóng trò chuyện của người chơi
|
||||||
|
setting.showweather.name = Hiển thị đồ họa thời tiết
|
||||||
public.confirm = Bạn có muốn công khai trò chơi của mình không?\n[accent]Bất kỳ ai cũng có thể tham gia trò chơi của bạn.\n[lightgray]Điều này có thể được thay đổi sau trong Cài đặt-> Trò chơi-> Hiển thị trò chơi công khai.
|
public.confirm = Bạn có muốn công khai trò chơi của mình không?\n[accent]Bất kỳ ai cũng có thể tham gia trò chơi của bạn.\n[lightgray]Điều này có thể được thay đổi sau trong Cài đặt-> Trò chơi-> Hiển thị trò chơi công khai.
|
||||||
|
public.confirm.really = Nếu bạn muốn chơi với bạn bè, sử dụng [green]Invite Friend[] thay vì [scarlet]Public server[]!\nBạn có chắc chắn muốn làm trò chơi của mình [scarlet]công khai[]?
|
||||||
public.beta = Lưu ý rằng phiên bản beta của trò chơi không thể tạo sảnh công khai.
|
public.beta = Lưu ý rằng phiên bản beta của trò chơi không thể tạo sảnh công khai.
|
||||||
uiscale.reset = Kích thước UI đã được thay đổi.\nNhấn "OK" để xác nhận.\n[scarlet]Hoàn lại và thoát trong[accent] {0}[] giây...
|
uiscale.reset = Kích thước UI đã được thay đổi.\nNhấn "OK" để xác nhận.\n[scarlet]Hoàn lại và thoát trong[accent] {0}[] giây...
|
||||||
uiscale.cancel = Hủy & Thoát
|
uiscale.cancel = Hủy & Thoát
|
||||||
@@ -855,17 +877,17 @@ keybind.clear_building.name = Xóa công trình
|
|||||||
keybind.press = Nhấn một phím...
|
keybind.press = Nhấn một phím...
|
||||||
keybind.press.axis = Nhấn một tổ hợp phím hoặc một phím...
|
keybind.press.axis = Nhấn một tổ hợp phím hoặc một phím...
|
||||||
keybind.screenshot.name = Chụp ảnh bản đồ
|
keybind.screenshot.name = Chụp ảnh bản đồ
|
||||||
keybind.toggle_power_lines.name = Toggle Power Lasers
|
keybind.toggle_power_lines.name = Ẩn/Hiện đường truyền năng lượng
|
||||||
keybind.toggle_block_status.name = Toggle Block Statuses
|
keybind.toggle_block_status.name = Ẩn/Hiện trạng thái khối
|
||||||
keybind.move_x.name = Di chuyển X
|
keybind.move_x.name = Di chuyển X
|
||||||
keybind.move_y.name = Di chuyển Y
|
keybind.move_y.name = Di chuyển Y
|
||||||
keybind.mouse_move.name = Theo chuột
|
keybind.mouse_move.name = Theo chuột
|
||||||
keybind.pan.name = Xem Pan
|
keybind.pan.name = Di chuyển góc nhìn
|
||||||
keybind.boost.name = Tăng tốc
|
keybind.boost.name = Tăng tốc
|
||||||
keybind.schematic_select.name = Chọn khu vực
|
keybind.schematic_select.name = Chọn khu vực
|
||||||
keybind.schematic_menu.name = Menu Schematic
|
keybind.schematic_menu.name = Menu bản thiết kế
|
||||||
keybind.schematic_flip_x.name = Lật Schematic X
|
keybind.schematic_flip_x.name = Lật bản thiết kế X
|
||||||
keybind.schematic_flip_y.name = Lật Schematic Y
|
keybind.schematic_flip_y.name = Lật bản thiết kế Y
|
||||||
keybind.category_prev.name = Danh mục trước
|
keybind.category_prev.name = Danh mục trước
|
||||||
keybind.category_next.name = Danh mục tiếp theo
|
keybind.category_next.name = Danh mục tiếp theo
|
||||||
keybind.block_select_left.name = Chọn khối trái
|
keybind.block_select_left.name = Chọn khối trái
|
||||||
@@ -903,11 +925,12 @@ keybind.chat.name = Trò chuyện
|
|||||||
keybind.player_list.name = Danh sách người chơi
|
keybind.player_list.name = Danh sách người chơi
|
||||||
keybind.console.name = Bảng điều khiển
|
keybind.console.name = Bảng điều khiển
|
||||||
keybind.rotate.name = Xoay
|
keybind.rotate.name = Xoay
|
||||||
keybind.rotateplaced.name = Xoay hiện có (Giữ)
|
keybind.rotateplaced.name = Xoay khối (Giữ)
|
||||||
keybind.toggle_menus.name = Chuyển đổi Menus
|
keybind.toggle_menus.name = Ẩn/Hiện Menus
|
||||||
keybind.chat_history_prev.name = Lịch sử trò chuyện trước
|
keybind.chat_history_prev.name = Lịch sử trò chuyện trước
|
||||||
keybind.chat_history_next.name = Lịch sử trò chuyện sau
|
keybind.chat_history_next.name = Lịch sử trò chuyện sau
|
||||||
keybind.chat_scroll.name = Cuộn trò chuyện
|
keybind.chat_scroll.name = Cuộn trò chuyện
|
||||||
|
keybind.chat_mode.name = Thay đổi chế độ trò chuyện
|
||||||
keybind.drop_unit.name = Thả quân
|
keybind.drop_unit.name = Thả quân
|
||||||
keybind.zoom_minimap.name = Thu phóng bản đồ mini
|
keybind.zoom_minimap.name = Thu phóng bản đồ mini
|
||||||
mode.help.title = Mô tả chế độ
|
mode.help.title = Mô tả chế độ
|
||||||
@@ -924,7 +947,8 @@ mode.custom = Tùy chỉnh luật
|
|||||||
|
|
||||||
rules.infiniteresources = Tài nguyên vô hạn
|
rules.infiniteresources = Tài nguyên vô hạn
|
||||||
rules.reactorexplosions = Nổ lò phản ứng
|
rules.reactorexplosions = Nổ lò phản ứng
|
||||||
rules.schematic = Cho phép dùng schematic
|
rules.coreincinerates = Hủy vật phẩm khi căn cứ đầy
|
||||||
|
rules.schematic = Cho phép dùng bản thiết kế
|
||||||
rules.wavetimer = Đếm ngược đợt
|
rules.wavetimer = Đếm ngược đợt
|
||||||
rules.waves = Đợt
|
rules.waves = Đợt
|
||||||
rules.attack = Chế độ tấn công
|
rules.attack = Chế độ tấn công
|
||||||
@@ -935,6 +959,8 @@ rules.blockdamagemultiplier = Hệ số sát thương của khối
|
|||||||
rules.unitbuildspeedmultiplier = Hệ số tốc độ sản xuất lính
|
rules.unitbuildspeedmultiplier = Hệ số tốc độ sản xuất lính
|
||||||
rules.unithealthmultiplier = Hệ số máu của quân lính
|
rules.unithealthmultiplier = Hệ số máu của quân lính
|
||||||
rules.unitdamagemultiplier = Hệ số sát thương của quân lính
|
rules.unitdamagemultiplier = Hệ số sát thương của quân lính
|
||||||
|
rules.unitcapvariable = Căn cứ tăng giới hạn quân lính
|
||||||
|
rules.unitcap = Giới hạn quân lính
|
||||||
rules.enemycorebuildradius = Bán kính không xây dựng trong căn cứ của kẻ địch:[lightgray] (ô)
|
rules.enemycorebuildradius = Bán kính không xây dựng trong căn cứ của kẻ địch:[lightgray] (ô)
|
||||||
rules.wavespacing = Thời gian giữa các đợt:[lightgray] (giây)
|
rules.wavespacing = Thời gian giữa các đợt:[lightgray] (giây)
|
||||||
rules.buildcostmultiplier = Hệ số chi phí xây dựng
|
rules.buildcostmultiplier = Hệ số chi phí xây dựng
|
||||||
@@ -956,6 +982,7 @@ rules.explosions = Sát thương nổ của Khối/Quân lính
|
|||||||
rules.ambientlight = Ánh sáng môi trường
|
rules.ambientlight = Ánh sáng môi trường
|
||||||
rules.weather = Thời tiết
|
rules.weather = Thời tiết
|
||||||
rules.weather.frequency = Tần suất:
|
rules.weather.frequency = Tần suất:
|
||||||
|
rules.weather.always = Luôn luôn
|
||||||
rules.weather.duration = Thời gian:
|
rules.weather.duration = Thời gian:
|
||||||
|
|
||||||
content.item.name = Vật phẩm
|
content.item.name = Vật phẩm
|
||||||
@@ -977,7 +1004,7 @@ item.surge-alloy.name = Hợp kim
|
|||||||
item.spore-pod.name = Vỏ bào tử
|
item.spore-pod.name = Vỏ bào tử
|
||||||
item.sand.name = Cát
|
item.sand.name = Cát
|
||||||
item.blast-compound.name = Chất nổ
|
item.blast-compound.name = Chất nổ
|
||||||
item.pyratite.name = Tiền chất nổ
|
item.pyratite.name = Nhiệt thạch
|
||||||
item.metaglass.name = Thuỷ tinh
|
item.metaglass.name = Thuỷ tinh
|
||||||
item.scrap.name = Phế liệu
|
item.scrap.name = Phế liệu
|
||||||
liquid.water.name = Nước
|
liquid.water.name = Nước
|
||||||
@@ -1044,7 +1071,7 @@ block.moss.name = Rêu
|
|||||||
block.shrubs.name = Bụi cây
|
block.shrubs.name = Bụi cây
|
||||||
block.spore-moss.name = Rêu bào tử
|
block.spore-moss.name = Rêu bào tử
|
||||||
block.shale-wall.name = Tường đá phiến sét
|
block.shale-wall.name = Tường đá phiến sét
|
||||||
block.scrap-wall.name = Tường sắt vụn
|
block.scrap-wall.name = Tường phế liệu
|
||||||
block.scrap-wall-large.name = Tường phế liệu lớn
|
block.scrap-wall-large.name = Tường phế liệu lớn
|
||||||
block.scrap-wall-huge.name = Tường phế liệu khổng lồ
|
block.scrap-wall-huge.name = Tường phế liệu khổng lồ
|
||||||
block.scrap-wall-gigantic.name = Tường phế liệu siêu khổng lồ
|
block.scrap-wall-gigantic.name = Tường phế liệu siêu khổng lồ
|
||||||
@@ -1105,8 +1132,8 @@ block.copper-wall.name = Tường đồng
|
|||||||
block.copper-wall-large.name = Tường đồng lớn
|
block.copper-wall-large.name = Tường đồng lớn
|
||||||
block.titanium-wall.name = Tường titan
|
block.titanium-wall.name = Tường titan
|
||||||
block.titanium-wall-large.name = Tường titan lớn
|
block.titanium-wall-large.name = Tường titan lớn
|
||||||
block.plastanium-wall.name = Tường Plastanium
|
block.plastanium-wall.name = Tường Nhựa
|
||||||
block.plastanium-wall-large.name = Tường Plastanium lớn
|
block.plastanium-wall-large.name = Tường Nhựa lớn
|
||||||
block.phase-wall.name = Tường Phase
|
block.phase-wall.name = Tường Phase
|
||||||
block.phase-wall-large.name = Tường Phase lớn
|
block.phase-wall-large.name = Tường Phase lớn
|
||||||
block.thorium-wall.name = Tường Thorium
|
block.thorium-wall.name = Tường Thorium
|
||||||
@@ -1122,9 +1149,9 @@ block.conveyor.name = Băng chuyền
|
|||||||
block.titanium-conveyor.name = Băng chuyền titan
|
block.titanium-conveyor.name = Băng chuyền titan
|
||||||
block.plastanium-conveyor.name = Băng chuyền nhựa
|
block.plastanium-conveyor.name = Băng chuyền nhựa
|
||||||
block.armored-conveyor.name = Băng chuyền bọc giáp
|
block.armored-conveyor.name = Băng chuyền bọc giáp
|
||||||
block.junction.name = Junction
|
block.junction.name = Giao điểm
|
||||||
block.router.name = Bộ định tuyến
|
block.router.name = Bộ phân phát
|
||||||
block.distributor.name = Bộ phân phát
|
block.distributor.name = Bộ phân phát lớn
|
||||||
block.sorter.name = Bộ lọc
|
block.sorter.name = Bộ lọc
|
||||||
block.inverted-sorter.name = Bộ lọc ngược
|
block.inverted-sorter.name = Bộ lọc ngược
|
||||||
block.message.name = Thông điệp
|
block.message.name = Thông điệp
|
||||||
@@ -1134,8 +1161,8 @@ block.underflow-gate.name = Cổng tràn ngược
|
|||||||
block.silicon-smelter.name = Máy nấu silicon
|
block.silicon-smelter.name = Máy nấu silicon
|
||||||
block.phase-weaver.name = Máy tạo Phase
|
block.phase-weaver.name = Máy tạo Phase
|
||||||
block.pulverizer.name = Máy nghiền
|
block.pulverizer.name = Máy nghiền
|
||||||
block.cryofluid-mixer.name = Máy sản xuất chất làm mát
|
block.cryofluid-mixer.name = Máy sản xuất chất làm lạnh
|
||||||
block.melter.name = Máy nung chảy
|
block.melter.name = Lò nung chảy
|
||||||
block.incinerator.name = Máy phân hủy
|
block.incinerator.name = Máy phân hủy
|
||||||
block.spore-press.name = Máy nén bào tử
|
block.spore-press.name = Máy nén bào tử
|
||||||
block.separator.name = Máy phân tách
|
block.separator.name = Máy phân tách
|
||||||
@@ -1162,7 +1189,7 @@ block.item-void.name = Hủy vật phẩm
|
|||||||
block.liquid-source.name = Nguồn chất lỏng
|
block.liquid-source.name = Nguồn chất lỏng
|
||||||
block.liquid-void.name = Hủy chất lỏng
|
block.liquid-void.name = Hủy chất lỏng
|
||||||
block.power-void.name = Hủy năng lượng
|
block.power-void.name = Hủy năng lượng
|
||||||
block.power-source.name = Vô hạn năng lượng
|
block.power-source.name = Nguồn năng lượng
|
||||||
block.unloader.name = Điểm dỡ hàng
|
block.unloader.name = Điểm dỡ hàng
|
||||||
block.vault.name = Nhà kho
|
block.vault.name = Nhà kho
|
||||||
block.wave.name = Wave
|
block.wave.name = Wave
|
||||||
@@ -1171,9 +1198,9 @@ block.swarmer.name = Swarmer
|
|||||||
block.salvo.name = Salvo
|
block.salvo.name = Salvo
|
||||||
block.ripple.name = Ripple
|
block.ripple.name = Ripple
|
||||||
block.phase-conveyor.name = Phase Conveyor
|
block.phase-conveyor.name = Phase Conveyor
|
||||||
block.bridge-conveyor.name = Bridge Conveyor
|
block.bridge-conveyor.name = Cầu dẫn
|
||||||
block.plastanium-compressor.name = Máy sản xuất nhựa
|
block.plastanium-compressor.name = Máy sản xuất nhựa
|
||||||
block.pyratite-mixer.name = Máy trộn tiền chất nổ
|
block.pyratite-mixer.name = Máy trộn nhiệt thạch
|
||||||
block.blast-mixer.name = Máy trộn chất nổ
|
block.blast-mixer.name = Máy trộn chất nổ
|
||||||
block.solar-panel.name = Pin mặt trời
|
block.solar-panel.name = Pin mặt trời
|
||||||
block.solar-panel-large.name = Pin mặt trời lớn
|
block.solar-panel-large.name = Pin mặt trời lớn
|
||||||
@@ -1182,10 +1209,10 @@ block.repair-point.name = Điểm sửa chữa
|
|||||||
block.pulse-conduit.name = Ống dẫn titan
|
block.pulse-conduit.name = Ống dẫn titan
|
||||||
block.plated-conduit.name = Ống dẫn bọc giáp
|
block.plated-conduit.name = Ống dẫn bọc giáp
|
||||||
block.phase-conduit.name = Ống dẫn Phase
|
block.phase-conduit.name = Ống dẫn Phase
|
||||||
block.liquid-router.name = Bộ định tuyến chất lỏng
|
block.liquid-router.name = Bộ phân phát chất lỏng
|
||||||
block.liquid-tank.name = Thùng chất lỏng
|
block.liquid-tank.name = Thùng chất lỏng
|
||||||
block.liquid-junction.name = Liquid Junction
|
block.liquid-junction.name = Giao điểm chất lỏng
|
||||||
block.bridge-conduit.name = Bridge Conduit
|
block.bridge-conduit.name = Cầu dẫn chất lỏng
|
||||||
block.rotary-pump.name = Bơm điện
|
block.rotary-pump.name = Bơm điện
|
||||||
block.thorium-reactor.name = Lò phản ứng Thorium
|
block.thorium-reactor.name = Lò phản ứng Thorium
|
||||||
block.mass-driver.name = Máy phóng điện từ
|
block.mass-driver.name = Máy phóng điện từ
|
||||||
@@ -1227,11 +1254,11 @@ block.overdrive-dome.name = Máy tăng tốc lớn
|
|||||||
#experimental, may be removed
|
#experimental, may be removed
|
||||||
block.block-forge.name = Block Forge
|
block.block-forge.name = Block Forge
|
||||||
block.block-loader.name = Block Loader
|
block.block-loader.name = Block Loader
|
||||||
block.block-unloader.name = Block Unloader
|
block.block-unloader.name = Điểm dỡ hàng
|
||||||
block.interplanetary-accelerator.name = Máy gia tốc liên hành tinh
|
block.interplanetary-accelerator.name = Máy gia tốc liên hành tinh
|
||||||
|
|
||||||
block.switch.name = Công tắc
|
block.switch.name = Công tắc
|
||||||
block.micro-processor.name = Bộ xử lí mini
|
block.micro-processor.name = Bộ xử lí nhỏ
|
||||||
block.logic-processor.name = Bộ xử lý
|
block.logic-processor.name = Bộ xử lý
|
||||||
block.hyper-processor.name = Bộ xử lý lớn
|
block.hyper-processor.name = Bộ xử lý lớn
|
||||||
block.logic-display.name = Màn hình
|
block.logic-display.name = Màn hình
|
||||||
@@ -1282,6 +1309,9 @@ hint.payloadDrop.mobile = [accent]Nhấn và giữ[] tại một khu vực trố
|
|||||||
hint.waveFire = [accent]Wave[] súng có nước làm đạn dược sẽ tự động dập tắt các đám cháy gần đó.
|
hint.waveFire = [accent]Wave[] súng có nước làm đạn dược sẽ tự động dập tắt các đám cháy gần đó.
|
||||||
hint.generator = \uf879 [accent]Máy phát điện đốt cháy[] đốt than và truyền năng lượng cho các khối liền kề.\n\nPhạm vi truyền tải năng lượng có thể được mở rộng với \uf87f [accent]Chốt điện[].
|
hint.generator = \uf879 [accent]Máy phát điện đốt cháy[] đốt than và truyền năng lượng cho các khối liền kề.\n\nPhạm vi truyền tải năng lượng có thể được mở rộng với \uf87f [accent]Chốt điện[].
|
||||||
hint.guardian = [accent]Boss[] được bọc giáp. Sử dụng loại đạn yếu chẳng hạn như [accent]Đồng[] và [accent]Chì[] là [scarlet]không hiệu quả[].\n\nSử dụng súng tiên tiến hơn hoặc sử dụng \uf835 [accent]Than chì làm đạn [] \uf861Duo/\uf859Salvo đạn dược để hạ gục Boss.
|
hint.guardian = [accent]Boss[] được bọc giáp. Sử dụng loại đạn yếu chẳng hạn như [accent]Đồng[] và [accent]Chì[] là [scarlet]không hiệu quả[].\n\nSử dụng súng tiên tiến hơn hoặc sử dụng \uf835 [accent]Than chì làm đạn [] \uf861Duo/\uf859Salvo đạn dược để hạ gục Boss.
|
||||||
|
hint.coreUpgrade = Các căn cứ có thể được nâng cấp bằng cách [accent]đặt căn cứ cấp cao hơn trên chúng[].\n\nĐặt một căn cứ [accent]Trụ sở[] trên căn cứ [accent]Cơ sở[]. Đảm bảo không có vật cản gần đó.
|
||||||
|
hint.presetLaunch = Khác khu vực đáp [accent] xám[], như [accent]Frozen Forest[], có thể được phóng đến từ bất cứ đâu. Nó không yêu cầu chiếm các khu vực lân cận.\n\n[accent]Các khu vực được đánh số[], chẳng hạn như cái này, là [accent]không bắt buộc[].
|
||||||
|
hint.coopCampaign = Khi chơi chiến dịch[accent]co-op[], các vật phẩm được sản xuất trong bản đồ hiện tại cũng sẽ được gửi [accent]đến các khu vực của bạn[].\n\nBất kỳ nghiên cứu mới nào được thực hiện đều được lưu lại.
|
||||||
|
|
||||||
item.copper.description = Dùng trong tất cả các khu xây dựng và các loại đạn dược.
|
item.copper.description = Dùng trong tất cả các khu xây dựng và các loại đạn dược.
|
||||||
item.copper.details = Đồng, là kim loại phổ biến trên Serpulo. Có cấu trúc yếu trừ khi được tôi luyện.
|
item.copper.details = Đồng, là kim loại phổ biến trên Serpulo. Có cấu trúc yếu trừ khi được tôi luyện.
|
||||||
@@ -1315,15 +1345,15 @@ block.armored-conveyor.description = Vận chuyển vật phẩm về phía. Kh
|
|||||||
block.illuminator.description = Phát sáng.
|
block.illuminator.description = Phát sáng.
|
||||||
block.message.description = Lưu trữ tin nhắn giao tiếp giữa đồng đội.
|
block.message.description = Lưu trữ tin nhắn giao tiếp giữa đồng đội.
|
||||||
block.graphite-press.description = Nén than thành than chì.
|
block.graphite-press.description = Nén than thành than chì.
|
||||||
block.multi-press.description = Nén than thành than chì. Cần nước làm chất làm mát.
|
block.multi-press.description = Nén than thành than chì. Cần nước làm mát.
|
||||||
block.silicon-smelter.description = Tinh chế silicon từ cát và than.
|
block.silicon-smelter.description = Tinh chế silicon từ cát và than.
|
||||||
block.kiln.description = Nấu chảy cát và chì thành thuỷ tinh.
|
block.kiln.description = Nấu chảy cát và chì thành thuỷ tinh.
|
||||||
block.plastanium-compressor.description = Sản xuất nhựa từ dầu và titan.
|
block.plastanium-compressor.description = Sản xuất nhựa từ dầu và titan.
|
||||||
block.phase-weaver.description = Tổng hợp phase fabric từ thorium và cát.
|
block.phase-weaver.description = Tổng hợp phase fabric từ thorium và cát.
|
||||||
block.alloy-smelter.description = Trộn titan, chì, silicon và đồng thành hợp kim.
|
block.alloy-smelter.description = Trộn titan, chì, silicon và đồng thành hợp kim.
|
||||||
block.cryofluid-mixer.description = Trộn nước và bột titan để sản xuất chất làm mát.
|
block.cryofluid-mixer.description = Trộn nước và bột titan để sản xuất chất làm mát.
|
||||||
block.blast-mixer.description = Tạo ra hợp chất nổ từ tiền chất nổ và vỏ bào tử.
|
block.blast-mixer.description = Tạo ra hợp chất nổ từ nhiệt thạch và vỏ bào tử.
|
||||||
block.pyratite-mixer.description = Trộn than, chì và cát thành tiền chất nổ.
|
block.pyratite-mixer.description = Trộn than, chì và cát thành nhiệt thạch.
|
||||||
block.melter.description = Nung phế liệu thành xỉ.
|
block.melter.description = Nung phế liệu thành xỉ.
|
||||||
block.separator.description = Tách xỉ thành các thành phần khoáng của nó.
|
block.separator.description = Tách xỉ thành các thành phần khoáng của nó.
|
||||||
block.spore-press.description = Nén vỏ bào tử thành dầu.
|
block.spore-press.description = Nén vỏ bào tử thành dầu.
|
||||||
@@ -1350,10 +1380,10 @@ block.surge-wall.description = Bảo vệ công trình khỏi đạn của kẻ
|
|||||||
block.surge-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù, đôi khi tạo ra tia điện khi bị bắn.
|
block.surge-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù, đôi khi tạo ra tia điện khi bị bắn.
|
||||||
block.door.description = Một bức tường có thể đóng mở.
|
block.door.description = Một bức tường có thể đóng mở.
|
||||||
block.door-large.description = Một bức tường có thể đóng mở.
|
block.door-large.description = Một bức tường có thể đóng mở.
|
||||||
block.mender.description = Sửa chữa định kỳ các khối trong vùng lân cận.\nSử dụng silicon để tăng phạm vi và hiệu quả.
|
block.mender.description = Sửa chữa định kỳ các khối trong vùng lân cận.\nSử dụng Phase Fabric để tăng phạm vi và hiệu quả.
|
||||||
block.mend-projector.description = Sửa chữa các khối lân cận.\nSử dụng silicon để tăng phạm vi và hiệu quả.
|
block.mend-projector.description = Sửa chữa các khối lân cận.\nSử dụng Phase Fabric để tăng phạm vi và hiệu quả.
|
||||||
block.overdrive-projector.description = Tăng tốc độ làm việc của các công trình lân cận.\nSử dụng phase fabric để tăng phạm vi và hiệu quả.
|
block.overdrive-projector.description = Tăng tốc độ làm việc của các công trình lân cận.\nSử dụng phase fabric để tăng phạm vi và hiệu quả.
|
||||||
block.force-projector.description = Tạo ra một trường lực lục giác xung quanh nó, bảo vệ các tòa nhà và quân lính bên trong khỏi bị hư hại.\nQuá nóng nếu chịu quá nhiều sát thương. Sử dụng chất làm mát để giảm nhiệt độ. Sử dụng Phase fabric để tăng kích thước lá chắn.
|
block.force-projector.description = Tạo ra một trường lực lục giác xung quanh nó, bảo vệ các công trình và quân lính bên trong khỏi bị hư hại.\nQuá nóng nếu chịu quá nhiều sát thương. Sử dụng chất làm mát để giảm nhiệt độ. Sử dụng Phase fabric để tăng kích thước lá chắn.
|
||||||
block.shock-mine.description = Giải phóng tia điện khi tiếp xúc với quân lính đối phương.
|
block.shock-mine.description = Giải phóng tia điện khi tiếp xúc với quân lính đối phương.
|
||||||
block.conveyor.description = Vận chuyển vật phẩm về phía trước.
|
block.conveyor.description = Vận chuyển vật phẩm về phía trước.
|
||||||
block.titanium-conveyor.description = Vận chuyển vật phẩm về phía trước. Nhanh hơn băng chuyền tiêu chuẩn.
|
block.titanium-conveyor.description = Vận chuyển vật phẩm về phía trước. Nhanh hơn băng chuyền tiêu chuẩn.
|
||||||
@@ -1366,9 +1396,9 @@ block.inverted-sorter.description = Giống như máy phân loại, nhưng vật
|
|||||||
block.router.description = Phân phối các vật phẩm đầu vào thành 3 hướng đầu ra như nhau.
|
block.router.description = Phân phối các vật phẩm đầu vào thành 3 hướng đầu ra như nhau.
|
||||||
block.router.details = Không khuyên dùng cạnh đầu vào dây chuyền vì sẽ bị kẹt bởi đầu ra.
|
block.router.details = Không khuyên dùng cạnh đầu vào dây chuyền vì sẽ bị kẹt bởi đầu ra.
|
||||||
block.distributor.description = Phân phối các vật phẩm đầu vào thành 7 hướng đầu ra như nhau.
|
block.distributor.description = Phân phối các vật phẩm đầu vào thành 7 hướng đầu ra như nhau.
|
||||||
block.overflow-gate.description = Chỉ đưa vật phẩm ra 2 phía nếu phía trước bị chặn, không thể đặt cạnh nhau.
|
block.overflow-gate.description = Chỉ đưa vật phẩm ra 2 phía nếu phía trước bị chặn.
|
||||||
block.underflow-gate.description = Ngược với cổng tràn, chỉ đưa vật phẩm đến trước khi hai bên bị chặn, không thể đặt cạnh nhau.
|
block.underflow-gate.description = Ngược với cổng tràn, chỉ đưa vật phẩm đến trước khi hai bên bị chặn.
|
||||||
block.mass-driver.description = Cấu trúc vận chuyển vật phẩm tầm xa. Thu thập các lô vật phẩm và bắn chúng cho các mass driver khác.
|
block.mass-driver.description = Cấu trúc vận chuyển vật phẩm tầm xa. Thu thập các lô vật phẩm và bắn chúng cho các máy phóng điện từ khác.
|
||||||
block.mechanical-pump.description = Bơm chất lỏng, không yêu cầu năng lượng.
|
block.mechanical-pump.description = Bơm chất lỏng, không yêu cầu năng lượng.
|
||||||
block.rotary-pump.description = Bơm chất lỏng, yêu cầu năng lượng.
|
block.rotary-pump.description = Bơm chất lỏng, yêu cầu năng lượng.
|
||||||
block.thermal-pump.description = Bơm chất lỏng.
|
block.thermal-pump.description = Bơm chất lỏng.
|
||||||
@@ -1389,7 +1419,7 @@ block.battery-large.description = Tích trữ năng lượng khi dư thừa. Xu
|
|||||||
block.combustion-generator.description = Tạo ra năng lượng bằng cách đốt các vật liệu dễ cháy như than.
|
block.combustion-generator.description = Tạo ra năng lượng bằng cách đốt các vật liệu dễ cháy như than.
|
||||||
block.thermal-generator.description = Tạo ra năng lượng khi đặt ở những nơi nóng.
|
block.thermal-generator.description = Tạo ra năng lượng khi đặt ở những nơi nóng.
|
||||||
block.steam-generator.description = Tạo ra năng lượng bằng cách đốt cháy các vật liệu dễ cháy và chuyển nước thành hơi nước.
|
block.steam-generator.description = Tạo ra năng lượng bằng cách đốt cháy các vật liệu dễ cháy và chuyển nước thành hơi nước.
|
||||||
block.differential-generator.description = Tạo ra một lượng lớn năng lượng. Sử dụng sự chênh lệch nhiệt độ giữa cryofluid và pyratite đang cháy.
|
block.differential-generator.description = Tạo ra một lượng lớn năng lượng. Sử dụng sự chênh lệch nhiệt độ giữa chất làm lạnh và nhiệt thạch đang cháy.
|
||||||
block.rtg-generator.description = Sử dụng nhiệt của các hợp chất phóng xạ đang phân hủy để tạo ra năng lượng với tốc độ chậm.
|
block.rtg-generator.description = Sử dụng nhiệt của các hợp chất phóng xạ đang phân hủy để tạo ra năng lượng với tốc độ chậm.
|
||||||
block.solar-panel.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời.
|
block.solar-panel.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời.
|
||||||
block.solar-panel-large.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời. Hiệu quả hơn pin mặt trời tiêu chuẩn.
|
block.solar-panel-large.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời. Hiệu quả hơn pin mặt trời tiêu chuẩn.
|
||||||
@@ -1405,10 +1435,10 @@ block.cultivator.details = Công nghệ được phục hồi. Được sử d
|
|||||||
block.oil-extractor.description = Sử dụng lượng năng lượng năng lớn, sử dụng cát và nước để khoan dầu.
|
block.oil-extractor.description = Sử dụng lượng năng lượng năng lớn, sử dụng cát và nước để khoan dầu.
|
||||||
block.core-shard.description = Trung tâm của căn cứ. Sau khi bị phá hủy, khu vực này sẽ bị mất.
|
block.core-shard.description = Trung tâm của căn cứ. Sau khi bị phá hủy, khu vực này sẽ bị mất.
|
||||||
block.core-shard.details = Lần thử đầu tiên. Gọn nhẹ. Tự thay thế. Được trang bị tên lửa đẩy dùng một lần. Không được thiết kế để di chuyển giữa các hành tinh.
|
block.core-shard.details = Lần thử đầu tiên. Gọn nhẹ. Tự thay thế. Được trang bị tên lửa đẩy dùng một lần. Không được thiết kế để di chuyển giữa các hành tinh.
|
||||||
block.core-foundation.description = Trung tâm của căn cứ. Được bọc giáp. Stores more resources than a Shard.
|
block.core-foundation.description = Trung tâm của căn cứ. Được bọc giáp. Chứa được nhiều tài nguyên hơn Căn cứ: Cơ sỏ.
|
||||||
block.core-foundation.details = The second iteration.
|
block.core-foundation.details = Căn cứ cấp 2.
|
||||||
block.core-nucleus.description = Lõi của căn cứ. Bọc giáp chắc chắn. Lưu trữ lượng lớn tài nguyên.
|
block.core-nucleus.description = Lõi của căn cứ. Bọc giáp chắc chắn. Lưu trữ lượng lớn tài nguyên.
|
||||||
block.core-nucleus.details = Lần thử thứ ba và lần thử cuối.
|
block.core-nucleus.details = Căn cứ cấp 3 và cũng là cấp cao nhất.
|
||||||
block.vault.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với điểm dỡ hàng.
|
block.vault.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với điểm dỡ hàng.
|
||||||
block.container.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với điểm dỡ hàng.
|
block.container.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với điểm dỡ hàng.
|
||||||
block.unloader.description = Lấy các vật phẩm được chọn từ các ô gần đó.
|
block.unloader.description = Lấy các vật phẩm được chọn từ các ô gần đó.
|
||||||
@@ -1421,17 +1451,17 @@ block.wave.description = Phóng một tia chất lỏng vào kẻ địch. Tự
|
|||||||
block.lancer.description = Tích tụ và phóng tia năng lượng mạnh vào kẻ địch trên mặt đất.
|
block.lancer.description = Tích tụ và phóng tia năng lượng mạnh vào kẻ địch trên mặt đất.
|
||||||
block.arc.description = Phóng tia điện vào kẻ địch trên mặt đất.
|
block.arc.description = Phóng tia điện vào kẻ địch trên mặt đất.
|
||||||
block.swarmer.description = Bắn tên lửa truy đuổi vào kẻ địch.
|
block.swarmer.description = Bắn tên lửa truy đuổi vào kẻ địch.
|
||||||
block.salvo.description = Bắn đạn salvo vào kẻ địch.
|
block.salvo.description = Bắn loạt đạn vào kẻ địch.
|
||||||
block.fuse.description = Bắn ba đạn xuyên giáp tầm gần vào kẻ địch.
|
block.fuse.description = Bắn ba đạn xuyên giáp tầm gần vào kẻ địch.
|
||||||
block.ripple.description = Bắn cụm đạn vào kẻ địch trên mặt đất ở tầm xa.
|
block.ripple.description = Bắn cụm đạn vào kẻ địch trên mặt đất ở tầm xa.
|
||||||
block.cyclone.description = Bắn đạn nổ vào kẻ địch ở gần.
|
block.cyclone.description = Bắn đạn nổ vào kẻ địch ở gần.
|
||||||
block.spectre.description = Bắn đạn xuyên giáp lớn ở kẻ địch trên không và trên mặt đất.
|
block.spectre.description = Bắn đạn xuyên giáp lớn ở kẻ địch trên không và trên mặt đất.
|
||||||
block.meltdown.description = Nạp và bắn một tia laser liên tục vào kẻ địch ở gần. Cần có chất làm mát để hoạt động.
|
block.meltdown.description = Nạp và bắn một tia laser liên tục vào kẻ địch ở gần. Cần có chất làm mát để hoạt động.
|
||||||
block.foreshadow.description = Bắn viên một viên đạn tỉa lớn ở tầm xa.
|
block.foreshadow.description = Bắn viên một viên đạn tỉa lớn ở tầm xa.
|
||||||
block.repair-point.description = Liên tục sửa chữa robot ở gần trong phạm vi hoạt động.
|
block.repair-point.description = Liên tục sửa chữa robot ở trong phạm vi hoạt động.
|
||||||
block.segment.description = Gây hư hại và phá hủy đạn đến. Ngoại trừ tia laser.
|
block.segment.description = Gây hư hại và phá hủy đạn đến. Ngoại trừ tia laser.
|
||||||
block.parallax.description = Bắn một tia kéo máy bay địch và làm hư hỏng nó trong quá trình kéo.
|
block.parallax.description = Bắn một tia kéo máy bay địch và làm hư hỏng nó trong quá trình kéo.
|
||||||
block.tsunami.description = Phóng một tia chất lỏng mạnh vào kẻ địch. Tự chữa cháy nếu được cung cấp nước.
|
block.tsunami.description = Phóng một tia chất lỏng mạnh vào kẻ địch. Tự chữa cháy nếu được cung cấp nước hoặc chất làm mát.
|
||||||
block.silicon-crucible.description = Tinh chế silicon từ cát và than, sử dụng tiền chất nổ làm nguồn nhiệt phụ. Có hiệu quả cao hơn khi ở nơi nóng.
|
block.silicon-crucible.description = Tinh chế silicon từ cát và than, sử dụng tiền chất nổ làm nguồn nhiệt phụ. Có hiệu quả cao hơn khi ở nơi nóng.
|
||||||
block.disassembler.description = Tách xỉ thành các kim loại khác nhau với hiệu suất thấp. Có thể sản xuất thorium.
|
block.disassembler.description = Tách xỉ thành các kim loại khác nhau với hiệu suất thấp. Có thể sản xuất thorium.
|
||||||
block.overdrive-dome.description = Tăng tốc độ làm việc của các công trình lân cận. Sử dụng phase fabric and silicon để hoạt động.
|
block.overdrive-dome.description = Tăng tốc độ làm việc của các công trình lân cận. Sử dụng phase fabric and silicon để hoạt động.
|
||||||
@@ -1447,12 +1477,12 @@ block.exponential-reconstructor.description = Nâng cấp quân của bạn lên
|
|||||||
block.tetrative-reconstructor.description = Nâng cấp quân của bạn nên cấp năm (cuối cùng).
|
block.tetrative-reconstructor.description = Nâng cấp quân của bạn nên cấp năm (cuối cùng).
|
||||||
block.switch.description = Công tắc, trạng thái có thể được đọc và điều khiển với vi xử lí logic.
|
block.switch.description = Công tắc, trạng thái có thể được đọc và điều khiển với vi xử lí logic.
|
||||||
block.micro-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình.
|
block.micro-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình.
|
||||||
block.logic-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn vi xử lí micro.
|
block.logic-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn bộ xử lí nhỏ.
|
||||||
block.hyper-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn vi xử lí logic.
|
block.hyper-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn bộ xử lí.
|
||||||
block.memory-cell.description = Lưu trữ thông tin cho bộ xử lí logic.
|
block.memory-cell.description = Lưu trữ thông tin cho bộ xử lí.
|
||||||
block.memory-bank.description = Lưu trữ thông tin cho bộ xử lí logic. Dung lượng cao.
|
block.memory-bank.description = Lưu trữ thông tin cho bộ xử lí. Dung lượng cao.
|
||||||
block.logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí logic.
|
block.logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí.
|
||||||
block.large-logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí logic.
|
block.large-logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí.
|
||||||
block.interplanetary-accelerator.description = Tòa súng từ trường cỡ lớn. Tăng tốc vật phóng đến vận tốc thoát để di chuyển giữa các hành tinh.
|
block.interplanetary-accelerator.description = Tòa súng từ trường cỡ lớn. Tăng tốc vật phóng đến vận tốc thoát để di chuyển giữa các hành tinh.
|
||||||
|
|
||||||
unit.dagger.description = Bắn đạn tiêu chuẩn vào tất cả kẻ địch xung quanh.
|
unit.dagger.description = Bắn đạn tiêu chuẩn vào tất cả kẻ địch xung quanh.
|
||||||
@@ -1466,7 +1496,7 @@ unit.quasar.description = Bắn tia laser xuyên giáp làm tổn hại kẻ đ
|
|||||||
unit.vela.description = Bắn tia laser liên tục xuyên giáp làm tổn hại kẻ địch, gây cháy và sửa chữa các tòa nhà. Có khả năng bay.
|
unit.vela.description = Bắn tia laser liên tục xuyên giáp làm tổn hại kẻ địch, gây cháy và sửa chữa các tòa nhà. Có khả năng bay.
|
||||||
unit.corvus.description = Bắn đia laser đánh bật kẻ địch và sửa chữa các tòa nhà. Có thể đi qua đa số địa hình.
|
unit.corvus.description = Bắn đia laser đánh bật kẻ địch và sửa chữa các tòa nhà. Có thể đi qua đa số địa hình.
|
||||||
unit.crawler.description = Chạy đến kẻ địch và nổ.
|
unit.crawler.description = Chạy đến kẻ địch và nổ.
|
||||||
unit.atrax.description = Bắn cục xỉ vào kẻ địch trên mặt đất. Có thể đi qua đa số địa hình.
|
unit.atrax.description = Phun xỉ nóng chảy vào kẻ địch trên mặt đất. Có thể đi qua đa số địa hình.
|
||||||
unit.spiroct.description = Bắn tia laser vào kẻ địch trên mặt đất và tự sửa chữa nó. Có thể đi qua đa số địa hình.
|
unit.spiroct.description = Bắn tia laser vào kẻ địch trên mặt đất và tự sửa chữa nó. Có thể đi qua đa số địa hình.
|
||||||
unit.arkyid.description = Bắn tia laser lớn vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình.
|
unit.arkyid.description = Bắn tia laser lớn vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình.
|
||||||
unit.toxopid.description = Bắn chùm đạn điện và tia laser xuyên giáp vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình.
|
unit.toxopid.description = Bắn chùm đạn điện và tia laser xuyên giáp vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình.
|
||||||
@@ -1479,12 +1509,148 @@ unit.mono.description = Tự động khai thác đồng và chì, và vận chuy
|
|||||||
unit.poly.description = Tự động xây dựng lại các công trình bị hỏng và hỗ trợ các quân lính khác thi công.
|
unit.poly.description = Tự động xây dựng lại các công trình bị hỏng và hỗ trợ các quân lính khác thi công.
|
||||||
unit.mega.description = Tự động sửa chữa các công trình bị hỏng. Có khả năng mang bộ binh nhỏ.
|
unit.mega.description = Tự động sửa chữa các công trình bị hỏng. Có khả năng mang bộ binh nhỏ.
|
||||||
unit.quad.description = Thả bom to lên kẻ địch, sửa chữa các tòa nhà và tổn hại kẻ địch. Có khả năng mang bộ binh vừa.
|
unit.quad.description = Thả bom to lên kẻ địch, sửa chữa các tòa nhà và tổn hại kẻ địch. Có khả năng mang bộ binh vừa.
|
||||||
unit.oct.description = Bảo vệ đồng minh với giáp. Có kả năng mang đa số bộ binh.
|
unit.oct.description = Bảo vệ đồng minh với giáp. Có khả năng mang đa số bộ binh.
|
||||||
unit.risso.description = Bắn chùm tên lửa và đạn lên kẻ địch tầm gần.
|
unit.risso.description = Bắn chùm tên lửa và đạn lên kẻ địch tầm gần.
|
||||||
unit.minke.description = Bắn đạn và đạn thường lên kẻ địch tầm gần trên mặt đất.
|
unit.minke.description = Bắn đạn và đạn thường lên kẻ địch tầm gần trên mặt đất.
|
||||||
unit.bryde.description = Bắn đạn tầm xa và tên lửa vào kẻ địch.
|
unit.bryde.description = Bắn đạn tầm xa và tên lửa vào kẻ địch.
|
||||||
unit.sei.description = Bắn chùm tên lửa và đạn xuyên giáp vào kẻ địch.
|
unit.sei.description = Bắn chùm tên lửa và đạn xuyên giáp vào kẻ địch.
|
||||||
unit.omura.description = Bắn đạn từ trường xuyên giáp tầm xa vào kẻ địch. Tạo nên drone báo hiệu.
|
unit.omura.description = Bắn đạn từ trường xuyên giáp tầm xa vào kẻ địch. Tạo nên Flare.
|
||||||
unit.alpha.description = Bảo vệ căn cứ cơ sở khỏi kẻ thù. Có thể xây dựng.
|
unit.alpha.description = Bảo vệ căn cứ cơ sở khỏi kẻ thù. Có thể xây dựng.
|
||||||
unit.beta.description = Bảo vệ căn cứ trụ sở khỏi kẻ thù. Có thể xây dựng.
|
unit.beta.description = Bảo vệ căn cứ trụ sở khỏi kẻ thù. Có thể xây dựng.
|
||||||
unit.gamma.description = Bảo vệ căn cứ trung tâm khỏi kẻ thù. Có thể xây dựng.
|
unit.gamma.description = Bảo vệ căn cứ trung tâm khỏi kẻ thù. Có thể xây dựng.
|
||||||
|
|
||||||
|
lst.read = Đọc một số từ bộ nhớ được liên kết.
|
||||||
|
lst.write = Ghi một số vào bộ nhớ được liên kết.
|
||||||
|
lst.print = Thêm văn bản vào bộ nhớ in.\nKhông hiển thị gì cho đến khi sử dụng [accent]Print Flush[].
|
||||||
|
lst.draw = Thêm một thao tác vào bộ nhớ vẽ.\nKhông hiển thị gì cho đến khi sử dụng [accent]Draw Flush[].
|
||||||
|
lst.drawflush = Chuyển các thao tác [accent]Draw[] đến màng hình.
|
||||||
|
lst.printflush = Chuyển các thao tác [accent]Print[] đến khối tin nhắn.
|
||||||
|
lst.getlink = Nhận liên kết bộ xử lý theo thứ tự. Bắt đầu từ 0.
|
||||||
|
lst.control = Điều khiển một khối.
|
||||||
|
lst.radar = Định vị các quân lính trong phạm vi xung quanh một khối.
|
||||||
|
lst.sensor = Lấy dữ liệu từ một khối hoặc quân lính.
|
||||||
|
lst.set = Đặt một biến.
|
||||||
|
lst.operation = Thực hiện thao tác trên 1-2 biến.
|
||||||
|
lst.end = Chuyển đến lệnh đầu tiên.
|
||||||
|
lst.jump = Chuyển qua lệnh khác nếu điều kiện đúng.
|
||||||
|
lst.unitbind = Bind to the next unit of a type, and store it in [accent]@unit[].
|
||||||
|
lst.unitcontrol = Control the currently bound unit.
|
||||||
|
lst.unitradar = Locate units around the currently bound unit.
|
||||||
|
lst.unitlocate = Locate a specific type of position/building anywhere on the map.\nRequires a bound unit.
|
||||||
|
|
||||||
|
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
|
lenum.shoot = Bắn vào vị trí xác định.
|
||||||
|
lenum.shootp = Shoot at a unit/building with velocity prediction.
|
||||||
|
lenum.configure = Building configuration, e.g. sorter item.
|
||||||
|
lenum.enabled = Bất cứ khi nào khối hoạt động.
|
||||||
|
|
||||||
|
laccess.color = Màu đèn chiếu sáng.
|
||||||
|
|
||||||
|
graphicstype.clear = Tô màu cho màn hình.
|
||||||
|
graphicstype.color = Đặt màu cho thao tác vẽ tiếp theo.
|
||||||
|
graphicstype.stroke = Đặt chiều rộng đoạn thẳng.
|
||||||
|
graphicstype.line = Vẽ đoạn thẳng.
|
||||||
|
graphicstype.rect = Tô một hình chữ nhật.
|
||||||
|
graphicstype.linerect = Vẽ đường viền hình chữ nhật.
|
||||||
|
graphicstype.poly = Tô vào đa giác đều.
|
||||||
|
graphicstype.linepoly = Vẽ đường viền đa giác đều.
|
||||||
|
graphicstype.triangle = Tô một hình tam giác.
|
||||||
|
graphicstype.image = Vẽ hình ảnh một số nội dung.\nVd: [accent]@router[] hoặc [accent]@dagger[].
|
||||||
|
|
||||||
|
lenum.always = Luôn đúng.
|
||||||
|
lenum.idiv = Chia lấy phần nguyên.
|
||||||
|
lenum.div = Phép chia.\nTrả về [accent]null[] khi chia cho 0.
|
||||||
|
lenum.mod = Chia lấy phần dư.
|
||||||
|
lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0.
|
||||||
|
lenum.notequal = Not equal. Coerces types.
|
||||||
|
lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[].
|
||||||
|
lenum.shl = Bit-shift left.
|
||||||
|
lenum.shr = Bit-shift right.
|
||||||
|
lenum.or = Bitwise OR.
|
||||||
|
lenum.land = Logical AND.
|
||||||
|
lenum.and = Bitwise AND.
|
||||||
|
lenum.not = Bitwise flip.
|
||||||
|
lenum.xor = Bitwise XOR.
|
||||||
|
|
||||||
|
lenum.min = Số nhỏ nhất giữa hai số.
|
||||||
|
lenum.max = Số lớn nhất giữa hai số.
|
||||||
|
lenum.angle = Góc của vectơ tính bằng độ.
|
||||||
|
lenum.len = Chiều dài của vectơ.
|
||||||
|
lenum.sin = Sin, tính bằng độ.
|
||||||
|
lenum.cos = Cos, tính bằng độ.
|
||||||
|
lenum.tan = Tan, tính bằng độ.
|
||||||
|
#not a typo, look up 'range notation'
|
||||||
|
lenum.rand = Số ngẫu nhiên trong phạm vi [0, giá trị).
|
||||||
|
lenum.log = Lôgarit tự nhiên (ln).
|
||||||
|
lenum.log10 = Lôgarit cơ số 10.
|
||||||
|
lenum.noise = 2D simplex noise.
|
||||||
|
lenum.abs = Giá trị tuyệt đối.
|
||||||
|
lenum.sqrt = Căn bậc hai.
|
||||||
|
|
||||||
|
lenum.any = Bất kì quân lính.
|
||||||
|
lenum.ally = Quân lính cùng đội.
|
||||||
|
lenum.attacker = Quân lính với vũ khí.
|
||||||
|
lenum.enemy = Quân lính địch.
|
||||||
|
lenum.boss = Boss.
|
||||||
|
lenum.flying = Không quân.
|
||||||
|
lenum.ground = Bộ binh.
|
||||||
|
lenum.player = Quân lính do người chơi điều khiển.
|
||||||
|
|
||||||
|
lenum.ore = Ore deposit.
|
||||||
|
lenum.damaged = Damaged ally building.
|
||||||
|
lenum.spawn = Enemy spawn point.\nMay be a core or a position.
|
||||||
|
lenum.building = Building in a specific group.
|
||||||
|
|
||||||
|
lenum.core = Bất kì căn cứ.
|
||||||
|
lenum.storage = Khối lưu trữ, Ví dụ Nhà kho.
|
||||||
|
lenum.generator = Khối có thể tạo ra năng lượng.
|
||||||
|
lenum.factory = Khối có thể biến đổi vật phẩm.
|
||||||
|
lenum.repair = Điểm sửa chữa.
|
||||||
|
lenum.rally = Trung tâm chỉ huy.
|
||||||
|
lenum.battery = Bất kì pin.
|
||||||
|
lenum.resupply = Điểm tiếp tế.\nChỉ phù hợp khi [accent]"Quân lính cần đạn"[] được bật.
|
||||||
|
lenum.reactor = Lò phản ứng Thorium\Nhiệt hạch.
|
||||||
|
lenum.turret = Bất kì súng.
|
||||||
|
|
||||||
|
sensor.in = The building/unit to sense.
|
||||||
|
|
||||||
|
radar.from = Building to sense from.\nSensor range is limited by building range.
|
||||||
|
radar.target = Filter for units to sense.
|
||||||
|
radar.and = Additional filters.
|
||||||
|
radar.order = Sorting order. 0 to reverse.
|
||||||
|
radar.sort = Metric to sort results by.
|
||||||
|
radar.output = Variable to write output unit to.
|
||||||
|
|
||||||
|
unitradar.target = Filter for units to sense.
|
||||||
|
unitradar.and = Additional filters.
|
||||||
|
unitradar.order = Sorting order. 0 to reverse.
|
||||||
|
unitradar.sort = Metric to sort results by.
|
||||||
|
unitradar.output = Variable to write output unit to.
|
||||||
|
|
||||||
|
control.of = Building to control.
|
||||||
|
control.unit = Unit/building to aim at.
|
||||||
|
control.shoot = Whether to shoot.
|
||||||
|
|
||||||
|
unitlocate.enemy = Whether to locate enemy buildings.
|
||||||
|
unitlocate.found = Whether the object was found.
|
||||||
|
unitlocate.building = Output variable for located building.
|
||||||
|
unitlocate.outx = Output X coordinate.
|
||||||
|
unitlocate.outy = Output Y coordinate.
|
||||||
|
unitlocate.group = Building group to look for.
|
||||||
|
|
||||||
|
lenum.stop = Dừng di chuyển/Đào/Xây dựng.
|
||||||
|
lenum.move = Di chuyển đến vị trí xác định.
|
||||||
|
lenum.approach = Approach a position with a radius.
|
||||||
|
lenum.pathfind = Tìm đường đến nơi tạo ra kẻ địch.
|
||||||
|
lenum.target = Bắn vào vị trí xác định.
|
||||||
|
lenum.targetp = Shoot a target with velocity prediction.
|
||||||
|
lenum.itemdrop = Thả vật phẩm.
|
||||||
|
lenum.itemtake = Lấy vật phẩm từ khối.
|
||||||
|
lenum.paydrop = Thả khối hàng hiện tại.
|
||||||
|
lenum.paytake = Nhất khối hàng tại vị trí hiện tại.
|
||||||
|
lenum.flag = Numeric unit flag.
|
||||||
|
lenum.mine = Đào tại vị trí.
|
||||||
|
lenum.build = Xây công trình.
|
||||||
|
lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[].
|
||||||
|
lenum.within = Kiểm tra xem quân lính có gần vị trí không.
|
||||||
|
lenum.boost = Start/stop boosting.
|
||||||
@@ -787,6 +787,7 @@ setting.shadows.name = 影子
|
|||||||
setting.blockreplace.name = 自动推荐合适的建筑
|
setting.blockreplace.name = 自动推荐合适的建筑
|
||||||
setting.linear.name = 抗锯齿
|
setting.linear.name = 抗锯齿
|
||||||
setting.hints.name = 提示
|
setting.hints.name = 提示
|
||||||
|
setting.logichints.name = 逻辑代码提示
|
||||||
setting.flow.name = 显示资源传送速度[scarlet]
|
setting.flow.name = 显示资源传送速度[scarlet]
|
||||||
setting.backgroundpause.name = 在背景中暂停
|
setting.backgroundpause.name = 在背景中暂停
|
||||||
setting.buildautopause.name = 自动暂停建造
|
setting.buildautopause.name = 自动暂停建造
|
||||||
@@ -1503,3 +1504,145 @@ unit.omura.description = 攻击附近所有敌人。发射远程穿透轨道炮
|
|||||||
unit.alpha.description = 保护初代核心。可构建结构。
|
unit.alpha.description = 保护初代核心。可构建结构。
|
||||||
unit.beta.description = 保护次代核心。可构建结构。
|
unit.beta.description = 保护次代核心。可构建结构。
|
||||||
unit.gamma.description = 保护终代核心。可构建结构。
|
unit.gamma.description = 保护终代核心。可构建结构。
|
||||||
|
|
||||||
|
lst.read = 从连接的内存读取数字
|
||||||
|
lst.write = 写入数字到连接的内存
|
||||||
|
lst.print = 添加文字到打印缓存\n用了[accent]Print Flush[]才会显示
|
||||||
|
lst.draw = 添加操作到绘图队列\n用了[accent]Draw Flush[]才会显示
|
||||||
|
lst.drawflush = 刷新列队的[accent]Print[]操作到显示屏
|
||||||
|
lst.printflush = 刷新[accent]Draw[]缓存的文字到消息板
|
||||||
|
lst.getlink = 获取处理器连接\n索引从0开始
|
||||||
|
lst.control = 控制建筑
|
||||||
|
lst.radar = 定位建筑周边的单位\n有范围限制
|
||||||
|
lst.sensor = 从建筑或单位取得数据
|
||||||
|
lst.set = 设置变量
|
||||||
|
lst.operation = 操作一两个变量
|
||||||
|
lst.end = 跳至指令栈顶\n(第一条语句)
|
||||||
|
lst.jump = 有条件地跳到另一语句
|
||||||
|
lst.unitbind = 绑定下一个某型号单位\n并存到[accent]@unit[]
|
||||||
|
lst.unitcontrol = 控制绑定的单位
|
||||||
|
lst.unitradar = 定位绑定的单位周围的单位
|
||||||
|
lst.unitlocate = 定位指定类型的建筑或位置\n全图范围,需要绑定单位
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]这儿不允许处理器控制单位去建设
|
||||||
|
|
||||||
|
lenum.type = 建筑和单位的类型,不是字串\n比如路由器返回[accent]@router[]
|
||||||
|
lenum.shoot = 瞄准/射击某个位置
|
||||||
|
lenum.shootp = 按提前量瞄准/射击目标
|
||||||
|
lenum.configure = 建筑配置,比如分拣器分拣的物品
|
||||||
|
lenum.enabled = 建筑的启用状态
|
||||||
|
|
||||||
|
laccess.color = 照明器发光的颜色
|
||||||
|
laccess.controller = 单位控制者\n如果是处理器,返回处理器\n如果在编队中,返回领队\n其他的,返回单位自己
|
||||||
|
laccess.dead = 单位或建筑是不是死了或无效了
|
||||||
|
laccess.controlled = 若单位控制者是处理器,返回[accent]@ctrlProcessor[]\n若单位/建筑由玩家控制,返回[accent]@ctrlPlayer[]\n若单位在编队中,返回[accent]@ctrlFormation[]\n其他的,返回0
|
||||||
|
laccess.commanded = [red]已弃用,将被移除![]\n应该使用[accent]controlled[]
|
||||||
|
|
||||||
|
graphicstype.clear = 用指定颜色填满显示屏
|
||||||
|
graphicstype.color = 设置后续画图操作的颜色
|
||||||
|
graphicstype.stroke = 设置线宽
|
||||||
|
graphicstype.line = 画线段
|
||||||
|
graphicstype.rect = 填充矩形
|
||||||
|
graphicstype.linerect = 画矩形框
|
||||||
|
graphicstype.poly = 填充正多边形
|
||||||
|
graphicstype.linepoly = 画正多边形框
|
||||||
|
graphicstype.triangle = 填充三角形
|
||||||
|
graphicstype.image = 画出游戏内容的图像\n比如,[accent]@router[]和[accent]@dagger[]
|
||||||
|
|
||||||
|
lenum.always = 总是跳转
|
||||||
|
lenum.idiv = 整除
|
||||||
|
lenum.div = 除法,除以0时返回[accent]null[]
|
||||||
|
lenum.mod = 取余数
|
||||||
|
lenum.equal = 相等。有转换\nnull比较数字时算作0,非null对象算作1
|
||||||
|
lenum.notequal = 不相等。有转换
|
||||||
|
lenum.strictequal = 严格相等。不转换\n可用于检查[accent]null[]
|
||||||
|
lenum.shl = 左移位
|
||||||
|
lenum.shr = 右移位
|
||||||
|
lenum.or = 按位或
|
||||||
|
lenum.land = 逻辑与
|
||||||
|
lenum.and = 按位与
|
||||||
|
lenum.not = 按位非
|
||||||
|
lenum.xor = 按位异或
|
||||||
|
|
||||||
|
lenum.min = 取小的那个数
|
||||||
|
lenum.max = 取大的那个数
|
||||||
|
lenum.angle = 方位角°
|
||||||
|
lenum.len = 原点到该点距离
|
||||||
|
lenum.sin = 正弦°(对边:斜边)
|
||||||
|
lenum.cos = 余弦°(邻边:斜边)
|
||||||
|
lenum.tan = 正切°(对边:邻边)
|
||||||
|
lenum.rand = [0, 值) 范围内随机数
|
||||||
|
lenum.log = 自然对数(ln)
|
||||||
|
lenum.log10 = 10底对数
|
||||||
|
lenum.noise = 二维单形噪声
|
||||||
|
lenum.abs = 绝对值
|
||||||
|
lenum.sqrt = 二次方根
|
||||||
|
|
||||||
|
lenum.any = 任意单位
|
||||||
|
lenum.ally = 友方单位
|
||||||
|
lenum.attacker = 有武器的单位
|
||||||
|
lenum.enemy = 敌方单位
|
||||||
|
lenum.boss = Boss单位
|
||||||
|
lenum.flying = 飞行单位
|
||||||
|
lenum.ground = 地面单位
|
||||||
|
lenum.player = 玩家控制的单位
|
||||||
|
|
||||||
|
lenum.ore = 矿床
|
||||||
|
lenum.damaged = 受损的友方建筑
|
||||||
|
lenum.spawn = 敌人出生点\n可能是核心或地点
|
||||||
|
lenum.building = 分组内的建筑
|
||||||
|
|
||||||
|
lenum.core = 核心
|
||||||
|
lenum.storage = 容器/仓库
|
||||||
|
lenum.generator = 发电建筑
|
||||||
|
lenum.factory = 工厂
|
||||||
|
lenum.repair = 维修点
|
||||||
|
lenum.rally = 指挥中心
|
||||||
|
lenum.battery = 电池
|
||||||
|
lenum.resupply = 补给点\n仅当启用[accent]“单位弹药”[]时有用
|
||||||
|
lenum.reactor = 钍反应堆/冲击反应堆
|
||||||
|
lenum.turret = 炮塔
|
||||||
|
|
||||||
|
sensor.in = 要传感的建筑或单位
|
||||||
|
|
||||||
|
radar.from = 要实施探测的建筑\n探测距离受限于建筑范围
|
||||||
|
radar.target = 筛选要探测的单位
|
||||||
|
radar.and = 更多筛子
|
||||||
|
radar.order = 排序:1(true)从小到大 0(false)反序
|
||||||
|
radar.sort = 排序的量度
|
||||||
|
radar.output = 输出单位的变量
|
||||||
|
|
||||||
|
unitradar.target = 筛选要探测的单位
|
||||||
|
unitradar.and = 更多筛子
|
||||||
|
unitradar.order = 排序:1(true)从小到大 0(false)反序
|
||||||
|
unitradar.sort = 排序的量度
|
||||||
|
unitradar.output = 输出单位的变量
|
||||||
|
|
||||||
|
control.of = 要控制的建筑
|
||||||
|
control.unit = 要瞄准的单位或建筑
|
||||||
|
control.shoot = 是否射击
|
||||||
|
|
||||||
|
unitlocate.enemy = 定位敌方还是我方建筑
|
||||||
|
unitlocate.found = 有没有找到
|
||||||
|
unitlocate.building = 找到的建筑的输出变量
|
||||||
|
unitlocate.outx = 输出X坐标
|
||||||
|
unitlocate.outy = 输出Y坐标
|
||||||
|
unitlocate.group = 要找的建筑组
|
||||||
|
|
||||||
|
lenum.idle = 不移动,但进行采矿/修建\n默认状态
|
||||||
|
lenum.stop = 停止移动/采矿/修建
|
||||||
|
lenum.move = 移动到某个位置
|
||||||
|
lenum.approach = 接近到某个圆形区域
|
||||||
|
lenum.pathfind = 找路去敌人出生点
|
||||||
|
lenum.target = 瞄准/射击某个位置
|
||||||
|
lenum.targetp = 按提前量瞄准/射击目标
|
||||||
|
lenum.itemdrop = 放物品到建筑
|
||||||
|
lenum.itemtake = 从建筑拿物品
|
||||||
|
lenum.paydrop = 放下当前载荷
|
||||||
|
lenum.paytake = 从地上拿起载荷
|
||||||
|
lenum.flag = 数字值的单位旗标
|
||||||
|
lenum.mine = 采矿
|
||||||
|
lenum.build = 修建结构
|
||||||
|
lenum.getblock = 获取某坐标的建筑和类型\n坐标需在单位范围内\n或单位在建筑范围内\n地形物类型是[accent]@solid[]或[accent]@air[]
|
||||||
|
lenum.within = 检查单位在不在半径内
|
||||||
|
lenum.boost = 开始/停止助推
|
||||||
@@ -113,7 +113,7 @@ committingchanges = 遞交變更
|
|||||||
done = 完成
|
done = 完成
|
||||||
feature.unsupported = 您的裝置不支援此功能。
|
feature.unsupported = 您的裝置不支援此功能。
|
||||||
|
|
||||||
mods.alphainfo = 請記住,模組仍處於Alpha狀態,[scarlet]可能會有很多臭蟲[]。\n請到Mindustry GitHub或Discord報告發現的任何問題。
|
mods.initfailed = [red]⚠[] Mindustry 無法啟動。這可能是因模組造成。\n\n為了避免不斷閃退,[red]所有的模組已被停用。[]\n\n若要取消此設定,可在[accent]設定->遊戲->閃退後停用模組[]關閉設定.
|
||||||
mods = 模組
|
mods = 模組
|
||||||
mods.none = [lightgray]找不到模組!
|
mods.none = [lightgray]找不到模組!
|
||||||
mods.guide = 模組指南
|
mods.guide = 模組指南
|
||||||
@@ -126,6 +126,7 @@ mod.display = [gray]模組:[orange]{0}
|
|||||||
mod.installed = [[已安裝]
|
mod.installed = [[已安裝]
|
||||||
mod.enabled = [lightgray]已啟用
|
mod.enabled = [lightgray]已啟用
|
||||||
mod.disabled = [scarlet]已禁用
|
mod.disabled = [scarlet]已禁用
|
||||||
|
mod.multiplayer.compatible = [gray]與多人模式相容
|
||||||
mod.disable = 禁用
|
mod.disable = 禁用
|
||||||
mod.content = 內容:
|
mod.content = 內容:
|
||||||
mod.delete.error = 無法刪除模組,檔案可能在使用中。
|
mod.delete.error = 無法刪除模組,檔案可能在使用中。
|
||||||
@@ -219,6 +220,8 @@ trace.ip = IP:[accent]{0}
|
|||||||
trace.id = ID:[accent]{0}
|
trace.id = ID:[accent]{0}
|
||||||
trace.mobile = 行動客戶端:[accent]{0}
|
trace.mobile = 行動客戶端:[accent]{0}
|
||||||
trace.modclient = 自訂客戶端:[accent]{0}
|
trace.modclient = 自訂客戶端:[accent]{0}
|
||||||
|
trace.times.joined = 加入次數:[accent]{0}
|
||||||
|
trace.times.kicked = 踢除次數:[accent]{0}
|
||||||
invalidid = 無效的客戶端 ID!請遞交錯誤回報。
|
invalidid = 無效的客戶端 ID!請遞交錯誤回報。
|
||||||
server.bans = 封鎖
|
server.bans = 封鎖
|
||||||
server.bans.none = 沒有玩家被封鎖!
|
server.bans.none = 沒有玩家被封鎖!
|
||||||
@@ -617,6 +620,19 @@ sector.extractionOutpost.description = 由敵方建造的遠端哨站,用來
|
|||||||
sector.impact0078.description = 沉睡在此的是第一個進入本星系的星際運輸船。\n\n回收任何能利用的東西。研究任何含有的科技。
|
sector.impact0078.description = 沉睡在此的是第一個進入本星系的星際運輸船。\n\n回收任何能利用的東西。研究任何含有的科技。
|
||||||
sector.planetaryTerminal.description = 最終目標。\n\n這麼濱海基地具有能夠發射核心到其他行星的建築。 其防禦非常嚴密。\n\n生產海上單位。盡速摧毀敵人。研究該發射建築。
|
sector.planetaryTerminal.description = 最終目標。\n\n這麼濱海基地具有能夠發射核心到其他行星的建築。 其防禦非常嚴密。\n\n生產海上單位。盡速摧毀敵人。研究該發射建築。
|
||||||
|
|
||||||
|
status.burning.name = 燃燒
|
||||||
|
status.freezing.name = 凍結
|
||||||
|
status.wet.name = 浸濕
|
||||||
|
status.muddy.name = 泥濘
|
||||||
|
status.melting.name = 融化
|
||||||
|
status.sapped.name = 被吸血
|
||||||
|
status.spore-slowed.name = 孢子緩速
|
||||||
|
status.tarred.name = 焦油
|
||||||
|
status.overclock.name = 快轉
|
||||||
|
status.shocked.name = 電擊
|
||||||
|
status.blasted.name = 爆炸
|
||||||
|
status.unmoving.name = 立定
|
||||||
|
|
||||||
settings.language = 語言
|
settings.language = 語言
|
||||||
settings.data = 遊戲資料
|
settings.data = 遊戲資料
|
||||||
settings.reset = 重設為預設設定
|
settings.reset = 重設為預設設定
|
||||||
@@ -653,6 +669,7 @@ stat.output = 輸出
|
|||||||
stat.booster = 強化
|
stat.booster = 強化
|
||||||
stat.tiles = 需求方塊
|
stat.tiles = 需求方塊
|
||||||
stat.affinities = 親和方塊
|
stat.affinities = 親和方塊
|
||||||
|
stat.opposites = 相對方塊
|
||||||
stat.powercapacity = 蓄電量
|
stat.powercapacity = 蓄電量
|
||||||
stat.powershot = 能量/射擊
|
stat.powershot = 能量/射擊
|
||||||
stat.damage = 傷害
|
stat.damage = 傷害
|
||||||
@@ -714,6 +731,12 @@ stat.abilities = 能力
|
|||||||
stat.canboost = 可加速
|
stat.canboost = 可加速
|
||||||
stat.flying = 飛行中
|
stat.flying = 飛行中
|
||||||
stat.ammouse = 彈藥使用
|
stat.ammouse = 彈藥使用
|
||||||
|
stat.damagemultiplier = 傷害加成
|
||||||
|
stat.healthmultiplier = 血量加成
|
||||||
|
stat.speedmultiplier = 速度加成
|
||||||
|
stat.reloadmultiplier = 射速加成
|
||||||
|
stat.buildspeedmultiplier = 建造速度加成
|
||||||
|
stat.reactive = 具反應性
|
||||||
|
|
||||||
ability.forcefield = 防護罩
|
ability.forcefield = 防護罩
|
||||||
ability.repairfield = 維修力場
|
ability.repairfield = 維修力場
|
||||||
@@ -749,17 +772,14 @@ units.processorcontrol = [lightgray]由微處理器控制
|
|||||||
bullet.damage = [stat]{0}[lightgray]傷害
|
bullet.damage = [stat]{0}[lightgray]傷害
|
||||||
bullet.splashdamage = [stat]{0}[lightgray]範圍傷害 ~[stat] {1}[lightgray]格
|
bullet.splashdamage = [stat]{0}[lightgray]範圍傷害 ~[stat] {1}[lightgray]格
|
||||||
bullet.incendiary = [stat]燃燒
|
bullet.incendiary = [stat]燃燒
|
||||||
bullet.sapping = [stat]吸血
|
|
||||||
bullet.homing = [stat]追蹤
|
bullet.homing = [stat]追蹤
|
||||||
bullet.shock = [stat]電擊
|
|
||||||
bullet.frag = [stat]破片彈
|
bullet.frag = [stat]破片彈
|
||||||
|
bullet.lightning = [stat]{0}[lightgray]x 電弧 ~[stat]{1}[lightgray] 傷害
|
||||||
bullet.buildingdamage = [stat]{0}%[lightgray] 建築傷害
|
bullet.buildingdamage = [stat]{0}%[lightgray] 建築傷害
|
||||||
bullet.knockback = [stat]{0}[lightgray]擊退
|
bullet.knockback = [stat]{0}[lightgray]擊退
|
||||||
bullet.pierce = [stat]{0}[lightgray]×穿刺
|
bullet.pierce = [stat]{0}[lightgray]×穿刺
|
||||||
bullet.infinitepierce = [stat]穿刺
|
bullet.infinitepierce = [stat]穿刺
|
||||||
bullet.healpercent = [stat]{0}[lightgray]% 回復
|
bullet.healpercent = [stat]{0}[lightgray]% 回復
|
||||||
bullet.freezing = [stat]冷凍
|
|
||||||
bullet.tarred = [stat]焦油
|
|
||||||
bullet.multiplier = [stat]{0}[lightgray]×彈藥倍數
|
bullet.multiplier = [stat]{0}[lightgray]×彈藥倍數
|
||||||
bullet.reload = [stat]{0}[lightgray]×射擊速率
|
bullet.reload = [stat]{0}[lightgray]×射擊速率
|
||||||
|
|
||||||
@@ -800,6 +820,8 @@ setting.logichints.name = 邏輯提示
|
|||||||
setting.flow.name = 顯示資源輸送速度
|
setting.flow.name = 顯示資源輸送速度
|
||||||
setting.backgroundpause.name = 背景執行時暫停
|
setting.backgroundpause.name = 背景執行時暫停
|
||||||
setting.buildautopause.name = 自動暫停建築
|
setting.buildautopause.name = 自動暫停建築
|
||||||
|
setting.doubletapmine.name = 連續點擊以挖礦
|
||||||
|
setting.modcrashdisable.name = 閃退後停用模組
|
||||||
setting.animatedwater.name = 液體動畫
|
setting.animatedwater.name = 液體動畫
|
||||||
setting.animatedshields.name = 護盾動畫
|
setting.animatedshields.name = 護盾動畫
|
||||||
setting.antialias.name = 消除鋸齒[lightgray](需要重新啟動遊戲)[]
|
setting.antialias.name = 消除鋸齒[lightgray](需要重新啟動遊戲)[]
|
||||||
@@ -957,6 +979,8 @@ rules.blockdamagemultiplier = 建築物傷害倍數
|
|||||||
rules.unitbuildspeedmultiplier = 單位建設速度倍數
|
rules.unitbuildspeedmultiplier = 單位建設速度倍數
|
||||||
rules.unithealthmultiplier = 單位生命值倍數
|
rules.unithealthmultiplier = 單位生命值倍數
|
||||||
rules.unitdamagemultiplier = 單位傷害倍數
|
rules.unitdamagemultiplier = 單位傷害倍數
|
||||||
|
rules.unitcapvariable = 核心限制單位上限
|
||||||
|
rules.unitcap = 基礎單位上限
|
||||||
rules.enemycorebuildradius = 敵人核心禁止建設半徑︰[lightgray](格)
|
rules.enemycorebuildradius = 敵人核心禁止建設半徑︰[lightgray](格)
|
||||||
rules.wavespacing = 波次間距︰[lightgray](秒)
|
rules.wavespacing = 波次間距︰[lightgray](秒)
|
||||||
rules.buildcostmultiplier = 建設成本倍數
|
rules.buildcostmultiplier = 建設成本倍數
|
||||||
@@ -985,6 +1009,7 @@ content.item.name = 物品
|
|||||||
content.liquid.name = 液體
|
content.liquid.name = 液體
|
||||||
content.unit.name = 單位
|
content.unit.name = 單位
|
||||||
content.block.name = 方塊
|
content.block.name = 方塊
|
||||||
|
content.status.name = 狀態效果
|
||||||
content.sector.name = 地區
|
content.sector.name = 地區
|
||||||
|
|
||||||
item.copper.name = 銅
|
item.copper.name = 銅
|
||||||
@@ -1453,7 +1478,7 @@ block.ripple.description = 極為強大的迫擊炮塔。一次向敵人發射
|
|||||||
block.cyclone.description = 一種對空和對地的大型砲塔。向附近單位發射爆裂性的碎塊。
|
block.cyclone.description = 一種對空和對地的大型砲塔。向附近單位發射爆裂性的碎塊。
|
||||||
block.spectre.description = 一種雙炮管的巨型砲塔。向空中及地面敵人發射大型的穿甲彈。
|
block.spectre.description = 一種雙炮管的巨型砲塔。向空中及地面敵人發射大型的穿甲彈。
|
||||||
block.meltdown.description = 一種巨型雷射砲塔。充電並發射持續性的雷射光束。需要冷卻液以運作。
|
block.meltdown.description = 一種巨型雷射砲塔。充電並發射持續性的雷射光束。需要冷卻液以運作。
|
||||||
block.foreshadow.description = 在遠方狙擊單一目標。
|
block.foreshadow.description = 在遠方狙擊單一目標。優先攻擊總血量較高的單位。
|
||||||
block.repair-point.description = 持續治療附近最近的受損單位。
|
block.repair-point.description = 持續治療附近最近的受損單位。
|
||||||
block.segment.description = 傷害並摧毀來襲的砲彈。無法將雷射武器的光束作為目標。
|
block.segment.description = 傷害並摧毀來襲的砲彈。無法將雷射武器的光束作為目標。
|
||||||
block.parallax.description = 發射牽引光束,牽引空中目標,並在此過程中損壞它們。
|
block.parallax.description = 發射牽引光束,牽引空中目標,並在此過程中損壞它們。
|
||||||
@@ -1534,12 +1559,30 @@ lst.unitcontrol = 控制現在綁定的單位
|
|||||||
lst.unitradar = 偵測綁定單位附近的單位
|
lst.unitradar = 偵測綁定單位附近的單位
|
||||||
lst.unitlocate = 尋找整個地圖上特定的位置/建築\n需要綁定的單位
|
lst.unitlocate = 尋找整個地圖上特定的位置/建築\n需要綁定的單位
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]單位建造邏輯已被禁止。
|
||||||
|
|
||||||
lenum.type = 建築/單位種類。\n例:操控單位建造光矛砲應使用[accent]@lancer[],而非字串
|
lenum.type = 建築/單位種類。\n例:操控單位建造光矛砲應使用[accent]@lancer[],而非字串
|
||||||
lenum.shoot = 對該位置開火
|
lenum.shoot = 對該位置開火
|
||||||
lenum.shootp = 對指定單位/建築開火,具自瞄功能
|
lenum.shootp = 對指定單位/建築開火,具自瞄功能
|
||||||
lenum.configure = 建築設定,如分類器、兵器工廠
|
lenum.configure = 建築設定,如分類器、兵器工廠
|
||||||
lenum.enabled = 確認該建築是否啟用
|
lenum.enabled = 確認該建築是否啟用
|
||||||
lenum.color = 設定照明燈的顏色
|
|
||||||
|
laacess.color = 設定照明燈的顏色
|
||||||
|
laccess.controller = 單位的控制者。受處理器控制時回傳處理器。\n在隊形中回傳領導的單位。\n否則回傳單位自己。
|
||||||
|
laccess.dead = 單位或建築是否已死亡或不存在。
|
||||||
|
laccess.controlled = 將回傳:\n處理器控制:[accent]@ctrlProcessor[]\n玩家控制:[accent]@ctrlPlayer[]\n在隊形中:[accent]@ctrlFormation[]\n其他:[accent]0[]。
|
||||||
|
laccess.commanded = [red]Deprecated. Will be removed![]\nUse [accent]controlled[] instead.
|
||||||
|
|
||||||
|
graphicstype.clear = 重製版面為指定顏色
|
||||||
|
graphicstype.color = 為後續所有圖畫指令設定顏色
|
||||||
|
graphicstype.stroke = 為後續所有圖畫指令設定直線寬度
|
||||||
|
graphicstype.line = 畫一直線
|
||||||
|
graphicstype.rect = 畫實心長方形
|
||||||
|
graphicstype.linerect = 畫空心長方形
|
||||||
|
graphicstype.poly = 畫實心正多邊形
|
||||||
|
graphicstype.linepoly = 畫空心正多邊形
|
||||||
|
graphicstype.triangle = 畫實心三角形
|
||||||
|
graphicstype.image = 繪製內建圖畫\n如: [accent]@router[]或[accent]@dagger[].
|
||||||
|
|
||||||
lenum.always = 永遠 true (直接跳).
|
lenum.always = 永遠 true (直接跳).
|
||||||
lenum.idiv = 整數除法,無條件捨去.
|
lenum.idiv = 整數除法,無條件捨去.
|
||||||
@@ -1556,17 +1599,17 @@ lenum.and = Bitwise AND.
|
|||||||
lenum.not = Bitwise flip.
|
lenum.not = Bitwise flip.
|
||||||
lenum.xor = Bitwise XOR.
|
lenum.xor = Bitwise XOR.
|
||||||
|
|
||||||
lenum.min = Minimum of two numbers.
|
lenum.min = 兩數取小
|
||||||
lenum.max = Maximum of two numbers.
|
lenum.max = 兩數取大
|
||||||
lenum.angle = Angle of vector in degrees.
|
lenum.angle = 向量與x軸夾角
|
||||||
lenum.len = Length of vector.
|
lenum.len = 向量長度
|
||||||
lenum.sin = Sine, in degrees.
|
lenum.sin = 度數Sin值
|
||||||
lenum.cos = Cosine, in degrees.
|
lenum.cos = 度數Cos值
|
||||||
lenum.tan = Tangent, in degrees.
|
lenum.tan = 度數Tan值
|
||||||
#not a typo, look up 'range notation'
|
#not a typo, look up 'range notation'
|
||||||
lenum.rand = Random number in range [0, value).
|
lenum.rand = 產生隨機數值: [0, 值).
|
||||||
lenum.log = Natural logarithm (ln).
|
lenum.log = 自然對數(ln、log_e).
|
||||||
lenum.log10 = Base 10 logarithm.
|
lenum.log10 = 高中數學.
|
||||||
lenum.noise = 2D simplex noise.
|
lenum.noise = 2D simplex noise.
|
||||||
lenum.abs = 取絕對值
|
lenum.abs = 取絕對值
|
||||||
lenum.sqrt = 開根號
|
lenum.sqrt = 開根號
|
||||||
@@ -1622,6 +1665,7 @@ unitlocate.outx = 回傳 X 座標
|
|||||||
unitlocate.outy = 回傳 Y 座標
|
unitlocate.outy = 回傳 Y 座標
|
||||||
unitlocate.group = 搜索建築種類
|
unitlocate.group = 搜索建築種類
|
||||||
|
|
||||||
|
lenum.idle = 預設AI
|
||||||
lenum.stop = 停止移動/挖礦/建造
|
lenum.stop = 停止移動/挖礦/建造
|
||||||
lenum.move = 移動到指定位置
|
lenum.move = 移動到指定位置
|
||||||
lenum.approach = 移動到距離指定位置一段距離的地方
|
lenum.approach = 移動到距離指定位置一段距離的地方
|
||||||
|
|||||||
@@ -114,3 +114,8 @@ simba-fs
|
|||||||
RedRadiation
|
RedRadiation
|
||||||
Marko Zajc
|
Marko Zajc
|
||||||
CPX MC
|
CPX MC
|
||||||
|
Phinner
|
||||||
|
BTA_Susideur
|
||||||
|
nilq
|
||||||
|
AsgerHB
|
||||||
|
AzCraft
|
||||||
@@ -315,3 +315,22 @@
|
|||||||
63418=legacy-unit-factory-ground|block-legacy-unit-factory-ground-medium
|
63418=legacy-unit-factory-ground|block-legacy-unit-factory-ground-medium
|
||||||
63417=interplanetary-accelerator|block-interplanetary-accelerator-medium
|
63417=interplanetary-accelerator|block-interplanetary-accelerator-medium
|
||||||
63416=basalt-boulder|block-basalt-boulder-medium
|
63416=basalt-boulder|block-basalt-boulder-medium
|
||||||
|
63415=none|status-none-icon
|
||||||
|
63414=burning|status-burning-icon
|
||||||
|
63413=freezing|status-freezing-icon
|
||||||
|
63412=unmoving|status-unmoving-icon
|
||||||
|
63411=slow|status-slow-icon
|
||||||
|
63410=wet|status-wet-icon
|
||||||
|
63409=muddy|status-muddy-icon
|
||||||
|
63408=melting|status-melting-icon
|
||||||
|
63407=sapped|status-sapped-icon
|
||||||
|
63406=spore-slowed|status-spore-slowed-icon
|
||||||
|
63405=tarred|status-tarred-icon
|
||||||
|
63404=overdrive|status-overdrive-icon
|
||||||
|
63403=overclock|status-overclock-icon
|
||||||
|
63402=shielded|status-shielded-icon
|
||||||
|
63401=boss|status-boss-icon
|
||||||
|
63400=shocked|status-shocked-icon
|
||||||
|
63399=blasted|status-blasted-icon
|
||||||
|
63398=corroded|status-corroded-icon
|
||||||
|
63397=disarmed|status-disarmed-icon
|
||||||
|
|||||||
@@ -34,6 +34,12 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setup(){
|
public void setup(){
|
||||||
|
String dataDir = OS.env("MINDUSTRY_DATA_DIR");
|
||||||
|
if(dataDir != null){
|
||||||
|
Core.settings.setDataDirectory(files.absolute(dataDir));
|
||||||
|
}
|
||||||
|
|
||||||
|
checkLaunch();
|
||||||
loadLogger();
|
loadLogger();
|
||||||
|
|
||||||
loader = new LoadRenderer();
|
loader = new LoadRenderer();
|
||||||
@@ -137,7 +143,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
|
|||||||
if(assets.update(1000 / loadingFPS)){
|
if(assets.update(1000 / loadingFPS)){
|
||||||
loader.dispose();
|
loader.dispose();
|
||||||
loader = null;
|
loader = null;
|
||||||
Log.info("Total time to load: @", Time.timeSinceMillis(beginTime));
|
Log.info("Total time to load: @ms", Time.timeSinceMillis(beginTime));
|
||||||
for(ApplicationListener listener : modules){
|
for(ApplicationListener listener : modules){
|
||||||
listener.init();
|
listener.init();
|
||||||
}
|
}
|
||||||
@@ -145,7 +151,12 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
|
|||||||
finished = true;
|
finished = true;
|
||||||
Events.fire(new ClientLoadEvent());
|
Events.fire(new ClientLoadEvent());
|
||||||
super.resize(graphics.getWidth(), graphics.getHeight());
|
super.resize(graphics.getWidth(), graphics.getHeight());
|
||||||
app.post(() -> app.post(() -> app.post(() -> app.post(() -> super.resize(graphics.getWidth(), graphics.getHeight())))));
|
app.post(() -> app.post(() -> app.post(() -> app.post(() -> {
|
||||||
|
super.resize(graphics.getWidth(), graphics.getHeight());
|
||||||
|
|
||||||
|
//mark initialization as complete
|
||||||
|
finishLaunch();
|
||||||
|
}))));
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
asyncCore.begin();
|
asyncCore.begin();
|
||||||
@@ -168,6 +179,12 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
|
|||||||
lastTime = Time.nanos();
|
lastTime = Time.nanos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exit(){
|
||||||
|
//on graceful exit, finish the launch normally.
|
||||||
|
Vars.finishLaunch();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(){
|
public void init(){
|
||||||
setup();
|
setup();
|
||||||
@@ -182,6 +199,11 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void pause(){
|
public void pause(){
|
||||||
|
//when the user tabs out on mobile, the exit() event doesn't fire reliably - in that case, just assume they're about to kill the app
|
||||||
|
//this isn't 100% reliable but it should work for most cases
|
||||||
|
if(mobile){
|
||||||
|
Vars.finishLaunch();
|
||||||
|
}
|
||||||
if(finished){
|
if(finished){
|
||||||
super.pause();
|
super.pause();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ import java.util.*;
|
|||||||
import static arc.Core.*;
|
import static arc.Core.*;
|
||||||
|
|
||||||
public class Vars implements Loadable{
|
public class Vars implements Loadable{
|
||||||
|
/** Whether the game failed to launch last time. */
|
||||||
|
public static boolean failedToLaunch = false;
|
||||||
/** Whether to load locales.*/
|
/** Whether to load locales.*/
|
||||||
public static boolean loadLocales = true;
|
public static boolean loadLocales = true;
|
||||||
/** Whether the logger is loaded. */
|
/** Whether the logger is loaded. */
|
||||||
@@ -62,7 +64,7 @@ public class Vars implements Loadable{
|
|||||||
public static final String modGuideURL = "https://mindustrygame.github.io/wiki/modding/1-modding/";
|
public static final String modGuideURL = "https://mindustrygame.github.io/wiki/modding/1-modding/";
|
||||||
/** URL to the JSON file containing all the BE servers. Only queried in BE. */
|
/** URL to the JSON file containing all the BE servers. Only queried in BE. */
|
||||||
public static final String serverJsonBeURL = "https://raw.githubusercontent.com/Anuken/Mindustry/master/servers_be.json";
|
public static final String serverJsonBeURL = "https://raw.githubusercontent.com/Anuken/Mindustry/master/servers_be.json";
|
||||||
/** URL to the JSON file containing all the BE servers. */
|
/** URL to the JSON file containing all the stable servers. */
|
||||||
public static final String serverJsonURL = "https://raw.githubusercontent.com/Anuken/Mindustry/master/servers_v6.json";
|
public static final String serverJsonURL = "https://raw.githubusercontent.com/Anuken/Mindustry/master/servers_v6.json";
|
||||||
/** URL of the github issue report template.*/
|
/** URL of the github issue report template.*/
|
||||||
public static final String reportIssueURL = "https://github.com/Anuken/Mindustry/issues/new?labels=bug&template=bug_report.md";
|
public static final String reportIssueURL = "https://github.com/Anuken/Mindustry/issues/new?labels=bug&template=bug_report.md";
|
||||||
@@ -172,6 +174,8 @@ public class Vars implements Loadable{
|
|||||||
public static Fi schematicDirectory;
|
public static Fi schematicDirectory;
|
||||||
/** data subdirectory used for bleeding edge build versions */
|
/** data subdirectory used for bleeding edge build versions */
|
||||||
public static Fi bebuildDirectory;
|
public static Fi bebuildDirectory;
|
||||||
|
/** file used to store launch ID */
|
||||||
|
public static Fi launchIDFile;
|
||||||
/** empty map, indicates no current map */
|
/** empty map, indicates no current map */
|
||||||
public static Map emptyMap;
|
public static Map emptyMap;
|
||||||
/** map file extension */
|
/** map file extension */
|
||||||
@@ -284,6 +288,27 @@ public class Vars implements Loadable{
|
|||||||
maps.load();
|
maps.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Checks if a launch failure occurred.
|
||||||
|
* If this is the case, failedToLaunch is set to true. */
|
||||||
|
public static void checkLaunch(){
|
||||||
|
settings.setAppName(appName);
|
||||||
|
launchIDFile = settings.getDataDirectory().child("launchid.dat");
|
||||||
|
|
||||||
|
if(launchIDFile.exists()){
|
||||||
|
failedToLaunch = true;
|
||||||
|
}else{
|
||||||
|
failedToLaunch = false;
|
||||||
|
launchIDFile.writeString("go away");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Cleans up after a successful launch. */
|
||||||
|
public static void finishLaunch(){
|
||||||
|
if(launchIDFile != null){
|
||||||
|
launchIDFile.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void loadLogger(){
|
public static void loadLogger(){
|
||||||
if(loadedLogger) return;
|
if(loadedLogger) return;
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ public class BaseAI{
|
|||||||
private static final Seq<Tile> tmpTiles = new Seq<>();
|
private static final Seq<Tile> tmpTiles = new Seq<>();
|
||||||
|
|
||||||
private static int correct = 0, incorrect = 0;
|
private static int correct = 0, incorrect = 0;
|
||||||
private static boolean anyDrills;
|
|
||||||
|
|
||||||
private int lastX, lastY, lastW, lastH;
|
private int lastX, lastY, lastW, lastH;
|
||||||
private boolean triedWalls, foundPath;
|
private boolean triedWalls, foundPath;
|
||||||
@@ -209,6 +208,16 @@ public class BaseAI{
|
|||||||
}
|
}
|
||||||
Tile wtile = world.tile(realX, realY);
|
Tile wtile = world.tile(realX, realY);
|
||||||
|
|
||||||
|
if(tile.block instanceof PayloadConveyor || tile.block instanceof PayloadAcceptor){
|
||||||
|
//near a building
|
||||||
|
for(Point2 point : Edges.getEdges(tile.block.size)){
|
||||||
|
var t = world.build(tile.x + point.x, tile.y + point.y);
|
||||||
|
if(t != null){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//may intersect AI path
|
//may intersect AI path
|
||||||
tmpTiles.clear();
|
tmpTiles.clear();
|
||||||
if(tile.block.solid && wtile != null && wtile.getLinkedTilesAs(tile.block, tmpTiles).contains(t -> path.contains(t.pos()))){
|
if(tile.block.solid && wtile != null && wtile.getLinkedTilesAs(tile.block, tmpTiles).contains(t -> path.contains(t.pos()))){
|
||||||
@@ -218,7 +227,7 @@ public class BaseAI{
|
|||||||
|
|
||||||
//make sure at least X% of resource requirements are met
|
//make sure at least X% of resource requirements are met
|
||||||
correct = incorrect = 0;
|
correct = incorrect = 0;
|
||||||
anyDrills = false;
|
boolean anyDrills = false;
|
||||||
|
|
||||||
if(part.required instanceof Item){
|
if(part.required instanceof Item){
|
||||||
for(Stile tile : result.tiles){
|
for(Stile tile : result.tiles){
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ public class Pathfinder implements Runnable{
|
|||||||
|
|
||||||
/** Packs a tile into its internal representation. */
|
/** Packs a tile into its internal representation. */
|
||||||
private int packTile(Tile tile){
|
private int packTile(Tile tile){
|
||||||
boolean nearLiquid = false, nearSolid = false, nearGround = false;
|
boolean nearLiquid = false, nearSolid = false, nearGround = false, solid = tile.solid();
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
Tile other = tile.nearby(i);
|
Tile other = tile.nearby(i);
|
||||||
@@ -120,9 +120,9 @@ public class Pathfinder implements Runnable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
return PathTile.get(
|
return PathTile.get(
|
||||||
tile.build == null || !tile.solid() || tile.block() instanceof CoreBlock ? 0 : Math.min((int)(tile.build.health / 40), 80),
|
tile.build == null || !solid || tile.block() instanceof CoreBlock ? 0 : Math.min((int)(tile.build.health / 40), 80),
|
||||||
tile.getTeamID(),
|
tile.getTeamID(),
|
||||||
tile.solid(),
|
solid,
|
||||||
tile.floor().isLiquid,
|
tile.floor().isLiquid,
|
||||||
tile.staticDarkness() >= 2 || (tile.floor().solid && tile.block() == Blocks.air),
|
tile.staticDarkness() >= 2 || (tile.floor().solid && tile.block() == Blocks.air),
|
||||||
nearLiquid,
|
nearLiquid,
|
||||||
@@ -149,7 +149,7 @@ public class Pathfinder implements Runnable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Update a tile in the internal pathfinding grid.
|
/** Update a tile in the internal pathfinding grid.
|
||||||
* Causes a complete pathfinding reclaculation. Main thread only. */
|
* Causes a complete pathfinding recalculation. Main thread only. */
|
||||||
public void updateTile(Tile tile){
|
public void updateTile(Tile tile){
|
||||||
if(net.client()) return;
|
if(net.client()) return;
|
||||||
|
|
||||||
|
|||||||
40
core/src/mindustry/ai/types/DefenderAI.java
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
package mindustry.ai.types;
|
||||||
|
|
||||||
|
import arc.math.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
|
import mindustry.entities.comp.*;
|
||||||
|
import mindustry.entities.units.*;
|
||||||
|
import mindustry.gen.*;
|
||||||
|
import mindustry.world.meta.*;
|
||||||
|
|
||||||
|
public class DefenderAI extends AIController{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateMovement(){
|
||||||
|
if(target != null){
|
||||||
|
moveTo(target, (target instanceof Sized s ? s.hitSize()/2f * 1.1f : 0f) + unit.hitSize/2f + 15f, 50f);
|
||||||
|
unit.lookAt(target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void updateTargeting(){
|
||||||
|
if(retarget()) target = findTarget(unit.x, unit.y, unit.range(), true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Teamc findTarget(float x, float y, float range, boolean air, boolean ground){
|
||||||
|
//find unit to follow if not in rally mode
|
||||||
|
if(command() != UnitCommand.rally){
|
||||||
|
//Sort by max health and closer target.
|
||||||
|
var result = Units.closest(unit.team, x, y, Math.max(range, 400f), u -> !u.dead() && u.type != unit.type, (u, tx, ty) -> -u.maxHealth + Mathf.dst2(u.x, u.y, tx, ty) / 800f);
|
||||||
|
if(result != null) return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//find rally point
|
||||||
|
var block = targetFlag(unit.x, unit.y, BlockFlag.rally, false);
|
||||||
|
if(block != null) return block;
|
||||||
|
//return core if found
|
||||||
|
return unit.closestCore();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,7 +13,7 @@ public class FlyingAI extends AIController{
|
|||||||
public void updateMovement(){
|
public void updateMovement(){
|
||||||
if(target != null && unit.hasWeapons() && command() == UnitCommand.attack){
|
if(target != null && unit.hasWeapons() && command() == UnitCommand.attack){
|
||||||
if(!unit.type.circleTarget){
|
if(!unit.type.circleTarget){
|
||||||
moveTo(target, unit.range() * 0.8f);
|
moveTo(target, unit.type.range * 0.8f);
|
||||||
unit.lookAt(target);
|
unit.lookAt(target);
|
||||||
}else{
|
}else{
|
||||||
attack(120f);
|
attack(120f);
|
||||||
@@ -49,10 +49,10 @@ public class FlyingAI extends AIController{
|
|||||||
float ang = unit.angleTo(target);
|
float ang = unit.angleTo(target);
|
||||||
float diff = Angles.angleDist(ang, unit.rotation());
|
float diff = Angles.angleDist(ang, unit.rotation());
|
||||||
|
|
||||||
if(diff > 100f && vec.len() < circleLength){
|
if(diff > 70f && vec.len() < circleLength){
|
||||||
vec.setAngle(unit.vel().angle());
|
vec.setAngle(unit.vel().angle());
|
||||||
}else{
|
}else{
|
||||||
vec.setAngle(Mathf.slerpDelta(unit.vel().angle(), vec.angle(), 0.6f));
|
vec.setAngle(Angles.moveToward(unit.vel().angle(), vec.angle(), 6f));
|
||||||
}
|
}
|
||||||
|
|
||||||
vec.setLength(unit.speed());
|
vec.setLength(unit.speed());
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public class FormationAI extends AIController implements FormationMember{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(unit.type.canBoost){
|
if(unit.type.canBoost){
|
||||||
unit.elevation = Mathf.approachDelta(unit.elevation, unit.onSolid() ? 1f : leader.type.canBoost ? leader.elevation : 0f, 0.08f);
|
unit.elevation = Mathf.approachDelta(unit.elevation, unit.onSolid() ? 1f : leader.type.canBoost ? leader.elevation : 0f, unit.type.riseSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
unit.controlWeapons(true, leader.isShooting);
|
unit.controlWeapons(true, leader.isShooting);
|
||||||
@@ -48,7 +48,7 @@ public class FormationAI extends AIController implements FormationMember{
|
|||||||
|
|
||||||
Vec2 realtarget = vec.set(target).add(leader.vel);
|
Vec2 realtarget = vec.set(target).add(leader.vel);
|
||||||
|
|
||||||
float speed = unit.realSpeed() * unit.floorSpeedMultiplier() * Time.delta;
|
float speed = unit.realSpeed() * Time.delta;
|
||||||
unit.approach(Mathf.arrive(unit.x, unit.y, realtarget.x, realtarget.y, unit.vel, speed, 0f, speed, 1f).scl(1f / Time.delta));
|
unit.approach(Mathf.arrive(unit.x, unit.y, realtarget.x, realtarget.y, unit.vel, speed, 0f, speed, 1f).scl(1f / Time.delta));
|
||||||
|
|
||||||
if(unit.canMine() && leader.canMine()){
|
if(unit.canMine() && leader.canMine()){
|
||||||
|
|||||||
@@ -21,7 +21,11 @@ public class GroundAI extends AIController{
|
|||||||
|
|
||||||
if(core != null && unit.within(core, unit.range() / 1.1f + core.block.size * tilesize / 2f)){
|
if(core != null && unit.within(core, unit.range() / 1.1f + core.block.size * tilesize / 2f)){
|
||||||
target = core;
|
target = core;
|
||||||
Arrays.fill(targets, core);
|
for(int i = 0; i < targets.length; i++){
|
||||||
|
if(unit.mounts[i].weapon.bullet.collidesGround){
|
||||||
|
targets[i] = core;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if((core == null || !unit.within(core, unit.range() * 0.5f)) && command() == UnitCommand.attack){
|
if((core == null || !unit.within(core, unit.range() * 0.5f)) && command() == UnitCommand.attack){
|
||||||
@@ -44,7 +48,7 @@ public class GroundAI extends AIController{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(unit.type.canBoost && !unit.onSolid()){
|
if(unit.type.canBoost && !unit.onSolid()){
|
||||||
unit.elevation = Mathf.approachDelta(unit.elevation, 0f, 0.08f);
|
unit.elevation = Mathf.approachDelta(unit.elevation, 0f, unit.type.riseSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!Units.invalidateTarget(target, unit, unit.range()) && unit.type.rotateShooting){
|
if(!Units.invalidateTarget(target, unit, unit.range()) && unit.type.rotateShooting){
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class LogicAI extends AIController{
|
|||||||
/** Time after which the unit resets its controlled and reverts to a normal unit. */
|
/** Time after which the unit resets its controlled and reverts to a normal unit. */
|
||||||
public static final float logicControlTimeout = 10f * 60f;
|
public static final float logicControlTimeout = 10f * 60f;
|
||||||
|
|
||||||
public LUnitControl control = LUnitControl.stop;
|
public LUnitControl control = LUnitControl.idle;
|
||||||
public float moveX, moveY, moveRad;
|
public float moveX, moveY, moveRad;
|
||||||
public float itemTimer, payTimer, controlTimer = logicControlTimeout, targetTimer;
|
public float itemTimer, payTimer, controlTimer = logicControlTimeout, targetTimer;
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
@@ -647,10 +647,10 @@ public class Blocks implements ContentList{
|
|||||||
separator = new Separator("separator"){{
|
separator = new Separator("separator"){{
|
||||||
requirements(Category.crafting, with(Items.copper, 30, Items.titanium, 25));
|
requirements(Category.crafting, with(Items.copper, 30, Items.titanium, 25));
|
||||||
results = with(
|
results = with(
|
||||||
Items.copper, 5,
|
Items.copper, 5,
|
||||||
Items.lead, 3,
|
Items.lead, 3,
|
||||||
Items.graphite, 2,
|
Items.graphite, 2,
|
||||||
Items.titanium, 2
|
Items.titanium, 2
|
||||||
);
|
);
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
craftTime = 35f;
|
craftTime = 35f;
|
||||||
@@ -663,10 +663,10 @@ public class Blocks implements ContentList{
|
|||||||
disassembler = new Separator("disassembler"){{
|
disassembler = new Separator("disassembler"){{
|
||||||
requirements(Category.crafting, with(Items.graphite, 140, Items.titanium, 100, Items.silicon, 150, Items.surgeAlloy, 70));
|
requirements(Category.crafting, with(Items.graphite, 140, Items.titanium, 100, Items.silicon, 150, Items.surgeAlloy, 70));
|
||||||
results = with(
|
results = with(
|
||||||
Items.sand, 4,
|
Items.sand, 4,
|
||||||
Items.graphite, 2,
|
Items.graphite, 2,
|
||||||
Items.titanium, 2,
|
Items.titanium, 2,
|
||||||
Items.thorium, 1
|
Items.thorium, 1
|
||||||
);
|
);
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
craftTime = 15f;
|
craftTime = 15f;
|
||||||
@@ -1285,7 +1285,7 @@ public class Blocks implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
waterExtractor = new SolidPump("water-extractor"){{
|
waterExtractor = new SolidPump("water-extractor"){{
|
||||||
requirements(Category.production, with(Items.copper, 30, Items.graphite, 30, Items.lead, 30));
|
requirements(Category.production, with(Items.metaglass, 30, Items.graphite, 30, Items.lead, 30));
|
||||||
result = Liquids.water;
|
result = Liquids.water;
|
||||||
pumpAmount = 0.11f;
|
pumpAmount = 0.11f;
|
||||||
size = 2;
|
size = 2;
|
||||||
@@ -1370,16 +1370,12 @@ public class Blocks implements ContentList{
|
|||||||
requirements(Category.effect, with(Items.titanium, 250, Items.thorium, 125));
|
requirements(Category.effect, with(Items.titanium, 250, Items.thorium, 125));
|
||||||
size = 3;
|
size = 3;
|
||||||
itemCapacity = 1000;
|
itemCapacity = 1000;
|
||||||
flags = EnumSet.of(BlockFlag.storage);
|
|
||||||
group = BlockGroup.transportation;
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
container = new StorageBlock("container"){{
|
container = new StorageBlock("container"){{
|
||||||
requirements(Category.effect, with(Items.titanium, 100));
|
requirements(Category.effect, with(Items.titanium, 100));
|
||||||
size = 2;
|
size = 2;
|
||||||
itemCapacity = 300;
|
itemCapacity = 300;
|
||||||
flags = EnumSet.of(BlockFlag.storage);
|
|
||||||
group = BlockGroup.transportation;
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
unloader = new Unloader("unloader"){{
|
unloader = new Unloader("unloader"){{
|
||||||
@@ -1394,10 +1390,10 @@ public class Blocks implements ContentList{
|
|||||||
duo = new ItemTurret("duo"){{
|
duo = new ItemTurret("duo"){{
|
||||||
requirements(Category.turret, with(Items.copper, 35), true);
|
requirements(Category.turret, with(Items.copper, 35), true);
|
||||||
ammo(
|
ammo(
|
||||||
Items.copper, Bullets.standardCopper,
|
Items.copper, Bullets.standardCopper,
|
||||||
Items.graphite, Bullets.standardDense,
|
Items.graphite, Bullets.standardDense,
|
||||||
Items.pyratite, Bullets.standardIncendiary,
|
Items.pyratite, Bullets.standardIncendiary,
|
||||||
Items.silicon, Bullets.standardHoming
|
Items.silicon, Bullets.standardHoming
|
||||||
);
|
);
|
||||||
|
|
||||||
spread = 4f;
|
spread = 4f;
|
||||||
@@ -1416,9 +1412,9 @@ public class Blocks implements ContentList{
|
|||||||
scatter = new ItemTurret("scatter"){{
|
scatter = new ItemTurret("scatter"){{
|
||||||
requirements(Category.turret, with(Items.copper, 85, Items.lead, 45));
|
requirements(Category.turret, with(Items.copper, 85, Items.lead, 45));
|
||||||
ammo(
|
ammo(
|
||||||
Items.scrap, Bullets.flakScrap,
|
Items.scrap, Bullets.flakScrap,
|
||||||
Items.lead, Bullets.flakLead,
|
Items.lead, Bullets.flakLead,
|
||||||
Items.metaglass, Bullets.flakGlass
|
Items.metaglass, Bullets.flakGlass
|
||||||
);
|
);
|
||||||
reloadTime = 18f;
|
reloadTime = 18f;
|
||||||
range = 160f;
|
range = 160f;
|
||||||
@@ -1439,8 +1435,8 @@ public class Blocks implements ContentList{
|
|||||||
scorch = new ItemTurret("scorch"){{
|
scorch = new ItemTurret("scorch"){{
|
||||||
requirements(Category.turret, with(Items.copper, 25, Items.graphite, 22));
|
requirements(Category.turret, with(Items.copper, 25, Items.graphite, 22));
|
||||||
ammo(
|
ammo(
|
||||||
Items.coal, Bullets.basicFlame,
|
Items.coal, Bullets.basicFlame,
|
||||||
Items.pyratite, Bullets.pyraFlame
|
Items.pyratite, Bullets.pyraFlame
|
||||||
);
|
);
|
||||||
recoilAmount = 0f;
|
recoilAmount = 0f;
|
||||||
reloadTime = 6f;
|
reloadTime = 6f;
|
||||||
@@ -1456,9 +1452,9 @@ public class Blocks implements ContentList{
|
|||||||
hail = new ItemTurret("hail"){{
|
hail = new ItemTurret("hail"){{
|
||||||
requirements(Category.turret, with(Items.copper, 40, Items.graphite, 17));
|
requirements(Category.turret, with(Items.copper, 40, Items.graphite, 17));
|
||||||
ammo(
|
ammo(
|
||||||
Items.graphite, Bullets.artilleryDense,
|
Items.graphite, Bullets.artilleryDense,
|
||||||
Items.silicon, Bullets.artilleryHoming,
|
Items.silicon, Bullets.artilleryHoming,
|
||||||
Items.pyratite, Bullets.artilleryIncendiary
|
Items.pyratite, Bullets.artilleryIncendiary
|
||||||
);
|
);
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
reloadTime = 60f;
|
reloadTime = 60f;
|
||||||
@@ -1473,10 +1469,10 @@ public class Blocks implements ContentList{
|
|||||||
wave = new LiquidTurret("wave"){{
|
wave = new LiquidTurret("wave"){{
|
||||||
requirements(Category.turret, with(Items.metaglass, 45, Items.lead, 75));
|
requirements(Category.turret, with(Items.metaglass, 45, Items.lead, 75));
|
||||||
ammo(
|
ammo(
|
||||||
Liquids.water, Bullets.waterShot,
|
Liquids.water, Bullets.waterShot,
|
||||||
Liquids.slag, Bullets.slagShot,
|
Liquids.slag, Bullets.slagShot,
|
||||||
Liquids.cryofluid, Bullets.cryoShot,
|
Liquids.cryofluid, Bullets.cryoShot,
|
||||||
Liquids.oil, Bullets.oilShot
|
Liquids.oil, Bullets.oilShot
|
||||||
);
|
);
|
||||||
size = 2;
|
size = 2;
|
||||||
recoilAmount = 0f;
|
recoilAmount = 0f;
|
||||||
@@ -1562,9 +1558,9 @@ public class Blocks implements ContentList{
|
|||||||
swarmer = new ItemTurret("swarmer"){{
|
swarmer = new ItemTurret("swarmer"){{
|
||||||
requirements(Category.turret, with(Items.graphite, 35, Items.titanium, 35, Items.plastanium, 45, Items.silicon, 30));
|
requirements(Category.turret, with(Items.graphite, 35, Items.titanium, 35, Items.plastanium, 45, Items.silicon, 30));
|
||||||
ammo(
|
ammo(
|
||||||
Items.blastCompound, Bullets.missileExplosive,
|
Items.blastCompound, Bullets.missileExplosive,
|
||||||
Items.pyratite, Bullets.missileIncendiary,
|
Items.pyratite, Bullets.missileIncendiary,
|
||||||
Items.surgeAlloy, Bullets.missileSurge
|
Items.surgeAlloy, Bullets.missileSurge
|
||||||
);
|
);
|
||||||
reloadTime = 30f;
|
reloadTime = 30f;
|
||||||
shots = 4;
|
shots = 4;
|
||||||
@@ -1580,11 +1576,11 @@ public class Blocks implements ContentList{
|
|||||||
salvo = new ItemTurret("salvo"){{
|
salvo = new ItemTurret("salvo"){{
|
||||||
requirements(Category.turret, with(Items.copper, 100, Items.graphite, 90, Items.titanium, 60));
|
requirements(Category.turret, with(Items.copper, 100, Items.graphite, 90, Items.titanium, 60));
|
||||||
ammo(
|
ammo(
|
||||||
Items.copper, Bullets.standardCopper,
|
Items.copper, Bullets.standardCopper,
|
||||||
Items.graphite, Bullets.standardDense,
|
Items.graphite, Bullets.standardDense,
|
||||||
Items.pyratite, Bullets.standardIncendiary,
|
Items.pyratite, Bullets.standardIncendiary,
|
||||||
Items.silicon, Bullets.standardHoming,
|
Items.silicon, Bullets.standardHoming,
|
||||||
Items.thorium, Bullets.standardThorium
|
Items.thorium, Bullets.standardThorium
|
||||||
);
|
);
|
||||||
|
|
||||||
size = 2;
|
size = 2;
|
||||||
@@ -1606,12 +1602,12 @@ public class Blocks implements ContentList{
|
|||||||
requirements(Category.turret, with(Items.silicon, 130, Items.thorium, 80, Items.phaseFabric, 40));
|
requirements(Category.turret, with(Items.silicon, 130, Items.thorium, 80, Items.phaseFabric, 40));
|
||||||
|
|
||||||
health = 250 * size * size;
|
health = 250 * size * size;
|
||||||
range = 160f;
|
range = 180f;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
consumes.powerCond(8f, (PointDefenseBuild b) -> b.target != null);
|
consumes.powerCond(8f, (PointDefenseBuild b) -> b.target != null);
|
||||||
size = 2;
|
size = 2;
|
||||||
shootLength = 5f;
|
shootLength = 5f;
|
||||||
bulletDamage = 25f;
|
bulletDamage = 30f;
|
||||||
reloadTime = 9f;
|
reloadTime = 9f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -1624,7 +1620,6 @@ public class Blocks implements ContentList{
|
|||||||
Liquids.oil, Bullets.heavyOilShot
|
Liquids.oil, Bullets.heavyOilShot
|
||||||
);
|
);
|
||||||
size = 3;
|
size = 3;
|
||||||
recoilAmount = 0f;
|
|
||||||
reloadTime = 2f;
|
reloadTime = 2f;
|
||||||
shots = 2;
|
shots = 2;
|
||||||
velocityInaccuracy = 0.1f;
|
velocityInaccuracy = 0.1f;
|
||||||
@@ -1658,31 +1653,31 @@ public class Blocks implements ContentList{
|
|||||||
float brange = range + 10f;
|
float brange = range + 10f;
|
||||||
|
|
||||||
ammo(
|
ammo(
|
||||||
Items.titanium, new ShrapnelBulletType(){{
|
Items.titanium, new ShrapnelBulletType(){{
|
||||||
length = brange;
|
length = brange;
|
||||||
damage = 66f;
|
damage = 66f;
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
width = 17f;
|
width = 17f;
|
||||||
reloadMultiplier = 1.3f;
|
reloadMultiplier = 1.3f;
|
||||||
}},
|
}},
|
||||||
Items.thorium, new ShrapnelBulletType(){{
|
Items.thorium, new ShrapnelBulletType(){{
|
||||||
length = brange;
|
length = brange;
|
||||||
damage = 105f;
|
damage = 105f;
|
||||||
ammoMultiplier = 5f;
|
ammoMultiplier = 5f;
|
||||||
toColor = Pal.thoriumPink;
|
toColor = Pal.thoriumPink;
|
||||||
shootEffect = smokeEffect = Fx.thoriumShoot;
|
shootEffect = smokeEffect = Fx.thoriumShoot;
|
||||||
}}
|
}}
|
||||||
);
|
);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
ripple = new ItemTurret("ripple"){{
|
ripple = new ItemTurret("ripple"){{
|
||||||
requirements(Category.turret, with(Items.copper, 150, Items.graphite, 135, Items.titanium, 60));
|
requirements(Category.turret, with(Items.copper, 150, Items.graphite, 135, Items.titanium, 60));
|
||||||
ammo(
|
ammo(
|
||||||
Items.graphite, Bullets.artilleryDense,
|
Items.graphite, Bullets.artilleryDense,
|
||||||
Items.silicon, Bullets.artilleryHoming,
|
Items.silicon, Bullets.artilleryHoming,
|
||||||
Items.pyratite, Bullets.artilleryIncendiary,
|
Items.pyratite, Bullets.artilleryIncendiary,
|
||||||
Items.blastCompound, Bullets.artilleryExplosive,
|
Items.blastCompound, Bullets.artilleryExplosive,
|
||||||
Items.plastanium, Bullets.artilleryPlastic
|
Items.plastanium, Bullets.artilleryPlastic
|
||||||
);
|
);
|
||||||
|
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
@@ -1708,10 +1703,10 @@ public class Blocks implements ContentList{
|
|||||||
cyclone = new ItemTurret("cyclone"){{
|
cyclone = new ItemTurret("cyclone"){{
|
||||||
requirements(Category.turret, with(Items.copper, 200, Items.titanium, 125, Items.plastanium, 80));
|
requirements(Category.turret, with(Items.copper, 200, Items.titanium, 125, Items.plastanium, 80));
|
||||||
ammo(
|
ammo(
|
||||||
Items.metaglass, Bullets.fragGlass,
|
Items.metaglass, Bullets.fragGlass,
|
||||||
Items.blastCompound, Bullets.fragExplosive,
|
Items.blastCompound, Bullets.fragExplosive,
|
||||||
Items.plastanium, Bullets.fragPlastic,
|
Items.plastanium, Bullets.fragPlastic,
|
||||||
Items.surgeAlloy, Bullets.fragSurge
|
Items.surgeAlloy, Bullets.fragSurge
|
||||||
);
|
);
|
||||||
xRand = 4f;
|
xRand = 4f;
|
||||||
reloadTime = 8f;
|
reloadTime = 8f;
|
||||||
@@ -1731,19 +1726,19 @@ public class Blocks implements ContentList{
|
|||||||
|
|
||||||
requirements(Category.turret, with(Items.copper, 1000, Items.metaglass, 600, Items.surgeAlloy, 300, Items.plastanium, 200, Items.silicon, 600));
|
requirements(Category.turret, with(Items.copper, 1000, Items.metaglass, 600, Items.surgeAlloy, 300, Items.plastanium, 200, Items.silicon, 600));
|
||||||
ammo(
|
ammo(
|
||||||
Items.surgeAlloy, new PointBulletType(){{
|
Items.surgeAlloy, new PointBulletType(){{
|
||||||
shootEffect = Fx.instShoot;
|
shootEffect = Fx.instShoot;
|
||||||
hitEffect = Fx.instHit;
|
hitEffect = Fx.instHit;
|
||||||
smokeEffect = Fx.smokeCloud;
|
smokeEffect = Fx.smokeCloud;
|
||||||
trailEffect = Fx.instTrail;
|
trailEffect = Fx.instTrail;
|
||||||
despawnEffect = Fx.instBomb;
|
despawnEffect = Fx.instBomb;
|
||||||
trailSpacing = 20f;
|
trailSpacing = 20f;
|
||||||
damage = 1350;
|
damage = 1350;
|
||||||
buildingDamageMultiplier = 0.3f;
|
buildingDamageMultiplier = 0.3f;
|
||||||
speed = brange;
|
speed = brange;
|
||||||
hitShake = 6f;
|
hitShake = 6f;
|
||||||
ammoMultiplier = 1f;
|
ammoMultiplier = 1f;
|
||||||
}}
|
}}
|
||||||
);
|
);
|
||||||
|
|
||||||
maxAmmo = 40;
|
maxAmmo = 40;
|
||||||
@@ -1772,9 +1767,9 @@ public class Blocks implements ContentList{
|
|||||||
spectre = new ItemTurret("spectre"){{
|
spectre = new ItemTurret("spectre"){{
|
||||||
requirements(Category.turret, with(Items.copper, 900, Items.graphite, 300, Items.surgeAlloy, 250, Items.plastanium, 175, Items.thorium, 250));
|
requirements(Category.turret, with(Items.copper, 900, Items.graphite, 300, Items.surgeAlloy, 250, Items.plastanium, 175, Items.thorium, 250));
|
||||||
ammo(
|
ammo(
|
||||||
Items.graphite, Bullets.standardDenseBig,
|
Items.graphite, Bullets.standardDenseBig,
|
||||||
Items.pyratite, Bullets.standardIncendiaryBig,
|
Items.pyratite, Bullets.standardIncendiaryBig,
|
||||||
Items.thorium, Bullets.standardThoriumBig
|
Items.thorium, Bullets.standardThoriumBig
|
||||||
);
|
);
|
||||||
reloadTime = 6f;
|
reloadTime = 6f;
|
||||||
coolantMultiplier = 0.5f;
|
coolantMultiplier = 0.5f;
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class Bullets implements ContentList{
|
|||||||
lifetime = 80f;
|
lifetime = 80f;
|
||||||
width = height = 11f;
|
width = height = 11f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
splashDamageRadius = 25f;
|
splashDamageRadius = 25f * 0.75f;
|
||||||
splashDamage = 33f;
|
splashDamage = 33f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ public class Bullets implements ContentList{
|
|||||||
lifetime = 80f;
|
lifetime = 80f;
|
||||||
width = height = 13f;
|
width = height = 13f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
splashDamageRadius = 35f;
|
splashDamageRadius = 35f * 0.75f;
|
||||||
splashDamage = 45f;
|
splashDamage = 45f;
|
||||||
fragBullet = artilleryPlasticFrag;
|
fragBullet = artilleryPlasticFrag;
|
||||||
fragBullets = 10;
|
fragBullets = 10;
|
||||||
@@ -98,7 +98,7 @@ public class Bullets implements ContentList{
|
|||||||
lifetime = 80f;
|
lifetime = 80f;
|
||||||
width = height = 11f;
|
width = height = 11f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
splashDamageRadius = 25f;
|
splashDamageRadius = 25f * 0.75f;
|
||||||
splashDamage = 33f;
|
splashDamage = 33f;
|
||||||
reloadMultiplier = 1.2f;
|
reloadMultiplier = 1.2f;
|
||||||
ammoMultiplier = 3f;
|
ammoMultiplier = 3f;
|
||||||
@@ -112,7 +112,7 @@ public class Bullets implements ContentList{
|
|||||||
lifetime = 80f;
|
lifetime = 80f;
|
||||||
width = height = 13f;
|
width = height = 13f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
splashDamageRadius = 25f;
|
splashDamageRadius = 25f * 0.75f;
|
||||||
splashDamage = 35f;
|
splashDamage = 35f;
|
||||||
status = StatusEffects.burning;
|
status = StatusEffects.burning;
|
||||||
frontColor = Pal.lightishOrange;
|
frontColor = Pal.lightishOrange;
|
||||||
@@ -128,7 +128,7 @@ public class Bullets implements ContentList{
|
|||||||
width = height = 14f;
|
width = height = 14f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
splashDamageRadius = 45f;
|
splashDamageRadius = 45f * 0.75f;
|
||||||
splashDamage = 50f;
|
splashDamage = 50f;
|
||||||
backColor = Pal.missileYellowBack;
|
backColor = Pal.missileYellowBack;
|
||||||
frontColor = Pal.missileYellow;
|
frontColor = Pal.missileYellow;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import mindustry.graphics.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class StatusEffects implements ContentList{
|
public class StatusEffects implements ContentList{
|
||||||
public static StatusEffect none, burning, freezing, unmoving, slow, wet, muddy, melting, sapped, tarred, overdrive, overclock, shielded, shocked, blasted, corroded, boss, sporeSlowed;
|
public static StatusEffect none, burning, freezing, unmoving, slow, wet, muddy, melting, sapped, tarred, overdrive, overclock, shielded, shocked, blasted, corroded, boss, sporeSlowed, disarmed;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(){
|
public void load(){
|
||||||
@@ -20,14 +20,15 @@ public class StatusEffects implements ContentList{
|
|||||||
none = new StatusEffect("none");
|
none = new StatusEffect("none");
|
||||||
|
|
||||||
burning = new StatusEffect("burning"){{
|
burning = new StatusEffect("burning"){{
|
||||||
color = Pal.lightFlame;
|
color = Color.valueOf("ffc455");
|
||||||
damage = 0.12f; //over 8 seconds, this would be ~60 damage
|
damage = 0.12f; //over 8 seconds, this would be ~60 damage
|
||||||
effect = Fx.burning;
|
effect = Fx.burning;
|
||||||
|
transitionDamage = 8f;
|
||||||
|
|
||||||
init(() -> {
|
init(() -> {
|
||||||
opposite(wet, freezing);
|
opposite(wet, freezing);
|
||||||
trans(tarred, ((unit, time, newTime, result) -> {
|
affinity(tarred, ((unit, time, newTime, result) -> {
|
||||||
unit.damagePierce(8f);
|
unit.damagePierce(transitionDamage);
|
||||||
Fx.burning.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f));
|
Fx.burning.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f));
|
||||||
result.set(burning, Math.min(time + newTime, 300f));
|
result.set(burning, Math.min(time + newTime, 300f));
|
||||||
}));
|
}));
|
||||||
@@ -39,12 +40,13 @@ public class StatusEffects implements ContentList{
|
|||||||
speedMultiplier = 0.6f;
|
speedMultiplier = 0.6f;
|
||||||
healthMultiplier = 0.8f;
|
healthMultiplier = 0.8f;
|
||||||
effect = Fx.freezing;
|
effect = Fx.freezing;
|
||||||
|
transitionDamage = 18f;
|
||||||
|
|
||||||
init(() -> {
|
init(() -> {
|
||||||
opposite(melting, burning);
|
opposite(melting, burning);
|
||||||
|
|
||||||
trans(blasted, ((unit, time, newTime, result) -> {
|
affinity(blasted, ((unit, time, newTime, result) -> {
|
||||||
unit.damagePierce(18f);
|
unit.damagePierce(transitionDamage);
|
||||||
result.set(freezing, time);
|
result.set(freezing, time);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
@@ -65,10 +67,11 @@ public class StatusEffects implements ContentList{
|
|||||||
speedMultiplier = 0.94f;
|
speedMultiplier = 0.94f;
|
||||||
effect = Fx.wet;
|
effect = Fx.wet;
|
||||||
effectChance = 0.09f;
|
effectChance = 0.09f;
|
||||||
|
transitionDamage = 14;
|
||||||
|
|
||||||
init(() -> {
|
init(() -> {
|
||||||
trans(shocked, ((unit, time, newTime, result) -> {
|
affinity(shocked, ((unit, time, newTime, result) -> {
|
||||||
unit.damagePierce(14f);
|
unit.damagePierce(transitionDamage);
|
||||||
if(unit.team == state.rules.waveTeam){
|
if(unit.team == state.rules.waveTeam){
|
||||||
Events.fire(Trigger.shock);
|
Events.fire(Trigger.shock);
|
||||||
}
|
}
|
||||||
@@ -94,7 +97,7 @@ public class StatusEffects implements ContentList{
|
|||||||
|
|
||||||
init(() -> {
|
init(() -> {
|
||||||
opposite(wet, freezing);
|
opposite(wet, freezing);
|
||||||
trans(tarred, ((unit, time, newTime, result) -> {
|
affinity(tarred, ((unit, time, newTime, result) -> {
|
||||||
unit.damagePierce(8f);
|
unit.damagePierce(8f);
|
||||||
Fx.burning.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f));
|
Fx.burning.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f));
|
||||||
result.set(melting, Math.min(time + newTime, 200f));
|
result.set(melting, Math.min(time + newTime, 200f));
|
||||||
@@ -123,8 +126,8 @@ public class StatusEffects implements ContentList{
|
|||||||
effect = Fx.oily;
|
effect = Fx.oily;
|
||||||
|
|
||||||
init(() -> {
|
init(() -> {
|
||||||
trans(melting, ((unit, time, newTime, result) -> result.set(melting, newTime + time)));
|
affinity(melting, ((unit, time, newTime, result) -> result.set(melting, newTime + time)));
|
||||||
trans(burning, ((unit, time, newTime, result) -> result.set(burning, newTime + time)));
|
affinity(burning, ((unit, time, newTime, result) -> result.set(burning, newTime + time)));
|
||||||
});
|
});
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -173,5 +176,10 @@ public class StatusEffects implements ContentList{
|
|||||||
color = Pal.plastanium;
|
color = Pal.plastanium;
|
||||||
damage = 0.1f;
|
damage = 0.1f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
disarmed = new StatusEffect("disarmed"){{
|
||||||
|
color = Color.valueOf("e9ead3");
|
||||||
|
disarm = true;
|
||||||
|
}};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -240,8 +240,8 @@ public class UnitTypes implements ContentList{
|
|||||||
fragVelocityMin = 0.4f;
|
fragVelocityMin = 0.4f;
|
||||||
|
|
||||||
hitEffect = Fx.blastExplosion;
|
hitEffect = Fx.blastExplosion;
|
||||||
splashDamage = 18f;
|
splashDamage = 16f;
|
||||||
splashDamageRadius = 30f;
|
splashDamageRadius = 13f;
|
||||||
|
|
||||||
fragBullets = 2;
|
fragBullets = 2;
|
||||||
fragLifeMin = 0f;
|
fragLifeMin = 0f;
|
||||||
@@ -257,7 +257,7 @@ public class UnitTypes implements ContentList{
|
|||||||
lifetime = 20f;
|
lifetime = 20f;
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
splashDamage = 15f;
|
splashDamage = 15f;
|
||||||
splashDamageRadius = 15f;
|
splashDamageRadius = 10f;
|
||||||
}};
|
}};
|
||||||
}};
|
}};
|
||||||
}}
|
}}
|
||||||
@@ -292,7 +292,7 @@ public class UnitTypes implements ContentList{
|
|||||||
shootSound = Sounds.lasershoot;
|
shootSound = Sounds.lasershoot;
|
||||||
|
|
||||||
bullet = new LaserBoltBulletType(5.2f, 14){{
|
bullet = new LaserBoltBulletType(5.2f, 14){{
|
||||||
lifetime = 37f;
|
lifetime = 32f;
|
||||||
healPercent = 5f;
|
healPercent = 5f;
|
||||||
collidesTeam = true;
|
collidesTeam = true;
|
||||||
backColor = Pal.heal;
|
backColor = Pal.heal;
|
||||||
@@ -309,6 +309,7 @@ public class UnitTypes implements ContentList{
|
|||||||
health = 320f;
|
health = 320f;
|
||||||
buildSpeed = 0.9f;
|
buildSpeed = 0.9f;
|
||||||
armor = 4f;
|
armor = 4f;
|
||||||
|
riseSpeed = 0.07f;
|
||||||
|
|
||||||
mineTier = 2;
|
mineTier = 2;
|
||||||
mineSpeed = 5f;
|
mineSpeed = 5f;
|
||||||
@@ -322,9 +323,8 @@ public class UnitTypes implements ContentList{
|
|||||||
x = 5f;
|
x = 5f;
|
||||||
shake = 2.2f;
|
shake = 2.2f;
|
||||||
y = 0.5f;
|
y = 0.5f;
|
||||||
shootY = 5f;
|
|
||||||
|
|
||||||
shootY = 2.5f;
|
shootY = 2.5f;
|
||||||
|
|
||||||
reload = 38f;
|
reload = 38f;
|
||||||
shots = 3;
|
shots = 3;
|
||||||
inaccuracy = 35;
|
inaccuracy = 35;
|
||||||
@@ -359,13 +359,13 @@ public class UnitTypes implements ContentList{
|
|||||||
|
|
||||||
quasar = new UnitType("quasar"){{
|
quasar = new UnitType("quasar"){{
|
||||||
mineTier = 3;
|
mineTier = 3;
|
||||||
hitSize = 12f;
|
|
||||||
boostMultiplier = 2f;
|
boostMultiplier = 2f;
|
||||||
health = 650f;
|
health = 650f;
|
||||||
buildSpeed = 1.7f;
|
buildSpeed = 1.7f;
|
||||||
canBoost = true;
|
canBoost = true;
|
||||||
armor = 9f;
|
armor = 9f;
|
||||||
landShake = 2f;
|
landShake = 2f;
|
||||||
|
riseSpeed = 0.05f;
|
||||||
|
|
||||||
commandLimit = 10;
|
commandLimit = 10;
|
||||||
mechFrontSway = 0.55f;
|
mechFrontSway = 0.55f;
|
||||||
@@ -407,19 +407,21 @@ public class UnitTypes implements ContentList{
|
|||||||
rotateSpeed = 1.6f;
|
rotateSpeed = 1.6f;
|
||||||
canDrown = false;
|
canDrown = false;
|
||||||
mechFrontSway = 1f;
|
mechFrontSway = 1f;
|
||||||
|
buildSpeed = 3f;
|
||||||
|
|
||||||
mechStepParticles = true;
|
mechStepParticles = true;
|
||||||
mechStepShake = 0.15f;
|
mechStepShake = 0.15f;
|
||||||
ammoType = AmmoTypes.powerHigh;
|
ammoType = AmmoTypes.powerHigh;
|
||||||
|
|
||||||
speed = 0.35f;
|
speed = 0.39f;
|
||||||
boostMultiplier = 2.1f;
|
boostMultiplier = 2.2f;
|
||||||
engineOffset = 12f;
|
engineOffset = 12f;
|
||||||
engineSize = 6f;
|
engineSize = 6f;
|
||||||
lowAltitude = true;
|
lowAltitude = true;
|
||||||
|
riseSpeed = 0.02f;
|
||||||
|
|
||||||
health = 7200f;
|
health = 7500f;
|
||||||
armor = 8f;
|
armor = 9f;
|
||||||
canBoost = true;
|
canBoost = true;
|
||||||
landShake = 4f;
|
landShake = 4f;
|
||||||
immunities = ObjectSet.with(StatusEffects.burning);
|
immunities = ObjectSet.with(StatusEffects.burning);
|
||||||
@@ -443,8 +445,8 @@ public class UnitTypes implements ContentList{
|
|||||||
cooldownTime = 200f;
|
cooldownTime = 200f;
|
||||||
|
|
||||||
bullet = new ContinuousLaserBulletType(){{
|
bullet = new ContinuousLaserBulletType(){{
|
||||||
damage = 26f;
|
damage = 30f;
|
||||||
length = 170f;
|
length = 175f;
|
||||||
hitEffect = Fx.hitMeltHeal;
|
hitEffect = Fx.hitMeltHeal;
|
||||||
drawSize = 420f;
|
drawSize = 420f;
|
||||||
lifetime = 160f;
|
lifetime = 160f;
|
||||||
@@ -454,7 +456,7 @@ public class UnitTypes implements ContentList{
|
|||||||
|
|
||||||
shootEffect = Fx.greenLaserChargeSmall;
|
shootEffect = Fx.greenLaserChargeSmall;
|
||||||
|
|
||||||
incendChance = 0.08f;
|
incendChance = 0.1f;
|
||||||
incendSpread = 5f;
|
incendSpread = 5f;
|
||||||
incendAmount = 1;
|
incendAmount = 1;
|
||||||
|
|
||||||
@@ -471,7 +473,6 @@ public class UnitTypes implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
corvus = new UnitType("corvus"){{
|
corvus = new UnitType("corvus"){{
|
||||||
mineTier = 1;
|
|
||||||
hitSize = 29f;
|
hitSize = 29f;
|
||||||
health = 18000f;
|
health = 18000f;
|
||||||
armor = 9f;
|
armor = 9f;
|
||||||
@@ -769,7 +770,7 @@ public class UnitTypes implements ContentList{
|
|||||||
width = height = 19f;
|
width = height = 19f;
|
||||||
collidesTiles = true;
|
collidesTiles = true;
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
splashDamageRadius = 80f;
|
splashDamageRadius = 70f;
|
||||||
splashDamage = 65f;
|
splashDamage = 65f;
|
||||||
backColor = Pal.sapBulletBack;
|
backColor = Pal.sapBulletBack;
|
||||||
frontColor = lightningColor = Pal.sapBullet;
|
frontColor = lightningColor = Pal.sapBullet;
|
||||||
@@ -1373,6 +1374,8 @@ public class UnitTypes implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
oct = new UnitType("oct"){{
|
oct = new UnitType("oct"){{
|
||||||
|
defaultController = DefenderAI::new;
|
||||||
|
|
||||||
armor = 16f;
|
armor = 16f;
|
||||||
health = 24000;
|
health = 24000;
|
||||||
speed = 0.8f;
|
speed = 0.8f;
|
||||||
@@ -1537,7 +1540,7 @@ public class UnitTypes implements ContentList{
|
|||||||
width = 15f;
|
width = 15f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
splashDamageRadius = 50f;
|
splashDamageRadius = 40f;
|
||||||
splashDamage = 80f;
|
splashDamage = 80f;
|
||||||
backColor = Pal.missileYellowBack;
|
backColor = Pal.missileYellowBack;
|
||||||
frontColor = Pal.missileYellow;
|
frontColor = Pal.missileYellow;
|
||||||
|
|||||||
@@ -278,6 +278,10 @@ public class ContentLoader{
|
|||||||
return getByID(ContentType.bullet, id);
|
return getByID(ContentType.bullet, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Seq<StatusEffect> statusEffects(){
|
||||||
|
return getBy(ContentType.status);
|
||||||
|
}
|
||||||
|
|
||||||
public Seq<SectorPreset> sectors(){
|
public Seq<SectorPreset> sectors(){
|
||||||
return getBy(ContentType.sector);
|
return getBy(ContentType.sector);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,15 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
saves = new Saves();
|
saves = new Saves();
|
||||||
sound = new SoundControl();
|
sound = new SoundControl();
|
||||||
|
|
||||||
|
//show dialog saying that mod loading was skipped.
|
||||||
|
Events.on(ClientLoadEvent.class, e -> {
|
||||||
|
if(Vars.mods.skipModLoading() && Vars.mods.list().any()){
|
||||||
|
Time.runTask(4f, () -> {
|
||||||
|
ui.showInfo("@mods.initfailed");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Events.on(StateChangeEvent.class, event -> {
|
Events.on(StateChangeEvent.class, event -> {
|
||||||
if((event.from == State.playing && event.to == State.menu) || (event.from == State.menu && event.to != State.menu)){
|
if((event.from == State.playing && event.to == State.menu) || (event.from == State.menu && event.to != State.menu)){
|
||||||
Time.runTask(5f, platform::updateRPC);
|
Time.runTask(5f, platform::updateRPC);
|
||||||
@@ -130,7 +139,9 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
Events.on(UnlockEvent.class, e -> {
|
Events.on(UnlockEvent.class, e -> {
|
||||||
ui.hudfrag.showUnlock(e.content);
|
if(e.content.showUnlock()){
|
||||||
|
ui.hudfrag.showUnlock(e.content);
|
||||||
|
}
|
||||||
|
|
||||||
checkAutoUnlocks();
|
checkAutoUnlocks();
|
||||||
|
|
||||||
@@ -420,11 +431,7 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
music.stop();
|
music.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
content.dispose();
|
|
||||||
net.dispose();
|
net.dispose();
|
||||||
Musics.dispose();
|
|
||||||
Sounds.dispose();
|
|
||||||
if(ui != null && ui.editor != null) ui.editor.dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -368,7 +368,7 @@ public class Logic implements ApplicationListener{
|
|||||||
|
|
||||||
if(state.isGame()){
|
if(state.isGame()){
|
||||||
if(!net.client()){
|
if(!net.client()){
|
||||||
state.enemies = Groups.unit.count(u -> u.team() == state.rules.waveTeam && u.type.isCounted);
|
state.enemies = Groups.unit.count(u -> u.team() == state.rules.waveTeam && u.isCounted());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!state.isPaused()){
|
if(!state.isPaused()){
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import mindustry.world.*;
|
|||||||
import mindustry.world.modules.*;
|
import mindustry.world.modules.*;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.util.*;
|
||||||
import java.util.zip.*;
|
import java.util.zip.*;
|
||||||
|
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
@@ -65,6 +66,13 @@ public class NetClient implements ApplicationListener{
|
|||||||
|
|
||||||
reset();
|
reset();
|
||||||
|
|
||||||
|
//connection after reset
|
||||||
|
if(!net.client()){
|
||||||
|
Log.info("Connection canceled.");
|
||||||
|
disconnectQuietly();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ui.loadfrag.hide();
|
ui.loadfrag.hide();
|
||||||
ui.loadfrag.show("@connecting.data");
|
ui.loadfrag.show("@connecting.data");
|
||||||
|
|
||||||
@@ -73,9 +81,14 @@ public class NetClient implements ApplicationListener{
|
|||||||
disconnectQuietly();
|
disconnectQuietly();
|
||||||
});
|
});
|
||||||
|
|
||||||
ConnectPacket c = new ConnectPacket();
|
String locale = Core.settings.getString("locale");
|
||||||
|
if(locale.equals("default")){
|
||||||
|
locale = Locale.getDefault().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
var c = new ConnectPacket();
|
||||||
c.name = player.name;
|
c.name = player.name;
|
||||||
c.locale = Core.settings.getString("locale");
|
c.locale = locale;
|
||||||
c.mods = mods.getModStrings();
|
c.mods = mods.getModStrings();
|
||||||
c.mobile = mobile;
|
c.mobile = mobile;
|
||||||
c.versionType = Version.type;
|
c.versionType = Version.type;
|
||||||
@@ -175,24 +188,34 @@ public class NetClient implements ApplicationListener{
|
|||||||
//called when a server receives a chat message from a player
|
//called when a server receives a chat message from a player
|
||||||
@Remote(called = Loc.server, targets = Loc.client)
|
@Remote(called = Loc.server, targets = Loc.client)
|
||||||
public static void sendChatMessage(Player player, String message){
|
public static void sendChatMessage(Player player, String message){
|
||||||
|
|
||||||
|
//do not receive chat messages from clients that are too young or not registered
|
||||||
|
if(net.server() && player != null && player.con != null && (Time.timeSinceMillis(player.con.connectTime) < 500 || !player.con.hasConnected || !player.isAdded())) return;
|
||||||
|
|
||||||
if(message.length() > maxTextLength){
|
if(message.length() > maxTextLength){
|
||||||
throw new ValidateException(player, "Player has sent a message above the text limit.");
|
throw new ValidateException(player, "Player has sent a message above the text limit.");
|
||||||
}
|
}
|
||||||
|
|
||||||
Events.fire(new PlayerChatEvent(player, message));
|
Events.fire(new PlayerChatEvent(player, message));
|
||||||
|
|
||||||
|
//log commands before they are handled
|
||||||
|
if(message.startsWith(netServer.clientCommands.getPrefix())){
|
||||||
|
//log with brackets
|
||||||
|
Log.info("<&fi@: @&fr>", "&lk" + player.name, "&lw" + message);
|
||||||
|
}
|
||||||
|
|
||||||
//check if it's a command
|
//check if it's a command
|
||||||
CommandResponse response = netServer.clientCommands.handleMessage(message, player);
|
CommandResponse response = netServer.clientCommands.handleMessage(message, player);
|
||||||
if(response.type == ResponseType.noCommand){ //no command to handle
|
if(response.type == ResponseType.noCommand){ //no command to handle
|
||||||
message = netServer.admins.filterMessage(player, message);
|
message = netServer.admins.filterMessage(player, message);
|
||||||
//supress chat message if it's filtered out
|
//suppress chat message if it's filtered out
|
||||||
if(message == null){
|
if(message == null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//special case; graphical server needs to see its message
|
//special case; graphical server needs to see its message
|
||||||
if(!headless){
|
if(!headless){
|
||||||
sendMessage(message, colorizeName(player.id(), player.name), player);
|
sendMessage(message, colorizeName(player.id, player.name), player);
|
||||||
}
|
}
|
||||||
|
|
||||||
//server console logging
|
//server console logging
|
||||||
@@ -202,8 +225,6 @@ public class NetClient implements ApplicationListener{
|
|||||||
//this is required so other clients get the correct name even if they don't know who's sending it yet
|
//this is required so other clients get the correct name even if they don't know who's sending it yet
|
||||||
Call.sendMessage(message, colorizeName(player.id(), player.name), player);
|
Call.sendMessage(message, colorizeName(player.id(), player.name), player);
|
||||||
}else{
|
}else{
|
||||||
//log command to console but with brackets
|
|
||||||
Log.info("<&fi@: @&fr>", "&lk" + player.name, "&lw" + message);
|
|
||||||
|
|
||||||
//a command was sent, now get the output
|
//a command was sent, now get the output
|
||||||
if(response.type != ResponseType.valid){
|
if(response.type != ResponseType.valid){
|
||||||
@@ -620,7 +641,7 @@ public class NetClient implements ApplicationListener{
|
|||||||
lastSent++,
|
lastSent++,
|
||||||
uid,
|
uid,
|
||||||
player.dead(),
|
player.dead(),
|
||||||
unit.x, unit.y,
|
player.dead() ? player.x : unit.x, player.dead() ? player.y : unit.y,
|
||||||
player.unit().aimX(), player.unit().aimY(),
|
player.unit().aimX(), player.unit().aimY(),
|
||||||
unit.rotation,
|
unit.rotation,
|
||||||
unit instanceof Mechc m ? m.baseRotation() : 0,
|
unit instanceof Mechc m ? m.baseRotation() : 0,
|
||||||
|
|||||||
@@ -35,13 +35,13 @@ import static mindustry.Vars.*;
|
|||||||
|
|
||||||
public class NetServer implements ApplicationListener{
|
public class NetServer implements ApplicationListener{
|
||||||
/** note that snapshots are compressed, so the max snapshot size here is above the typical UDP safe limit */
|
/** note that snapshots are compressed, so the max snapshot size here is above the typical UDP safe limit */
|
||||||
private static final int maxSnapshotSize = 800, timerBlockSync = 0;
|
private static final int maxSnapshotSize = 800, timerBlockSync = 0, serverSyncTime = 200;
|
||||||
private static final float serverSyncTime = 12, blockSyncTime = 60 * 6;
|
private static final float blockSyncTime = 60 * 6;
|
||||||
private static final FloatBuffer fbuffer = FloatBuffer.allocate(20);
|
private static final FloatBuffer fbuffer = FloatBuffer.allocate(20);
|
||||||
private static final Vec2 vector = new Vec2();
|
private static final Vec2 vector = new Vec2();
|
||||||
private static final Rect viewport = new Rect();
|
private static final Rect viewport = new Rect();
|
||||||
/** If a player goes away of their server-side coordinates by this distance, they get teleported back. */
|
/** If a player goes away of their server-side coordinates by this distance, they get teleported back. */
|
||||||
private static final float correctDist = tilesize * 12f;
|
private static final float correctDist = tilesize * 14f;
|
||||||
|
|
||||||
public final Administration admins = new Administration();
|
public final Administration admins = new Administration();
|
||||||
public final CommandHandler clientCommands = new CommandHandler("/");
|
public final CommandHandler clientCommands = new CommandHandler("/");
|
||||||
@@ -81,6 +81,8 @@ public class NetServer implements ApplicationListener{
|
|||||||
public NetServer(){
|
public NetServer(){
|
||||||
|
|
||||||
net.handleServer(Connect.class, (con, connect) -> {
|
net.handleServer(Connect.class, (con, connect) -> {
|
||||||
|
Events.fire(new ConnectionEvent(con));
|
||||||
|
|
||||||
if(admins.isIPBanned(connect.addressTCP) || admins.isSubnetBanned(connect.addressTCP)){
|
if(admins.isIPBanned(connect.addressTCP) || admins.isSubnetBanned(connect.addressTCP)){
|
||||||
con.kick(KickReason.banned);
|
con.kick(KickReason.banned);
|
||||||
}
|
}
|
||||||
@@ -93,10 +95,14 @@ public class NetServer implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
net.handleServer(ConnectPacket.class, (con, packet) -> {
|
net.handleServer(ConnectPacket.class, (con, packet) -> {
|
||||||
|
if(con.kicked) return;
|
||||||
|
|
||||||
if(con.address.startsWith("steam:")){
|
if(con.address.startsWith("steam:")){
|
||||||
packet.uuid = con.address.substring("steam:".length());
|
packet.uuid = con.address.substring("steam:".length());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
con.connectTime = Time.millis();
|
||||||
|
|
||||||
String uuid = packet.uuid;
|
String uuid = packet.uuid;
|
||||||
byte[] buuid = Base64Coder.decode(uuid);
|
byte[] buuid = Base64Coder.decode(uuid);
|
||||||
CRC32 crc = new CRC32();
|
CRC32 crc = new CRC32();
|
||||||
@@ -196,7 +202,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(packet.locale == null){
|
if(packet.locale == null){
|
||||||
packet.locale = "en_US";
|
packet.locale = "en";
|
||||||
}
|
}
|
||||||
|
|
||||||
String ip = con.address;
|
String ip = con.address;
|
||||||
@@ -249,7 +255,8 @@ public class NetServer implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
net.handleServer(InvokePacket.class, (con, packet) -> {
|
net.handleServer(InvokePacket.class, (con, packet) -> {
|
||||||
if(con.player == null) return;
|
if(con.player == null || con.kicked) return;
|
||||||
|
|
||||||
try{
|
try{
|
||||||
RemoteReadServer.readPacket(packet.reader(), packet.type, con.player);
|
RemoteReadServer.readPacket(packet.reader(), packet.type, con.player);
|
||||||
}catch(ValidateException e){
|
}catch(ValidateException e){
|
||||||
@@ -457,12 +464,17 @@ public class NetServer implements ApplicationListener{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!arg[0].equalsIgnoreCase("y") && !arg[0].equalsIgnoreCase("n")){
|
int sign = switch(arg[0].toLowerCase()){
|
||||||
|
case "y", "yes" -> 1;
|
||||||
|
case "n", "no" -> -1;
|
||||||
|
default -> 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(sign == 0){
|
||||||
player.sendMessage("[scarlet]Vote either 'y' (yes) or 'n' (no).");
|
player.sendMessage("[scarlet]Vote either 'y' (yes) or 'n' (no).");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sign = arg[0].equalsIgnoreCase("y") ? 1 : -1;
|
|
||||||
currentlyKicking[0].vote(player, sign);
|
currentlyKicking[0].vote(player, sign);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -649,9 +661,6 @@ public class NetServer implements ApplicationListener{
|
|||||||
|
|
||||||
long elapsed = Time.timeSinceMillis(con.lastReceivedClientTime);
|
long elapsed = Time.timeSinceMillis(con.lastReceivedClientTime);
|
||||||
float maxSpeed = unit.realSpeed();
|
float maxSpeed = unit.realSpeed();
|
||||||
if(unit.isGrounded()){
|
|
||||||
maxSpeed *= unit.floorSpeedMultiplier();
|
|
||||||
}
|
|
||||||
|
|
||||||
float maxMove = elapsed / 1000f * 60f * maxSpeed * 1.2f;
|
float maxMove = elapsed / 1000f * 60f * maxSpeed * 1.2f;
|
||||||
|
|
||||||
@@ -725,16 +734,18 @@ public class NetServer implements ApplicationListener{
|
|||||||
//no verification is done, so admins can hypothetically spam waves
|
//no verification is done, so admins can hypothetically spam waves
|
||||||
//not a real issue, because server owners may want to do just that
|
//not a real issue, because server owners may want to do just that
|
||||||
logic.skipWave();
|
logic.skipWave();
|
||||||
|
info("&lc@ has skipped the wave.", player.name);
|
||||||
}else if(action == AdminAction.ban){
|
}else if(action == AdminAction.ban){
|
||||||
netServer.admins.banPlayerIP(other.con.address);
|
|
||||||
netServer.admins.banPlayerID(other.con.uuid);
|
netServer.admins.banPlayerID(other.con.uuid);
|
||||||
|
netServer.admins.banPlayerIP(other.con.address);
|
||||||
other.kick(KickReason.banned);
|
other.kick(KickReason.banned);
|
||||||
info("&lc@ has banned @.", player.name, other.name);
|
info("&lc@ has banned @.", player.name, other.name);
|
||||||
}else if(action == AdminAction.kick){
|
}else if(action == AdminAction.kick){
|
||||||
other.kick(KickReason.kick);
|
other.kick(KickReason.kick);
|
||||||
info("&lc@ has kicked @.", player.name, other.name);
|
info("&lc@ has kicked @.", player.name, other.name);
|
||||||
}else if(action == AdminAction.trace){
|
}else if(action == AdminAction.trace){
|
||||||
TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile);
|
PlayerInfo stats = netServer.admins.getInfo(other.uuid());
|
||||||
|
TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile, stats.timesJoined, stats.timesKicked);
|
||||||
if(player.con != null){
|
if(player.con != null){
|
||||||
Call.traceInfo(player.con, other, info);
|
Call.traceInfo(player.con, other, info);
|
||||||
}else{
|
}else{
|
||||||
@@ -746,6 +757,8 @@ public class NetServer implements ApplicationListener{
|
|||||||
|
|
||||||
@Remote(targets = Loc.client)
|
@Remote(targets = Loc.client)
|
||||||
public static void connectConfirm(Player player){
|
public static void connectConfirm(Player player){
|
||||||
|
if(player.con.kicked) return;
|
||||||
|
|
||||||
player.add();
|
player.add();
|
||||||
|
|
||||||
if(player.con == null || player.con.hasConnected) return;
|
if(player.con == null || player.con.hasConnected) return;
|
||||||
@@ -956,9 +969,11 @@ public class NetServer implements ApplicationListener{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetConnection connection = player.con;
|
var connection = player.con;
|
||||||
|
|
||||||
if(!player.timer(0, serverSyncTime) || !connection.hasConnected) return;
|
if(Time.timeSinceMillis(connection.syncTime) < serverSyncTime || !connection.hasConnected) return;
|
||||||
|
|
||||||
|
connection.syncTime = Time.millis();
|
||||||
|
|
||||||
try{
|
try{
|
||||||
writeEntitySnapshot(player);
|
writeEntitySnapshot(player);
|
||||||
|
|||||||
@@ -20,10 +20,9 @@ import static mindustry.Vars.*;
|
|||||||
|
|
||||||
public interface Platform{
|
public interface Platform{
|
||||||
|
|
||||||
/** Dynamically loads a jar file. */
|
/** Dynamically creates a class loader for a jar file. */
|
||||||
default Class<?> loadJar(Fi jar, String mainClass) throws Exception{
|
default ClassLoader loadJar(Fi jar, String mainClass) throws Exception{
|
||||||
URLClassLoader classLoader = new URLClassLoader(new URL[]{jar.file().toURI().toURL()}, getClass().getClassLoader());
|
return new URLClassLoader(new URL[]{jar.file().toURI().toURL()}, getClass().getClassLoader());
|
||||||
return Class.forName(mainClass, true, classLoader);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Steam: Update lobby visibility.*/
|
/** Steam: Update lobby visibility.*/
|
||||||
|
|||||||
@@ -115,17 +115,6 @@ public class Renderer implements ApplicationListener{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispose(){
|
public void dispose(){
|
||||||
minimap.dispose();
|
|
||||||
effectBuffer.dispose();
|
|
||||||
blocks.dispose();
|
|
||||||
if(planets != null){
|
|
||||||
planets.dispose();
|
|
||||||
planets = null;
|
|
||||||
}
|
|
||||||
if(bloom != null){
|
|
||||||
bloom.dispose();
|
|
||||||
bloom = null;
|
|
||||||
}
|
|
||||||
Events.fire(new DisposeEvent());
|
Events.fire(new DisposeEvent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -325,7 +314,7 @@ public class Renderer implements ApplicationListener{
|
|||||||
int w = world.width() * tilesize, h = world.height() * tilesize;
|
int w = world.width() * tilesize, h = world.height() * tilesize;
|
||||||
int memory = w * h * 4 / 1024 / 1024;
|
int memory = w * h * 4 / 1024 / 1024;
|
||||||
|
|
||||||
if(memory >= 65){
|
if(memory >= (mobile ? 65 : 120)){
|
||||||
ui.showInfo("@screenshot.invalid");
|
ui.showInfo("@screenshot.invalid");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -225,14 +225,6 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
Events.fire(new ResizeEvent());
|
Events.fire(new ResizeEvent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void dispose(){
|
|
||||||
if(packer != null){
|
|
||||||
packer.dispose();
|
|
||||||
packer = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public TextureRegionDrawable getIcon(String name){
|
public TextureRegionDrawable getIcon(String name){
|
||||||
if(Icon.icons.containsKey(name)) return Icon.icons.get(name);
|
if(Icon.icons.containsKey(name)) return Icon.icons.get(name);
|
||||||
return Core.atlas.getDrawable("error");
|
return Core.atlas.getDrawable("error");
|
||||||
|
|||||||
@@ -95,6 +95,10 @@ public abstract class UnlockableContent extends MappableContent{
|
|||||||
return cicons[icon.ordinal()];
|
return cicons[icon.ordinal()];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Cicon prefDatabaseIcon(){
|
||||||
|
return Cicon.xlarge;
|
||||||
|
}
|
||||||
|
|
||||||
/** Iterates through any implicit dependencies of this content.
|
/** Iterates through any implicit dependencies of this content.
|
||||||
* For blocks, this would be the items required to build it. */
|
* For blocks, this would be the items required to build it. */
|
||||||
public void getDependencies(Cons<UnlockableContent> cons){
|
public void getDependencies(Cons<UnlockableContent> cons){
|
||||||
@@ -115,6 +119,11 @@ public abstract class UnlockableContent extends MappableContent{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return whether to show a notification toast when this is unlocked */
|
||||||
|
public boolean showUnlock(){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/** Makes this piece of content unlocked; if it already unlocked, nothing happens. */
|
/** Makes this piece of content unlocked; if it already unlocked, nothing happens. */
|
||||||
public void unlock(){
|
public void unlock(){
|
||||||
if(!unlocked && !alwaysUnlocked){
|
if(!unlocked && !alwaysUnlocked){
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
platform.publish(map);
|
platform.publish(map);
|
||||||
}).padTop(-3).size(swidth * 2f + 10, 60f).update(b ->
|
}).padTop(-3).size(swidth * 2f + 10, 60f).update(b ->
|
||||||
b.setText(editor.tags.containsKey("steamid") ?
|
b.setText(editor.tags.containsKey("steamid") ?
|
||||||
editor.tags.get("author").equals(steamPlayerName) ? "@workshop.listing" : "@view.workshop" :
|
editor.tags.get("author", "").equals(steamPlayerName) ? "@workshop.listing" : "@view.workshop" :
|
||||||
"@editor.publish.workshop"));
|
"@editor.publish.workshop"));
|
||||||
|
|
||||||
menu.cont.row();
|
menu.cont.row();
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ public class WaveGraph extends Table{
|
|||||||
t.button(b -> {
|
t.button(b -> {
|
||||||
Color tcolor = color(type).cpy();
|
Color tcolor = color(type).cpy();
|
||||||
b.image().size(32f).update(i -> i.setColor(b.isChecked() ? Tmp.c1.set(tcolor).mul(0.5f) : tcolor)).get().act(1);
|
b.image().size(32f).update(i -> i.setColor(b.isChecked() ? Tmp.c1.set(tcolor).mul(0.5f) : tcolor)).get().act(1);
|
||||||
b.image(type.icon(Cicon.medium)).padRight(20).update(i -> i.setColor(b.isChecked() ? Color.gray : Color.white)).get().act(1);
|
b.image(type.icon(Cicon.medium)).size(32f).padRight(20).update(i -> i.setColor(b.isChecked() ? Color.gray : Color.white)).get().act(1);
|
||||||
b.margin(0f);
|
b.margin(0f);
|
||||||
}, Styles.fullTogglet, () -> {
|
}, Styles.fullTogglet, () -> {
|
||||||
if(!hidden.add(type)){
|
if(!hidden.add(type)){
|
||||||
|
|||||||
@@ -248,7 +248,7 @@ public class Damage{
|
|||||||
|
|
||||||
tmpUnit = null;
|
tmpUnit = null;
|
||||||
|
|
||||||
Cons<Unit> cons = e -> {
|
Units.nearbyEnemies(hitter.team, rect, e -> {
|
||||||
if((tmpUnit != null && e.dst2(x, y) > tmpUnit.dst2(x, y)) || !e.checkTarget(hitter.type.collidesAir, hitter.type.collidesGround)) return;
|
if((tmpUnit != null && e.dst2(x, y) > tmpUnit.dst2(x, y)) || !e.checkTarget(hitter.type.collidesAir, hitter.type.collidesGround)) return;
|
||||||
|
|
||||||
e.hitbox(hitrect);
|
e.hitbox(hitrect);
|
||||||
@@ -263,9 +263,7 @@ public class Damage{
|
|||||||
if(vec != null){
|
if(vec != null){
|
||||||
tmpUnit = e;
|
tmpUnit = e;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Units.nearbyEnemies(hitter.team, rect, cons);
|
|
||||||
|
|
||||||
if(tmpBuilding != null && tmpUnit != null){
|
if(tmpBuilding != null && tmpUnit != null){
|
||||||
if(Mathf.dst2(x, y, tmpUnit.getX(), tmpUnit.getY()) <= Mathf.dst2(x, y, tmpBuilding.getX(), tmpBuilding.getY())){
|
if(Mathf.dst2(x, y, tmpUnit.getX(), tmpUnit.getY()) <= Mathf.dst2(x, y, tmpBuilding.getX(), tmpBuilding.getY())){
|
||||||
@@ -363,8 +361,7 @@ public class Damage{
|
|||||||
|
|
||||||
if(ground){
|
if(ground){
|
||||||
if(!complete){
|
if(!complete){
|
||||||
//increase damage slightly to compensate for new algorithm
|
tileDamage(team, World.toTile(x), World.toTile(y), radius / tilesize, damage);
|
||||||
tileDamage(team, World.toTile(x), World.toTile(y), radius / tilesize, damage * 1.1f);
|
|
||||||
}else{
|
}else{
|
||||||
completeDamage(team, x, y, radius, damage);
|
completeDamage(team, x, y, radius, damage);
|
||||||
}
|
}
|
||||||
@@ -380,8 +377,8 @@ public class Damage{
|
|||||||
//why? because otherwise the building would absorb everything in one cell, which means much less damage than a nearby explosion.
|
//why? because otherwise the building would absorb everything in one cell, which means much less damage than a nearby explosion.
|
||||||
//this needs to be compensated
|
//this needs to be compensated
|
||||||
if(in != null && in.team != team && in.block.size > 1 && in.health > damage){
|
if(in != null && in.team != team && in.block.size > 1 && in.health > damage){
|
||||||
//deal the damage of an entire side + 1, to be equivalent with maximum 'standard' damage
|
//deal the damage of an entire side, to be equivalent with maximum 'standard' damage
|
||||||
in.damage(damage * (in.block.size + 1));
|
in.damage(damage * Math.min((in.block.size), baseRadius * 0.45f));
|
||||||
//no need to continue with the explosion
|
//no need to continue with the explosion
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,9 @@ public class EntityGroup<T extends Entityc> implements Iterable<T>{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void update(){
|
public void update(){
|
||||||
each(Entityc::update);
|
for(index = 0; index < array.size; index++){
|
||||||
|
array.items[index].update();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Seq<T> copy(Seq<T> arr){
|
public Seq<T> copy(Seq<T> arr){
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ public class Units{
|
|||||||
nearby(x, y, width, height, unit -> {
|
nearby(x, y, width, height, unit -> {
|
||||||
if(boolResult) return;
|
if(boolResult) return;
|
||||||
if((unit.isGrounded() && !unit.type.hovering) == ground){
|
if((unit.isGrounded() && !unit.type.hovering) == ground){
|
||||||
unit.hitbox(hitrect);
|
unit.hitboxTile(hitrect);
|
||||||
|
|
||||||
if(hitrect.overlaps(x, y, width, height)){
|
if(hitrect.overlaps(x, y, width, height)){
|
||||||
boolResult = true;
|
boolResult = true;
|
||||||
@@ -218,7 +218,7 @@ public class Units{
|
|||||||
cdist = 0f;
|
cdist = 0f;
|
||||||
|
|
||||||
nearbyEnemies(team, x - range, y - range, range*2f, range*2f, e -> {
|
nearbyEnemies(team, x - range, y - range, range*2f, range*2f, e -> {
|
||||||
if(e.dead() || !predicate.get(e) || !e.within(x, y, range + e.hitSize/2f)) return;
|
if(e.dead() || !predicate.get(e) || e.team == Team.derelict || !e.within(x, y, range + e.hitSize/2f)) return;
|
||||||
|
|
||||||
float cost = sort.cost(e, x, y);
|
float cost = sort.cost(e, x, y);
|
||||||
if(result == null || cost < cdist){
|
if(result == null || cost < cdist){
|
||||||
@@ -248,7 +248,7 @@ public class Units{
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns the closest ally of this team. Filter by predicate. */
|
/** Returns the closest ally of this team in a range. Filter by predicate. */
|
||||||
public static Unit closest(Team team, float x, float y, float range, Boolf<Unit> predicate){
|
public static Unit closest(Team team, float x, float y, float range, Boolf<Unit> predicate){
|
||||||
result = null;
|
result = null;
|
||||||
cdist = 0f;
|
cdist = 0f;
|
||||||
@@ -266,6 +266,24 @@ public class Units{
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Returns the closest ally of this team in a range. Filter by predicate. */
|
||||||
|
public static Unit closest(Team team, float x, float y, float range, Boolf<Unit> predicate, Sortf sort){
|
||||||
|
result = null;
|
||||||
|
cdist = 0f;
|
||||||
|
|
||||||
|
nearby(team, x, y, range, e -> {
|
||||||
|
if(!predicate.get(e)) return;
|
||||||
|
|
||||||
|
float dist = sort.cost(e, x, y);
|
||||||
|
if(result == null || dist < cdist){
|
||||||
|
result = e;
|
||||||
|
cdist = dist;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/** Returns the closest ally of this team. Filter by predicate.
|
/** Returns the closest ally of this team. Filter by predicate.
|
||||||
* Unlike the closest() function, this only guarantees that unit hitboxes overlap the range. */
|
* Unlike the closest() function, this only guarantees that unit hitboxes overlap the range. */
|
||||||
public static Unit closestOverlap(Team team, float x, float y, float range, Boolf<Unit> predicate){
|
public static Unit closestOverlap(Team team, float x, float y, float range, Boolf<Unit> predicate){
|
||||||
|
|||||||
@@ -15,14 +15,14 @@ import mindustry.ui.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class UnitSpawnAbility extends Ability{
|
public class UnitSpawnAbility extends Ability{
|
||||||
public UnitType type;
|
public UnitType unit;
|
||||||
public float spawnTime = 60f, spawnX, spawnY;
|
public float spawnTime = 60f, spawnX, spawnY;
|
||||||
public Effect spawnEffect = Fx.spawn;
|
public Effect spawnEffect = Fx.spawn;
|
||||||
|
|
||||||
protected float timer;
|
protected float timer;
|
||||||
|
|
||||||
public UnitSpawnAbility(UnitType type, float spawnTime, float spawnX, float spawnY){
|
public UnitSpawnAbility(UnitType unit, float spawnTime, float spawnX, float spawnY){
|
||||||
this.type = type;
|
this.unit = unit;
|
||||||
this.spawnTime = spawnTime;
|
this.spawnTime = spawnTime;
|
||||||
this.spawnX = spawnX;
|
this.spawnX = spawnX;
|
||||||
this.spawnY = spawnY;
|
this.spawnY = spawnY;
|
||||||
@@ -35,10 +35,10 @@ public class UnitSpawnAbility extends Ability{
|
|||||||
public void update(Unit unit){
|
public void update(Unit unit){
|
||||||
timer += Time.delta * state.rules.unitBuildSpeedMultiplier;
|
timer += Time.delta * state.rules.unitBuildSpeedMultiplier;
|
||||||
|
|
||||||
if(timer >= spawnTime && Units.canCreate(unit.team, type)){
|
if(timer >= spawnTime && Units.canCreate(unit.team, this.unit)){
|
||||||
float x = unit.x + Angles.trnsx(unit.rotation, spawnY, spawnX), y = unit.y + Angles.trnsy(unit.rotation, spawnY, spawnX);
|
float x = unit.x + Angles.trnsx(unit.rotation, spawnY, spawnX), y = unit.y + Angles.trnsy(unit.rotation, spawnY, spawnX);
|
||||||
spawnEffect.at(x, y);
|
spawnEffect.at(x, y);
|
||||||
Unit u = type.create(unit.team);
|
Unit u = this.unit.create(unit.team);
|
||||||
u.set(x, y);
|
u.set(x, y);
|
||||||
u.rotation = unit.rotation;
|
u.rotation = unit.rotation;
|
||||||
if(!Vars.net.client()){
|
if(!Vars.net.client()){
|
||||||
@@ -51,16 +51,16 @@ public class UnitSpawnAbility extends Ability{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(Unit unit){
|
public void draw(Unit unit){
|
||||||
if(Units.canCreate(unit.team, type)){
|
if(Units.canCreate(unit.team, this.unit)){
|
||||||
Draw.draw(Draw.z(), () -> {
|
Draw.draw(Draw.z(), () -> {
|
||||||
float x = unit.x + Angles.trnsx(unit.rotation, spawnY, spawnX), y = unit.y + Angles.trnsy(unit.rotation, spawnY, spawnX);
|
float x = unit.x + Angles.trnsx(unit.rotation, spawnY, spawnX), y = unit.y + Angles.trnsy(unit.rotation, spawnY, spawnX);
|
||||||
Drawf.construct(x, y, type.icon(Cicon.full), unit.rotation - 90, timer / spawnTime, 1f, timer);
|
Drawf.construct(x, y, this.unit.icon(Cicon.full), unit.rotation - 90, timer / spawnTime, 1f, timer);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String localized(){
|
public String localized(){
|
||||||
return Core.bundle.format("ability.unitspawn", type.localizedName);
|
return Core.bundle.format("ability.unitspawn", unit.localizedName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,6 +161,11 @@ public abstract class BulletType extends Content{
|
|||||||
return Math.max(speed * lifetime * (1f - drag), maxRange);
|
return Math.max(speed * lifetime * (1f - drag), maxRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return continuous damage in damage/sec, or -1 if not continuous. */
|
||||||
|
public float continuousDamage(){
|
||||||
|
return -1f;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean testCollision(Bullet bullet, Building tile){
|
public boolean testCollision(Bullet bullet, Building tile){
|
||||||
return healPercent <= 0.001f || tile.team != bullet.team || tile.healthf() < 1f;
|
return healPercent <= 0.001f || tile.team != bullet.team || tile.healthf() < 1f;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,6 +46,11 @@ public class ContinuousLaserBulletType extends BulletType{
|
|||||||
this(0);
|
this(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float continuousDamage(){
|
||||||
|
return damage / 5f * 60f;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float estimateDPS(){
|
public float estimateDPS(){
|
||||||
//assume firing duration is about 100 by default, may not be accurate there's no way of knowing in this method
|
//assume firing duration is about 100 by default, may not be accurate there's no way of knowing in this method
|
||||||
@@ -55,7 +60,7 @@ public class ContinuousLaserBulletType extends BulletType{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float range(){
|
public float range(){
|
||||||
return length;
|
return Math.max(length, maxRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public class LaserBulletType extends BulletType{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float range(){
|
public float range(){
|
||||||
return length;
|
return Math.max(length, maxRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ public class LightningBulletType extends BulletType{
|
|||||||
hitEffect = Fx.hitLancer;
|
hitEffect = Fx.hitLancer;
|
||||||
keepVelocity = false;
|
keepVelocity = false;
|
||||||
hittable = false;
|
hittable = false;
|
||||||
|
//for stats
|
||||||
|
status = StatusEffects.shocked;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public class SapBulletType extends BulletType{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float range(){
|
public float range(){
|
||||||
return length;
|
return Math.max(length, maxRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public class ShrapnelBulletType extends BulletType{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float range(){
|
public float range(){
|
||||||
return length;
|
return Math.max(length, maxRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ import java.util.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
abstract class BuilderComp implements Posc, Teamc, Rotc{
|
abstract class BuilderComp implements Posc, Statusc, Teamc, Rotc{
|
||||||
static final Vec2[] vecs = new Vec2[]{new Vec2(), new Vec2(), new Vec2(), new Vec2()};
|
static final Vec2[] vecs = new Vec2[]{new Vec2(), new Vec2(), new Vec2(), new Vec2()};
|
||||||
|
|
||||||
@Import float x, y, rotation;
|
@Import float x, y, rotation, buildSpeedMultiplier;
|
||||||
@Import UnitType type;
|
@Import UnitType type;
|
||||||
@Import Team team;
|
@Import Team team;
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{
|
|||||||
private transient float buildAlpha = 0f;
|
private transient float buildAlpha = 0f;
|
||||||
|
|
||||||
public boolean canBuild(){
|
public boolean canBuild(){
|
||||||
return type.buildSpeed > 0;
|
return type.buildSpeed > 0 && buildSpeedMultiplier > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -126,9 +126,9 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{
|
|||||||
|
|
||||||
//otherwise, update it.
|
//otherwise, update it.
|
||||||
if(current.breaking){
|
if(current.breaking){
|
||||||
entity.deconstruct(self(), core, 1f / entity.buildCost * Time.delta * type.buildSpeed * state.rules.buildSpeedMultiplier);
|
entity.deconstruct(self(), core, 1f / entity.buildCost * Time.delta * type.buildSpeed * buildSpeedMultiplier * state.rules.buildSpeedMultiplier);
|
||||||
}else{
|
}else{
|
||||||
entity.construct(self(), core, 1f / entity.buildCost * Time.delta * type.buildSpeed * state.rules.buildSpeedMultiplier, current.config);
|
entity.construct(self(), core, 1f / entity.buildCost * Time.delta * type.buildSpeed * buildSpeedMultiplier * state.rules.buildSpeedMultiplier, current.config);
|
||||||
}
|
}
|
||||||
|
|
||||||
current.stuck = Mathf.equal(current.progress, entity.progress);
|
current.stuck = Mathf.equal(current.progress, entity.progress);
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import mindustry.world.*;
|
|||||||
import mindustry.world.blocks.ConstructBlock.*;
|
import mindustry.world.blocks.ConstructBlock.*;
|
||||||
import mindustry.world.blocks.*;
|
import mindustry.world.blocks.*;
|
||||||
import mindustry.world.blocks.environment.*;
|
import mindustry.world.blocks.environment.*;
|
||||||
|
import mindustry.world.blocks.logic.LogicBlock.*;
|
||||||
import mindustry.world.blocks.payloads.*;
|
import mindustry.world.blocks.payloads.*;
|
||||||
import mindustry.world.blocks.power.*;
|
import mindustry.world.blocks.power.*;
|
||||||
import mindustry.world.consumers.*;
|
import mindustry.world.consumers.*;
|
||||||
@@ -910,24 +911,12 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
public void placed(){
|
public void placed(){
|
||||||
if(net.client()) return;
|
if(net.client()) return;
|
||||||
|
|
||||||
if(block.consumesPower || block.outputsPower){
|
if((block.consumesPower || block.outputsPower) && block.hasPower){
|
||||||
int range = 10;
|
PowerNode.getNodeLinks(tile, block, team, other -> {
|
||||||
tempTiles.clear();
|
if(!other.power.links.contains(pos())){
|
||||||
Geometry.circle(tileX(), tileY(), range, (x, y) -> {
|
other.configureAny(pos());
|
||||||
Building other = world.build(x, y);
|
|
||||||
if(other != null && other.block instanceof PowerNode node && node.linkValid(other, self()) && !PowerNode.insulated(other, self())
|
|
||||||
&& !other.proximity().contains(this.<Building>self()) &&
|
|
||||||
!(block.outputsPower && proximity.contains(p -> p.power != null && p.power.graph == other.power.graph))){
|
|
||||||
tempTiles.add(other.tile);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
tempTiles.sort(Structs.comparingFloat(t -> t.dst2(tile)));
|
|
||||||
if(!tempTiles.isEmpty()){
|
|
||||||
Tile toLink = tempTiles.first();
|
|
||||||
if(!toLink.build.power.links.contains(pos())){
|
|
||||||
toLink.build.configureAny(pos());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -952,7 +941,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
/** Called when arbitrary configuration is applied to a tile. */
|
/** Called when arbitrary configuration is applied to a tile. */
|
||||||
public void configured(@Nullable Unit builder, @Nullable Object value){
|
public void configured(@Nullable Unit builder, @Nullable Object value){
|
||||||
//null is of type void.class; anonymous classes use their superclass.
|
//null is of type void.class; anonymous classes use their superclass.
|
||||||
Class<?> type = value == null ? void.class : value.getClass().isAnonymousClass() || value.getClass().getSimpleName().startsWith("adapter") ? value.getClass().getSuperclass() : value.getClass();
|
Class<?> type = value == null ? void.class : value.getClass().isAnonymousClass() ? value.getClass().getSuperclass() : value.getClass();
|
||||||
|
|
||||||
if(value instanceof Item) type = Item.class;
|
if(value instanceof Item) type = Item.class;
|
||||||
if(value instanceof Block) type = Block.class;
|
if(value instanceof Block) type = Block.class;
|
||||||
@@ -964,6 +953,12 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
|
|
||||||
if(block.configurations.containsKey(type)){
|
if(block.configurations.containsKey(type)){
|
||||||
block.configurations.get(type).get(this, value);
|
block.configurations.get(type).get(this, value);
|
||||||
|
}else if(value instanceof Building build){
|
||||||
|
//copy config of another building
|
||||||
|
var conf = build.config();
|
||||||
|
if(conf != null && !(conf instanceof Building)){
|
||||||
|
configured(builder, conf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1148,7 +1143,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
|
|
||||||
/** Returns whether or not a hand cursor should be shown over this block. */
|
/** Returns whether or not a hand cursor should be shown over this block. */
|
||||||
public Cursor getCursor(){
|
public Cursor getCursor(){
|
||||||
return block.configurable && team == player.team() ? SystemCursor.hand : SystemCursor.arrow;
|
return block.configurable && interactable(player.team()) ? SystemCursor.hand : SystemCursor.arrow;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1312,6 +1307,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
return switch(sensor){
|
return switch(sensor){
|
||||||
case x -> World.conv(x);
|
case x -> World.conv(x);
|
||||||
case y -> World.conv(y);
|
case y -> World.conv(y);
|
||||||
|
case dead -> !isValid() ? 1 : 0;
|
||||||
case team -> team.id;
|
case team -> team.id;
|
||||||
case health -> health;
|
case health -> health;
|
||||||
case maxHealth -> maxHealth;
|
case maxHealth -> maxHealth;
|
||||||
@@ -1330,8 +1326,9 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
case powerNetStored -> power == null ? 0 : power.graph.getLastPowerStored();
|
case powerNetStored -> power == null ? 0 : power.graph.getLastPowerStored();
|
||||||
case powerNetCapacity -> power == null ? 0 : power.graph.getLastCapacity();
|
case powerNetCapacity -> power == null ? 0 : power.graph.getLastCapacity();
|
||||||
case enabled -> enabled ? 1 : 0;
|
case enabled -> enabled ? 1 : 0;
|
||||||
case controlled -> this instanceof ControlBlock c ? c.isControlled() ? 1 : 0 : 0;
|
case controlled -> this instanceof ControlBlock c && c.isControlled() ? GlobalConstants.ctrlPlayer : 0;
|
||||||
case payloadCount -> getPayload() != null ? 1 : 0;
|
case payloadCount -> getPayload() != null ? 1 : 0;
|
||||||
|
case size -> block.size;
|
||||||
default -> Float.NaN; //gets converted to null in logic
|
default -> Float.NaN; //gets converted to null in logic
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1364,12 +1361,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void control(LAccess type, Object p1, double p2, double p3, double p4){
|
public void control(LAccess type, Object p1, double p2, double p3, double p4){
|
||||||
//don't execute configure instructions as the client
|
//don't execute configure instructions that copy logic building configures; this can cause extreme lag
|
||||||
if(type == LAccess.configure && block.logicConfigurable && !net.client()){
|
if(type == LAccess.configure && block.logicConfigurable && !(p1 instanceof LogicBuild)){
|
||||||
//change config only if it's new
|
//change config only if it's new
|
||||||
Object prev = senseObject(LAccess.config);
|
if(senseObject(LAccess.config) != p1){
|
||||||
if(prev != p1){
|
configured(null, p1);
|
||||||
configureAny(p1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import arc.func.*;
|
|||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import mindustry.*;
|
||||||
import mindustry.ai.formations.*;
|
import mindustry.ai.formations.*;
|
||||||
import mindustry.ai.types.*;
|
import mindustry.ai.types.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
@@ -29,7 +30,7 @@ abstract class CommanderComp implements Entityc, Posc{
|
|||||||
transient float minFormationSpeed;
|
transient float minFormationSpeed;
|
||||||
|
|
||||||
public void update(){
|
public void update(){
|
||||||
if(controlling.isEmpty()){
|
if(controlling.isEmpty() && !Vars.net.client()){
|
||||||
formation = null;
|
formation = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,16 +78,16 @@ abstract class MechComp implements Posc, Flyingc, Hitboxc, Unitc, Mechc, Elevati
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void moveAt(Vec2 vector, float acceleration){
|
public void moveAt(Vec2 vector, float acceleration){
|
||||||
|
//mark walking state when moving in a controlled manner
|
||||||
if(!vector.isZero()){
|
if(!vector.isZero()){
|
||||||
//mark walking state when moving in a controlled manner
|
|
||||||
walked = true;
|
walked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void approach(Vec2 vector){
|
public void approach(Vec2 vector){
|
||||||
if(!vector.isZero(0.09f)){
|
//mark walking state when moving in a controlled manner
|
||||||
//mark walking state when moving in a controlled manner
|
if(!vector.isZero(0.001f)){
|
||||||
walked = true;
|
walked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,8 +110,12 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
|
|||||||
unit.aim(mouseX, mouseY);
|
unit.aim(mouseX, mouseY);
|
||||||
//this is only necessary when the thing being controlled isn't synced
|
//this is only necessary when the thing being controlled isn't synced
|
||||||
unit.controlWeapons(shooting, shooting);
|
unit.controlWeapons(shooting, shooting);
|
||||||
|
//save previous formation to prevent reset
|
||||||
|
var formation = unit.formation;
|
||||||
//extra precaution, necessary for non-synced things
|
//extra precaution, necessary for non-synced things
|
||||||
unit.controller(this);
|
unit.controller(this);
|
||||||
|
//keep previous formation
|
||||||
|
unit.formation = formation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -130,7 +134,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
|
|||||||
//update some basic state to sync things
|
//update some basic state to sync things
|
||||||
if(unit.type.canBoost){
|
if(unit.type.canBoost){
|
||||||
Tile tile = unit.tileOn();
|
Tile tile = unit.tileOn();
|
||||||
unit.elevation = Mathf.approachDelta(unit.elevation, (tile != null && tile.solid()) || boosting ? 1f : 0f, 0.08f);
|
unit.elevation = Mathf.approachDelta(unit.elevation, (tile != null && tile.solid()) || boosting ? 1f : 0f, unit.type.riseSpeed);
|
||||||
}
|
}
|
||||||
}else if((core = bestCore()) != null){
|
}else if((core = bestCore()) != null){
|
||||||
//have a small delay before death to prevent the camera from jumping around too quickly
|
//have a small delay before death to prevent the camera from jumping around too quickly
|
||||||
@@ -219,7 +223,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
|
|||||||
con.kick(reason);
|
con.kick(reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
void kick(String reason, int duration){
|
void kick(String reason, long duration){
|
||||||
con.kick(reason, duration);
|
con.kick(reason, duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ abstract class StatusComp implements Posc, Flyingc{
|
|||||||
private Seq<StatusEntry> statuses = new Seq<>();
|
private Seq<StatusEntry> statuses = new Seq<>();
|
||||||
private transient Bits applied = new Bits(content.getBy(ContentType.status).size);
|
private transient Bits applied = new Bits(content.getBy(ContentType.status).size);
|
||||||
|
|
||||||
@ReadOnly transient float speedMultiplier = 1, damageMultiplier = 1, healthMultiplier = 1, reloadMultiplier = 1;
|
@ReadOnly transient float speedMultiplier = 1, damageMultiplier = 1, healthMultiplier = 1, reloadMultiplier = 1, buildSpeedMultiplier = 1, dragMultiplier = 1;
|
||||||
|
@ReadOnly transient boolean disarmed = false;
|
||||||
|
|
||||||
@Import UnitType type;
|
@Import UnitType type;
|
||||||
|
|
||||||
@@ -32,6 +33,11 @@ abstract class StatusComp implements Posc, Flyingc{
|
|||||||
void apply(StatusEffect effect, float duration){
|
void apply(StatusEffect effect, float duration){
|
||||||
if(effect == StatusEffects.none || effect == null || isImmune(effect)) return; //don't apply empty or immune effects
|
if(effect == StatusEffects.none || effect == null || isImmune(effect)) return; //don't apply empty or immune effects
|
||||||
|
|
||||||
|
//unlock status effects regardless of whether they were applied to friendly units
|
||||||
|
if(state.isCampaign()){
|
||||||
|
effect.unlock();
|
||||||
|
}
|
||||||
|
|
||||||
if(statuses.size > 0){
|
if(statuses.size > 0){
|
||||||
//check for opposite effects
|
//check for opposite effects
|
||||||
for(int i = 0; i < statuses.size; i ++){
|
for(int i = 0; i < statuses.size; i ++){
|
||||||
@@ -110,7 +116,8 @@ abstract class StatusComp implements Posc, Flyingc{
|
|||||||
}
|
}
|
||||||
|
|
||||||
applied.clear();
|
applied.clear();
|
||||||
speedMultiplier = damageMultiplier = healthMultiplier = reloadMultiplier = 1f;
|
speedMultiplier = damageMultiplier = healthMultiplier = reloadMultiplier = buildSpeedMultiplier = dragMultiplier = 1f;
|
||||||
|
disarmed = false;
|
||||||
|
|
||||||
if(statuses.isEmpty()) return;
|
if(statuses.isEmpty()) return;
|
||||||
|
|
||||||
@@ -132,6 +139,11 @@ abstract class StatusComp implements Posc, Flyingc{
|
|||||||
healthMultiplier *= entry.effect.healthMultiplier;
|
healthMultiplier *= entry.effect.healthMultiplier;
|
||||||
damageMultiplier *= entry.effect.damageMultiplier;
|
damageMultiplier *= entry.effect.damageMultiplier;
|
||||||
reloadMultiplier *= entry.effect.reloadMultiplier;
|
reloadMultiplier *= entry.effect.reloadMultiplier;
|
||||||
|
buildSpeedMultiplier *= entry.effect.buildSpeedMultiplier;
|
||||||
|
dragMultiplier *= entry.effect.dragMultiplier;
|
||||||
|
|
||||||
|
disarmed |= entry.effect.disarm;
|
||||||
|
|
||||||
entry.effect.update(self(), entry.time);
|
entry.effect.update(self(), entry.time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,12 +28,13 @@ import mindustry.world.blocks.environment.*;
|
|||||||
import mindustry.world.blocks.payloads.*;
|
import mindustry.world.blocks.payloads.*;
|
||||||
|
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
import static mindustry.logic.GlobalConstants.*;
|
||||||
|
|
||||||
@Component(base = true)
|
@Component(base = true)
|
||||||
abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, Itemsc, Rotc, Unitc, Weaponsc, Drawc, Boundedc, Syncc, Shieldc, Commanderc, Displayable, Senseable, Ranged, Minerc, Builderc{
|
abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, Itemsc, Rotc, Unitc, Weaponsc, Drawc, Boundedc, Syncc, Shieldc, Commanderc, Displayable, Senseable, Ranged, Minerc, Builderc{
|
||||||
|
|
||||||
@Import boolean hovering, dead;
|
@Import boolean hovering, dead, disarmed;
|
||||||
@Import float x, y, rotation, elevation, maxHealth, drag, armor, hitSize, health, ammo, minFormationSpeed;
|
@Import float x, y, rotation, elevation, maxHealth, drag, armor, hitSize, health, ammo, minFormationSpeed, dragMultiplier;
|
||||||
@Import Team team;
|
@Import Team team;
|
||||||
@Import int id;
|
@Import int id;
|
||||||
@Import @Nullable Tile mineTile;
|
@Import @Nullable Tile mineTile;
|
||||||
@@ -128,8 +129,10 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
case ammoCapacity -> type.ammoCapacity;
|
case ammoCapacity -> type.ammoCapacity;
|
||||||
case x -> World.conv(x);
|
case x -> World.conv(x);
|
||||||
case y -> World.conv(y);
|
case y -> World.conv(y);
|
||||||
|
case dead -> dead || !isAdded() ? 1 : 0;
|
||||||
case team -> team.id;
|
case team -> team.id;
|
||||||
case shooting -> isShooting() ? 1 : 0;
|
case shooting -> isShooting() ? 1 : 0;
|
||||||
|
case boosting -> type.canBoost && isFlying() ? 1 : 0;
|
||||||
case range -> range() / tilesize;
|
case range -> range() / tilesize;
|
||||||
case shootX -> World.conv(aimX());
|
case shootX -> World.conv(aimX());
|
||||||
case shootY -> World.conv(aimY());
|
case shootY -> World.conv(aimY());
|
||||||
@@ -137,10 +140,15 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
case mineX -> mining() ? mineTile.x : -1;
|
case mineX -> mining() ? mineTile.x : -1;
|
||||||
case mineY -> mining() ? mineTile.y : -1;
|
case mineY -> mining() ? mineTile.y : -1;
|
||||||
case flag -> flag;
|
case flag -> flag;
|
||||||
case controlled -> controller instanceof LogicAI || controller instanceof Player ? 1 : 0;
|
case controlled -> !isValid() ? 0 :
|
||||||
case commanded -> controller instanceof FormationAI ? 1 : 0;
|
controller instanceof LogicAI ? ctrlProcessor :
|
||||||
|
controller instanceof Player ? ctrlPlayer :
|
||||||
|
controller instanceof FormationAI ? ctrlFormation :
|
||||||
|
0;
|
||||||
|
case commanded -> controller instanceof FormationAI && isValid() ? 1 : 0;
|
||||||
case payloadCount -> self() instanceof Payloadc pay ? pay.payloads().size : 0;
|
case payloadCount -> self() instanceof Payloadc pay ? pay.payloads().size : 0;
|
||||||
default -> 0;
|
case size -> hitSize / tilesize;
|
||||||
|
default -> Float.NaN;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,19 +158,19 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
case type -> type;
|
case type -> type;
|
||||||
case name -> controller instanceof Player p ? p.name : null;
|
case name -> controller instanceof Player p ? p.name : null;
|
||||||
case firstItem -> stack().amount == 0 ? null : item();
|
case firstItem -> stack().amount == 0 ? null : item();
|
||||||
|
case controller -> !isValid() ? null : controller instanceof LogicAI log ? log.controller : controller instanceof FormationAI form ? form.leader : this;
|
||||||
case payloadType -> self() instanceof Payloadc pay ?
|
case payloadType -> self() instanceof Payloadc pay ?
|
||||||
(pay.payloads().isEmpty() ? null :
|
(pay.payloads().isEmpty() ? null :
|
||||||
pay.payloads().peek() instanceof UnitPayload p1 ? p1.unit.type :
|
pay.payloads().peek() instanceof UnitPayload p1 ? p1.unit.type :
|
||||||
pay.payloads().peek() instanceof BuildPayload p2 ? p2.block() : null) : null;
|
pay.payloads().peek() instanceof BuildPayload p2 ? p2.block() : null) : null;
|
||||||
default -> noSensed;
|
default -> noSensed;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double sense(Content content){
|
public double sense(Content content){
|
||||||
if(content == stack().item) return stack().amount;
|
if(content == stack().item) return stack().amount;
|
||||||
return 0;
|
return Float.NaN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -175,7 +183,11 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
@Replace
|
@Replace
|
||||||
public boolean canShoot(){
|
public boolean canShoot(){
|
||||||
//cannot shoot while boosting
|
//cannot shoot while boosting
|
||||||
return !(type.canBoost && isFlying());
|
return !disarmed && !(type.canBoost && isFlying());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCounted(){
|
||||||
|
return type.isCounted;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -317,7 +329,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
drag = type.drag * (isGrounded() ? (floorOn().dragMultiplier) : 1f);
|
drag = type.drag * (isGrounded() ? (floorOn().dragMultiplier) : 1f) * dragMultiplier;
|
||||||
|
|
||||||
//apply knockback based on spawns
|
//apply knockback based on spawns
|
||||||
if(team != state.rules.waveTeam && state.hasSpawns() && (!net.client() || isLocal())){
|
if(team != state.rules.waveTeam && state.hasSpawns() && (!net.client() || isLocal())){
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import static mindustry.Vars.*;
|
|||||||
@Component
|
@Component
|
||||||
abstract class WeaponsComp implements Teamc, Posc, Rotc, Velc, Statusc{
|
abstract class WeaponsComp implements Teamc, Posc, Rotc, Velc, Statusc{
|
||||||
@Import float x, y, rotation, reloadMultiplier;
|
@Import float x, y, rotation, reloadMultiplier;
|
||||||
|
@Import boolean disarmed;
|
||||||
@Import Vec2 vel;
|
@Import Vec2 vel;
|
||||||
@Import UnitType type;
|
@Import UnitType type;
|
||||||
|
|
||||||
@@ -81,7 +82,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc, Velc, Statusc{
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean canShoot(){
|
boolean canShoot(){
|
||||||
return true;
|
return !disarmed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ public class AIController implements UnitController{
|
|||||||
|
|
||||||
if(tile == targetTile || (costType == Pathfinder.costNaval && !targetTile.floor().isLiquid)) return;
|
if(tile == targetTile || (costType == Pathfinder.costNaval && !targetTile.floor().isLiquid)) return;
|
||||||
|
|
||||||
unit.moveAt(vec.trns(unit.angleTo(targetTile), unit.speed()));
|
unit.moveAt(vec.trns(unit.angleTo(targetTile.worldx(), targetTile.worldy()), unit.speed()));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void updateWeapons(){
|
protected void updateWeapons(){
|
||||||
@@ -167,7 +167,7 @@ public class AIController implements UnitController{
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected boolean retarget(){
|
protected boolean retarget(){
|
||||||
return timer.get(timerTarget, 40);
|
return timer.get(timerTarget, target == null ? 40 : 90);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Teamc findTarget(float x, float y, float range, boolean air, boolean ground){
|
protected Teamc findTarget(float x, float y, float range, boolean air, boolean ground){
|
||||||
|
|||||||
@@ -62,6 +62,10 @@ public class BuildPlan implements Position{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean placeable(Team team){
|
||||||
|
return Build.validPlace(block, team, x, y, rotation);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isRotation(Team team){
|
public boolean isRotation(Team team){
|
||||||
if(breaking) return false;
|
if(breaking) return false;
|
||||||
Tile tile = tile();
|
Tile tile = tile();
|
||||||
|
|||||||
@@ -383,6 +383,15 @@ public class EventType{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Called when a connection is established to a client. */
|
||||||
|
public static class ConnectionEvent{
|
||||||
|
public final NetConnection connection;
|
||||||
|
|
||||||
|
public ConnectionEvent(NetConnection connection){
|
||||||
|
this.connection = connection;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Called after connecting; when a player receives world data and is ready to play.*/
|
/** Called after connecting; when a player receives world data and is ready to play.*/
|
||||||
public static class PlayerJoin{
|
public static class PlayerJoin{
|
||||||
public final Player player;
|
public final Player player;
|
||||||
@@ -410,18 +419,24 @@ public class EventType{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class PlayerBanEvent{
|
public static class PlayerBanEvent{
|
||||||
|
@Nullable
|
||||||
public final Player player;
|
public final Player player;
|
||||||
|
public final String uuid;
|
||||||
|
|
||||||
public PlayerBanEvent(Player player){
|
public PlayerBanEvent(Player player, String uuid){
|
||||||
this.player = player;
|
this.player = player;
|
||||||
|
this.uuid = uuid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PlayerUnbanEvent{
|
public static class PlayerUnbanEvent{
|
||||||
|
@Nullable
|
||||||
public final Player player;
|
public final Player player;
|
||||||
|
public final String uuid;
|
||||||
|
|
||||||
public PlayerUnbanEvent(Player player){
|
public PlayerUnbanEvent(Player player, String uuid){
|
||||||
this.player = player;
|
this.player = player;
|
||||||
|
this.uuid = uuid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ public class Rules{
|
|||||||
public float unitBuildSpeedMultiplier = 1f;
|
public float unitBuildSpeedMultiplier = 1f;
|
||||||
/** How much damage any other units deal. */
|
/** How much damage any other units deal. */
|
||||||
public float unitDamageMultiplier = 1f;
|
public float unitDamageMultiplier = 1f;
|
||||||
|
/** Whether to allow units to build with logic. */
|
||||||
|
public boolean logicUnitBuild = true;
|
||||||
/** How much health blocks start with. */
|
/** How much health blocks start with. */
|
||||||
public float blockHealthMultiplier = 1f;
|
public float blockHealthMultiplier = 1f;
|
||||||
/** How much damage blocks (turrets) deal. */
|
/** How much damage blocks (turrets) deal. */
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import mindustry.input.Placement.*;
|
|||||||
import mindustry.io.*;
|
import mindustry.io.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
import mindustry.world.blocks.*;
|
import mindustry.world.blocks.*;
|
||||||
|
import mindustry.world.blocks.ConstructBlock.*;
|
||||||
import mindustry.world.blocks.distribution.*;
|
import mindustry.world.blocks.distribution.*;
|
||||||
import mindustry.world.blocks.legacy.*;
|
import mindustry.world.blocks.legacy.*;
|
||||||
import mindustry.world.blocks.power.*;
|
import mindustry.world.blocks.power.*;
|
||||||
@@ -62,15 +63,6 @@ public class Schematics implements Loadable{
|
|||||||
private long lastClearTime;
|
private long lastClearTime;
|
||||||
|
|
||||||
public Schematics(){
|
public Schematics(){
|
||||||
Events.on(DisposeEvent.class, e -> {
|
|
||||||
previews.each((schem, m) -> m.dispose());
|
|
||||||
previews.clear();
|
|
||||||
shadowBuffer.dispose();
|
|
||||||
if(errorTexture != null){
|
|
||||||
errorTexture.dispose();
|
|
||||||
errorTexture = null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Events.on(ClientLoadEvent.class, event -> {
|
Events.on(ClientLoadEvent.class, event -> {
|
||||||
errorTexture = new Texture("sprites/error.png");
|
errorTexture = new Texture("sprites/error.png");
|
||||||
@@ -357,10 +349,11 @@ public class Schematics implements Loadable{
|
|||||||
for(int cx = x; cx <= x2; cx++){
|
for(int cx = x; cx <= x2; cx++){
|
||||||
for(int cy = y; cy <= y2; cy++){
|
for(int cy = y; cy <= y2; cy++){
|
||||||
Building linked = world.build(cx, cy);
|
Building linked = world.build(cx, cy);
|
||||||
|
Block realBlock = linked == null ? null : linked instanceof ConstructBuild cons ? cons.cblock : linked.block;
|
||||||
|
|
||||||
if(linked != null && (linked.block.isVisible() || linked.block() instanceof CoreBlock) && !(linked.block instanceof ConstructBlock)){
|
if(linked != null && (realBlock.isVisible() || realBlock instanceof CoreBlock)){
|
||||||
int top = linked.block.size/2;
|
int top = realBlock.size/2;
|
||||||
int bot = linked.block.size % 2 == 1 ? -linked.block.size/2 : -(linked.block.size - 1)/2;
|
int bot = realBlock.size % 2 == 1 ? -realBlock.size/2 : -(realBlock.size - 1)/2;
|
||||||
minx = Math.min(linked.tileX() + bot, minx);
|
minx = Math.min(linked.tileX() + bot, minx);
|
||||||
miny = Math.min(linked.tileY() + bot, miny);
|
miny = Math.min(linked.tileY() + bot, miny);
|
||||||
maxx = Math.max(linked.tileX() + top, maxx);
|
maxx = Math.max(linked.tileX() + top, maxx);
|
||||||
@@ -385,12 +378,13 @@ public class Schematics implements Loadable{
|
|||||||
for(int cx = ox; cx <= ox2; cx++){
|
for(int cx = ox; cx <= ox2; cx++){
|
||||||
for(int cy = oy; cy <= oy2; cy++){
|
for(int cy = oy; cy <= oy2; cy++){
|
||||||
Building tile = world.build(cx, cy);
|
Building tile = world.build(cx, cy);
|
||||||
|
Block realBlock = tile == null ? null : tile instanceof ConstructBuild cons ? cons.cblock : tile.block;
|
||||||
|
|
||||||
if(tile != null && !counted.contains(tile.pos()) && !(tile.block instanceof ConstructBlock)
|
if(tile != null && !counted.contains(tile.pos())
|
||||||
&& (tile.block.isVisible() || tile.block instanceof CoreBlock)){
|
&& (realBlock.isVisible() || realBlock instanceof CoreBlock)){
|
||||||
Object config = tile.config();
|
Object config = tile instanceof ConstructBuild cons ? cons.lastConfig : tile.config();
|
||||||
|
|
||||||
tiles.add(new Stile(tile.block, tile.tileX() + offsetX, tile.tileY() + offsetY, config, (byte)tile.rotation));
|
tiles.add(new Stile(realBlock, tile.tileX() + offsetX, tile.tileY() + offsetY, config, (byte)tile.rotation));
|
||||||
counted.add(tile.pos());
|
counted.add(tile.pos());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import mindustry.world.blocks.power.*;
|
|||||||
import static arc.Core.*;
|
import static arc.Core.*;
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class BlockRenderer implements Disposable{
|
public class BlockRenderer{
|
||||||
public static final int crackRegions = 8, maxCrackSize = 9;
|
public static final int crackRegions = 8, maxCrackSize = 9;
|
||||||
|
|
||||||
private static final int initialRequests = 32 * 32;
|
private static final int initialRequests = 32 * 32;
|
||||||
@@ -300,11 +300,4 @@ public class BlockRenderer implements Disposable{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void dispose(){
|
|
||||||
shadows.dispose();
|
|
||||||
dark.dispose();
|
|
||||||
shadows = dark = null;
|
|
||||||
floor.dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||