Compare commits
122 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 | ||
|
|
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.
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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") ?
|
||||||
|
|||||||
17
build.gradle
@@ -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: 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 |
@@ -620,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
|
||||||
@@ -656,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
|
||||||
@@ -717,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
|
||||||
@@ -752,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
|
||||||
|
|
||||||
@@ -924,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
|
||||||
@@ -992,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
|
||||||
|
|||||||
1685
core/assets/bundles/bundle_bg.properties
Normal file
@@ -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.
|
||||||
@@ -619,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
|
||||||
@@ -655,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
|
||||||
@@ -716,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
|
||||||
@@ -752,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
|
||||||
|
|
||||||
@@ -923,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
|
||||||
@@ -991,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
|
||||||
@@ -1459,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.
|
||||||
|
|||||||
@@ -7,23 +7,23 @@ link.reddit.description = Subreddit de Mindustry
|
|||||||
link.github.description = Code source du jeu
|
link.github.description = Code source du jeu
|
||||||
link.changelog.description = Liste des mises à jour
|
link.changelog.description = Liste des mises à jour
|
||||||
link.dev-builds.description = Versions expérimentales du jeu
|
link.dev-builds.description = Versions expérimentales du jeu
|
||||||
link.trello.description = Trello officiel pour les nouvelles fonctionalités planifiées
|
link.trello.description = Trello officiel pour les nouvelles fonctionnalités planifiées
|
||||||
link.itch.io.description = Page itch.io avec les différentes versions du jeu.
|
link.itch.io.description = Page itch.io avec les différentes versions du jeu.
|
||||||
link.google-play.description = Page Google Play du jeu
|
link.google-play.description = Page Google Play du jeu
|
||||||
link.f-droid.description = Page F-Droid du jeu
|
link.f-droid.description = Page F-Droid du jeu
|
||||||
link.wiki.description = Wiki officiel de Mindustry
|
link.wiki.description = Wiki officiel de Mindustry
|
||||||
link.suggestions.description = Suggérez de nouvelles fonctionallités
|
link.suggestions.description = Suggérez de nouvelles fonctionnalités
|
||||||
link.bug.description = Vous avez trouvé un bug ? Reportez le ici
|
link.bug.description = Vous avez trouvé un bug ? Reportez le ici
|
||||||
linkfail = L'ouverture du lien a échoué!\nL'URL a été copiée dans votre presse-papier.
|
linkfail = L'ouverture du lien a échouée ! \nL'URL a été copiée dans votre presse-papier.
|
||||||
screenshot = Capture d'écran sauvegardée dans {0}
|
screenshot = Capture d'écran sauvegardée dans {0}
|
||||||
screenshot.invalid = Carte trop grande, potentiellement pas assez de mémoire pour la capture d'écran.
|
screenshot.invalid = Carte trop grande, potentiellement pas assez de mémoire pour la capture d'écran.
|
||||||
gameover = Partie terminée
|
gameover = Partie terminée
|
||||||
gameover.disconnect = Déconnecté
|
gameover.disconnect = Déconnecter
|
||||||
gameover.pvp = L'équipe[accent] {0}[] a gagnée!
|
gameover.pvp = L'équipe[accent] {0}[] a gagné !
|
||||||
gameover.waiting = [accent]Attente de la nouvelle carte...
|
gameover.waiting = [accent]Attente de la nouvelle carte...
|
||||||
highscore = [accent]Nouveau meilleur score !
|
highscore = [accent]Nouveau meilleur score !
|
||||||
copied = Copié.
|
copied = Copié.
|
||||||
indev.notready = Cette partie du jeu n'est pas encore prête
|
indev.notready = Cette partie du jeu n'est pas encore prête.
|
||||||
indev.campaign = [accent]Félicitations! Vous avez atteint la fin de la campagne ![]\n\nC'est ici que le contenu actuel s'arrête. Le voyage interplanétaire sera ajouté dans de futures mises à jour.
|
indev.campaign = [accent]Félicitations! Vous avez atteint la fin de la campagne ![]\n\nC'est ici que le contenu actuel s'arrête. Le voyage interplanétaire sera ajouté dans de futures mises à jour.
|
||||||
|
|
||||||
load.sound = Son
|
load.sound = Son
|
||||||
@@ -35,16 +35,16 @@ load.mod = Mods
|
|||||||
load.scripts = Scripts
|
load.scripts = Scripts
|
||||||
|
|
||||||
be.update = Une nouvelle version expérimentale est disponible:
|
be.update = Une nouvelle version expérimentale est disponible:
|
||||||
be.update.confirm = Télécharger et Redémarrer le jeu maintenenant?
|
be.update.confirm = Télécharger et Redémarrer le jeu maintenant ?
|
||||||
be.updating = Mise à jour en cours...
|
be.updating = Mise à jour en cours...
|
||||||
be.ignore = Ignorer
|
be.ignore = Ignorer
|
||||||
be.noupdates = Aucune mise à jour trouvée.
|
be.noupdates = Aucune mise à jour trouvée.
|
||||||
be.check = Chercher des mises à jour
|
be.check = Chercher des mises à jour.
|
||||||
|
|
||||||
mods.browser = Navigateur de Mods
|
mods.browser = Navigateur de Mods
|
||||||
mods.browser.selected = Mod sélectionné
|
mods.browser.selected = Mod sélectionné
|
||||||
mods.browser.add = Installer
|
mods.browser.add = Installer
|
||||||
mods.browser.reinstall = Reinstaller
|
mods.browser.reinstall = Réinstaller
|
||||||
mods.github.open = Voir sur Github
|
mods.github.open = Voir sur Github
|
||||||
mods.browser.sortdate = Classer par date
|
mods.browser.sortdate = Classer par date
|
||||||
mods.browser.sortstars = Classer par étoiles
|
mods.browser.sortstars = Classer par étoiles
|
||||||
@@ -63,12 +63,12 @@ schematic.copy.import = Importer depuis presse-papier
|
|||||||
schematic.shareworkshop = Partager sur le Steam Workshop
|
schematic.shareworkshop = Partager sur le Steam Workshop
|
||||||
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Retourner le schéma
|
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Retourner le schéma
|
||||||
schematic.saved = Schéma enregistré.
|
schematic.saved = Schéma enregistré.
|
||||||
schematic.delete.confirm = Ce schéma sera supprimé définitivement.
|
schematic.delete.confirm = Ce schéma sera supprimé définitivement !
|
||||||
schematic.rename = Renommer le Schéma
|
schematic.rename = Renommer le Schéma
|
||||||
schematic.info = {0}x{1}, {2} blocs
|
schematic.info = {0}x{1}, {2} blocs
|
||||||
schematic.disabled = [scarlet]Schémas désactivés ![]\nVous n'êtes pas autorisés à utiliser des schémas sur cette [accent]carte[] ou dans ce [accent]serveur.
|
schematic.disabled = [scarlet]Schémas désactivés ![]\nVous n'êtes pas autorisés à utiliser des schémas sur cette [accent]carte[] ou dans ce [accent]serveur.
|
||||||
|
|
||||||
stats = Stats
|
stats = Statistiques
|
||||||
stat.wave = Vagues vaincues : [accent] {0}
|
stat.wave = Vagues vaincues : [accent] {0}
|
||||||
stat.enemiesDestroyed = Ennemis détruits : [accent] {0}
|
stat.enemiesDestroyed = Ennemis détruits : [accent] {0}
|
||||||
stat.built = Bâtiments construits : [accent] {0}
|
stat.built = Bâtiments construits : [accent] {0}
|
||||||
@@ -113,7 +113,7 @@ committingchanges = Validation des modifications
|
|||||||
done = Fait
|
done = Fait
|
||||||
feature.unsupported = Votre appareil ne prend pas en charge cette fonctionnalité.
|
feature.unsupported = Votre appareil ne prend pas en charge cette fonctionnalité.
|
||||||
|
|
||||||
mods.alphainfo = Gardez à l'esprit que les mods sont en alpha et[scarlet] qu'ils peuvent être très buggés[].\nMerci de signaler les problèmes que vous rencontrez via le GitHub de Mindustry.
|
mods.initfailed = [red]⚠[] L'instance précédente de Mindustry n’a pas pu s’initialiser. Cela a probablement été causé par des mods..\n\nPour éviter une boucle de crash, [red]tous les mods ont été désactivés.[]\n\nPour désactiver cette fonctionnalité, désactivez-la dans [accent]Paramètres->Jeu->Désactiver les mods lors d'un crash au démarrage[].
|
||||||
mods = Mods
|
mods = Mods
|
||||||
mods.none = [lightgray]Aucun Mod trouvé !
|
mods.none = [lightgray]Aucun Mod trouvé !
|
||||||
mods.guide = Guide de Modding
|
mods.guide = Guide de Modding
|
||||||
@@ -126,13 +126,14 @@ mod.installed = [[Installé]
|
|||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Activé
|
mod.enabled = [lightgray]Activé
|
||||||
mod.disabled = [scarlet]Désactivé
|
mod.disabled = [scarlet]Désactivé
|
||||||
|
mod.multiplayer.compatible = [gray]Compatible en Multijoueur
|
||||||
mod.disable = Désactiver
|
mod.disable = Désactiver
|
||||||
mod.content = Contenu :
|
mod.content = Contenu :
|
||||||
mod.delete.error = Impossible de supprimer le mod. Le fichier est probablement en cours d'utilisation.
|
mod.delete.error = Impossible de supprimer le mod. Le fichier est probablement en cours d'utilisation.
|
||||||
mod.requiresversion = [scarlet]Version minimale du jeu requise : [accent]{0}
|
mod.requiresversion = [scarlet]Version minimale du jeu requise : [accent]{0}
|
||||||
mod.outdated = [scarlet]Non compatible avec la V6 (no minGameVersion: 105)
|
mod.outdated = [scarlet]Non compatible avec la V6 (no minGameVersion: 105)
|
||||||
mod.missingdependencies = [scarlet]Dépendances manquantes : {0}
|
mod.missingdependencies = [scarlet]Dépendances manquantes : {0}
|
||||||
mod.erroredcontent = [scarlet]Erreurs de contenu
|
mod.erroredcontent = [scarlet]Erreurs de contenu !
|
||||||
mod.errors = Des erreurs se sont produites lors du chargement du contenu.
|
mod.errors = Des erreurs se sont produites lors du chargement du contenu.
|
||||||
mod.noerrorplay = [scarlet]Vous avez des mods avec des erreurs.[] Désactivez les mods concernés ou corrigez les erreurs avant de jouer.
|
mod.noerrorplay = [scarlet]Vous avez des mods avec des erreurs.[] Désactivez les mods concernés ou corrigez les erreurs avant de jouer.
|
||||||
mod.nowdisabled = [scarlet]Le mod '{0}' a des dépendances manquantes: [accent]{1}\n[lightgray]Ces mods doivent d'abord être téléchargés.\nCe mod sera automatiquement désactivé.
|
mod.nowdisabled = [scarlet]Le mod '{0}' a des dépendances manquantes: [accent]{1}\n[lightgray]Ces mods doivent d'abord être téléchargés.\nCe mod sera automatiquement désactivé.
|
||||||
@@ -143,13 +144,13 @@ mod.import = Importer un mod
|
|||||||
mod.import.file = Importer un fichier
|
mod.import.file = Importer un fichier
|
||||||
mod.import.github = Importer un mod depuis GitHub
|
mod.import.github = Importer un mod depuis GitHub
|
||||||
mod.jarwarn = [scarlet]Les mods JAR sont par nature peu sûrs.[]\nFaites en sorte d'importer ce mod depuis une source digne de confiance.
|
mod.jarwarn = [scarlet]Les mods JAR sont par nature peu sûrs.[]\nFaites en sorte d'importer ce mod depuis une source digne de confiance.
|
||||||
mod.item.remove = Cet objet fait partie du mod[accent] '{0}'[]. Pour le supprimer, désinstallez le mod en question.
|
mod.item.remove = Cet objet fait partie du mod[accent] '{0}'[]. Pour le supprimer, désinstaller le mod en question.
|
||||||
mod.remove.confirm = Ce mod sera supprimé.
|
mod.remove.confirm = Ce mod sera supprimé.
|
||||||
mod.author = [lightgray]Auteur : [] {0}
|
mod.author = [lightgray]Auteur : [] {0}
|
||||||
mod.missing = Cette sauvegarde contient des mods que vous avez récemment mis à jour ou que vous avez désinstallés. Votre sauvegarde risque d'être corrompue. Êtes-vous sûr de vouloir l'importer ?\n[lightgray]Mods:\n{0}
|
mod.missing = Cette sauvegarde contient des mods que vous avez récemment mis à jour ou que vous avez désinstallés. Votre sauvegarde risque d'être corrompue. Êtes-vous sûr de vouloir l'importer ?\n[lightgray]Mods:\n{0}
|
||||||
mod.preview.missing = Avant de publier ce mod dans le Steam Workshop, vous devez ajouter une image servant d'aperçu.\nPlacez une image nommée [accent]preview.png[] dans le dossier du mod et réessayez.
|
mod.preview.missing = Avant de publier ce mod dans le Steam Workshop, vous devez ajouter une image servant d'aperçu.\nPlacez une image nommée [accent]preview.png[] dans le dossier du mod et réessayez.
|
||||||
mod.folder.missing = Seuls les mods sous forme de dossiers peuvent être publiés sur le Steam Workshop.\nPour convertir n'importe quel mod en un dossier, décompressez-le tout simplement dans un dossier et supprimez l'ancien zip, puis redémarrez votre jeu ou rechargez vos mods.
|
mod.folder.missing = Seuls les mods sous forme de dossiers peuvent être publiés sur le Steam Workshop.\nPour convertir n'importe quel mod en un dossier, décompressez-le tout simplement dans un dossier et supprimez l'ancien zip, puis redémarrez votre jeu ou rechargez vos mods.
|
||||||
mod.scripts.disable = Votre appareil ne prend pas an charge les mods avec des scripts. Vous devez désactiver ces mods pour pouvoir jouer.
|
mod.scripts.disable = Votre appareil ne prend pas en charge les mods avec des scripts. Vous devez désactiver ces mods pour pouvoir jouer.
|
||||||
|
|
||||||
about.button = À propos
|
about.button = À propos
|
||||||
name = Nom :
|
name = Nom :
|
||||||
@@ -174,24 +175,24 @@ players.search = Recherche
|
|||||||
players.notfound = [gray]Aucun joueur trouvé
|
players.notfound = [gray]Aucun joueur trouvé
|
||||||
server.closing = [accent]Fermeture du serveur...
|
server.closing = [accent]Fermeture du serveur...
|
||||||
server.kicked.kick = Vous avez été expulsé du serveur !
|
server.kicked.kick = Vous avez été expulsé du serveur !
|
||||||
server.kicked.whitelist = Vous n'êtes pas sur liste blanche ici.
|
server.kicked.whitelist = Vous n'êtes pas sur liste blanche de ce serveur.
|
||||||
server.kicked.serverClose = Serveur fermé.
|
server.kicked.serverClose = Serveur fermé !
|
||||||
server.kicked.vote = Vous avez été expulsé suite à un vote. Au revoir.
|
server.kicked.vote = Vous avez été expulsé à la suite d'un vote. Au revoir !
|
||||||
server.kicked.clientOutdated = Client obsolète! Mettez votre jeu à jour!
|
server.kicked.clientOutdated = Client obsolète !\nMettez votre jeu à jour !
|
||||||
server.kicked.serverOutdated = Serveur obsolète! Demandez à l'hôte de le mettre à jour!
|
server.kicked.serverOutdated = Serveur obsolète !\nDemandez à l'hôte de le mettre à jour !
|
||||||
server.kicked.banned = Vous avez été banni de ce serveur.
|
server.kicked.banned = Vous avez été banni de ce serveur !
|
||||||
server.kicked.typeMismatch = Ce serveur n'est pas compatible avec votre version du jeu.
|
server.kicked.typeMismatch = Ce serveur n'est pas compatible avec votre version du jeu.
|
||||||
server.kicked.playerLimit = Ce serveur est complet. Attendez qu'une place se libère.
|
server.kicked.playerLimit = Ce serveur est complet. Attendez qu'une place se libère.
|
||||||
server.kicked.recentKick = Vous avez été expulsé récemment.\nAttendez avant de vous reconnecter.
|
server.kicked.recentKick = Vous avez été expulsé récemment.\nAttendez avant de vous reconnecter...
|
||||||
server.kicked.nameInUse = Il y a déjà quelqu'un avec\nce nom sur ce serveur.
|
server.kicked.nameInUse = Il y a déjà quelqu'un avec\nce nom sur ce serveur.
|
||||||
server.kicked.nameEmpty = Votre nom est invalide.
|
server.kicked.nameEmpty = Votre nom est invalide.
|
||||||
server.kicked.idInUse = Vous êtes déjà sur ce serveur! Se connecter avec deux comptes n'est pas permis!
|
server.kicked.idInUse = Vous êtes déjà sur ce serveur !\nSe connecter avec deux comptes n'est pas permis !
|
||||||
server.kicked.customClient = Ce serveur ne supporte pas les versions personnalisées (Custom builds). Téléchargez une version officielle.
|
server.kicked.customClient = Ce serveur ne supporte pas les versions personnalisées (Custom builds). Téléchargez une version officielle.
|
||||||
server.kicked.gameover = Partie terminée !
|
server.kicked.gameover = Partie terminée !
|
||||||
server.kicked.serverRestarting = Le serveur est en train de redémarrer.
|
server.kicked.serverRestarting = Le serveur est en train de redémarrer...
|
||||||
server.versions = Votre version:[accent] {0}[]\nVersion du serveur:[accent] {1}[]
|
server.versions = Votre version:[accent] {0}[]\nVersion du serveur:[accent] {1}[]
|
||||||
host.info = Le bouton [accent]héberger[] héberge un serveur sur le port [scarlet]6567[].\nN'importe qui sur le même [lightgray]réseau wifi ou local[] devrait pouvoir voir votre serveur dans sa liste de serveurs.\n\nSi vous voulez que les gens puissent se connecter de n'importe où grâce à l'IP, [accent]une ouverture des ports[] est requise.\n\n[lightgray]Note: Si quelqu'un éprouve des difficultés à se connecter à votre partie LAN, assurez-vous que vous avez autorisé Mindustry à accéder à votre réseau local dans les paramètres de votre pare-feu.
|
host.info = Le bouton [accent]héberger[] héberge un serveur sur le port [scarlet]6567[].\nN'importe qui sur le même [lightgray]réseau wifi ou local[] devrait pouvoir voir votre serveur dans sa liste de serveurs.\n\nSi vous voulez que les gens puissent se connecter de n'importe où grâce à l'IP, [accent]une ouverture des ports[] est requise.\n\n[lightgray]Note: Si quelqu'un éprouve des difficultés à se connecter à votre partie LAN, assurez-vous que vous avez autorisé Mindustry à accéder à votre réseau local dans les paramètres de votre pare-feu.
|
||||||
join.info = Ici, vous pouvez entrer l'[accent]IP d'un serveur[] pour vous y connecter, ou découvrir les serveurs sur votre [accent]réseau local[] ou les serveurs [accent]globaux[].\nLes parties multijoueur LAN et WAN sont toutes deux supportées.\n\n[lightgray]Note: Si vous voulez vous connecter à un serveur par IP, vous devrez demander l'IP à l'hébergeur. Celle-ci peut-être trouvée en recherchant "Mon IP" sur un moteur de recherche depuis son appareil.
|
join.info = Ici, vous pouvez entrer l'[accent]IP d'un serveur[] pour vous y connecter, ou découvrir les serveurs sur votre [accent]réseau local[] ou les serveurs [accent]globaux[].\nLes parties multijoueur LAN et WAN sont toutes deux supportées.\n\n[lightgray]Note: Si vous voulez vous connecter à un serveur par IP, vous devrez demander l'IP à l'hébergeur. Celle-ci peut-être trouvée en cherchant "Mon IP" sur un moteur de recherche depuis son appareil.
|
||||||
hostserver = Héberger une partie multijoueur
|
hostserver = Héberger une partie multijoueur
|
||||||
invitefriends = Inviter des Amis
|
invitefriends = Inviter des Amis
|
||||||
hostserver.mobile = Héberger\nune partie
|
hostserver.mobile = Héberger\nune partie
|
||||||
@@ -208,7 +209,7 @@ servers.local = Serveurs locaux
|
|||||||
servers.remote = Serveurs distants
|
servers.remote = Serveurs distants
|
||||||
servers.global = Serveurs communautaires
|
servers.global = Serveurs communautaires
|
||||||
|
|
||||||
servers.disclaimer = Les serveurs communautaires ne sont [accent]pas[] gérés, ni controllés par le développeur.\n\nCes serveurs peuvent contenir du contenu qui ne convient pas à tout les âges.
|
servers.disclaimer = Les serveurs communautaires ne sont [accent]pas[] gérés, ni contrôlés par le développeur.\n\nCes serveurs peuvent contenir du contenu qui ne convient pas à tous les âges.
|
||||||
servers.showhidden = Montrer les serveurs cachés
|
servers.showhidden = Montrer les serveurs cachés
|
||||||
server.shown = Visible
|
server.shown = Visible
|
||||||
server.hidden = Caché
|
server.hidden = Caché
|
||||||
@@ -219,6 +220,8 @@ trace.ip = IP: [accent]{0}
|
|||||||
trace.id = ID Unique : [accent]{0}
|
trace.id = ID Unique : [accent]{0}
|
||||||
trace.mobile = Client Mobile : [accent]{0}
|
trace.mobile = Client Mobile : [accent]{0}
|
||||||
trace.modclient = Client personnalisé : [accent]{0}
|
trace.modclient = Client personnalisé : [accent]{0}
|
||||||
|
trace.times.joined = Nombre de fois rejoint: [accent]{0}
|
||||||
|
trace.times.kicked = Nombre de kicks: [accent]{0}
|
||||||
invalidid = ID du client invalide ! Veuillez soumettre un rapport d'erreur.
|
invalidid = ID du client invalide ! Veuillez soumettre un rapport d'erreur.
|
||||||
server.bans = Bans
|
server.bans = Bans
|
||||||
server.bans.none = Aucun joueur banni trouvé !
|
server.bans.none = Aucun joueur banni trouvé !
|
||||||
@@ -240,7 +243,7 @@ confirmunadmin = Êtes-vous sûr de vouloir supprimer le statut d'administrateur
|
|||||||
joingame.title = Rejoindre une partie
|
joingame.title = Rejoindre une partie
|
||||||
joingame.ip = IP :
|
joingame.ip = IP :
|
||||||
disconnect = Déconnecté.
|
disconnect = Déconnecté.
|
||||||
disconnect.error = Un problème est survenu lors de la connection.
|
disconnect.error = Un problème est survenu lors de la connexion.
|
||||||
disconnect.closed = Connection fermée.
|
disconnect.closed = Connection fermée.
|
||||||
disconnect.timeout = Délai de connexion expiré.
|
disconnect.timeout = Délai de connexion expiré.
|
||||||
disconnect.data = Les données du monde n'ont pas pu être chargées !
|
disconnect.data = Les données du monde n'ont pas pu être chargées !
|
||||||
@@ -331,11 +334,11 @@ saveimage = Sauvegarder l'image
|
|||||||
unknown = Inconnu
|
unknown = Inconnu
|
||||||
custom = Personnalisé
|
custom = Personnalisé
|
||||||
builtin = Pré-fait
|
builtin = Pré-fait
|
||||||
map.delete.confirm = Voulez-vous vraiment supprimer cette carte? Il n'y aura pas de retour en arrière!
|
map.delete.confirm = Voulez-vous vraiment supprimer cette carte ?\nIl n'y aura pas de retour en arrière !
|
||||||
map.random = [accent]Carte aléatoire
|
map.random = [accent]Carte aléatoire
|
||||||
map.nospawn = Cette carte ne possède pas de base pour que le joueur puisse apparaître! Ajouter un [accent]Noyau orange[] sur cette carte dans l'éditeur.
|
map.nospawn = Cette carte ne possède pas de base pour que le joueur puisse apparaître !\nAjoutez un [accent]Noyau orange[] sur cette carte dans l'éditeur.
|
||||||
map.nospawn.pvp = Cette carte n'a pas de base ennemie pour qu'un joueur ennemi puisse y apparaître! Ajoutez au moins un Noyau[scarlet] non-orange[] dans l'éditeur.
|
map.nospawn.pvp = Cette carte n'a pas de base ennemie pour qu'un joueur ennemi puisse y apparaître !\nAjoutez au moins un Noyau[scarlet] non-orange[] dans l'éditeur.
|
||||||
map.nospawn.attack = Cette carte n'a aucune base ennemie à attaquer! Veuillez ajouter un Noyau[scarlet] rouge[] sur cette carte dans l'éditeur.
|
map.nospawn.attack = Cette carte n'a aucune base ennemie à attaquer !\nVeuillez ajouter [scarlet]un Noyau rouge[] sur cette carte dans l'éditeur.
|
||||||
map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide.
|
map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide.
|
||||||
workshop.update = Mettre à jour
|
workshop.update = Mettre à jour
|
||||||
workshop.error = Erreur lors de la récupération des détails du Steam Workshop: {0}
|
workshop.error = Erreur lors de la récupération des détails du Steam Workshop: {0}
|
||||||
@@ -409,9 +412,9 @@ editor.resize = Redimensionner
|
|||||||
editor.loadmap = Charger la carte
|
editor.loadmap = Charger la carte
|
||||||
editor.savemap = Sauvegarder la carte
|
editor.savemap = Sauvegarder la carte
|
||||||
editor.saved = Sauvegardé !
|
editor.saved = Sauvegardé !
|
||||||
editor.save.noname = Votre carte n'a pas de nom! Ajoutez un nom dans le menu 'Infos de la Carte'
|
editor.save.noname = Votre carte n'a pas de nom !\nAjoutez un nom dans le menu 'Infos de la Carte'.
|
||||||
editor.save.overwrite = Votre carte écrase une carte de base du jeu! Choisissez un nom différent dans le menu 'Infos de la Carte'.
|
editor.save.overwrite = Votre carte écrase une carte de base du jeu !\nChoisissez un nom différent dans le menu 'Infos de la Carte'.
|
||||||
editor.import.exists = [scarlet]Importation impossible :[] '{0}' est le nom d'une carte de base du jeu!
|
editor.import.exists = [scarlet]Importation impossible :[] '{0}' est le nom d'une carte par défaut du jeu !
|
||||||
editor.import = Importer
|
editor.import = Importer
|
||||||
editor.importmap = Importer une carte
|
editor.importmap = Importer une carte
|
||||||
editor.importmap.description = Importer une carte déjà existante
|
editor.importmap.description = Importer une carte déjà existante
|
||||||
@@ -430,29 +433,29 @@ editor.unsaved = [scarlet]Vous n'avez pas sauvegardé vos modifications![] Voule
|
|||||||
editor.resizemap = Redimensionner\nla carte
|
editor.resizemap = Redimensionner\nla carte
|
||||||
editor.mapname = Nom de la carte :
|
editor.mapname = Nom de la carte :
|
||||||
editor.overwrite = [accent]Attention !\nCeci écrase une carte existante.
|
editor.overwrite = [accent]Attention !\nCeci écrase une carte existante.
|
||||||
editor.overwrite.confirm = [scarlet]Attention![] Une carte avec ce nom existe déjà. Êtes-vous sûr de vouloir l'écraser?
|
editor.overwrite.confirm = [scarlet]Attention ![]\nUne carte avec ce nom existe déjà. Êtes-vous sûr de vouloir l'écraser ?
|
||||||
editor.exists = Une carte avec ce nom existe déjà.
|
editor.exists = Une carte avec ce nom existe déjà.
|
||||||
editor.selectmap = Sélectionnez une carte :
|
editor.selectmap = Sélectionnez une carte :
|
||||||
|
|
||||||
toolmode.replace = Remplacer
|
toolmode.replace = Remplacer
|
||||||
toolmode.replace.description = Dessine seulement sur les blocs solides.
|
toolmode.replace.description = Dessine seulement\nsur les blocs solides.
|
||||||
toolmode.replaceall = Tout Remplacer
|
toolmode.replaceall = Tout Remplacer
|
||||||
toolmode.replaceall.description = Remplace tous les blocs de la carte.
|
toolmode.replaceall.description = Remplace tous les blocs\nde la carte.
|
||||||
toolmode.orthogonal = Orthogonal
|
toolmode.orthogonal = Orthogonal
|
||||||
toolmode.orthogonal.description = Dessine seulement des lignes orthogonales.
|
toolmode.orthogonal.description = Dessine seulement\ndes lignes orthogonales.
|
||||||
toolmode.square = Carré
|
toolmode.square = Carré
|
||||||
toolmode.square.description = Pinceau carré.
|
toolmode.square.description = Pinceau carré.
|
||||||
toolmode.eraseores = Effacer les minerais
|
toolmode.eraseores = Effacer les minerais
|
||||||
toolmode.eraseores.description = Efface seulement les minerais.
|
toolmode.eraseores.description = Efface seulement\nles minerais.
|
||||||
toolmode.fillteams = Remplir les équipes
|
toolmode.fillteams = Remplir les équipes
|
||||||
toolmode.fillteams.description = Remplit les équipes au lieu des blocs.
|
toolmode.fillteams.description = Remplit les équipes\nau lieu des blocs.
|
||||||
toolmode.drawteams = Dessiner les équipes
|
toolmode.drawteams = Dessiner les équipes
|
||||||
toolmode.drawteams.description = Dessine les équipes au lieu de blocs.
|
toolmode.drawteams.description = Change les équipes\nau lieu de blocs.
|
||||||
|
|
||||||
filters.empty = [lightgray]Aucun filtre! Ajoutez-en un avec les boutons ci-dessous.
|
filters.empty = [lightgray]Aucun filtre !\nAjoutez-en un avec les boutons ci-dessous.
|
||||||
filter.distort = Déformation
|
filter.distort = Déformation
|
||||||
filter.noise = Bruit
|
filter.noise = Bruit
|
||||||
filter.enemyspawn = Zone d'apparition enemie
|
filter.enemyspawn = Zone d'apparition ennemie
|
||||||
filter.spawnpath = Chemin vers la zone d'apparition
|
filter.spawnpath = Chemin vers la zone d'apparition
|
||||||
filter.corespawn = Zone d'apparition du Noyau
|
filter.corespawn = Zone d'apparition du Noyau
|
||||||
filter.median = Médian
|
filter.median = Médian
|
||||||
@@ -472,7 +475,7 @@ filter.option.mag = Magnitude
|
|||||||
filter.option.threshold = Seuil
|
filter.option.threshold = Seuil
|
||||||
filter.option.circle-scale = Échelle circulaire
|
filter.option.circle-scale = Échelle circulaire
|
||||||
filter.option.octaves = Octaves
|
filter.option.octaves = Octaves
|
||||||
filter.option.falloff = Détachemment
|
filter.option.falloff = Détachement
|
||||||
filter.option.angle = Angle
|
filter.option.angle = Angle
|
||||||
filter.option.amount = Quantité
|
filter.option.amount = Quantité
|
||||||
filter.option.block = Bloc
|
filter.option.block = Bloc
|
||||||
@@ -549,7 +552,7 @@ weather.fog.name = Brouillard
|
|||||||
sectors.unexplored = [lightgray]Inexploré
|
sectors.unexplored = [lightgray]Inexploré
|
||||||
sectors.resources = Ressources :
|
sectors.resources = Ressources :
|
||||||
sectors.production = Production :
|
sectors.production = Production :
|
||||||
sectors.export = Exporté:
|
sectors.export = Exporter :
|
||||||
sectors.time = Temps de jeu :
|
sectors.time = Temps de jeu :
|
||||||
sectors.threat = Menace :
|
sectors.threat = Menace :
|
||||||
sectors.wave = Vague :
|
sectors.wave = Vague :
|
||||||
@@ -566,7 +569,7 @@ sectors.survives = [accent]Survécu à {0} vagues
|
|||||||
sectors.go = Aller
|
sectors.go = Aller
|
||||||
sector.curcapture = Secteur capturé
|
sector.curcapture = Secteur capturé
|
||||||
sector.curlost = Secteur perdu
|
sector.curlost = Secteur perdu
|
||||||
sector.missingresources = [scarlet]Ressources du Noyau insuffisantes
|
sector.missingresources = [scarlet]Ressources du Noyau insuffisantes !
|
||||||
sector.attacked = Secteur [accent]{0}[white] attaqué !
|
sector.attacked = Secteur [accent]{0}[white] attaqué !
|
||||||
sector.lost = Secteur [accent]{0}[white] perdu !
|
sector.lost = Secteur [accent]{0}[white] perdu !
|
||||||
#note: the missing space in the line below is intentional
|
#note: the missing space in the line below is intentional
|
||||||
@@ -601,22 +604,35 @@ sector.extractionOutpost.name = Extraction Outpost
|
|||||||
sector.planetaryTerminal.name = Planetary Launch Terminal
|
sector.planetaryTerminal.name = Planetary Launch Terminal
|
||||||
|
|
||||||
sector.groundZero.description = Un endroit optimal pour commencer. Avec une menace ennemie faible et le peu de ressources disponibles, rassemblez autant de cuivre et de plomb que possible pour continuer votre exploration.
|
sector.groundZero.description = Un endroit optimal pour commencer. Avec une menace ennemie faible et le peu de ressources disponibles, rassemblez autant de cuivre et de plomb que possible pour continuer votre exploration.
|
||||||
sector.frozenForest.description = Même ici, près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir indéfiniment.\n\nCommencez votre production d'énergie en construisant des générateurs à combustion et apprennez à utiliser les bâtiments de soin.
|
sector.frozenForest.description = Même ici, près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir indéfiniment.\n\nCommencez votre production d'énergie en construisant des générateurs à combustion et apprenez à utiliser les bâtiments de soin.
|
||||||
sector.saltFlats.description = À la périphérie du désert se trouvent les déserts de sel. Peu de ressources s'y trouvent.\n\nLà-bas, l'ennemi a construit un complexe de stockage de ressource. Détruisez leur Noyau et ne laissez rien debout.
|
sector.saltFlats.description = À la périphérie du désert se trouvent les déserts de sel. Peu de ressources s'y trouvent.\n\nLà-bas, l'ennemi a construit un complexe de stockage de ressource. Détruisez leur Noyau et ne laissez rien debout.
|
||||||
sector.craters.description = Ce cratère est une relique d'anciennes guerres. De l'eau s'est accumulée au fond. Prenez le contrôle de la zone.\nCollectez du Sable et faites fondre du Verre trempé. Pompez de l'eau pour refroidir vos tourelles et vos foreuses.
|
sector.craters.description = Ce cratère est une relique d'anciennes guerres. De l'eau s'est accumulée au fond. Prenez le contrôle de la zone.\nCollectez du Sable et faites fondre du Verre trempé. Pompez de l'eau pour refroidir vos tourelles et vos foreuses.
|
||||||
sector.ruinousShores.description = Au-delà des déchets, se trouve le littoral. Autrefois, cet endroit abritait un réseau de défense côtière, mais il n’en reste pas grand-chose. Seules quelques structures de défense basiques sont restées intactes, tout le reste a été réduit en ferraille.\nContinuez votre exploration en redécouvrant la technologie.
|
sector.ruinousShores.description = Au-delà des déchets, se trouve le littoral. Autrefois, cet endroit abritait un réseau de défense côtière, mais il n’en reste pas grand-chose. Seules quelques structures de défense basiques sont restées intactes, tout le reste a été réduit en ferraille.\nContinuez votre exploration en redécouvrant la technologie.
|
||||||
sector.stainedMountains.description = Plus loin, à l’intérieur des terres, se trouvent des montagnes qui n'ont pas touchées par les spores.\nExploitez le Titane présent en abondance dans cette zone et apprenez comment l'utiliser.\n\nLa présence ennemie est bien plus grande ici. Ne leur donnez pas le temps d’envoyer leurs unités les plus fortes.
|
sector.stainedMountains.description = Plus loin, à l’intérieur des terres, se trouvent des montagnes qui n'ont pas touchées par les spores.\nExploitez le Titane présent en abondance dans cette zone et apprenez comment l'utiliser.\n\nLa présence ennemie est bien plus grande ici. Ne leur donnez pas le temps d’envoyer leurs unités les plus fortes.
|
||||||
sector.overgrowth.description = Étant plus proche de la source des spores, cette zone a été complètement envahie.\nL'ennemi y a établi un avant-poste. Formez des Titans et détruisez-le.
|
sector.overgrowth.description = Étant plus proche de la source des spores, cette zone a été complètement envahie.\nL'ennemi y a établi un avant-poste. Formez des Titans et détruisez-le.
|
||||||
sector.tarFields.description = La périphérie d’une zone de production de pétrole, situé entre les montagnes et le désert. L’une des rares avec des réserves de goudron utilisables.\nBien qu’abandonnée, quelques forces ennemies dangereuses se trouvent à proximité. Ne les sous-estimez pas!\n\n[lightgray]Recherchez la technologie de traitement de pétrole si possible.
|
sector.tarFields.description = La périphérie d’une zone de production de pétrole, située entre les montagnes et le désert. L’une des rares avec des réserves de goudron utilisables.\nBien que abandonnée, quelques forces ennemies dangereuses se trouvent à proximité. Ne les sous-estimez pas!\n\n[lightgray]Recherchez la technologie de traitement de pétrole si possible.
|
||||||
sector.desolateRift.description = Une zone extrêmement dangereuse. Des ressources abondantes, mais peu d’espace. Un risque élevé de destruction donc partez dès que possible! Ne vous laissez surtout pas berner par le long temps d'attente entre les vagues ennemies. Vous risquerez de le regretter.
|
sector.desolateRift.description = Une zone extrêmement dangereuse. Des ressources abondantes, mais peu d’espace. Un risque élevé de destruction donc partez dès que possible! Ne vous laissez surtout pas berner par le long temps d'attente entre les vagues ennemies. Vous risquez de le regretter.
|
||||||
sector.nuclearComplex.description = Une ancienne installation de production et de traitement de thorium, réduite en ruines.\n[lightgray]Faites des recherches sur ce minerai et ses nombreuses utilisations.\n\nL’ennemi est présent ici en grand nombre, recherchant constamment des attaquants.
|
sector.nuclearComplex.description = Une ancienne installation de production et de traitement de thorium, réduite en ruines.\n[lightgray]Faites des recherches sur ce minerai et ses nombreuses utilisations.\n\nL’ennemi est présent ici en grand nombre, recherchant constamment des attaquants.
|
||||||
sector.fungalPass.description = Une zone de transition entre les hautes montagnes et les terres plus basses, infestées de spores. Une petite base de reconnaissance ennemie se trouve ici.\nDétruisez les 2 Noyaux ennemis en utilisant des Poingnards et des Rampeurs.
|
sector.fungalPass.description = Une zone de transition entre les hautes montagnes et les terres plus basses, infestées de spores. Une petite base de reconnaissance ennemie se trouve ici.\nDétruisez les 2 Noyaux ennemis en utilisant des Poignards et des Rampeurs.
|
||||||
sector.biomassFacility.description = L’origine des spores. Il s’agit de l’installation dans laquelle elles ont été étudiées et initialement produites.\nRecherchez la technologie présente sur les lieux et cultivez des spores pour la production de carburant et de plastique.\n\n[lightgray]Lors de la destruction de cette installation, les spores ont été libérées. Rien dans l’écosystème local ne pouvait concurrencer un organisme aussi envahissant.
|
sector.biomassFacility.description = L’origine des spores. Il s’agit de l’installation dans laquelle elles ont été étudiées et initialement produites.\nRecherchez la technologie présente sur les lieux et cultivez des spores pour la production de carburant et de plastique.\n\n[lightgray]Lors de la destruction de cette installation, les spores ont été libérées. Rien dans l’écosystème local ne pouvait concurrencer un organisme aussi envahissant.
|
||||||
sector.windsweptIslands.description = Au delà du rivage se trouve cette chaîne d’îles reculées. Les registres montrent qu’il y avait autrefois des usines de [accent]Plastanium[].\n\nDéfendez-vous contre les unités navales ennemies, établissez-y une base et faites des recherches sur ces usines.
|
sector.windsweptIslands.description = Au delà du rivage se trouve cette chaîne d’îles reculées. Les registres montrent qu’il y avait autrefois des usines de [accent]Plastanium[].\n\nDéfendez-vous contre les unités navales ennemies, établissez-y une base et faites des recherches sur ces usines.
|
||||||
sector.extractionOutpost.description = Un avant-poste éloigné, construit par l’ennemi dans le but de transférer des ressources vers d’autres secteurs.\n\nCette technologie de transport inter-secteur est essentielle pour de nouvelles conquêtes. Détruisez la base et recherchez leurs Rampes de lancement.
|
sector.extractionOutpost.description = Un avant-poste éloigné, construit par l’ennemi dans le but de transférer des ressources vers d’autres secteurs.\n\nCette technologie de transport inter-secteur est essentielle pour de nouvelles conquêtes. Détruisez la base et recherchez leurs Rampes de lancement.
|
||||||
sector.impact0078.description = Ici reposent les vestiges d'un vaisseau de transport interstellaire, premier à être rentré dans ce système.\n\nRécuperez et recherchez autant de technologies que possible dans cette épave.
|
sector.impact0078.description = Ici reposent les vestiges d'un vaisseau de transport interstellaire, premier à être entré dans ce système.\n\nRécuperez et recherchez autant de technologies que possible dans cette épave.
|
||||||
sector.planetaryTerminal.description = La cible finale.\n\nCette base côtière contient une structure capable de lancer des Noyaux sur les planètes voisines. Elle est extrêmement bien gardée.\n\nProduisez des unités navales, éliminez l’ennemi le plus rapidement possible et recherchez la structure de lancement.
|
sector.planetaryTerminal.description = La cible finale.\n\nCette base côtière contient une structure capable de lancer des Noyaux sur les planètes voisines. Elle est extrêmement bien gardée.\n\nProduisez des unités navales, éliminez l’ennemi le plus rapidement possible et recherchez la structure de lancement.
|
||||||
|
|
||||||
|
status.burning.name = Brûle
|
||||||
|
status.freezing.name = Gelé
|
||||||
|
status.wet.name = Humide
|
||||||
|
status.muddy.name = Boueux
|
||||||
|
status.melting.name = Fusion
|
||||||
|
status.sapped.name = Sapé
|
||||||
|
status.spore-slowed.name = Spore ralentie
|
||||||
|
status.tarred.name = Goudronné
|
||||||
|
status.overclock.name = Overclocker
|
||||||
|
status.shocked.name = Étourdie
|
||||||
|
status.blasted.name = Foudroyé
|
||||||
|
status.unmoving.name = Immobile
|
||||||
|
|
||||||
settings.language = Language
|
settings.language = Language
|
||||||
settings.data = Données du Jeu
|
settings.data = Données du Jeu
|
||||||
settings.reset = Valeurs par Défaut
|
settings.reset = Valeurs par Défaut
|
||||||
@@ -653,6 +669,7 @@ stat.output = Ressource(s) produite(s)
|
|||||||
stat.booster = Boosteur
|
stat.booster = Boosteur
|
||||||
stat.tiles = Sol requis
|
stat.tiles = Sol requis
|
||||||
stat.affinities = Affinités
|
stat.affinities = Affinités
|
||||||
|
stat.opposites = Opposés
|
||||||
stat.powercapacity = Capacité d'énergie
|
stat.powercapacity = Capacité d'énergie
|
||||||
stat.powershot = Unités d'énergie/Tir
|
stat.powershot = Unités d'énergie/Tir
|
||||||
stat.damage = Dégâts
|
stat.damage = Dégâts
|
||||||
@@ -669,7 +686,7 @@ stat.linkrange = Portée des liens
|
|||||||
stat.instructions = Instructions
|
stat.instructions = Instructions
|
||||||
stat.powerconnections = Nombre maximal de connections
|
stat.powerconnections = Nombre maximal de connections
|
||||||
stat.poweruse = Énergie utilisée
|
stat.poweruse = Énergie utilisée
|
||||||
stat.powerdamage = Unités d'énergie/Dégat
|
stat.powerdamage = Unités d'énergie/Dégât
|
||||||
stat.itemcapacity = Stockage
|
stat.itemcapacity = Stockage
|
||||||
stat.memorycapacity = Mémoire
|
stat.memorycapacity = Mémoire
|
||||||
stat.basepowergeneration = Production d'énergie de Base
|
stat.basepowergeneration = Production d'énergie de Base
|
||||||
@@ -697,7 +714,7 @@ stat.cooldowntime = Temps de refroidissement
|
|||||||
stat.explosiveness = Explosivité
|
stat.explosiveness = Explosivité
|
||||||
stat.basedeflectchance = Chance de Détournement de Base
|
stat.basedeflectchance = Chance de Détournement de Base
|
||||||
stat.lightningchance = Chance d'Éclairs
|
stat.lightningchance = Chance d'Éclairs
|
||||||
stat.lightningdamage = Dégats des Éclairs
|
stat.lightningdamage = Dégâts des Éclairs
|
||||||
stat.flammability = Inflammabilité
|
stat.flammability = Inflammabilité
|
||||||
stat.radioactivity = Radioactivité
|
stat.radioactivity = Radioactivité
|
||||||
stat.charge = Charge
|
stat.charge = Charge
|
||||||
@@ -714,12 +731,18 @@ stat.abilities = Abilités
|
|||||||
stat.canboost = Boost
|
stat.canboost = Boost
|
||||||
stat.flying = Unité volante
|
stat.flying = Unité volante
|
||||||
stat.ammouse = Utilisation de munitions
|
stat.ammouse = Utilisation de munitions
|
||||||
|
stat.damagemultiplier = Multiplicateur de dégâts
|
||||||
|
stat.healthmultiplier = Multiplicateur de santé
|
||||||
|
stat.speedmultiplier = Multiplicateur de vitesse
|
||||||
|
stat.reloadmultiplier = Multiplicateur de rechargement
|
||||||
|
stat.buildspeedmultiplier = Multiplicateur de vitesse de construction
|
||||||
|
stat.reactive = Reacts
|
||||||
|
|
||||||
ability.forcefield = Champ de Force
|
ability.forcefield = Champ de Force
|
||||||
ability.repairfield = Champ de Réparation
|
ability.repairfield = Champ de Réparation
|
||||||
ability.statusfield = Champ d'Amélioration
|
ability.statusfield = Champ d'Amélioration
|
||||||
ability.unitspawn = Usine de {0}
|
ability.unitspawn = Usine de {0}
|
||||||
ability.shieldregenfield = Champ de regénération de bouclier
|
ability.shieldregenfield = Champ de régénération de bouclier
|
||||||
ability.movelightning = Déplacement éclair
|
ability.movelightning = Déplacement éclair
|
||||||
|
|
||||||
bar.drilltierreq = Meilleure Foreuse Requise
|
bar.drilltierreq = Meilleure Foreuse Requise
|
||||||
@@ -744,22 +767,19 @@ bar.progress = Construction en cours
|
|||||||
bar.input = Entrée
|
bar.input = Entrée
|
||||||
bar.output = Sortie
|
bar.output = Sortie
|
||||||
|
|
||||||
units.processorcontrol = [lightgray]Contrôlé par un processeur
|
units.processorcontrol = [lightgray]Contrôlé par un processeur.
|
||||||
|
|
||||||
bullet.damage = [stat]{0}[lightgray] dégâts
|
bullet.damage = [stat]{0}[lightgray] dégâts
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] dégâts de zone ~[stat] {1}[lightgray] blocs
|
bullet.splashdamage = [stat]{0}[lightgray] dégâts de zone ~[stat] {1}[lightgray] blocs
|
||||||
bullet.incendiary = [stat]incendiaire
|
bullet.incendiary = [stat]incendiaire
|
||||||
bullet.sapping = [stat]vol de vie
|
|
||||||
bullet.homing = [stat]autoguidé
|
bullet.homing = [stat]autoguidé
|
||||||
bullet.shock = [stat]choc électrique
|
|
||||||
bullet.frag = [stat]fragmentation
|
bullet.frag = [stat]fragmentation
|
||||||
|
bullet.lightning = [stat]{0}[lightgray]x lightning ~[stat]{1}[lightgray] damage
|
||||||
bullet.buildingdamage = [stat]{0}%[lightgray] des dégâts aux bâtiments
|
bullet.buildingdamage = [stat]{0}%[lightgray] des dégâts aux bâtiments
|
||||||
bullet.knockback = [stat]{0}[lightgray] recul
|
bullet.knockback = [stat]{0}[lightgray] recul
|
||||||
bullet.pierce = [stat]{0}[lightgray]x perforant
|
bullet.pierce = [stat]{0}[lightgray]x perforant
|
||||||
bullet.infinitepierce = [stat]perforant
|
bullet.infinitepierce = [stat]perforant
|
||||||
bullet.healpercent = [stat]{0}[lightgray]% soins
|
bullet.healpercent = [stat]{0}[lightgray]% soins
|
||||||
bullet.freezing = [stat]gel
|
|
||||||
bullet.tarred = [stat]goudronné
|
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x multiplicateur de munitions
|
bullet.multiplier = [stat]{0}[lightgray]x multiplicateur de munitions
|
||||||
bullet.reload = [stat]{0}[lightgray]x vitesse de tir
|
bullet.reload = [stat]{0}[lightgray]x vitesse de tir
|
||||||
|
|
||||||
@@ -800,6 +820,8 @@ setting.logichints.name = Astuces pour les commandes des processeurs
|
|||||||
setting.flow.name = Afficher le Débit des ressources
|
setting.flow.name = Afficher le Débit des ressources
|
||||||
setting.backgroundpause.name = Pause en Arrière-plan
|
setting.backgroundpause.name = Pause en Arrière-plan
|
||||||
setting.buildautopause.name = Confirmation avant construction
|
setting.buildautopause.name = Confirmation avant construction
|
||||||
|
setting.doubletapmine.name = Double-clic pour Miner
|
||||||
|
setting.modcrashdisable.name = Désactiver les mods lors d'un crash au démarrage
|
||||||
setting.animatedwater.name = Surfaces Animées
|
setting.animatedwater.name = Surfaces Animées
|
||||||
setting.animatedshields.name = Boucliers Animés
|
setting.animatedshields.name = Boucliers Animés
|
||||||
setting.antialias.name = Anticrénelage[lightgray] (redémarrage du jeu nécessaire)[]
|
setting.antialias.name = Anticrénelage[lightgray] (redémarrage du jeu nécessaire)[]
|
||||||
@@ -919,6 +941,7 @@ keybind.pause_building.name = Pauser/Reprendre la Construction
|
|||||||
keybind.minimap.name = Mini-carte
|
keybind.minimap.name = Mini-carte
|
||||||
keybind.planet_map.name = Carte de la Planète
|
keybind.planet_map.name = Carte de la Planète
|
||||||
keybind.research.name = Recherche
|
keybind.research.name = Recherche
|
||||||
|
keybind.block_info.name = Bloc information
|
||||||
keybind.chat.name = Tchat
|
keybind.chat.name = Tchat
|
||||||
keybind.player_list.name = Liste des joueurs
|
keybind.player_list.name = Liste des joueurs
|
||||||
keybind.console.name = Console
|
keybind.console.name = Console
|
||||||
@@ -968,7 +991,7 @@ rules.waitForWaveToEnd = Les Vagues attendent la mort des ennemis
|
|||||||
rules.dropzoneradius = Rayon d'Apparition des ennemis :[lightgray] (tuiles)
|
rules.dropzoneradius = Rayon d'Apparition des ennemis :[lightgray] (tuiles)
|
||||||
rules.unitammo = Les Unités nécessitent des munitions
|
rules.unitammo = Les Unités nécessitent des munitions
|
||||||
rules.title.waves = Vagues
|
rules.title.waves = Vagues
|
||||||
rules.title.resourcesbuilding = Ressources & Construction
|
rules.title.resourcesbuilding = Resources & Construction
|
||||||
rules.title.enemy = Ennemis
|
rules.title.enemy = Ennemis
|
||||||
rules.title.unit = Unités
|
rules.title.unit = Unités
|
||||||
rules.title.experimental = Expérimental
|
rules.title.experimental = Expérimental
|
||||||
@@ -987,6 +1010,7 @@ content.item.name = Objets
|
|||||||
content.liquid.name = Liquides
|
content.liquid.name = Liquides
|
||||||
content.unit.name = Unités
|
content.unit.name = Unités
|
||||||
content.block.name = Blocs
|
content.block.name = Blocs
|
||||||
|
content.status.name = Effet
|
||||||
content.sector.name = Secteurs
|
content.sector.name = Secteurs
|
||||||
|
|
||||||
item.copper.name = Cuivre
|
item.copper.name = Cuivre
|
||||||
@@ -999,7 +1023,7 @@ item.silicon.name = Silicium
|
|||||||
item.plastanium.name = Plastanium
|
item.plastanium.name = Plastanium
|
||||||
item.phase-fabric.name = Tissu Phasé
|
item.phase-fabric.name = Tissu Phasé
|
||||||
item.surge-alloy.name = Alliage Superchargé
|
item.surge-alloy.name = Alliage Superchargé
|
||||||
item.spore-pod.name = Bulbe Sporifère
|
item.spore-pod.name = Spore
|
||||||
item.sand.name = Sable
|
item.sand.name = Sable
|
||||||
item.blast-compound.name = Mélange Explosif
|
item.blast-compound.name = Mélange Explosif
|
||||||
item.pyratite.name = Pyratite
|
item.pyratite.name = Pyratite
|
||||||
@@ -1141,7 +1165,7 @@ block.duo.name = Duo
|
|||||||
block.scorch.name = Brûleur
|
block.scorch.name = Brûleur
|
||||||
block.scatter.name = Disperseur
|
block.scatter.name = Disperseur
|
||||||
block.hail.name = Grêle
|
block.hail.name = Grêle
|
||||||
block.lancer.name = Perforateur
|
block.lancer.name = Lancier
|
||||||
block.conveyor.name = Convoyeur
|
block.conveyor.name = Convoyeur
|
||||||
block.titanium-conveyor.name = Convoyeur en Titane
|
block.titanium-conveyor.name = Convoyeur en Titane
|
||||||
block.plastanium-conveyor.name = Convoyeur en Plastanium
|
block.plastanium-conveyor.name = Convoyeur en Plastanium
|
||||||
@@ -1229,7 +1253,7 @@ block.force-projector.name = Projecteur de Champ de force
|
|||||||
block.arc.name = Arc
|
block.arc.name = Arc
|
||||||
block.rtg-generator.name = G.T.R
|
block.rtg-generator.name = G.T.R
|
||||||
block.spectre.name = Spectre
|
block.spectre.name = Spectre
|
||||||
block.meltdown.name = Meltdown
|
block.meltdown.name = Fusion
|
||||||
block.foreshadow.name = Présage
|
block.foreshadow.name = Présage
|
||||||
block.container.name = Conteneur
|
block.container.name = Conteneur
|
||||||
block.launch-pad.name = Rampe de lancement
|
block.launch-pad.name = Rampe de lancement
|
||||||
@@ -1267,49 +1291,49 @@ team.blue.name = bleu
|
|||||||
team.crux.name = rouge
|
team.crux.name = rouge
|
||||||
team.sharded.name = orange
|
team.sharded.name = orange
|
||||||
team.orange.name = orange
|
team.orange.name = orange
|
||||||
team.derelict.name = derelict
|
team.derelict.name = abandonné
|
||||||
team.green.name = vert
|
team.green.name = vert
|
||||||
team.purple.name = mauve
|
team.purple.name = mauve
|
||||||
|
|
||||||
hint.skip = Passer
|
hint.skip = Passer
|
||||||
hint.desktopMove = Utilisez [accent][[ZQSD][] pour bouger.
|
hint.desktopMove = Utilisez [accent][[ZQSD][] pour bouger.
|
||||||
hint.zoom = [accent]Scroller[] pour zoomer et dézoomer.
|
hint.zoom = [accent]Scroller[] pour zoomer et dézoomer.
|
||||||
hint.mine = Bougez vers le \uf8c4 minerai de cuivre et [accent]cliquez[] dessus mour le miner manuellement.
|
hint.mine = Bougez vers le \uf8c4 minerai de cuivre et [accent]cliquez[] dessus pour le miner manuellement.
|
||||||
hint.desktopShoot = [accent][[Clic-gauche][] pour tirer.
|
hint.desktopShoot = [accent][[Clic-gauche][] pour tirer.
|
||||||
hint.depositItems = Pour déposer des ressources dans le Noyau, déplacez-les depuis votre vaisseau, vers ce dernier.
|
hint.depositItems = Pour déposer des ressources dans le Noyau, déplacez-les depuis votre vaisseau, vers ce dernier.
|
||||||
hint.respawn = Pour réapparaître en tant que vaisseau, presser [accent][[V][].
|
hint.respawn = Pour réapparaître en tant que vaisseau, presser [accent][[V][].
|
||||||
hint.respawn.mobile = Vous avez pris le contrôle d'une unité/structure. Pour réapparaître en tant que vaisseau, [accent]touchez l'avatar en haut à gauche.[]
|
hint.respawn.mobile = Vous avez pris le contrôle d'une unité/structure. Pour réapparaître en tant que vaisseau, [accent]touchez l'avatar en haut à gauche.[]
|
||||||
hint.desktopPause = Pressez [accent][[Espace][] pour pauser et reprendre le jeu.
|
hint.desktopPause = Pressez [accent][[Espace][] pour mettre en pause et reprendre le jeu.
|
||||||
hint.placeDrill = Sélectionnez l'onglet \ue85e [accent]Foreuses[] dans le menu en bas à droite, sélectionnez une \uf870 [accent]Foreuse[] et cliquez sur un filon de cuivre pour la placer.
|
hint.placeDrill = Sélectionnez l'onglet \ue85e [accent]Foreuses[] dans le menu en bas à droite, sélectionnez une \uf870 [accent]Foreuse[] et cliquez sur un filon de cuivre pour la placer.
|
||||||
hint.placeDrill.mobile = Sélectionnez l'onglet \ue85e [accent]Foreuses[] dans le menu en bas à droite, sélectionnez une \uf870 [accent]Foreuse Méchanique[] et touchez un filon de cuivre pour la placer.\n\nPressez le \ue800 [accent]V[] en bas à droite pour confirmer.
|
hint.placeDrill.mobile = Sélectionnez l'onglet \ue85e [accent]Foreuses[] dans le menu en bas à droite, sélectionnez une \uf870 [accent]Foreuse Méchanique[] et touchez un filon de cuivre pour la placer.\n\nPressez le \ue800 [accent]V[] en bas à droite pour confirmer.
|
||||||
hint.placeConveyor = Les Convoyeurs transportent les ressources des foreuses, vers d'autres blocs. Sélectionnez un \uf896 [accent]Convoyeur[] dans l'onglet \ue814 [accent]Distribution[].\n\nCliquez et maintenez pour placer plusieurs convoyeurs.\n[accent]Scrollez[] pour les faire pivoter.
|
hint.placeConveyor = Les Convoyeurs transportent les ressources des foreuses vers d'autres blocs. Sélectionnez un \uf896 [accent]Convoyeur[] dans l'onglet \ue814 [accent]Distribution[].\n\nCliquez et maintenez pour placer plusieurs convoyeurs.\n[accent]Scrollez[] pour les faire pivoter.
|
||||||
hint.placeConveyor.mobile = Les Convoyeurs transportent les ressources des foreuses, vers d'autres blocs. Sélectionnez un \uf896 [accent]Convoyeur[] dans l'onglet \ue814 [accent]Distribution[].\n\nMaintenez votre doigt et déplacez-le pour placer plusieurs convoyeurs.
|
hint.placeConveyor.mobile = Les Convoyeurs transportent les ressources des foreuses vers d'autres blocs. Sélectionnez un \uf896 [accent]Convoyeur[] dans l'onglet \ue814 [accent]Distribution[].\n\nMaintenez votre doigt et déplacez-le pour placer plusieurs convoyeurs.
|
||||||
hint.placeTurret = Placez des \uf861 [accent]Tourelles[] pour défendre votre base contre les ennemis.\n\nLes Tourelles nécessitent des munitions (dans ce cas, du \uf838Cuivre).\nUtilisez les convoyeurs et les foreuses pour les ravitailler.
|
hint.placeTurret = Placez des \uf861 [accent]Tourelles[] pour défendre votre base contre les ennemis.\n\nLes Tourelles nécessitent des munitions (dans ce cas, du \uf838Cuivre).\nUtilisez les convoyeurs et les foreuses pour les ravitailler.
|
||||||
hint.breaking = Maintenez [accent]Clic-droit[] pour détruire des blocs.
|
hint.breaking = Maintenez [accent]Clic-droit[] pour détruire des blocs.
|
||||||
hint.breaking.mobile = Activez le \ue817 [accent]marteau[] en bas à droite Touchez pour détruire des blocs.\n\nRetenez votre doigt pendant une seconde et déplacez-le pour détruire les blocs dans la zone de sélection.
|
hint.breaking.mobile = Activez le \ue817 [accent]marteau[] en bas à droite Touchez pour détruire des blocs.\n\nRetenez votre doigt pendant une seconde et déplacez-le pour détruire les blocs dans la zone de sélection.
|
||||||
hint.research = Utilisez le bouton \ue875 [accent]Recherche[] pour rechercher de nouvelles technologies.
|
hint.research = Utilisez le bouton \ue875 [accent]Recherche[] pour rechercher de nouvelles technologies.
|
||||||
hint.research.mobile = Utilisez le bouton \ue875 [accent]Recherche[] dans le \ue88c [accent]Menu[] pour rechercher de nouvelles technologies.
|
hint.research.mobile = Utilisez le bouton \ue875 [accent]Recherche[] dans le \ue88c [accent]Menu[] pour rechercher de nouvelles technologies.
|
||||||
hint.unitControl = Retenez [accent][[Ctrl-gauche][] et [accent]cliquez[] Pour contrôler une tourelle ou une unité alliée.
|
hint.unitControl = Retenez [accent][[Ctrl-gauche][] et [accent]cliquez[] Pour contrôler une tourelle ou une unité alliée.
|
||||||
hint.unitControl.mobile = [accent][[Tapez][] 2 fois une tourelle ou une unité alliée pour la controler.
|
hint.unitControl.mobile = [accent][[Tapez][] 2 fois une tourelle ou une unité alliée pour la contrôler.
|
||||||
hint.launch = Une fois que vous avez collecté assez de ressources, vous pouvez [accent]Lancer[] votre Noyau en sélectionnant un secteur depuis la \ue827 [accent]Carte[] en bas à droite.
|
hint.launch = Une fois que vous avez collecté assez de ressources, vous pouvez [accent]Lancer[] votre Noyau en sélectionnant un secteur depuis la \ue827 [accent]Carte[] en bas à droite.
|
||||||
hint.launch.mobile = Une fois que vous avez collecté assez de ressources, vous pouvez [accent]Lancer[] votre Noyau en sélectionnant un secteur depuis la \ue827 [accent]Carte[] dans le \ue88c [accent]Menu[].
|
hint.launch.mobile = Une fois que vous avez collecté assez de ressources, vous pouvez [accent]Lancer[] votre Noyau en sélectionnant un secteur depuis la \ue827 [accent]Carte[] dans le \ue88c [accent]Menu[].
|
||||||
hint.schematicSelect = Retenez [accent][[F][] pour sélectionner des blocs dans une zone afin de les copier et les coller.\n\n[accent][[Clic du milieu][] pour copier un seule type de bloc.
|
hint.schematicSelect = Retenez [accent][[F][] pour sélectionner des blocs dans une zone afin de les copier et les coller.\n\n[accent][[Clic du milieu][] pour copier un seul type de bloc.
|
||||||
hint.conveyorPathfind = Retenez [accent][[Ctrl-gauche][] pendant que vous placez des convoyeurs, afin de générer un chemin automatiquement.
|
hint.conveyorPathfind = Retenez [accent][[Ctrl-gauche][] pendant que vous placez des convoyeurs, afin de générer un chemin automatiquement.
|
||||||
hint.conveyorPathfind.mobile = Activez le mode \ue844 [accent]Diagonale[] et déplacez des convoyeurs, afin de générer un chemin automatiquement.
|
hint.conveyorPathfind.mobile = Activez le mode \ue844 [accent]Diagonale[] et déplacez des convoyeurs, afin de générer un chemin automatiquement.
|
||||||
hint.boost = Retenez [accent][[Maj-gauche][] pour voler au-dessus des obstacles avec votre unité actuelle.\n\nSeules quelques unités terrestres peuvent voler.
|
hint.boost = Retenez [accent][[Maj-gauche][] pour voler au-dessus des obstacles avec votre unité actuelle.\n\nSeules quelques unités terrestres peuvent voler.
|
||||||
hint.command = Pressez [accent][[G][] pour commander les unités proches d'un [accent]type similaire[] et bouger en formation.\n\nSeules les unités terrestres peuvent controller d'autres unités terrestres.
|
hint.command = Pressez [accent][[G][] pour commander les unités proches d'un [accent]type similaire[] et bouger en formation.\n\nSeules les unités terrestres peuvent contrôler d'autres unités terrestres.
|
||||||
hint.command.mobile = [accent][[Tapez][] 2 fois votre unité pour commander les unités proches d'un [accent]type similaire[] et bouger en formation.
|
hint.command.mobile = [accent][[Tapez][] 2 fois votre unité pour commander les unités proches d'un [accent]type similaire[] et bouger en formation.
|
||||||
hint.payloadPickup = Pressez [accent][[[] pour transporter des blocs ou des unités.
|
hint.payloadPickup = Pressez [accent][[[] pour transporter des blocs ou des unités.
|
||||||
hint.payloadPickup.mobile = [accent]Tapez et retenez[] votre doigt pour transporter des blocs ou des unités.
|
hint.payloadPickup.mobile = [accent]Tapez et retenez[] votre doigt pour transporter des blocs ou des unités.
|
||||||
hint.payloadDrop = Pressez [accent]][] pour larguer votre chargement.
|
hint.payloadDrop = Pressez [accent]][] pour larguer votre chargement.
|
||||||
hint.payloadDrop.mobile = [accent]Tapez et retenez[] votre doigt pour larguer votre chargement.
|
hint.payloadDrop.mobile = [accent]Tapez et retenez[] votre doigt pour larguer votre chargement.
|
||||||
hint.waveFire = [accent]Les tourelles à liquides[] approvisionnées en eau en tant que munition, vont automatiquement éteindre les incendies proches.
|
hint.waveFire = [accent]Les tourelles à liquides[] approvisionnées en eau en tant que munitions, vont automatiquement éteindre les incendies proches.
|
||||||
hint.generator = \uf879 Les [accent]Générateurs à combustion[] brûlent du Charbon et transmettent de l'énergie aux blocs adjacents.\n\nLa transmission d'énergie peut être étendue avec des \uf87f [accent]Transmetteurs Énergétiques[].
|
hint.generator = \uf879 Les [accent]Générateurs à combustion[] brûlent du Charbon et transmettent de l'énergie aux blocs adjacents.\n\nLa transmission d'énergie peut être étendue avec des \uf87f [accent]Transmetteurs Énergétiques[].
|
||||||
hint.guardian = Les [accent]Gardiens[] sont protégés par un bouclier. Les munitions faibles telles que le [accent]Cuivre[] et le [accent]Plomb[] ne seront [scarlet]pas efficaces[].\n\nUtilisez des tourelles de plus haut niveau, ou de meilleures munitions comme le \uf835 [accent]Graphite[] avec un \uf861Duo/\uf859Salve pour pouvoir tuer le gardien.
|
hint.guardian = Les [accent]Gardiens[] sont protégés par un bouclier. Les munitions faibles telles que le [accent]Cuivre[] et le [accent]Plomb[] ne seront [scarlet]pas efficaces[].\n\nUtilisez des tourelles de plus haut niveau, ou de meilleures munitions comme le \uf835 [accent]Graphite[] avec un \uf861Duo/\uf859Salve pour pouvoir tuer le gardien.
|
||||||
hint.coreUpgrade = Les Noyaux peuvent être améliorés [accent]en plaçant un Noyau de plus haut niveau sur eux[].\n\nPlacez un Noyau [accent]Fondation[] sur le Noyau [accent]Fragment[]. Soyez sûrs que rien n'obstrue la construction.
|
hint.coreUpgrade = Les Noyaux peuvent être améliorés [accent]en plaçant un Noyau de plus haut niveau sur eux[].\n\nPlacez un Noyau [accent]Fondation[] sur le Noyau [accent]Fragment[]. Soyez sûrs que rien n'obstrue la construction.
|
||||||
hint.presetLaunch = Les [accent]secteurs[] gris, tels que [accent]Frozen Forest[], peuvent être lançés de n'importe où. Ils ne requièrent pas la capture d'un secteur adjacent.\n\n[accent]Il y a beaucoup de secteurs[] comme celui-ci, qui sont [accent]optionels[].
|
hint.presetLaunch = Les [accent]secteurs[] gris, tels que [accent]Frozen Forest[], peuvent être lançés de n'importe où. Ils ne requièrent pas la capture d'un secteur adjacent.\n\n[accent]Il y a beaucoup de secteurs[] comme celui-ci, qui sont [accent]optionels[].
|
||||||
hint.coreIncinerate = Lorsqu'un Noyau est remplit d'une ressource en particulier, le surplus qui rentrera dans celui-ci sera [accent]incinéré[].
|
hint.coreIncinerate = Lorsqu'un Noyau est rempli d'une ressource en particulier, le surplus qui rentrera dans celui-ci sera [accent]incinéré[].
|
||||||
hint.coopCampaign = Quand vous jouez en [accent]campagne multi-joueur[], les ressources produites dans le secteur dans lequel vous jouez sera aussi envoyé [accent]dans vos secteurs[].\n\nLes recherches faites par l'hôte sont aussi partagées.
|
hint.coopCampaign = Quand vous jouez en [accent]campagne multijoueur[], les ressources produites dans le secteur dans lequel vous jouez sera aussi envoyé [accent]dans vos secteurs[].\n\nLes recherches faites par l'hôte sont aussi partagées.
|
||||||
|
|
||||||
item.copper.description = Le matériau structurel de base. Utilisation très répandue dans tous les types de blocs et en tant que munition.
|
item.copper.description = Le matériau structurel de base. Utilisation très répandue dans tous les types de blocs et en tant que munition.
|
||||||
item.copper.details = Le cuivre est un matériau anormalement abondant sur Serpulo. Il est structurellement faible à moins d'être renforcé.
|
item.copper.details = Le cuivre est un matériau anormalement abondant sur Serpulo. Il est structurellement faible à moins d'être renforcé.
|
||||||
@@ -1322,14 +1346,14 @@ item.coal.description = Un carburant commun et facile à obtenir.
|
|||||||
item.coal.details = De la matière végétale fossilisée, formée bien avant l’ensemencement de ce monde. Utilisation très répandue pour la production de carburant et de ressources.
|
item.coal.details = De la matière végétale fossilisée, formée bien avant l’ensemencement de ce monde. Utilisation très répandue pour la production de carburant et de ressources.
|
||||||
item.titanium.description = Un métal rare et super-léger, largement utilisé dans le transport de liquides, dans les foreuses de haut niveau et dans l'aviation.
|
item.titanium.description = Un métal rare et super-léger, largement utilisé dans le transport de liquides, dans les foreuses de haut niveau et dans l'aviation.
|
||||||
item.thorium.description = Un métal dense et radioactif, utilisé comme support structurel et comme carburant nucléaire.
|
item.thorium.description = Un métal dense et radioactif, utilisé comme support structurel et comme carburant nucléaire.
|
||||||
item.scrap.description = Il est utilisé dans les fours à fusion et les pulvériseurs, pour être raffiné en d'autres matériauxs.
|
item.scrap.description = Il est utilisé dans les fours à fusion et les pulvériseurs, pour être raffiné en d'autres matériaux.
|
||||||
item.scrap.details = Un mix de métaux provenant des restes de vieilles structures et d'unités. Contient des traces de nombreux métaux différents.
|
item.scrap.details = Un mix de métaux provenant des restes de vieilles structures et d'unités. Il contient des traces de nombreux métaux différents.
|
||||||
item.silicon.description = Un matériau semi-conducteur extrêmement pratique utilisé dans les panneaux solaires, dans les munitions autoguidées et dans beaucoup d'autres composants électroniques complexes.
|
item.silicon.description = Un matériau semi-conducteur extrêmement pratique utilisé dans les panneaux solaires, dans les munitions autoguidées et dans beaucoup d'autres composants électroniques complexes.
|
||||||
item.plastanium.description = Un matériau léger et ductile, utilisé dans l'isolation, la fabrication d'unités avancées et dans les munitions à fragmentation.
|
item.plastanium.description = Un matériau léger et ductile, utilisé dans l'isolation, la fabrication d'unités avancées et dans les munitions à fragmentation.
|
||||||
item.phase-fabric.description = Une substance au poids quasiment inexistant, utilisée pour l'électronique avancée et la technologie auto-réparatrice.
|
item.phase-fabric.description = Une substance au poids quasiment inexistant, utilisée pour l'électronique avancée et la technologie auto-réparatrice.
|
||||||
item.surge-alloy.description = Un alliage avancé aux propriétés électriques uniques, utilisé dans l'armement avancé.
|
item.surge-alloy.description = Un alliage avancé aux propriétés électriques uniques, utilisé dans l'armement avancé.
|
||||||
item.spore-pod.description = Les bulbes sporifères sont utilisés pour l'obtention d'huile, d'explosifs et de carburants.
|
item.spore-pod.description = Les bulbes sporifères sont utilisés pour l'obtention d'huile, d'explosifs et de carburants.
|
||||||
item.spore-pod.details = Les spores dont des formes de vies synthetiques, émettant des gaz qui sont toxiques pour les autres formes de vie biologiques. Elles sont extrêmement invasives et Très inflammables dans certaines conditions.
|
item.spore-pod.details = Les spores dont des formes de vies synthétiques, émettant des gaz qui sont toxiques pour les autres formes de vie biologiques. Elles sont extrêmement invasives et très inflammables dans certaines conditions.
|
||||||
item.blast-compound.description = Un matériau utilisé dans les bombes et les munitions explosives.
|
item.blast-compound.description = Un matériau utilisé dans les bombes et les munitions explosives.
|
||||||
item.pyratite.description = Une substance extrêmement inflammable utilisée dans les armes incendiaires et comme combustible pour les générateurs.
|
item.pyratite.description = Une substance extrêmement inflammable utilisée dans les armes incendiaires et comme combustible pour les générateurs.
|
||||||
|
|
||||||
@@ -1368,8 +1392,8 @@ block.copper-wall.description = Un bloc défensif à faible coût.\nUtile pour p
|
|||||||
block.copper-wall-large.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles lors des premières vagues.
|
block.copper-wall-large.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles lors des premières vagues.
|
||||||
block.titanium-wall.description = Un bloc défensif standard.\nProcure une protection modérée contre les attaques ennemies.
|
block.titanium-wall.description = Un bloc défensif standard.\nProcure une protection modérée contre les attaques ennemies.
|
||||||
block.titanium-wall-large.description = Un bloc défensif standard.\nProcure une protection modérée contre les attaques ennemies.
|
block.titanium-wall-large.description = Un bloc défensif standard.\nProcure une protection modérée contre les attaques ennemies.
|
||||||
block.plastanium-wall.description = Un mur spécial qui peut absorber les arcs électriques et bloquer les connections automatiques des transmetteurs énergétiques.
|
block.plastanium-wall.description = Un mur spécial qui peut absorber les arcs électriques et bloquer les connexions automatiques des transmetteurs énergétiques.
|
||||||
block.plastanium-wall-large.description = Un mur spécial qui absorber les arcs électriques et bloquer les connections automatiques des transmetteurs énergétiques.
|
block.plastanium-wall-large.description = Un mur spécial qui peut absorber les arcs électriques et bloquer les connexions automatiques des transmetteurs énergétiques.
|
||||||
block.thorium-wall.description = Un bloc défensif puissant.\nProcure une très bonne protection contre les attaques ennemies.
|
block.thorium-wall.description = Un bloc défensif puissant.\nProcure une très bonne protection contre les attaques ennemies.
|
||||||
block.thorium-wall-large.description = Un bloc défensif puissant.\nProcure une très bonne protection contre les attaques ennemies.
|
block.thorium-wall-large.description = Un bloc défensif puissant.\nProcure une très bonne protection contre les attaques ennemies.
|
||||||
block.phase-wall.description = Ce mur est moins puissant qu'un mur en thorium, mais il peut dévier les balles, sauf si elles sont trop puissantes.
|
block.phase-wall.description = Ce mur est moins puissant qu'un mur en thorium, mais il peut dévier les balles, sauf si elles sont trop puissantes.
|
||||||
@@ -1394,8 +1418,8 @@ block.inverted-sorter.description = Trie les ressources comme un trieur standard
|
|||||||
block.router.description = Accepte les objets depuis une ou plusieurs directions et les renvoie équitablement dans n'importe quelle direction. Utile pour séparer une chaîne de convoyeurs en plusieurs.
|
block.router.description = Accepte les objets depuis une ou plusieurs directions et les renvoie équitablement dans n'importe quelle direction. Utile pour séparer une chaîne de convoyeurs en plusieurs.
|
||||||
block.router.details = Un mal nécessaire... Utiliser un routeur à côté d'une usine est très déconseillé, car ceux-ci peuvent être bloqués par les matériaux produits par celle-ci.
|
block.router.details = Un mal nécessaire... Utiliser un routeur à côté d'une usine est très déconseillé, car ceux-ci peuvent être bloqués par les matériaux produits par celle-ci.
|
||||||
block.distributor.description = Un routeur avancé qui répartit équitablement les objets jusqu'à 7 directions différentes.
|
block.distributor.description = Un routeur avancé qui répartit équitablement les objets jusqu'à 7 directions différentes.
|
||||||
block.overflow-gate.description = Bloc envoyant les ressources à gauche et à droite si le chemin de devant est bloqué. Ne peut pas être utilisée si elle est à côté d'une autre barrière.
|
block.overflow-gate.description = Bloc envoyant les ressources à gauche et à droite si le chemin de devant est bloqué.
|
||||||
block.underflow-gate.description = Le contraire d'une barrière de débordement. Envoie les ressources vers l'avant si les chemins de gauche et de droite sont bloqués. Ne peut pas être utilisée si elle est à côté d'une autre barrière.
|
block.underflow-gate.description = Le contraire d'une barrière de débordement. Envoie les ressources vers l'avant si les chemins de gauche et de droite sont bloqués.
|
||||||
block.mass-driver.description = Le moyen de transport de ressources ultime! Cette structure collecte des lots de ressources et les envoie à un autre transporteur de masse, sur une longue distance. Nécessite de l'énergie pour fonctionner.
|
block.mass-driver.description = Le moyen de transport de ressources ultime! Cette structure collecte des lots de ressources et les envoie à un autre transporteur de masse, sur une longue distance. Nécessite de l'énergie pour fonctionner.
|
||||||
block.mechanical-pump.description = Une pompe basique et bon marché qui pompe lentement des liquides. Elle ne consomme pas d'énergie.
|
block.mechanical-pump.description = Une pompe basique et bon marché qui pompe lentement des liquides. Elle ne consomme pas d'énergie.
|
||||||
block.rotary-pump.description = Une pompe avancée, plus rapide, mais utilisant de l'énergie.
|
block.rotary-pump.description = Une pompe avancée, plus rapide, mais utilisant de l'énergie.
|
||||||
@@ -1410,7 +1434,7 @@ block.bridge-conduit.description = Bloc de transport de liquide avancé permetta
|
|||||||
block.phase-conduit.description = Conduit très avancé permettant le transport de liquide. Utilise de l'énergie pour téléporter les liquides à un autre conduit phasé sur une longue distance.
|
block.phase-conduit.description = Conduit très avancé permettant le transport de liquide. Utilise de l'énergie pour téléporter les liquides à un autre conduit phasé sur une longue distance.
|
||||||
block.power-node.description = Transmet de l'énergie aux autres transmetteurs énergétiques connectés. Le transmetteur recevra de l'énergie ou la transmettra à n'importe quel bâtiment adjacent. La connexion peut être activée/désactivée manuellement.
|
block.power-node.description = Transmet de l'énergie aux autres transmetteurs énergétiques connectés. Le transmetteur recevra de l'énergie ou la transmettra à n'importe quel bâtiment adjacent. La connexion peut être activée/désactivée manuellement.
|
||||||
block.power-node-large.description = Ce transmetteur possède un rayon plus grand que le transmetteur énergétique standard. Il peut aussi accepter plus de connexions.
|
block.power-node-large.description = Ce transmetteur possède un rayon plus grand que le transmetteur énergétique standard. Il peut aussi accepter plus de connexions.
|
||||||
block.surge-tower.description = Un transmetteur énergétique à très grande portée mais avec moins de connections disponibles.
|
block.surge-tower.description = Un transmetteur énergétique à très grande portée mais avec moins de connexions disponibles.
|
||||||
block.diode.description = L'énergie ne circule que dans un sens à travers ce bloc, et uniquement si l’autre côté présente moins d’énergie en stock. Idéal pour protéger les lieux de production d'énergie.
|
block.diode.description = L'énergie ne circule que dans un sens à travers ce bloc, et uniquement si l’autre côté présente moins d’énergie en stock. Idéal pour protéger les lieux de production d'énergie.
|
||||||
block.battery.description = Stocke le surplus d'énergie et le redistribue en cas de besoin.
|
block.battery.description = Stocke le surplus d'énergie et le redistribue en cas de besoin.
|
||||||
block.battery-large.description = Stocke bien plus d'énergie qu'une batterie normale.
|
block.battery-large.description = Stocke bien plus d'énergie qu'une batterie normale.
|
||||||
@@ -1418,7 +1442,7 @@ block.combustion-generator.description = Génère de l'énergie en brûlant du c
|
|||||||
block.thermal-generator.description = Génère une grande quantité d'énergie à partir de zones de chaleur.
|
block.thermal-generator.description = Génère une grande quantité d'énergie à partir de zones de chaleur.
|
||||||
block.steam-generator.description = Plus efficace qu'un générateur à combustion, mais requiert de l'eau.
|
block.steam-generator.description = Plus efficace qu'un générateur à combustion, mais requiert de l'eau.
|
||||||
block.differential-generator.description = Génère de grandes quantités d'énergie en utilisant la différence de température entre le liquide cryogénique et la pyratite brûlante.
|
block.differential-generator.description = Génère de grandes quantités d'énergie en utilisant la différence de température entre le liquide cryogénique et la pyratite brûlante.
|
||||||
block.rtg-generator.description = Un générateur thermo-électrique à radioisotope qui ne demande pas de refroidissement, mais produit moins d'énergie qu'un réacteur à Thorium.
|
block.rtg-generator.description = Un générateur thermoélectrique à radioisotope qui ne demande pas de refroidissement, mais produit moins d'énergie qu'un réacteur à Thorium.
|
||||||
block.solar-panel.description = Génère une faible quantité d'énergie grâce aux rayons du soleil.
|
block.solar-panel.description = Génère une faible quantité d'énergie grâce aux rayons du soleil.
|
||||||
block.solar-panel-large.description = Génère bien plus d'énergie qu'un panneau solaire standard, mais est aussi bien plus cher à construire.
|
block.solar-panel-large.description = Génère bien plus d'énergie qu'un panneau solaire standard, mais est aussi bien plus cher à construire.
|
||||||
block.thorium-reactor.description = Génère énormément d'énergie à l'aide de la radioactivité du thorium. Requiert néanmoins un refroidissement constant. Explosera violemment en cas de surchauffe.
|
block.thorium-reactor.description = Génère énormément d'énergie à l'aide de la radioactivité du thorium. Requiert néanmoins un refroidissement constant. Explosera violemment en cas de surchauffe.
|
||||||
@@ -1432,7 +1456,7 @@ block.cultivator.description = Cultive une petite quantité de spores atmosphér
|
|||||||
block.cultivator.details = Technologie de récupération. Utilisée pour produire des quantités massives de biomasse aussi efficacement que possible. Probablement l’incubateur initial des spores, qui couvrent maintenant Serpulo.
|
block.cultivator.details = Technologie de récupération. Utilisée pour produire des quantités massives de biomasse aussi efficacement que possible. Probablement l’incubateur initial des spores, qui couvrent maintenant Serpulo.
|
||||||
block.oil-extractor.description = Utilise de grandes quantités d'énergie pour extraire le pétrole du sable. Utilisez-le lorsqu'il n'y a pas de source directe de pétrole à proximité.
|
block.oil-extractor.description = Utilise de grandes quantités d'énergie pour extraire le pétrole du sable. Utilisez-le lorsqu'il n'y a pas de source directe de pétrole à proximité.
|
||||||
block.core-shard.description = Le coeur de votre base. Une fois détruit, le secteur est perdu. Ne laissez pas cela arriver.
|
block.core-shard.description = Le coeur de votre base. Une fois détruit, le secteur est perdu. Ne laissez pas cela arriver.
|
||||||
block.core-shard.details = La première version du Noyau. Il est compact, doté d'un module d'auto-réplication et est équippé de propulseurs de lancement à usage unique. Equipped with single-use launch thrusters. Ceux-ci n'ont pas été conçus pour le voyage interplanétaire.
|
block.core-shard.details = La première version du Noyau. Il est compact, doté d'un module d'auto-réplication et est équipé de propulseurs de lancement à usage unique. Equipped with single-use launch thrusters. Ceux-ci n'ont pas été conçus pour le voyage interplanétaire.
|
||||||
block.core-foundation.description = Le coeur de votre base. Cette version améliorée possède un meilleur blindage et stocke plus de ressources qu'un Noyau fragment.
|
block.core-foundation.description = Le coeur de votre base. Cette version améliorée possède un meilleur blindage et stocke plus de ressources qu'un Noyau fragment.
|
||||||
block.core-foundation.details = La seconde version.
|
block.core-foundation.details = La seconde version.
|
||||||
block.core-nucleus.description = Le coeur de votre base. Ce Noyau est extrêmement bien blindé et stocke des quantités massives de ressources.
|
block.core-nucleus.description = Le coeur de votre base. Ce Noyau est extrêmement bien blindé et stocke des quantités massives de ressources.
|
||||||
@@ -1450,20 +1474,20 @@ block.lancer.description = Une tourelle de taille moyenne chargeant et tirant de
|
|||||||
block.arc.description = Une petite tourelle tirant des arcs électriques sur les ennemis.
|
block.arc.description = Une petite tourelle tirant des arcs électriques sur les ennemis.
|
||||||
block.swarmer.description = Une tourelle de taille moyenne attaquant les ennemis terrestres et aériens à l'aide de missiles autoguidés. Consomme beaucoup de munitions.
|
block.swarmer.description = Une tourelle de taille moyenne attaquant les ennemis terrestres et aériens à l'aide de missiles autoguidés. Consomme beaucoup de munitions.
|
||||||
block.salvo.description = Une version plus grande et améliorée de la tourelle Duo. Tire par salves.
|
block.salvo.description = Une version plus grande et améliorée de la tourelle Duo. Tire par salves.
|
||||||
block.fuse.description = Une tourelle de grande taille et de petite portée. Elle perce les lignées ennemis avec ses trois tirs de sharpnel.
|
block.fuse.description = Une tourelle de grande taille et de petite portée. Elle perce les lignes ennemies avec ses trois tirs de sharpnel.
|
||||||
block.ripple.description = Lance des amas d’obus sur les ennemis terrestres sur de très longues distances.
|
block.ripple.description = Lance des amas d’obus sur les ennemis terrestres sur de très longues distances.
|
||||||
block.cyclone.description = Une grande tourelle qui tire rapidement des balles explosives aux ennemis proches.
|
block.cyclone.description = Une grande tourelle qui tire rapidement des balles explosives aux ennemis proches.
|
||||||
block.spectre.description = Une tourelle massive à double cannon qui tire de puissantes balles perçantes.
|
block.spectre.description = Une tourelle massive à double canon qui tire de puissantes balles perçantes.
|
||||||
block.meltdown.description = Une tourelle massive chargeant et tirant de puissants rayons lasers. Nécessite un liquide de refroidissement.
|
block.meltdown.description = Une tourelle massive chargeant et tirant de puissants rayons lasers. Nécessite un liquide de refroidissement.
|
||||||
block.foreshadow.description = Une tourelle massive tirant une puissante balle sur une cible, sur de très longues distances. Elle vise les unités ayant le plus de santé en priorité.
|
block.foreshadow.description = Une tourelle massive tirant une puissante balle sur une cible, sur de très longues distances. Elle vise les unités ayant le plus de santé en priorité.
|
||||||
block.repair-point.description = Soigne l'unité endommagée la plus proche.
|
block.repair-point.description = Soigne l'unité endommagée la plus proche.
|
||||||
block.segment.description = Endommage et détruit les tirs ennemis. Les lasers ne peuvent pas être ciblés.
|
block.segment.description = Endommage et détruit les tirs ennemis. Les lasers ne peuvent pas être ciblés.
|
||||||
block.parallax.description = Tire un rayon tracteur qui attire les ennemis volants, infligeant aussi des dégâts.
|
block.parallax.description = Tire un rayon tracteur qui attire les ennemis volants, infligeant aussi des dégâts.
|
||||||
block.tsunami.description = Tire un puissant jet de liquide aux ennemis. Peut éteindre les incendies automatiquement si elle est alimentée en eau.
|
block.tsunami.description = Tire un puissant jet de liquide aux ennemis. Peut éteindre les incendies automatiquement si elle est alimentée en eau.
|
||||||
block.silicon-crucible.description = Raffine du silicium avec du sable et du charbon en utilisant de la pyratite comme source de chaleur additionelle. Cette usine est plus efficace dans les endroits chauds.
|
block.silicon-crucible.description = Raffine du silicium avec du sable et du charbon en utilisant de la pyratite comme source de chaleur additionnelle. Cette usine est plus efficace dans les endroits chauds.
|
||||||
block.disassembler.description = Cette verion avancée du séparateur peut produire du thorium.
|
block.disassembler.description = Cette version avancée du séparateur peut produire du thorium.
|
||||||
block.overdrive-dome.description = Accélère le fonctionnement des bâtiments autour de lui. Requiert du silicium et du tissu phasé pour fonctionner.
|
block.overdrive-dome.description = Accélère le fonctionnement des bâtiments autour de lui. Requiert du silicium et du tissu phasé pour fonctionner.
|
||||||
block.payload-conveyor.description = Ce grand convoyeur peut déplacer de gros chargements, comme des unité depuis leurs usines ou bien des conteneurs.
|
block.payload-conveyor.description = Ce grand convoyeur peut déplacer de gros chargements, comme des unités depuis leurs usines ou bien des conteneurs.
|
||||||
block.payload-router.description = Distribue les chargements qui entrent jusqu'à 3 directions différentes.
|
block.payload-router.description = Distribue les chargements qui entrent jusqu'à 3 directions différentes.
|
||||||
block.command-center.description = Contrôle le comportement des unités avec plusieurs commandes différentes.
|
block.command-center.description = Contrôle le comportement des unités avec plusieurs commandes différentes.
|
||||||
block.ground-factory.description = Produit des unités terrestres. Elles peuvent être soit utilisées directement, soit envoyées vers des reconstructeurs pour être améliorées.
|
block.ground-factory.description = Produit des unités terrestres. Elles peuvent être soit utilisées directement, soit envoyées vers des reconstructeurs pour être améliorées.
|
||||||
@@ -1473,15 +1497,15 @@ block.additive-reconstructor.description = Améliore les unités entrantes au se
|
|||||||
block.multiplicative-reconstructor.description = Améliore les unités entrantes au troisième niveau.
|
block.multiplicative-reconstructor.description = Améliore les unités entrantes au troisième niveau.
|
||||||
block.exponential-reconstructor.description = Améliore les unités entrantes au quatrième niveau.
|
block.exponential-reconstructor.description = Améliore les unités entrantes au quatrième niveau.
|
||||||
block.tetrative-reconstructor.description = Améliore les unités entrantes au cinquième niveau.
|
block.tetrative-reconstructor.description = Améliore les unités entrantes au cinquième niveau.
|
||||||
block.switch.description = Un interupteur pouvant être activé/désactivé. Le statut peut être lu et controllé avec des processeurs logiques.
|
block.switch.description = Un interrupteur pouvant être activé/désactivé. Le statut peut être lu et contrôlé avec des processeurs logiques.
|
||||||
block.micro-processor.description = Exécute une séquence d'instructions en bloucle. Peut être utilisé pour controller des unités ou des bâtiments.
|
block.micro-processor.description = Exécute une séquence d'instructions en boucle. Peut être utilisé pour contrôler des unités ou des bâtiments.
|
||||||
block.logic-processor.description = Exécute une séquence d'instructions en bloucle. Peut être utilisé pour controller des unités ou des bâtiments. Plus rapide qu'un micro processeur.
|
block.logic-processor.description = Exécute une séquence d'instructions en boucle. Peut être utilisé pour contrôler des unités ou des bâtiments. Plus rapide qu'un microprocesseur.
|
||||||
block.hyper-processor.description = Exécute une séquence d'instructions en bloucle. Peut être utilisé pour controller des unités ou des bâtiments. Plus rapide qu'un processeur.
|
block.hyper-processor.description = Exécute une séquence d'instructions en boucle. Peut être utilisé pour contrôler des unités ou des bâtiments. Plus rapide qu'un processeur.
|
||||||
block.memory-cell.description = Stocke des informations pour un processeur logique.
|
block.memory-cell.description = Stocke des informations pour un processeur logique.
|
||||||
block.memory-bank.description = Stocke des informations pour un processeur logique. Possède une plus grande capacité.
|
block.memory-bank.description = Stocke des informations pour un processeur logique. Possède une plus grande capacité.
|
||||||
block.logic-display.description = Affiche des images à partir des instructions d'un processeur logique.
|
block.logic-display.description = Affiche des images à partir des instructions d'un processeur logique.
|
||||||
block.large-logic-display.description = Affiche des images à partir des instructions d'un processeur logique. Possède une plus grande résolution qu'un écran.
|
block.large-logic-display.description = Affiche des images à partir des instructions d'un processeur logique. Possède une plus grande résolution qu'un écran.
|
||||||
block.interplanetary-accelerator.description = Un énorme canon électromagnétique à rails. Accélère les Noyaux pour qu'ils échappent à la gravité de leur planète et leur permettre un déploiement interplanétaire.
|
block.interplanetary-accelerator.description = Un énorme canon électromagnétique à rails. Accélère les Noyaux pour qu'ils échappent à la gravité de leur planète et leur permettent un déploiement interplanétaire.
|
||||||
|
|
||||||
unit.dagger.description = Tire des balles normales aux ennemis proches.
|
unit.dagger.description = Tire des balles normales aux ennemis proches.
|
||||||
unit.mace.description = Tire des jets de flammes aux ennemis proches.
|
unit.mace.description = Tire des jets de flammes aux ennemis proches.
|
||||||
@@ -1507,7 +1531,7 @@ unit.mono.description = Mine automatiquement du cuivre et du plomb et le dépose
|
|||||||
unit.poly.description = Reconstruit automatiquement les structures détruites (sauf les réacteurs à thorium) et assiste les autres unités lorsqu'elles construisent.
|
unit.poly.description = Reconstruit automatiquement les structures détruites (sauf les réacteurs à thorium) et assiste les autres unités lorsqu'elles construisent.
|
||||||
unit.mega.description = Répare automatiquement les structures endommagées. Capable de transporter des blocs et de petites unités terrestres.
|
unit.mega.description = Répare automatiquement les structures endommagées. Capable de transporter des blocs et de petites unités terrestres.
|
||||||
unit.quad.description = Largue de grosses bombes sur des cibles terrestres, réparant les structures alliées et infligeant des dégâts aux ennemis. Capable de transporter des blocs et des unités terrestres de taille moyenne.
|
unit.quad.description = Largue de grosses bombes sur des cibles terrestres, réparant les structures alliées et infligeant des dégâts aux ennemis. Capable de transporter des blocs et des unités terrestres de taille moyenne.
|
||||||
unit.oct.description = Protège les alliés proches avec son champ de force auto-regénérant. Capable de transporter des blocs et de grosses unités terrestres.
|
unit.oct.description = Protège les alliés proches avec son champ de force auto-régénérant. Capable de transporter des blocs et de grosses unités terrestres.
|
||||||
unit.risso.description = Tire un barrage de missiles et de balles aux ennemis proches.
|
unit.risso.description = Tire un barrage de missiles et de balles aux ennemis proches.
|
||||||
unit.minke.description = Tire des obus et des balles normales aux ennemis proches.
|
unit.minke.description = Tire des obus et des balles normales aux ennemis proches.
|
||||||
unit.bryde.description = Tire des obus d'artillerie à longue portée et des missiles aux ennemis proches.
|
unit.bryde.description = Tire des obus d'artillerie à longue portée et des missiles aux ennemis proches.
|
||||||
@@ -1528,14 +1552,16 @@ lst.control = Contrôle un bâtiment.
|
|||||||
lst.radar = Localise des unités dans la portée d'un bâtiment.
|
lst.radar = Localise des unités dans la portée d'un bâtiment.
|
||||||
lst.sensor = Récupère des données depuis un bâtiment ou une unité.
|
lst.sensor = Récupère des données depuis un bâtiment ou une unité.
|
||||||
lst.set = Définit une variable.
|
lst.set = Définit une variable.
|
||||||
lst.operation = Éffectue une opération sur 1 ou 2 variables.
|
lst.operation = Effectue une opération sur 1 ou 2 variables.
|
||||||
lst.end = Saute au sommet de la série d’instructions.
|
lst.end = Saute au sommet de la série d’instructions.
|
||||||
lst.jump = Saute conditionnelement vers une autre instruction.
|
lst.jump = Saute conditionnellement vers une autre instruction.
|
||||||
lst.unitbind = Se lie à une unité du type donné et la stocke dans [accent]@unit[].
|
lst.unitbind = Se lie à une unité du type donné et la stocke dans [accent]@unit[].
|
||||||
lst.unitcontrol = Contrôle l'unité actuellement liée.
|
lst.unitcontrol = Contrôle l'unité actuellement liée.
|
||||||
lst.unitradar = Localise des unités dans la portée de l'unité actuellement liée.
|
lst.unitradar = Localise des unités dans la portée de l'unité actuellement liée.
|
||||||
lst.unitlocate = Localise une position ou un type spécifique de bâtiment, n'importe où sur la carte.\nRequiert une unité reliée.
|
lst.unitlocate = Localise une position ou un type spécifique de bâtiment, n'importe où sur la carte.\nRequiert une unité reliée.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Les unités contrôlées par des processeurs ne peuvent pas construire ici.
|
||||||
|
|
||||||
lenum.type = Type de bâtiment/unité.\nPar exemple, pour tout routeur, cela retournera [accent]@router[].\nPas en texte.
|
lenum.type = Type de bâtiment/unité.\nPar exemple, pour tout routeur, cela retournera [accent]@router[].\nPas en texte.
|
||||||
lenum.shoot = Tire à une position donnée.
|
lenum.shoot = Tire à une position donnée.
|
||||||
lenum.shootp = Tire à une unité/bâtiment avec la prédiction de mouvement.
|
lenum.shootp = Tire à une unité/bâtiment avec la prédiction de mouvement.
|
||||||
@@ -1543,6 +1569,10 @@ lenum.configure = La configuration d'un bâtiment. Par exemple, l'objet sélecti
|
|||||||
lenum.enabled = Retourne si le bloc est activé ou pas.
|
lenum.enabled = Retourne si le bloc est activé ou pas.
|
||||||
|
|
||||||
laccess.color = La couleur d'un illuminateur.
|
laccess.color = La couleur d'un illuminateur.
|
||||||
|
laccess.controller = Le contrôleur de l'Unité.\nSi l'Unité est contrôlée par un processeur, cela retournera le processeur en question.\nSi l'Unité est en formation, cela retournera le leader de la formation.\nSinon, renvoie l’unité elle-même.
|
||||||
|
laccess.dead = Retourne si l'Unité/Bâtiment est morte/détruit ou plus valide.
|
||||||
|
laccess.controlled = Retourne:\n[accent]@ctrlProcessor[] si le contrôleur de l'Unité est un processeur\n[accent]@ctrlPlayer[] si l'Unité/Bâtiment est contrôlé par un joueur\n[accent]@ctrlFormation[] si l'Unité est en formation\nSinon, retourne 0.
|
||||||
|
laccess.commanded = [red]Obsolète! Cette commande sera supprimée.[]\nUtilisez [accent]controlled[] à la place.
|
||||||
|
|
||||||
graphicstype.clear = Remplit l’écran d’une couleur.
|
graphicstype.clear = Remplit l’écran d’une couleur.
|
||||||
graphicstype.color = Définit une couleur pour les prochaines opérations de dessin.
|
graphicstype.color = Définit une couleur pour les prochaines opérations de dessin.
|
||||||
@@ -1551,9 +1581,9 @@ graphicstype.line = Dessine un segment de droite.
|
|||||||
graphicstype.rect = Dessine un rectangle.
|
graphicstype.rect = Dessine un rectangle.
|
||||||
graphicstype.linerect = Dessine le contour d'un rectangle.
|
graphicstype.linerect = Dessine le contour d'un rectangle.
|
||||||
graphicstype.poly = Dessine un polygone régulier.
|
graphicstype.poly = Dessine un polygone régulier.
|
||||||
graphicstype.linepoly = Dessine le contour un polygone régulier.
|
graphicstype.linepoly = Dessine le contour d'un polygone régulier.
|
||||||
graphicstype.triangle = Dessine un triangle.
|
graphicstype.triangle = Dessine un triangle.
|
||||||
graphicstype.image = Dessine une image venant du contenu du jeu.\nex: [accent]@router[] ou [accent]@dagger[].
|
graphicstype.image = Dessine une image provenant du contenu du jeu.\nexemple: [accent]@router[] ou [accent]@dagger[].
|
||||||
|
|
||||||
lenum.always = Toujours [accent]true[].
|
lenum.always = Toujours [accent]true[].
|
||||||
lenum.idiv = Division entière.
|
lenum.idiv = Division entière.
|
||||||
@@ -1574,11 +1604,11 @@ lenum.min = Le minimum des 2 nombres.
|
|||||||
lenum.max = Le maximum des 2 nombres.
|
lenum.max = Le maximum des 2 nombres.
|
||||||
lenum.angle = Angle d'un vecteur en degrés.
|
lenum.angle = Angle d'un vecteur en degrés.
|
||||||
lenum.len = Longueur d'un vecteur.
|
lenum.len = Longueur d'un vecteur.
|
||||||
lenum.sin = Sinus, en degrés.
|
lenum.sin = Calcule le Sinus, en degrés.
|
||||||
lenum.cos = Cosinus, en degrés.
|
lenum.cos = Calcule le Cosinus, en degrés.
|
||||||
lenum.tan = Tangente, en degrés.
|
lenum.tan = Calcule la Tangente, en degrés.
|
||||||
#not a typo, look up 'range notation'
|
#not a typo, look up 'range notation'
|
||||||
lenum.rand = Nombre aléatoire dans la plage [0, valeur].
|
lenum.rand = Nombre aléatoire dans la plage [0, valeur).
|
||||||
lenum.log = Logarithme naturel (ln).
|
lenum.log = Logarithme naturel (ln).
|
||||||
lenum.log10 = Logarithme de base 10.
|
lenum.log10 = Logarithme de base 10.
|
||||||
lenum.noise = Bruit simplex 2D.
|
lenum.noise = Bruit simplex 2D.
|
||||||
@@ -1592,7 +1622,7 @@ lenum.enemy = Unité ennemie.
|
|||||||
lenum.boss = Gardien.
|
lenum.boss = Gardien.
|
||||||
lenum.flying = Unité volante.
|
lenum.flying = Unité volante.
|
||||||
lenum.ground = Unité terrestre.
|
lenum.ground = Unité terrestre.
|
||||||
lenum.player = Unité controllée par un joueur.
|
lenum.player = Unité contrôlée par un joueur.
|
||||||
|
|
||||||
lenum.ore = Gisement de minerai.
|
lenum.ore = Gisement de minerai.
|
||||||
lenum.damaged = Bâtiments alliés endommagés.
|
lenum.damaged = Bâtiments alliés endommagés.
|
||||||
@@ -1630,12 +1660,13 @@ control.unit = Unité/bâtiment à viser.
|
|||||||
control.shoot = S’il faut tirer ou non.
|
control.shoot = S’il faut tirer ou non.
|
||||||
|
|
||||||
unitlocate.enemy = S'il faut détecter les bâtiments ennemis au non.
|
unitlocate.enemy = S'il faut détecter les bâtiments ennemis au non.
|
||||||
unitlocate.found = Retourne un boolean s'il l'objet a été trouvé ou non.
|
unitlocate.found = Retourne un booléen s'il l'objet a été trouvé ou non.
|
||||||
unitlocate.building = Retourne une variable pour le bâtiment localisé.
|
unitlocate.building = Retourne une variable pour le bâtiment localisé.
|
||||||
unitlocate.outx = Retourne la coordonnée X.
|
unitlocate.outx = Retourne la coordonnée X.
|
||||||
unitlocate.outy = Retourne la coordonnée Y.
|
unitlocate.outy = Retourne la coordonnée Y.
|
||||||
unitlocate.group = Le groupe de bâtiments à rechercher.
|
unitlocate.group = Le groupe de bâtiments à rechercher.
|
||||||
|
|
||||||
|
lenum.idle = L'Unité ne bouge plus, mais elle continue de construire/miner.\nL'état par défaut.
|
||||||
lenum.stop = Empêche l'unité de bouger/miner/construire.
|
lenum.stop = Empêche l'unité de bouger/miner/construire.
|
||||||
lenum.move = Bouge vers la position exacte.
|
lenum.move = Bouge vers la position exacte.
|
||||||
lenum.approach = Approche une position avec un rayon.
|
lenum.approach = Approche une position avec un rayon.
|
||||||
@@ -1649,6 +1680,10 @@ lenum.paytake = Prend un chargement à la position actuelle.
|
|||||||
lenum.flag = Drapeau numérique d'une unité.
|
lenum.flag = Drapeau numérique d'une unité.
|
||||||
lenum.mine = Mine à une position donnée.
|
lenum.mine = Mine à une position donnée.
|
||||||
lenum.build = Construit une structure.
|
lenum.build = Construit une structure.
|
||||||
lenum.getblock = Récupère des données sur un bâtiment et son type aux coordonnées données.\nL'unité doit se trouver dans la portée de la position.\nLes blocs solides qui ne sont pas des bâtiments auront le type [accent]@solid[].
|
lenum.getblock = Récupére des données sur un bâtiment et son type aux coordonnées données.\nL'unité doit se trouver dans la portée de la position.\nLes blocs solides qui ne sont pas des bâtiments auront le type [accent]@solid[].
|
||||||
lenum.within = Vérifie si l'unité est près de la position.
|
lenum.within = Vérifie si l'unité est près de la position.
|
||||||
lenum.boost = Active/Désactive le boost.
|
lenum.boost = Active/Désactive le boost.
|
||||||
|
|
||||||
|
#Added French translations
|
||||||
|
lenum.floor = Retourne le plus grand nombre entier,\nqui est inférieur ou égal au nombre donné (12.5 -> 12).
|
||||||
|
lenum.ceil = Retourne le nombre entier le plus petit,\nsupérieur ou égal au nombre donné (12.5 -> 13).
|
||||||
|
|||||||
@@ -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 = 모드를 삭제할 수 없습니다. 파일이 사용 중일 수 있습니다.
|
||||||
@@ -619,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 = 기본값으로 초기화
|
||||||
@@ -655,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 = 피해량
|
||||||
@@ -716,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 = 수리 필드
|
||||||
@@ -751,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]배 발사 속도
|
||||||
|
|
||||||
@@ -923,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 = 콘솔
|
||||||
@@ -991,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 = 구리
|
||||||
@@ -1459,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 = 공중 목표물을 끌어오는 견인 광선을 발사하며, 견인 과정에서 데미지를 줍니다.
|
||||||
|
|||||||
@@ -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ż mikroprocesor.
|
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.
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -439,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
|
||||||
@@ -449,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.
|
||||||
|
|
||||||
@@ -619,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ă
|
||||||
@@ -652,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ță
|
||||||
@@ -716,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
|
||||||
@@ -749,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
|
||||||
|
|
||||||
@@ -923,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ă
|
||||||
@@ -991,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
|
||||||
@@ -1339,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.
|
||||||
@@ -1459,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.
|
||||||
@@ -1499,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ă.
|
||||||
|
|||||||
@@ -388,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 = Подробности…
|
||||||
@@ -530,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Вы уверены, что адрес введён корректно?
|
||||||
@@ -620,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 = Сбросить по умолчанию
|
||||||
@@ -656,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 = Урон
|
||||||
@@ -717,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 = Ремонтирующее поле
|
||||||
@@ -752,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 скорость стрельбы
|
||||||
|
|
||||||
@@ -924,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 = Консоль
|
||||||
@@ -957,10 +975,10 @@ 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.unitcapvariable = Ядра увеличивают лимит единиц
|
||||||
rules.unitcap = Начальный лимит единиц
|
rules.unitcap = Начальный лимит единиц
|
||||||
@@ -992,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 = Медь
|
||||||
|
|||||||
@@ -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 = Почати чи зупинити політ.
|
||||||
|
|||||||
@@ -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](需要重新啟動遊戲)[]
|
||||||
@@ -987,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 = 銅
|
||||||
@@ -1455,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 = 發射牽引光束,牽引空中目標,並在此過程中損壞它們。
|
||||||
@@ -1536,6 +1559,8 @@ 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 = 對指定單位/建築開火,具自瞄功能
|
||||||
@@ -1543,10 +1568,14 @@ lenum.configure = 建築設定,如分類器、兵器工廠
|
|||||||
lenum.enabled = 確認該建築是否啟用
|
lenum.enabled = 確認該建築是否啟用
|
||||||
|
|
||||||
laacess.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.clear = 重製版面為指定顏色
|
||||||
graphicstype.color = 為接下來的圖畫指令設定顏色
|
graphicstype.color = 為後續所有圖畫指令設定顏色
|
||||||
graphicstype.stroke = 為接下來的圖畫指令設定直線寬度
|
graphicstype.stroke = 為後續所有圖畫指令設定直線寬度
|
||||||
graphicstype.line = 畫一直線
|
graphicstype.line = 畫一直線
|
||||||
graphicstype.rect = 畫實心長方形
|
graphicstype.rect = 畫實心長方形
|
||||||
graphicstype.linerect = 畫空心長方形
|
graphicstype.linerect = 畫空心長方形
|
||||||
@@ -1636,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
|
||||||
|
|||||||
@@ -143,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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -228,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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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){
|
||||||
|
|||||||
@@ -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)));
|
||||||
});
|
});
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -364,6 +365,7 @@ public class UnitTypes implements ContentList{
|
|||||||
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;
|
||||||
@@ -411,11 +413,12 @@ public class UnitTypes implements ContentList{
|
|||||||
mechStepShake = 0.15f;
|
mechStepShake = 0.15f;
|
||||||
ammoType = AmmoTypes.powerHigh;
|
ammoType = AmmoTypes.powerHigh;
|
||||||
|
|
||||||
speed = 0.38f;
|
speed = 0.39f;
|
||||||
boostMultiplier = 2.2f;
|
boostMultiplier = 2.2f;
|
||||||
engineOffset = 12f;
|
engineOffset = 12f;
|
||||||
engineSize = 6f;
|
engineSize = 6f;
|
||||||
lowAltitude = true;
|
lowAltitude = true;
|
||||||
|
riseSpeed = 0.02f;
|
||||||
|
|
||||||
health = 7500f;
|
health = 7500f;
|
||||||
armor = 9f;
|
armor = 9f;
|
||||||
@@ -442,7 +445,7 @@ public class UnitTypes implements ContentList{
|
|||||||
cooldownTime = 200f;
|
cooldownTime = 200f;
|
||||||
|
|
||||||
bullet = new ContinuousLaserBulletType(){{
|
bullet = new ContinuousLaserBulletType(){{
|
||||||
damage = 28f;
|
damage = 30f;
|
||||||
length = 175f;
|
length = 175f;
|
||||||
hitEffect = Fx.hitMeltHeal;
|
hitEffect = Fx.hitMeltHeal;
|
||||||
drawSize = 420f;
|
drawSize = 420f;
|
||||||
@@ -453,7 +456,7 @@ public class UnitTypes implements ContentList{
|
|||||||
|
|
||||||
shootEffect = Fx.greenLaserChargeSmall;
|
shootEffect = Fx.greenLaserChargeSmall;
|
||||||
|
|
||||||
incendChance = 0.09f;
|
incendChance = 0.1f;
|
||||||
incendSpread = 5f;
|
incendSpread = 5f;
|
||||||
incendAmount = 1;
|
incendAmount = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -139,7 +139,9 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
Events.on(UnlockEvent.class, e -> {
|
Events.on(UnlockEvent.class, e -> {
|
||||||
|
if(e.content.showUnlock()){
|
||||||
ui.hudfrag.showUnlock(e.content);
|
ui.hudfrag.showUnlock(e.content);
|
||||||
|
}
|
||||||
|
|
||||||
checkAutoUnlocks();
|
checkAutoUnlocks();
|
||||||
|
|
||||||
@@ -429,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()){
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ public class NetClient implements ApplicationListener{
|
|||||||
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
|
//do not receive chat messages from clients that are too young or not registered
|
||||||
if(Time.timeSinceMillis(player.con.connectTime) < 500 || !player.con.hasConnected || !player.isAdded()) return;
|
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.");
|
||||||
@@ -198,6 +198,12 @@ public class NetClient implements ApplicationListener{
|
|||||||
|
|
||||||
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
|
||||||
@@ -209,7 +215,7 @@ public class NetClient implements ApplicationListener{
|
|||||||
|
|
||||||
//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
|
||||||
@@ -219,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){
|
||||||
|
|||||||
@@ -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("/");
|
||||||
@@ -464,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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -656,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;
|
||||||
|
|
||||||
@@ -734,8 +736,8 @@ public class NetServer implements ApplicationListener{
|
|||||||
logic.skipWave();
|
logic.skipWave();
|
||||||
info("&lc@ has skipped the wave.", player.name);
|
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){
|
||||||
@@ -967,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);
|
||||||
|
|||||||
@@ -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){
|
||||||
|
|||||||
@@ -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())){
|
||||||
|
|||||||
@@ -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){
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.*;
|
||||||
@@ -940,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;
|
||||||
@@ -1360,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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,7 @@ 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, buildSpeedMultiplier = 1;
|
@ReadOnly transient float speedMultiplier = 1, damageMultiplier = 1, healthMultiplier = 1, reloadMultiplier = 1, buildSpeedMultiplier = 1, dragMultiplier = 1;
|
||||||
@ReadOnly transient boolean disarmed = false;
|
@ReadOnly transient boolean disarmed = false;
|
||||||
|
|
||||||
@Import UnitType type;
|
@Import UnitType type;
|
||||||
@@ -33,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 ++){
|
||||||
@@ -111,7 +116,7 @@ abstract class StatusComp implements Posc, Flyingc{
|
|||||||
}
|
}
|
||||||
|
|
||||||
applied.clear();
|
applied.clear();
|
||||||
speedMultiplier = damageMultiplier = healthMultiplier = reloadMultiplier = buildSpeedMultiplier = 1f;
|
speedMultiplier = damageMultiplier = healthMultiplier = reloadMultiplier = buildSpeedMultiplier = dragMultiplier = 1f;
|
||||||
disarmed = false;
|
disarmed = false;
|
||||||
|
|
||||||
if(statuses.isEmpty()) return;
|
if(statuses.isEmpty()) return;
|
||||||
@@ -135,6 +140,7 @@ abstract class StatusComp implements Posc, Flyingc{
|
|||||||
damageMultiplier *= entry.effect.damageMultiplier;
|
damageMultiplier *= entry.effect.damageMultiplier;
|
||||||
reloadMultiplier *= entry.effect.reloadMultiplier;
|
reloadMultiplier *= entry.effect.reloadMultiplier;
|
||||||
buildSpeedMultiplier *= entry.effect.buildSpeedMultiplier;
|
buildSpeedMultiplier *= entry.effect.buildSpeedMultiplier;
|
||||||
|
dragMultiplier *= entry.effect.dragMultiplier;
|
||||||
|
|
||||||
disarmed |= entry.effect.disarm;
|
disarmed |= entry.effect.disarm;
|
||||||
|
|
||||||
|
|||||||
@@ -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, disarmed;
|
@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;
|
||||||
@@ -140,9 +141,9 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
case mineY -> mining() ? mineTile.y : -1;
|
case mineY -> mining() ? mineTile.y : -1;
|
||||||
case flag -> flag;
|
case flag -> flag;
|
||||||
case controlled -> !isValid() ? 0 :
|
case controlled -> !isValid() ? 0 :
|
||||||
controller instanceof LogicAI ? GlobalConstants.ctrlProcessor :
|
controller instanceof LogicAI ? ctrlProcessor :
|
||||||
controller instanceof Player ? GlobalConstants.ctrlPlayer :
|
controller instanceof Player ? ctrlPlayer :
|
||||||
controller instanceof FormationAI ? GlobalConstants.ctrlFormation :
|
controller instanceof FormationAI ? ctrlFormation :
|
||||||
0;
|
0;
|
||||||
case commanded -> controller instanceof FormationAI && isValid() ? 1 : 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;
|
||||||
@@ -164,7 +165,6 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
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
|
||||||
@@ -186,6 +186,10 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
return !disarmed && !(type.canBoost && isFlying());
|
return !disarmed && !(type.canBoost && isFlying());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isCounted(){
|
||||||
|
return type.isCounted;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int itemCapacity(){
|
public int itemCapacity(){
|
||||||
return type.itemCapacity;
|
return type.itemCapacity;
|
||||||
@@ -325,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())){
|
||||||
|
|||||||
@@ -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(){
|
||||||
|
|||||||
@@ -419,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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,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");
|
||||||
|
|||||||
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package mindustry.graphics;
|
|||||||
import arc.*;
|
import arc.*;
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
import arc.graphics.Texture.*;
|
import arc.graphics.Texture.*;
|
||||||
import arc.graphics.VertexAttributes.*;
|
|
||||||
import arc.graphics.gl.*;
|
import arc.graphics.gl.*;
|
||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
@@ -60,9 +59,7 @@ public class CubemapMesh implements Disposable{
|
|||||||
public CubemapMesh(Cubemap map){
|
public CubemapMesh(Cubemap map){
|
||||||
this.map = map;
|
this.map = map;
|
||||||
this.map.setFilter(TextureFilter.linear);
|
this.map.setFilter(TextureFilter.linear);
|
||||||
this.mesh = new Mesh(true, vertices.length, 0,
|
this.mesh = new Mesh(true, vertices.length, 0, VertexAttribute.position3);
|
||||||
new VertexAttribute(Usage.position, 3, "a_position")
|
|
||||||
);
|
|
||||||
mesh.getVerticesBuffer().limit(vertices.length);
|
mesh.getVerticesBuffer().limit(vertices.length);
|
||||||
mesh.getVerticesBuffer().put(vertices, 0, vertices.length);
|
mesh.getVerticesBuffer().put(vertices, 0, vertices.length);
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ import java.util.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class FloorRenderer implements Disposable{
|
public class FloorRenderer implements Disposable{
|
||||||
private static final int chunksize = mobile ? 16 : 32;
|
private static final int chunksize = mobile ? 16 : 32, chunkunits = chunksize * tilesize;
|
||||||
|
private static final float pad = tilesize/2f;
|
||||||
|
|
||||||
private int[][][] cache;
|
private int[][][] cache;
|
||||||
private MultiCacheBatch cbatch;
|
private MultiCacheBatch cbatch;
|
||||||
@@ -43,11 +44,11 @@ public class FloorRenderer implements Disposable{
|
|||||||
|
|
||||||
Camera camera = Core.camera;
|
Camera camera = Core.camera;
|
||||||
|
|
||||||
int crangex = (int)(camera.width / (chunksize * tilesize)) + 1;
|
int
|
||||||
int crangey = (int)(camera.height / (chunksize * tilesize)) + 1;
|
minx = (int)((camera.position.x - camera.width/2f - pad) / chunkunits),
|
||||||
|
miny = (int)((camera.position.y - camera.height/2f - pad) / chunkunits),
|
||||||
int camx = (int)(camera.position.x / (chunksize * tilesize));
|
maxx = Mathf.ceil((camera.position.x + camera.width/2f + pad) / chunkunits),
|
||||||
int camy = (int)(camera.position.y / (chunksize * tilesize));
|
maxy = Mathf.ceil((camera.position.y + camera.height/2f + pad) / chunkunits);
|
||||||
|
|
||||||
int layers = CacheLayer.all.length;
|
int layers = CacheLayer.all.length;
|
||||||
|
|
||||||
@@ -55,15 +56,12 @@ public class FloorRenderer implements Disposable{
|
|||||||
drawnLayerSet.clear();
|
drawnLayerSet.clear();
|
||||||
|
|
||||||
//preliminary layer check
|
//preliminary layer check
|
||||||
for(int x = -crangex; x <= crangex; x++){
|
for(int x = minx; x <= maxx; x++){
|
||||||
for(int y = -crangey; y <= crangey; y++){
|
for(int y = miny; y <= maxy; y++){
|
||||||
int worldx = camx + x;
|
|
||||||
int worldy = camy + y;
|
|
||||||
|
|
||||||
if(!Structs.inBounds(worldx, worldy, cache))
|
if(!Structs.inBounds(x, y, cache)) continue;
|
||||||
continue;
|
|
||||||
|
|
||||||
int[] chunk = cache[worldx][worldy];
|
int[] chunk = cache[x][y];
|
||||||
|
|
||||||
//loop through all layers, and add layer index if it exists
|
//loop through all layers, and add layer index if it exists
|
||||||
for(int i = 0; i < layers; i++){
|
for(int i = 0; i < layers; i++){
|
||||||
@@ -141,21 +139,22 @@ public class FloorRenderer implements Disposable{
|
|||||||
|
|
||||||
Camera camera = Core.camera;
|
Camera camera = Core.camera;
|
||||||
|
|
||||||
int crangex = (int)(camera.width / (chunksize * tilesize)) + 1;
|
int
|
||||||
int crangey = (int)(camera.height / (chunksize * tilesize)) + 1;
|
minx = (int)((camera.position.x - camera.width/2f - pad) / chunkunits),
|
||||||
|
miny = (int)((camera.position.y - camera.height/2f - pad) / chunkunits),
|
||||||
|
maxx = Mathf.ceil((camera.position.x + camera.width/2f + pad) / chunkunits),
|
||||||
|
maxy = Mathf.ceil((camera.position.y + camera.height/2f + pad) / chunkunits);
|
||||||
|
|
||||||
layer.begin();
|
layer.begin();
|
||||||
|
|
||||||
for(int x = -crangex; x <= crangex; x++){
|
for(int x = minx; x <= maxx; x++){
|
||||||
for(int y = -crangey; y <= crangey; y++){
|
for(int y = miny; y <= maxy; y++){
|
||||||
int worldx = (int)(camera.position.x / (chunksize * tilesize)) + x;
|
|
||||||
int worldy = (int)(camera.position.y / (chunksize * tilesize)) + y;
|
|
||||||
|
|
||||||
if(!Structs.inBounds(worldx, worldy, cache)){
|
if(!Structs.inBounds(x, y, cache)){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int[] chunk = cache[worldx][worldy];
|
int[] chunk = cache[x][y];
|
||||||
if(chunk[layer.ordinal()] == -1) continue;
|
if(chunk[layer.ordinal()] == -1) continue;
|
||||||
cbatch.drawCache(chunk[layer.ordinal()]);
|
cbatch.drawCache(chunk[layer.ordinal()]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package mindustry.graphics;
|
package mindustry.graphics;
|
||||||
|
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
import arc.graphics.VertexAttributes.*;
|
|
||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
import arc.graphics.gl.*;
|
import arc.graphics.gl.*;
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
@@ -200,9 +199,9 @@ public class IndexedRenderer implements Disposable{
|
|||||||
if(mesh != null) mesh.dispose();
|
if(mesh != null) mesh.dispose();
|
||||||
|
|
||||||
mesh = new Mesh(true, 6 * sprites, 0,
|
mesh = new Mesh(true, 6 * sprites, 0,
|
||||||
new VertexAttribute(Usage.position, 2, "a_position"),
|
VertexAttribute.position,
|
||||||
new VertexAttribute(Usage.colorPacked, 4, "a_color"),
|
VertexAttribute.color,
|
||||||
new VertexAttribute(Usage.textureCoordinates, 2, "a_texCoord0"));
|
VertexAttribute.texCoords);
|
||||||
vertices = new float[6 * sprites * vsize];
|
vertices = new float[6 * sprites * vsize];
|
||||||
mesh.setVertices(vertices);
|
mesh.setVertices(vertices);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class MenuRenderer implements Disposable{
|
|||||||
Time.mark();
|
Time.mark();
|
||||||
generate();
|
generate();
|
||||||
cache();
|
cache();
|
||||||
Log.info("Time to generate menu: @", Time.elapsed());
|
Log.debug("Time to generate menu: @", Time.elapsed());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void generate(){
|
private void generate(){
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import mindustry.world.*;
|
|||||||
|
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class MinimapRenderer implements Disposable{
|
public class MinimapRenderer{
|
||||||
private static final float baseSize = 16f;
|
private static final float baseSize = 16f;
|
||||||
private final Seq<Unit> units = new Seq<>();
|
private final Seq<Unit> units = new Seq<>();
|
||||||
private Pixmap pixmap;
|
private Pixmap pixmap;
|
||||||
@@ -170,16 +170,6 @@ public class MinimapRenderer implements Disposable{
|
|||||||
return color.rgba();
|
return color.rgba();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void dispose(){
|
|
||||||
if(pixmap != null && texture != null){
|
|
||||||
pixmap.dispose();
|
|
||||||
texture.dispose();
|
|
||||||
texture = null;
|
|
||||||
pixmap = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void drawLabel(float x, float y, String text, Color color){
|
public void drawLabel(float x, float y, String text, Color color){
|
||||||
Font font = Fonts.outline;
|
Font font = Fonts.outline;
|
||||||
GlyphLayout l = Pools.obtain(GlyphLayout.class, GlyphLayout::new);
|
GlyphLayout l = Pools.obtain(GlyphLayout.class, GlyphLayout::new);
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package mindustry.graphics.g3d;
|
package mindustry.graphics.g3d;
|
||||||
|
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
import arc.graphics.VertexAttributes.*;
|
|
||||||
import arc.graphics.gl.*;
|
|
||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
import mindustry.graphics.g3d.PlanetGrid.*;
|
import mindustry.graphics.g3d.PlanetGrid.*;
|
||||||
|
|
||||||
@@ -92,9 +90,9 @@ public class MeshBuilder{
|
|||||||
|
|
||||||
private static void begin(int count){
|
private static void begin(int count){
|
||||||
mesh = new Mesh(true, count, 0,
|
mesh = new Mesh(true, count, 0,
|
||||||
new VertexAttribute(Usage.position, 3, Shader.positionAttribute),
|
VertexAttribute.position3,
|
||||||
new VertexAttribute(Usage.normal, 3, Shader.normalAttribute),
|
VertexAttribute.normal,
|
||||||
new VertexAttribute(Usage.colorPacked, 4, Shader.colorAttribute)
|
VertexAttribute.color
|
||||||
);
|
);
|
||||||
|
|
||||||
mesh.getVerticesBuffer().limit(mesh.getMaxVertices());
|
mesh.getVerticesBuffer().limit(mesh.getMaxVertices());
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ public enum Binding implements KeyBind{
|
|||||||
minimap(KeyCode.m),
|
minimap(KeyCode.m),
|
||||||
research(KeyCode.b),
|
research(KeyCode.b),
|
||||||
planet_map(KeyCode.n),
|
planet_map(KeyCode.n),
|
||||||
|
block_info(KeyCode.f1),
|
||||||
toggle_menus(KeyCode.c),
|
toggle_menus(KeyCode.c),
|
||||||
screenshot(KeyCode.p),
|
screenshot(KeyCode.p),
|
||||||
toggle_power_lines(KeyCode.f5),
|
toggle_power_lines(KeyCode.f5),
|
||||||
|
|||||||
@@ -259,6 +259,13 @@ public class DesktopInput extends InputHandler{
|
|||||||
renderer.scaleCamera(Core.input.axisTap(Binding.zoom));
|
renderer.scaleCamera(Core.input.axisTap(Binding.zoom));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(Core.input.keyTap(Binding.select) && !Core.scene.hasMouse()){
|
||||||
|
Tile selected = world.tileWorld(input.mouseWorldX(), input.mouseWorldY());
|
||||||
|
if(selected != null){
|
||||||
|
Call.tileTap(player, selected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(player.dead()){
|
if(player.dead()){
|
||||||
cursorType = SystemCursor.arrow;
|
cursorType = SystemCursor.arrow;
|
||||||
return;
|
return;
|
||||||
@@ -470,10 +477,6 @@ public class DesktopInput extends InputHandler{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(Core.input.keyTap(Binding.select) && !Core.scene.hasMouse()){
|
if(Core.input.keyTap(Binding.select) && !Core.scene.hasMouse()){
|
||||||
if(selected != null){
|
|
||||||
Call.tileTap(player, selected);
|
|
||||||
}
|
|
||||||
|
|
||||||
BuildPlan req = getRequest(cursorX, cursorY);
|
BuildPlan req = getRequest(cursorX, cursorY);
|
||||||
|
|
||||||
if(Core.input.keyDown(Binding.break_block)){
|
if(Core.input.keyDown(Binding.break_block)){
|
||||||
|
|||||||
@@ -189,10 +189,9 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
|
|
||||||
@Remote(targets = Loc.both, called = Loc.server)
|
@Remote(targets = Loc.both, called = Loc.server)
|
||||||
public static void requestUnitPayload(Player player, Unit target){
|
public static void requestUnitPayload(Player player, Unit target){
|
||||||
if(player == null) return;
|
if(player == null || !(player.unit() instanceof Payloadc pay)) return;
|
||||||
|
|
||||||
Unit unit = player.unit();
|
Unit unit = player.unit();
|
||||||
Payloadc pay = (Payloadc)unit;
|
|
||||||
|
|
||||||
if(target.isAI() && target.isGrounded() && pay.canPickup(target)
|
if(target.isAI() && target.isGrounded() && pay.canPickup(target)
|
||||||
&& target.within(unit, unit.type.hitSize * 2f + target.type.hitSize * 2f)){
|
&& target.within(unit, unit.type.hitSize * 2f + target.type.hitSize * 2f)){
|
||||||
@@ -202,10 +201,9 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
|
|
||||||
@Remote(targets = Loc.both, called = Loc.server)
|
@Remote(targets = Loc.both, called = Loc.server)
|
||||||
public static void requestBuildPayload(Player player, Building build){
|
public static void requestBuildPayload(Player player, Building build){
|
||||||
if(player == null) return;
|
if(player == null || !(player.unit() instanceof Payloadc pay)) return;
|
||||||
|
|
||||||
Unit unit = player.unit();
|
Unit unit = player.unit();
|
||||||
Payloadc pay = (Payloadc)unit;
|
|
||||||
|
|
||||||
if(build != null && build.team == unit.team
|
if(build != null && build.team == unit.team
|
||||||
&& unit.within(build, tilesize * build.block.size * 1.2f + tilesize * 5f)){
|
&& unit.within(build, tilesize * build.block.size * 1.2f + tilesize * 5f)){
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ public class Placement{
|
|||||||
|
|
||||||
public static void calculateBridges(Seq<BuildPlan> plans, ItemBridge bridge){
|
public static void calculateBridges(Seq<BuildPlan> plans, ItemBridge bridge){
|
||||||
//check for orthogonal placement + unlocked state
|
//check for orthogonal placement + unlocked state
|
||||||
if(!(plans.first().x == plans.peek().x || plans.first().y == plans.peek().y || !bridge.unlockedNow())){
|
if(!(plans.first().x == plans.peek().x || plans.first().y == plans.peek().y) || !bridge.unlockedNow()){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -208,9 +208,7 @@ public class JsonIO{
|
|||||||
static class CustomJson extends Json{
|
static class CustomJson extends Json{
|
||||||
private Object baseObject;
|
private Object baseObject;
|
||||||
|
|
||||||
{
|
{ apply(this); }
|
||||||
apply(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T fromJson(Class<T> type, String json){
|
public <T> T fromJson(Class<T> type, String json){
|
||||||
|
|||||||
@@ -92,6 +92,9 @@ public class TypeIO{
|
|||||||
}else if(object instanceof UnitCommand c){
|
}else if(object instanceof UnitCommand c){
|
||||||
write.b((byte)15);
|
write.b((byte)15);
|
||||||
write.b(c.ordinal());
|
write.b(c.ordinal());
|
||||||
|
}else if(object instanceof BuildingBox b){
|
||||||
|
write.b(12);
|
||||||
|
write.i(b.pos);
|
||||||
}else{
|
}else{
|
||||||
throw new IllegalArgumentException("Unknown object type: " + object.getClass());
|
throw new IllegalArgumentException("Unknown object type: " + object.getClass());
|
||||||
}
|
}
|
||||||
@@ -99,6 +102,12 @@ public class TypeIO{
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static Object readObject(Reads read){
|
public static Object readObject(Reads read){
|
||||||
|
return readObjectBoxed(read, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Reads an object, but boxes buildings. */
|
||||||
|
@Nullable
|
||||||
|
public static Object readObjectBoxed(Reads read, boolean box){
|
||||||
byte type = read.b();
|
byte type = read.b();
|
||||||
switch(type){
|
switch(type){
|
||||||
case 0: return null;
|
case 0: return null;
|
||||||
@@ -113,7 +122,7 @@ public class TypeIO{
|
|||||||
case 9: return TechTree.getNotNull(content.getByID(ContentType.all[read.b()], read.s()));
|
case 9: return TechTree.getNotNull(content.getByID(ContentType.all[read.b()], read.s()));
|
||||||
case 10: return read.bool();
|
case 10: return read.bool();
|
||||||
case 11: return read.d();
|
case 11: return read.d();
|
||||||
case 12: return world.build(read.i());
|
case 12: return !box ? world.build(read.i()) : new BuildingBox(read.i());
|
||||||
case 13: return LAccess.all[read.s()];
|
case 13: return LAccess.all[read.s()];
|
||||||
case 14: int blen = read.i(); byte[] bytes = new byte[blen]; read.b(bytes); return bytes;
|
case 14: int blen = read.i(); byte[] bytes = new byte[blen]; read.b(bytes); return bytes;
|
||||||
case 15: return UnitCommand.all[read.b()];
|
case 15: return UnitCommand.all[read.b()];
|
||||||
@@ -600,4 +609,13 @@ public class TypeIO{
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Representes a building that has not been resolved yet. */
|
||||||
|
public static class BuildingBox{
|
||||||
|
public int pos;
|
||||||
|
|
||||||
|
public BuildingBox(int pos){
|
||||||
|
this.pos = pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,13 +50,11 @@ public enum LAccess{
|
|||||||
enabled("to"), //"to" is standard for single parameter access
|
enabled("to"), //"to" is standard for single parameter access
|
||||||
shoot("x", "y", "shoot"),
|
shoot("x", "y", "shoot"),
|
||||||
shootp(true, "unit", "shoot"),
|
shootp(true, "unit", "shoot"),
|
||||||
configure(true, 30, "to"),
|
configure(true, "to"),
|
||||||
color("r", "g", "b");
|
color("r", "g", "b");
|
||||||
|
|
||||||
public final String[] params;
|
public final String[] params;
|
||||||
public final boolean isObj;
|
public final boolean isObj;
|
||||||
/** Tick cooldown between invocations. */
|
|
||||||
public float cooldown = -1;
|
|
||||||
|
|
||||||
public static final LAccess[]
|
public static final LAccess[]
|
||||||
all = values(),
|
all = values(),
|
||||||
@@ -73,9 +71,4 @@ public enum LAccess{
|
|||||||
isObj = obj;
|
isObj = obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAccess(boolean obj, float cooldown, String... params){
|
|
||||||
this.params = params;
|
|
||||||
this.cooldown = cooldown;
|
|
||||||
isObj = obj;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,19 +4,14 @@ import arc.func.*;
|
|||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.gen.*;
|
|
||||||
import mindustry.logic.LExecutor.*;
|
import mindustry.logic.LExecutor.*;
|
||||||
import mindustry.logic.LStatements.*;
|
|
||||||
|
|
||||||
/** "Compiles" a sequence of statements into instructions. */
|
/** "Compiles" a sequence of statements into instructions. */
|
||||||
public class LAssembler{
|
public class LAssembler{
|
||||||
public static ObjectMap<String, Func<String[], LStatement>> customParsers = new ObjectMap<>();
|
public static ObjectMap<String, Func<String[], LStatement>> customParsers = new ObjectMap<>();
|
||||||
public static final int maxTokenLength = 36;
|
public static final int maxTokenLength = 36;
|
||||||
|
|
||||||
private static final StringMap opNameChanges = StringMap.of(
|
private static final int invalidNum = Integer.MIN_VALUE;
|
||||||
"atan2", "angle",
|
|
||||||
"dst", "len"
|
|
||||||
);
|
|
||||||
|
|
||||||
private int lastVar;
|
private int lastVar;
|
||||||
/** Maps names to variable IDs. */
|
/** Maps names to variable IDs. */
|
||||||
@@ -37,10 +32,10 @@ public class LAssembler{
|
|||||||
putConst("@tick", 0);
|
putConst("@tick", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LAssembler assemble(String data, int maxInstructions){
|
public static LAssembler assemble(String data){
|
||||||
LAssembler asm = new LAssembler();
|
LAssembler asm = new LAssembler();
|
||||||
|
|
||||||
Seq<LStatement> st = read(data, maxInstructions);
|
Seq<LStatement> st = read(data);
|
||||||
|
|
||||||
asm.instructions = st.map(l -> l.build(asm)).filter(l -> l != null).toArray(LInstruction.class);
|
asm.instructions = st.map(l -> l.build(asm)).filter(l -> l != null).toArray(LInstruction.class);
|
||||||
return asm;
|
return asm;
|
||||||
@@ -57,107 +52,7 @@ public class LAssembler{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Seq<LStatement> read(String data){
|
public static Seq<LStatement> read(String data){
|
||||||
return read(data, LExecutor.maxInstructions);
|
return LParser.parse(data);
|
||||||
}
|
|
||||||
|
|
||||||
public static Seq<LStatement> read(String data, int max){
|
|
||||||
//empty data check
|
|
||||||
if(data == null || data.isEmpty()) return new Seq<>();
|
|
||||||
|
|
||||||
Seq<LStatement> statements = new Seq<>();
|
|
||||||
String[] lines = data.split("\n");
|
|
||||||
int index = 0;
|
|
||||||
for(String line : lines){
|
|
||||||
if(line.isEmpty()) continue;
|
|
||||||
//remove trailing semicolons in case someone adds them in for no reason
|
|
||||||
if(line.endsWith(";")) line = line.substring(0, line.length() - 1);
|
|
||||||
|
|
||||||
if(index++ > max) break;
|
|
||||||
|
|
||||||
line = line.replace("\t", "").trim();
|
|
||||||
|
|
||||||
try{
|
|
||||||
String[] arr;
|
|
||||||
if(line.startsWith("#")) continue;
|
|
||||||
|
|
||||||
//yes, I am aware that this can be split with regex, but that's slow and even more incomprehensible
|
|
||||||
if(line.contains(" ")){
|
|
||||||
Seq<String> tokens = new Seq<>();
|
|
||||||
boolean inString = false;
|
|
||||||
int lastIdx = 0;
|
|
||||||
|
|
||||||
for(int i = 0; i < line.length() + 1; i++){
|
|
||||||
char c = i == line.length() ? ' ' : line.charAt(i);
|
|
||||||
if(c == '#' && !inString){
|
|
||||||
break;
|
|
||||||
}else if(c == '"'){
|
|
||||||
inString = !inString;
|
|
||||||
}else if(c == ' ' && !inString){
|
|
||||||
tokens.add(line.substring(lastIdx, Math.min(i, lastIdx + maxTokenLength)));
|
|
||||||
lastIdx = i + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
arr = tokens.toArray(String.class);
|
|
||||||
}else{
|
|
||||||
arr = new String[]{line};
|
|
||||||
}
|
|
||||||
|
|
||||||
//nothing found
|
|
||||||
if(arr.length == 0) continue;
|
|
||||||
|
|
||||||
String type = arr[0];
|
|
||||||
|
|
||||||
//legacy stuff
|
|
||||||
if(type.equals("bop")){
|
|
||||||
arr[0] = "op";
|
|
||||||
|
|
||||||
//field order for bop used to be op a, b, result, but now it's op result a b
|
|
||||||
String res = arr[4];
|
|
||||||
arr[4] = arr[3];
|
|
||||||
arr[3] = arr[2];
|
|
||||||
arr[2] = res;
|
|
||||||
}else if(type.equals("uop")){
|
|
||||||
arr[0] = "op";
|
|
||||||
|
|
||||||
if(arr[1].equals("negate")){
|
|
||||||
arr = new String[]{
|
|
||||||
"op", "mul", arr[3], arr[2], "-1"
|
|
||||||
};
|
|
||||||
}else{
|
|
||||||
//field order for uop used to be op a, result, but now it's op result a
|
|
||||||
String res = arr[3];
|
|
||||||
arr[3] = arr[2];
|
|
||||||
arr[2] = res;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//fix up changed operaiton names
|
|
||||||
if(type.equals("op")){
|
|
||||||
arr[1] = opNameChanges.get(arr[1], arr[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
LStatement st = LogicIO.read(arr);
|
|
||||||
|
|
||||||
if(st != null){
|
|
||||||
statements.add(st);
|
|
||||||
}else{
|
|
||||||
//attempt parsing using custom parser if a match is found - this is for mods
|
|
||||||
String first = arr[0];
|
|
||||||
if(customParsers.containsKey(first)){
|
|
||||||
statements.add(customParsers.get(first).get(arr));
|
|
||||||
}else{
|
|
||||||
//unparseable statement
|
|
||||||
statements.add(new InvalidStatement());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}catch(Exception parseFailed){
|
|
||||||
parseFailed.printStackTrace();
|
|
||||||
//when parsing fails, add a dummy invalid statement
|
|
||||||
statements.add(new InvalidStatement());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return statements;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return a variable ID by name.
|
/** @return a variable ID by name.
|
||||||
@@ -172,30 +67,29 @@ public class LAssembler{
|
|||||||
symbol = symbol.trim();
|
symbol = symbol.trim();
|
||||||
|
|
||||||
//string case
|
//string case
|
||||||
if(symbol.startsWith("\"") && symbol.endsWith("\"")){
|
if(!symbol.isEmpty() && symbol.charAt(0) == '\"' && symbol.charAt(symbol.length() - 1) == '\"'){
|
||||||
return putConst("___" + symbol, symbol.substring(1, symbol.length() - 1).replace("\\n", "\n")).id;
|
return putConst("___" + symbol, symbol.substring(1, symbol.length() - 1).replace("\\n", "\n")).id;
|
||||||
}
|
}
|
||||||
|
|
||||||
//remove spaces for non-strings
|
//remove spaces for non-strings
|
||||||
symbol = symbol.replace(' ', '_');
|
symbol = symbol.replace(' ', '_');
|
||||||
|
|
||||||
try{
|
|
||||||
double value = parseDouble(symbol);
|
double value = parseDouble(symbol);
|
||||||
if(Double.isNaN(value) || Double.isInfinite(value)) value = 0;
|
|
||||||
|
|
||||||
|
if(value == invalidNum){
|
||||||
|
return putVar(symbol).id;
|
||||||
|
}else{
|
||||||
//this creates a hidden const variable with the specified value
|
//this creates a hidden const variable with the specified value
|
||||||
return putConst("___" + value, value).id;
|
return putConst("___" + value, value).id;
|
||||||
}catch(NumberFormatException e){
|
|
||||||
return putVar(symbol).id;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double parseDouble(String symbol) throws NumberFormatException{
|
double parseDouble(String symbol){
|
||||||
//parse hex/binary syntax
|
//parse hex/binary syntax
|
||||||
if(symbol.startsWith("0b")) return Long.parseLong(symbol.substring(2), 2);
|
if(symbol.startsWith("0b")) return Strings.parseLong(symbol, 2, 2, symbol.length(), invalidNum);
|
||||||
if(symbol.startsWith("0x")) return Long.parseLong(symbol.substring(2), 16);
|
if(symbol.startsWith("0x")) return Strings.parseLong(symbol, 16, 2, symbol.length(), invalidNum);
|
||||||
|
|
||||||
return Double.parseDouble(symbol);
|
return Strings.parseDouble(symbol, invalidNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Adds a constant value by name. */
|
/** Adds a constant value by name. */
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ public class LExecutor{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void load(String data, int maxInstructions){
|
public void load(String data){
|
||||||
load(LAssembler.assemble(data, maxInstructions));
|
load(LAssembler.assemble(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Loads with a specified assembler. Resets all variables. */
|
/** Loads with a specified assembler. Resets all variables. */
|
||||||
@@ -489,7 +489,7 @@ public class LExecutor{
|
|||||||
|
|
||||||
Building build = exec.building(p1);
|
Building build = exec.building(p1);
|
||||||
int dropped = Math.min(unit.stack.amount, exec.numi(p2));
|
int dropped = Math.min(unit.stack.amount, exec.numi(p2));
|
||||||
if(build != null && build.isValid() && dropped > 0 && unit.within(build, logicItemTransferRange + build.block.size * tilesize/2f)){
|
if(build != null && build.team == unit.team && build.isValid() && dropped > 0 && unit.within(build, logicItemTransferRange + build.block.size * tilesize/2f)){
|
||||||
int accepted = build.acceptStack(unit.item(), dropped, unit);
|
int accepted = build.acceptStack(unit.item(), dropped, unit);
|
||||||
if(accepted > 0){
|
if(accepted > 0){
|
||||||
Call.transferItemTo(unit, unit.item(), accepted, unit.x, unit.y, build);
|
Call.transferItemTo(unit, unit.item(), accepted, unit.x, unit.y, build);
|
||||||
@@ -503,7 +503,8 @@ public class LExecutor{
|
|||||||
Building build = exec.building(p1);
|
Building build = exec.building(p1);
|
||||||
int amount = exec.numi(p3);
|
int amount = exec.numi(p3);
|
||||||
|
|
||||||
if(build != null && build.isValid() && build.items != null && exec.obj(p2) instanceof Item item && unit.within(build, logicItemTransferRange + build.block.size * tilesize/2f)){
|
if(build != null && build.team == unit.team && build.isValid() && build.items != null &&
|
||||||
|
exec.obj(p2) instanceof Item item && unit.within(build, logicItemTransferRange + build.block.size * tilesize/2f)){
|
||||||
int taken = Math.min(build.items.get(item), Math.min(amount, unit.maxAccepted(item)));
|
int taken = Math.min(build.items.get(item), Math.min(amount, unit.maxAccepted(item)));
|
||||||
|
|
||||||
if(taken > 0){
|
if(taken > 0){
|
||||||
@@ -523,7 +524,6 @@ public class LExecutor{
|
|||||||
public int target;
|
public int target;
|
||||||
public LAccess type = LAccess.enabled;
|
public LAccess type = LAccess.enabled;
|
||||||
public int p1, p2, p3, p4;
|
public int p1, p2, p3, p4;
|
||||||
public Interval timer = new Interval(1);
|
|
||||||
|
|
||||||
public ControlI(LAccess type, int target, int p1, int p2, int p3, int p4){
|
public ControlI(LAccess type, int target, int p1, int p2, int p3, int p4){
|
||||||
this.type = type;
|
this.type = type;
|
||||||
@@ -539,7 +539,7 @@ public class LExecutor{
|
|||||||
@Override
|
@Override
|
||||||
public void run(LExecutor exec){
|
public void run(LExecutor exec){
|
||||||
Object obj = exec.obj(target);
|
Object obj = exec.obj(target);
|
||||||
if(obj instanceof Building b && b.team == exec.team && exec.linkIds.contains(b.id) && (type.cooldown <= 0 || timer.get(type.cooldown))){
|
if(obj instanceof Building b && b.team == exec.team && exec.linkIds.contains(b.id)){
|
||||||
if(type.isObj){
|
if(type.isObj){
|
||||||
b.control(type, exec.obj(p1), exec.num(p2), exec.num(p3), exec.num(p4));
|
b.control(type, exec.obj(p1), exec.num(p2), exec.num(p3), exec.num(p4));
|
||||||
}else{
|
}else{
|
||||||
@@ -636,6 +636,11 @@ public class LExecutor{
|
|||||||
Object target = exec.obj(from);
|
Object target = exec.obj(from);
|
||||||
Object sense = exec.obj(type);
|
Object sense = exec.obj(type);
|
||||||
|
|
||||||
|
if(target == null && sense == LAccess.dead){
|
||||||
|
exec.setnum(to, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//note that remote units/buildings can be sensed as well
|
//note that remote units/buildings can be sensed as well
|
||||||
if(target instanceof Senseable se){
|
if(target instanceof Senseable se){
|
||||||
if(sense instanceof Content co){
|
if(sense instanceof Content co){
|
||||||
@@ -856,9 +861,13 @@ public class LExecutor{
|
|||||||
|
|
||||||
//add graphics calls, cap graphics buffer size
|
//add graphics calls, cap graphics buffer size
|
||||||
if(exec.graphicsBuffer.size < maxGraphicsBuffer){
|
if(exec.graphicsBuffer.size < maxGraphicsBuffer){
|
||||||
exec.graphicsBuffer.add(DisplayCmd.get(type, exec.numi(x), exec.numi(y), num1, exec.numi(p2), exec.numi(p3), exec.numi(p4)));
|
exec.graphicsBuffer.add(DisplayCmd.get(type, packSign(exec.numi(x)), packSign(exec.numi(y)), packSign(num1), packSign(exec.numi(p2)), packSign(exec.numi(p3)), packSign(exec.numi(p4))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int packSign(int value){
|
||||||
|
return (Math.abs(value) & 0b011111111) | (value < 0 ? 0b1000000000 : 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class DrawFlushI implements LInstruction{
|
public static class DrawFlushI implements LInstruction{
|
||||||
|
|||||||
195
core/src/mindustry/logic/LParser.java
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
package mindustry.logic;
|
||||||
|
|
||||||
|
import arc.struct.*;
|
||||||
|
import arc.util.*;
|
||||||
|
import mindustry.gen.*;
|
||||||
|
import mindustry.logic.LStatements.*;
|
||||||
|
|
||||||
|
public class LParser{
|
||||||
|
private static final String[] tokens = new String[16];
|
||||||
|
private static final int maxJumps = 500;
|
||||||
|
private static final StringMap opNameChanges = StringMap.of(
|
||||||
|
"atan2", "angle",
|
||||||
|
"dst", "len"
|
||||||
|
);
|
||||||
|
|
||||||
|
private static final Seq<JumpIndex> jumps = new Seq<>();
|
||||||
|
private static final ObjectIntMap<String> jumpLocations = new ObjectIntMap<>();
|
||||||
|
|
||||||
|
Seq<LStatement> statements = new Seq<>();
|
||||||
|
char[] chars;
|
||||||
|
int pos, line, tok;
|
||||||
|
|
||||||
|
LParser(String text){
|
||||||
|
this.chars = text.toCharArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Parses a sequence of statements from a string. */
|
||||||
|
public static Seq<LStatement> parse(String text){
|
||||||
|
//don't waste time parsing null/empty text
|
||||||
|
if(text == null || text.isEmpty()) return new Seq<>();
|
||||||
|
return new LParser(text).parse();
|
||||||
|
}
|
||||||
|
|
||||||
|
void comment(){
|
||||||
|
//read until \n or eof
|
||||||
|
while(pos < chars.length && chars[pos++] != '\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
void error(String message){
|
||||||
|
throw new RuntimeException("Invalid code. " + message);
|
||||||
|
}
|
||||||
|
|
||||||
|
String string(){
|
||||||
|
int from = pos;
|
||||||
|
|
||||||
|
while(pos++ < chars.length){
|
||||||
|
var c = chars[pos];
|
||||||
|
if(c == '\n'){
|
||||||
|
error("Missing closing quote \" before end of line.");
|
||||||
|
}else if(c == '"'){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(chars[pos] != '"') error("Missing closing quote \" before end of file.");
|
||||||
|
|
||||||
|
return new String(chars, from, ++pos - from);
|
||||||
|
}
|
||||||
|
|
||||||
|
String token(){
|
||||||
|
int from = pos;
|
||||||
|
|
||||||
|
while(pos < chars.length){
|
||||||
|
char c = chars[pos];
|
||||||
|
if(c == '\n' || c == ' ' || c == '#' || c == '\t' || c == ';') break;
|
||||||
|
pos ++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new String(chars, from, pos - from);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Apply changes after reading a list of tokens. */
|
||||||
|
void checkRead(){
|
||||||
|
if(tokens[0].equals("op")){
|
||||||
|
//legacy name change
|
||||||
|
tokens[1] = opNameChanges.get(tokens[1], tokens[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Reads the next statement until EOL/EOF. */
|
||||||
|
void statement(){
|
||||||
|
boolean expectNext = false;
|
||||||
|
tok = 0;
|
||||||
|
|
||||||
|
while(pos < chars.length){
|
||||||
|
char c = chars[pos];
|
||||||
|
if(tok >= tokens.length) error("Line too long; may only contain " + tokens.length + " tokens");
|
||||||
|
|
||||||
|
//reached end of line, bail out.
|
||||||
|
if(c == '\n' || c == ';') break;
|
||||||
|
|
||||||
|
if(expectNext && c != ' ' && c != '#' && c != '\t'){
|
||||||
|
error("Expected space after string/token.");
|
||||||
|
}
|
||||||
|
|
||||||
|
expectNext = false;
|
||||||
|
|
||||||
|
if(c == '#'){
|
||||||
|
comment();
|
||||||
|
break;
|
||||||
|
}else if(c == '"'){
|
||||||
|
tokens[tok ++] = string();
|
||||||
|
expectNext = true;
|
||||||
|
}else if(c != ' ' && c != '\t'){
|
||||||
|
tokens[tok ++] = token();
|
||||||
|
expectNext = true;
|
||||||
|
}else{
|
||||||
|
pos ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//only process lines with at least 1 token
|
||||||
|
if(tok > 0){
|
||||||
|
checkRead();
|
||||||
|
|
||||||
|
//store jump location, always ends with colon
|
||||||
|
if(tok == 1 && tokens[0].charAt(tokens[0].length() - 1) == ':'){
|
||||||
|
if(jumpLocations.size >= maxJumps){
|
||||||
|
error("Too many jump locations. Max jumps: " + maxJumps);
|
||||||
|
}
|
||||||
|
jumpLocations.put(tokens[0].substring(0, tokens[0].length() - 1), line);
|
||||||
|
}else{
|
||||||
|
boolean wasJump;
|
||||||
|
String jumpLoc = null;
|
||||||
|
//clean up jump position before parsing
|
||||||
|
if(wasJump = (tokens[0].equals("jump") && tok > 1 && !Strings.canParseInt(tokens[1]))){
|
||||||
|
jumpLoc = tokens[1];
|
||||||
|
tokens[1] = "-1";
|
||||||
|
}
|
||||||
|
|
||||||
|
LStatement st;
|
||||||
|
|
||||||
|
try{
|
||||||
|
st = LogicIO.read(tokens, tok);
|
||||||
|
}catch(Exception e){
|
||||||
|
//log invalid statements
|
||||||
|
Log.err(e);
|
||||||
|
st = new InvalidStatement();
|
||||||
|
}
|
||||||
|
|
||||||
|
//store jumps that use labels
|
||||||
|
if(st instanceof JumpStatement jump && wasJump){
|
||||||
|
jumps.add(new JumpIndex(jump, jumpLoc));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(st != null){
|
||||||
|
statements.add(st);
|
||||||
|
}else{
|
||||||
|
//attempt parsing using custom parser if a match is found; this is for mods
|
||||||
|
if(LAssembler.customParsers.containsKey(tokens[0])){
|
||||||
|
statements.add(LAssembler.customParsers.get(tokens[0]).get(tokens));
|
||||||
|
}else{
|
||||||
|
//unparseable statement
|
||||||
|
statements.add(new InvalidStatement());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
line ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Seq<LStatement> parse(){
|
||||||
|
jumps.clear();
|
||||||
|
jumpLocations.clear();
|
||||||
|
|
||||||
|
while(pos < chars.length && line < LExecutor.maxInstructions){
|
||||||
|
switch(chars[pos]){
|
||||||
|
case '\n', ' ' -> pos ++; //skip newlines and spaces
|
||||||
|
case '\r' -> pos += 2; //skip the newline after the \r
|
||||||
|
default -> statement();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//load destination indices
|
||||||
|
for(var i : jumps){
|
||||||
|
if(!jumpLocations.containsKey(i.location)){
|
||||||
|
error("Undefined jump location: \"" + i.location + "\". Make sure the jump label exists and is typed correctly.");
|
||||||
|
}
|
||||||
|
i.jump.destIndex = jumpLocations.get(i.location, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return statements;
|
||||||
|
}
|
||||||
|
|
||||||
|
static class JumpIndex{
|
||||||
|
JumpStatement jump;
|
||||||
|
String location;
|
||||||
|
|
||||||
|
public JumpIndex(JumpStatement jump, String location){
|
||||||
|
this.jump = jump;
|
||||||
|
this.location = location;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -51,7 +51,7 @@ public abstract class LStatement{
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected Cell<TextField> fields(Table table, String desc, String value, Cons<String> setter){
|
protected Cell<TextField> fields(Table table, String desc, String value, Cons<String> setter){
|
||||||
table.add(desc).padLeft(10).left().self(this::param);;
|
table.add(desc).padLeft(10).left().self(this::param);
|
||||||
return field(table, value, setter).width(85f).padRight(10).left();
|
return field(table, value, setter).width(85f).padRight(10).left();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -905,7 +905,7 @@ public class LStatements{
|
|||||||
void rebuild(Table table){
|
void rebuild(Table table){
|
||||||
table.clearChildren();
|
table.clearChildren();
|
||||||
|
|
||||||
table.add(" find ").left().self(this::param);;
|
table.add(" find ").left().self(this::param);
|
||||||
|
|
||||||
table.button(b -> {
|
table.button(b -> {
|
||||||
b.label(() -> locate.name());
|
b.label(() -> locate.name());
|
||||||
@@ -918,14 +918,14 @@ public class LStatements{
|
|||||||
switch(locate){
|
switch(locate){
|
||||||
case building -> {
|
case building -> {
|
||||||
row(table);
|
row(table);
|
||||||
table.add(" group ").left().self(this::param);;
|
table.add(" group ").left().self(this::param);
|
||||||
table.button(b -> {
|
table.button(b -> {
|
||||||
b.label(() -> flag.name());
|
b.label(() -> flag.name());
|
||||||
b.clicked(() -> showSelect(b, BlockFlag.allLogic, flag, t -> flag = t, 2, cell -> cell.size(110, 50)));
|
b.clicked(() -> showSelect(b, BlockFlag.allLogic, flag, t -> flag = t, 2, cell -> cell.size(110, 50)));
|
||||||
}, Styles.logict, () -> {}).size(110, 40).color(table.color).left().padLeft(2);
|
}, Styles.logict, () -> {}).size(110, 40).color(table.color).left().padLeft(2);
|
||||||
row(table);
|
row(table);
|
||||||
|
|
||||||
table.add(" enemy ").left().self(this::param);;
|
table.add(" enemy ").left().self(this::param);
|
||||||
|
|
||||||
fields(table, enemy, str -> enemy = str);
|
fields(table, enemy, str -> enemy = str);
|
||||||
|
|
||||||
|
|||||||
@@ -245,7 +245,7 @@ public class SectorDamage{
|
|||||||
//first, calculate the total health of blocks in the path
|
//first, calculate the total health of blocks in the path
|
||||||
|
|
||||||
//radius around the path that gets counted
|
//radius around the path that gets counted
|
||||||
int radius = 7;
|
int radius = 5;
|
||||||
IntSet counted = new IntSet();
|
IntSet counted = new IntSet();
|
||||||
|
|
||||||
for(Tile t : sparse2){
|
for(Tile t : sparse2){
|
||||||
@@ -273,7 +273,7 @@ public class SectorDamage{
|
|||||||
for(Building build : Groups.build){
|
for(Building build : Groups.build){
|
||||||
float e = build.efficiency();
|
float e = build.efficiency();
|
||||||
if(e > 0.08f){
|
if(e > 0.08f){
|
||||||
if(build.team == state.rules.defaultTeam && build instanceof Ranged ranged && sparse.contains(t -> t.within(build, ranged.range() + radius*tilesize))){
|
if(build.team == state.rules.defaultTeam && build instanceof Ranged ranged && sparse.contains(t -> t.within(build, ranged.range() + 4*tilesize))){
|
||||||
if(build.block instanceof Turret t && build instanceof TurretBuild b && b.hasAmmo()){
|
if(build.block instanceof Turret t && build instanceof TurretBuild b && b.hasAmmo()){
|
||||||
sumDps += t.shots / t.reloadTime * 60f * b.peekAmmo().estimateDPS() * e;
|
sumDps += t.shots / t.reloadTime * 60f * b.peekAmmo().estimateDPS() * e;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,10 +115,6 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
|
|||||||
tile.floor = getBlock(position);
|
tile.floor = getBlock(position);
|
||||||
tile.block = tile.floor.asFloor().wall;
|
tile.block = tile.floor.asFloor().wall;
|
||||||
|
|
||||||
//if(noise.octaveNoise3D(5, 0.6, 8.0, position.x, position.y, position.z) > 0.65){
|
|
||||||
//tile.block = Blocks.air;
|
|
||||||
//}
|
|
||||||
|
|
||||||
if(rid.getValue(position.x, position.y, position.z, 22) > 0.32){
|
if(rid.getValue(position.x, position.y, position.z, 22) > 0.32){
|
||||||
tile.block = Blocks.air;
|
tile.block = Blocks.air;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -317,7 +317,8 @@ public class ContentParser{
|
|||||||
readBundle(ContentType.weather, name, value);
|
readBundle(ContentType.weather, name, value);
|
||||||
}else{
|
}else{
|
||||||
readBundle(ContentType.weather, name, value);
|
readBundle(ContentType.weather, name, value);
|
||||||
item = make(resolve(getType(value), ParticleWeather.class));
|
item = make(resolve(getType(value), ParticleWeather.class), mod + "-" + name);
|
||||||
|
value.remove("type");
|
||||||
}
|
}
|
||||||
currentContent = item;
|
currentContent = item;
|
||||||
read(() -> readFields(item, value));
|
read(() -> readFields(item, value));
|
||||||
@@ -435,6 +436,7 @@ public class ContentParser{
|
|||||||
try{
|
try{
|
||||||
run.run();
|
run.run();
|
||||||
}catch(Throwable t){
|
}catch(Throwable t){
|
||||||
|
Log.err(t);
|
||||||
//don't overwrite double errors
|
//don't overwrite double errors
|
||||||
markError(currentContent, t);
|
markError(currentContent, t);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ public class Scripts implements Disposable{
|
|||||||
private static final Seq<String> blacklist = Seq.with(".net.", "java.net", "files", "reflect", "javax", "rhino", "file", "channels", "jdk",
|
private static final Seq<String> blacklist = Seq.with(".net.", "java.net", "files", "reflect", "javax", "rhino", "file", "channels", "jdk",
|
||||||
"runtime", "util.os", "rmi", "security", "org.", "sun.", "beans", "sql", "http", "exec", "compiler", "process", "system",
|
"runtime", "util.os", "rmi", "security", "org.", "sun.", "beans", "sql", "http", "exec", "compiler", "process", "system",
|
||||||
".awt", "socket", "classloader", "oracle", "invoke", "java.util.function", "java.util.stream", "org.", "mod.classmap");
|
".awt", "socket", "classloader", "oracle", "invoke", "java.util.function", "java.util.stream", "org.", "mod.classmap");
|
||||||
private static final Seq<String> whitelist = Seq.with("mindustry.net", "netserver", "netclient", "com.sun.proxy.$proxy", "mindustry.gen.", "mindustry.logic.", "mindustry.async.", "saveio", "systemcursor", "filetreeinitevent");
|
private static final Seq<String> whitelist = Seq.with("mindustry.net", "netserver", "netclient", "com.sun.proxy.$proxy", "jdk.proxy1", "mindustry.gen.",
|
||||||
|
"mindustry.logic.", "mindustry.async.", "saveio", "systemcursor", "filetreeinitevent");
|
||||||
|
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final Scriptable scope;
|
private final Scriptable scope;
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ public class Administration{
|
|||||||
getCreateInfo(id).banned = true;
|
getCreateInfo(id).banned = true;
|
||||||
|
|
||||||
save();
|
save();
|
||||||
Events.fire(new PlayerBanEvent(Groups.player.find(p -> id.equals(p.uuid()))));
|
Events.fire(new PlayerBanEvent(Groups.player.find(p -> id.equals(p.uuid())), id));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,7 +259,7 @@ public class Administration{
|
|||||||
info.banned = false;
|
info.banned = false;
|
||||||
bannedIPs.removeAll(info.ips, false);
|
bannedIPs.removeAll(info.ips, false);
|
||||||
save();
|
save();
|
||||||
Events.fire(new PlayerUnbanEvent(Groups.player.find(p -> id.equals(p.uuid()))));
|
Events.fire(new PlayerUnbanEvent(Groups.player.find(p -> id.equals(p.uuid())), id));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import static mindustry.Vars.*;
|
|||||||
public class ArcNetProvider implements NetProvider{
|
public class ArcNetProvider implements NetProvider{
|
||||||
final Client client;
|
final Client client;
|
||||||
final Prov<DatagramPacket> packetSupplier = () -> new DatagramPacket(new byte[512], 512);
|
final Prov<DatagramPacket> packetSupplier = () -> new DatagramPacket(new byte[512], 512);
|
||||||
|
final AsyncExecutor executor = new AsyncExecutor(Math.max(Runtime.getRuntime().availableProcessors(), 6));
|
||||||
|
|
||||||
final Server server;
|
final Server server;
|
||||||
final CopyOnWriteArrayList<ArcConnection> connections = new CopyOnWriteArrayList<>();
|
final CopyOnWriteArrayList<ArcConnection> connections = new CopyOnWriteArrayList<>();
|
||||||
@@ -179,7 +180,7 @@ public class ArcNetProvider implements NetProvider{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void pingHost(String address, int port, Cons<Host> valid, Cons<Exception> invalid){
|
public void pingHost(String address, int port, Cons<Host> valid, Cons<Exception> invalid){
|
||||||
Threads.daemon(() -> {
|
executor.submit(() -> {
|
||||||
try{
|
try{
|
||||||
DatagramSocket socket = new DatagramSocket();
|
DatagramSocket socket = new DatagramSocket();
|
||||||
long time = Time.millis();
|
long time = Time.millis();
|
||||||
@@ -255,7 +256,7 @@ public class ArcNetProvider implements NetProvider{
|
|||||||
@Override
|
@Override
|
||||||
public void closeServer(){
|
public void closeServer(){
|
||||||
connections.clear();
|
connections.clear();
|
||||||
Threads.daemon(server::stop);
|
executor.submit(server::stop);
|
||||||
}
|
}
|
||||||
|
|
||||||
ArcConnection getByArcID(int id){
|
ArcConnection getByArcID(int id){
|
||||||
|
|||||||